案例 OpenFlare:自托管 OpenResty 控制面,Server 发版本、Agent 拉配置并 reload

2026-10-01 21:02:26

OpenFlare:自托管 OpenResty 控制面,Server 发版本、Agent 拉配置并 reload

OpenFlare 是一个轻量、自托管的 OpenResty 控制面,用来管理反向代理规则、配置发布、节点同步、TLS 证书以及基础可观测。项目处于快速迭代期,设计与实现不稳定,部署时要用最新版并留意 changelog。

仓库:

架构

控制面和数据面是分开的两段:

OpenFlare Server(Gin + GORM + SQLite/PostgreSQL + Web UI)
→ HTTP API / Config Pull
OpenFlare Agent(register / heartbeat / sync / apply / update)
→ 本地 OpenResty 或 Docker OpenResty → Origin

组件职责:

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

能做什么

  • 配置版本化:支持预览、发布、激活、历史回滚。
  • Agent 自动应用:周期性同步、落盘、openresty -t、openresty -s reload,失败自动回滚。
  • OpenResty 托管:统一管理主配置模板、性能参数、缓存参数与受管路由。
  • TLS 与域名管理:证书托管、域名资产维护、精确与通配符匹配。
  • 访问与节点观测:请求窗口聚合、状态码分布、来源分布、节点资源与健康事件。

Docker Compose 部署

服务端依赖 PostgreSQL,Compose 里 openflare 会等 postgres 健康检查通过后再启动:

services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: openflare
POSTGRES_USER: openflare
POSTGRES_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
depends_on:
postgres:
condition: service_healthy
ports:
- "3000:3000"
environment:
SESSION_SECRET: ...
DSN: postgres://...@postgres:5432/openflare?sslmode=disable
GIN_MODE: release
LOG_LEVEL: info

SESSION_SECRET 和数据库密码换成自己的值,DSN 里的用户名、密码、库名与上面 postgres 服务保持一致。启动:

docker compose up -d

然后访问 http://localhost:3000。

接入 Agent

被管节点上先装好 Docker,再跑安装脚本:

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 代替 --discovery-token。脚本默认写入 /opt/openflare-agent,并创建 openflare-agent.service;脚本可重复执行,用于重装或升级。

发一版配置的流程

登录管理端,新增反向代理规则 → 发布前查看预览与变更摘要 → 激活新版本 → 等 Agent 在后续心跳中拉取并应用。Agent 侧落到本地后会先做 openresty -t 校验再 reload,校验或 reload 失败则回滚到上一版。

使用前提

Server 端只跑管理面和配置渲染,真正承载流量的是每台节点上的 OpenResty,因此节点必须能被 Server 访问到,且 Agent 需要能反向连上 Server 的 3000 端口。项目接口与数据模型仍在变动,升级前先看仓库里的 changelog。

复制全文 生成海报 OpenResty Go 自托管 反向代理 Docker

推荐文章

程序员茄子在线接单