Files
OpenFlare/README.md
T
2026-03-15 17:11:17 +08:00

6.5 KiB
Raw Blame History

中文 | English

OpenFlare logo

OpenFlare

轻量、自托管的 OpenResty 控制面,用于管理反向代理规则、配置发布、节点同步、TLS 证书与基础可观测能力。

license release ghcr GoReportCard

OpenFlare 1.0.0 是当前稳定基线。第六版开发工作已经完成,相关能力已并入正式版,仓库文档不再保留阶段性实施记录,而只维护当前有效的设计、约束和部署方式。

为什么存在

OpenFlare 解决的是一类朴素但高频的运维问题:

  • 在一个管理端里维护域名到源站的反向代理规则
  • 生成完整 OpenResty 配置并以不可变版本发布
  • 让节点侧 Agent 自动拉取、校验、reload 与失败回滚
  • 统一托管证书、域名、节点凭证与版本状态
  • 提供足够实用的总览、节点详情与访问分析能力

它不是 CDN SaaS,也不试图在 1.0 阶段演变成多租户平台、日志平台或通用调度系统。

核心能力

  • 配置版本化:支持预览、发布、激活、历史回滚,版本不可变
  • 节点接入:支持全局 discovery_token 首次接入,也支持节点专属 agent_token
  • Agent 自动应用:周期性同步、落盘、openresty -t、openresty -s reload、失败自动回滚
  • OpenResty 托管:统一管理主配置模板、性能参数、缓存参数与受管路由
  • TLS 与域名管理:支持证书托管、域名资产维护、精确匹配与通配符匹配
  • 访问与节点观测:支持请求窗口聚合、状态码分布、来源分布、节点资源与健康事件展示
  • 版本运维:支持 Server 与 Agent 的正式版升级,以及受控的 preview 检查与手动升级
  • 管理端 UI:基于 Next.js App Router、React 19、Tailwind CSS 4 的正式前端

系统架构

OpenFlare Server (Gin + GORM + SQLite + Web UI)
        |
        | HTTP API / Config Pull
        v
OpenFlare Agent (register / heartbeat / sync / apply / update)
        |
        v
Local OpenResty or Docker OpenResty
        |
        v
Origin

职责划分:

  • openflare_server:管理端 UI、管理 API、Agent API、配置渲染、版本发布与状态存储
  • openflare_agent:节点注册、心跳、同步、本地写入、校验、reload、回滚、自更新
  • openflare_server/web:新版管理端前端,静态导出后由 Go Server 托管

界面预览

仪表盘总览

OpenFlare dashboard overview

节点详情与安装命令

OpenFlare node detail

配置发布与版本管理

OpenFlare version release

快速开始

1. 启动 Server

services:
  openflare:
    image: ghcr.io/rain-kl/openflare:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      SESSION_SECRET: replace-with-random-string
      SQLITE_PATH: /data/openflare.db
      GIN_MODE: release
      LOG_LEVEL: info
      PORT: "3000"
    volumes:
      - openflare-data:/data

volumes:
  openflare-data:
docker compose up -d

访问地址:http://localhost:3000

默认账号:

  • 用户名:root
  • 密码:123456

2. 接入 Agent

使用 discovery_token 首次接入:

curl -fsSL https://raw.githubusercontent.com/Rain-kl/OpenFlare/main/scripts/install-agent.sh | bash -s -- \
  --server-url http://your-server:3000 \
  --discovery-token YOUR_DISCOVERY_TOKEN

使用节点专属 agent_token:

curl -fsSL https://raw.githubusercontent.com/Rain-kl/OpenFlare/main/scripts/install-agent.sh | bash -s -- \
  --server-url http://your-server:3000 \
  --agent-token YOUR_AGENT_TOKEN

安装脚本默认写入 /opt/openflare-agent,创建 openflare-agent.service,并可重复执行以重装或升级 Agent。

3. 发布第一份配置

  1. 登录管理端并新增反代规则
  2. 在发布前查看预览或变更摘要
  3. 激活新版本
  4. 等待 Agent 在后续 heartbeat 中拉取并应用配置

版本号格式固定为 YYYYMMDD-NNN,历史版本不可变,回滚通过重新激活旧版本完成。

仓库结构

  • openflare_server:Gin + GORM + SQLite 单体控制面
  • openflare_server/web:Next.js 15 App Router 管理端前端
  • openflare_agent:Go 单体 Agent
  • scripts:安装脚本与辅助脚本
  • docs:设计、规范、部署与配置文档

本地开发

Server

cd openflare_server
export SESSION_SECRET='replace-with-random-string'
export SQLITE_PATH='./openflare.db'
go run .

Frontend

cd openflare_server/web
corepack enable
pnpm install
pnpm build

Agent

cd openflare_agent
go run ./cmd/agent -config /path/to/agent.json

常用验证命令

cd openflare_server
GOCACHE=/tmp/openflare-go-cache go test ./...
cd openflare_agent
GOCACHE=/tmp/openflare-go-cache go test ./...

文档导航

建议按以下顺序阅读:

  1. docs/design.md
  2. docs/development-guidelines.md
  3. docs/development-plan.md
  4. docs/frontend-revamp-plan.md
  5. docs/frontend-development-guidelines.md
  6. docs/deployment.md
  7. docs/app-config.md

管理端与接口

管理端当前覆盖:

  • 反代规则
  • 配置版本
  • 节点管理
  • 应用记录
  • TLS 证书
  • 域名管理
  • 用户管理
  • 设置
  • 版本更新

登录管理端后,可访问 Swagger UI:/swagger/index.html

开源协议

本项目采用 Apache License 2.0 开源。