Skip to content

Rain-kl/OpenFlare

Repository files navigation

中文 | English

OpenFlare

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

license release ghcr

为什么存在

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

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

核心能力

  • 配置版本化:支持预览、发布、激活、历史回滚
  • Agent 自动应用:周期性同步、落盘、openresty -topenresty -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 托管

界面预览

仪表盘总览

OpenFlare dashboard overview

节点详情

OpenFlare node detail

配置新增

OpenFlare version release

快速开始

1. 启动 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

2. 接入 Agent

注意: 安装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。

3. 发布第一份配置

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

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

仓库结构

  • openflare_server:Gin + GORM + SQLite/PostgreSQL 单体控制面
  • 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'
# 可选:设置 DSN 或 SQL_DSN 后切换到 PostgreSQL。
# 如果 PostgreSQL 为空且 ./openflare.db 存在,启动时会自动迁移 SQLite 数据。
# export DSN='postgres://openflare:secret@127.0.0.1:5432/openflare?sslmode=disable'
go run .

Frontend

cd openflare_server/web
pnpm install
pnpm dev

Agent

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

管理端与接口

管理端当前覆盖:

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

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

开源协议

本项目采用 Apache License 2.0 开源。

About

分布式CDN边缘节点, 由统一的控制中心对节点进行管控。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages