Skip to content

部署指南 ​

gflow 是 Go 单二进制 + 前端静态资源,2C2G 起步即可。推荐 systemd 裸机部署;Docker Compose 也可一键起全栈。

裸机 / systemd(推荐) ​

bash
# 推荐:单二进制全栈(前端已内嵌,直接访问 :8080/gflow/,无需 nginx)。
# 前置:gflow 同级摆放 gflow-ui(包管理器 pnpm)与 rulego-editor(编辑器源码,构建期引用),
# 首次构建自动安装依赖;拿到预编译交付包的可用其二进制跳过构建。
cd gflow && make release      # 产出 dist/gflow-server

# 配置并启动(仓库只带样例文件,先复制再改数据库连接等必填项)
cp configs/config.yaml.example configs/config.yaml
./dist/gflow-server           # 在 gflow 目录运行,自动读取 configs/config.yaml

# 备选:前后端分离(前端需独立发布/扩容时)——make build 为 API-only 版(不嵌入前端),
# 前端 make web 构建产物由 nginx 托管(/gflow/、/m/、/api/、/api/v1/ws/、/rulego/ 五个 location)
cd gflow && make build && make web

deploy/systemd/ 提供服务单元模板;deploy/nginx/ 提供前端反代配置(含 /rulego/——规则链/智能体编辑器接口)。服务端默认监听 :8080。

首次部署先执行 make db-init(scripts/init-db.sh)完成建库建表——程序启动不建核心表,两个脚本缺一不可,见下文数据库初始化。注意 init-db.sh 的连接信息取自 DB_* 环境变量(默认 localhost + postgres/postgres/gflow;MySQL 默认账号 root),不读 config.yaml。

Docker Compose 一键部署 ​

bash
cd gflow

# 1. 构建全栈单镜像(前端已嵌入二进制;构建机需 Node + Docker,无需 Go)
make docker-build

# 2. 配置环境变量(至少改 GFLOW_JWT_SECRET(≥32 字符随机串,release 模式弱密钥拒绝启动)/ POSTGRES_PASSWORD)
cp .env.example .env && vi .env

# 3. 启动全栈
docker compose up -d

compose 拉起三个容器:

服务说明
postgres首次启动自动按序执行引擎建表脚本 00.init_bpm_pg.sql(7 张 wf_* 表)+ 00.init_pg.sql(宿主表 + 种子数据)
redis缓存与(多实例时)分布式锁
gflowgflow-server 全栈单镜像:桌面 /gflow/、移动 H5 /m/、REST API、WebSocket 同端口对外,无 nginx

访问 http://localhost/gflow/,默认账号 admin / admin123(首次登录改密)。宿主机 80 被占时在 .env 改 APP_PORT;对外访问地址记得同步改 GFLOW_APP_BASE_URL(IM 免登链接、密码重置回跳都用它)。

双实例/多副本集群部署是商业版(GFlow Platform)能力,不使用此 compose,完整步骤见仓库 docs/deploy/deployment.md 第七节。

集群部署(商业版) ​

GFlow Platform 支持多实例 active-active 集群部署:同一份代码同时支持单机与多副本,单机行为不变;任一副本崩溃,在途流程自动救援,服务不断。适用于滚动发布不中断、单进程故障自动恢复的场景(同机双进程形态;防的是进程级故障,不防整机故障)。

集群形态下平台自动处理跨副本一致性:

能力说明
集群选主Redis 租约选主,恢复/巡检类后台任务只在 leader 执行
跨副本执行互斥流程实例级分布式门闩(持锁续期),与 DB 行锁双层兜底
卡死实例自动救援副本崩溃后在途实例与超期延迟任务由 leader 巡检自动重驱(≤7 分钟),连续失败转人工告警
定时任务恰好一次定时规则链按「计划触发时刻」分布式去重,misfire 跳过不补跑
通知实时跨副本WebSocket 推送经 Redis 广播,负载均衡无须粘性会话
配置热生效规则链 / LLM 供应商变更广播失效,各副本秒级重载,无须重启
雪花 ID 防撞machine_id 启动注册制,冲突拒绝启动并报出持有者
文件存储三选一local(同机共享路径 / NFS)、s3(MinIO 自建或云 S3)、oss(阿里云别名)

依赖:共享 PostgreSQL/MySQL + Redis(建议开 AOF 持久化)+ 前置负载均衡(HTTP 健康检查)。部署清单(Redis 配置与降级语义、存储切换、存量库唯一约束、开机自启、验证项)见仓库 docs/deploy/deployment.md 第七节。引擎开源版内嵌分布式锁与救援原语,但集群编排(选主 / 巡检 / 广播 / 存储切换)需自行搭建。

生产清单 ​

  • [ ] 修改 GFLOW_JWT_SECRET(≥32 字符随机串)、数据库口令,勿用默认值
  • [ ] server.swagger_enabled: false(Swagger 含完整 API 面且无需认证,生产保持关闭)、captcha.enable_universal_code: false
  • [ ] 默认管理员 admin / admin123 首次登录立即改密
  • [ ] PostgreSQL 生产实例 + 定期备份(历史表只增不减)
  • [ ] HTTPS:nginx 前置证书
  • [ ] 多副本集群部署时 cache.global.type: redis + cluster.enabled: true(分布式门闩、选主、WS 广播、token 黑名单共用该 Redis;Redis 建议 AOF),详见仓库部署文档第七节
  • [ ] 日志收集;logs/ 目录磁盘水位告警
  • [ ] 演示/生产账号分离,管理员开启操作审计

数据库初始化 ​

  • GFlow Platform:postgres 容器首启自动按序执行 scripts/engine/00.init_bpm_pg.sql(引擎 7 张表)与 scripts/00.init_pg.sql(应用系统表 + 种子);裸机部署用 make db-init(scripts/init-db.sh)完成同样动作——程序启动不建核心表,两个脚本缺一不可
  • 仅引擎:执行 gflow-engine 的 scripts/00.init_bpm_pg.sql / 00.init_bpm_mysql.sql
  • 非内置数据库(达梦、人大金仓等):经 DialectProvider 扩展接入,见自定义数据库方言

环境要求 ​

见环境要求。演示环境参考:1.9G 内存云主机运行 gflow 全栈稳定。

GFlow Engine 基于 Apache-2.0 许可开源 · GFlow 极风工作流平台商业授权