中文 | English
OpenFlare 解决的是一类朴素但高频的运维问题:
- 在一个管理端里维护域名到源站的反向代理规则
- 生成完整 OpenResty 配置并以不可变版本发布
- 让节点侧 Agent 自动拉取、校验、reload 与失败回滚
- 统一托管证书、域名、节点凭证与版本状态
- 提供足够实用的总览、节点详情与访问分析能力
- 配置版本化:支持预览、发布、激活、历史回滚
- Agent 自动应用:周期性同步、落盘、
openresty -t、openresty -s reload、失败自动回滚 - OpenResty 托管:统一管理主配置模板、性能参数、缓存参数与受管路由
- TLS 与域名管理:支持证书托管、域名资产维护、精确匹配与通配符匹配
- 访问与节点观测:支持请求窗口聚合、状态码分布、来源分布、节点资源与健康事件展示
OpenFlare Server (Gin + GORM + SQLite/PostgreSQL + 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 托管
services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: openflare
POSTGRES_USER: openflare
POSTGRES_PASSWORD: replace-with-strong-password
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U openflare -d openflare"]
interval: 10s
timeout: 5s
retries: 5
openflare:
image: ghcr.io/rain-kl/openflare:latest
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "3000:3000"
environment:
SESSION_SECRET: replace-with-random-string
DSN: postgres://openflare:replace-with-strong-password@postgres:5432/openflare?sslmode=disable
GIN_MODE: release
LOG_LEVEL: info
volumes:
postgres-data:docker compose up -d访问地址:http://localhost:3000
默认账号:
- 用户名:
root - 密码:
123456
注意: 安装agent前需确保存已经安装了Docker, 虽然支持裸Openresty,但未得到充分验证,可能存在未知问题.
使用 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。
- 登录管理端并新增反代规则
- 在发布前查看预览或变更摘要
- 激活新版本
- 等待 Agent 在后续 heartbeat 中拉取并应用配置
版本号格式固定为 YYYYMMDD-NNN,历史版本不可变,回滚通过重新激活旧版本完成。
openflare_server:Gin + GORM + SQLite/PostgreSQL 单体控制面openflare_server/web:Next.js 15 App Router 管理端前端openflare_agent:Go 单体 Agentscripts:安装脚本与辅助脚本docs:设计、规范、部署与配置文档
cd openflare_server
export SESSION_SECRET='replace-with-random-string'
export SQLITE_PATH='./openflare.db'
# 可选:设置 DSN 或 SQL_DSN 后切换到 PostgreSQL。
# 如果 PostgreSQL 为空且 ./openflare.db 存在,启动时会自动迁移 SQLite 数据。
# export DSN='postgres://openflare:secret@127.0.0.1:5432/openflare?sslmode=disable'
go run .cd openflare_server/web
pnpm install
pnpm devcd openflare_agent
go run ./cmd/agent -config /path/to/agent.json管理端当前覆盖:
- 反代规则
- 配置版本
- 节点管理
- 应用记录
- TLS 证书
- 域名管理
- 用户管理
- 设置
- 版本更新
登录管理端后,可访问 Swagger UI:/swagger/index.html
本项目采用 Apache License 2.0 开源。


