安装部署
平台是一个单一的 Go 二进制,前端构建产物会被内嵌进去,因此部署非常简单。
环境要求
- Go:版本以
go.mod为准; - Node.js 与 Yarn(构建前端用,Yarn 4.x);
- SQLite(默认,无需额外服务)、PostgreSQL 或 MySQL / MariaDB 三选一作为业务数据库。
从源码构建
1. 构建前端
cd community/web # 或仓库内 web/ 目录
yarn install
yarn build前端构建产物会被后端内嵌并在运行时作为静态资源提供。
2. 构建后端
cd community
go build -buildvcs=false -o ../dist/flai-community.exe .或开发时直接运行:
go run .顺序
务必先构建前端再构建后端,否则内嵌的前端资源会是空的。
配置
复制 .env.example 为 .env 并填写:
cp .env.example .envAPP_ENV=development # development / local / test / staging / production
PORT=8080
DB_DRIVER=sqlite # sqlite / postgres / mysql
DB_PATH=flai.db
JWT_SECRET=your-secure-jwt-secret-here
OIDC_ISSUER=https://your-oidc-provider.com
OIDC_CLIENT_ID=your-client-id
OIDC_CLIENT_SECRET=your-client-secret
OIDC_REDIRECT_URL=http://localhost:8080/auth/callback
BOOTSTRAP_ADMIN_OIDC_SUBS=
BOOTSTRAP_ADMIN_EMAILS=每一项的含义见 环境变量。
PostgreSQL 或 MySQL 部署时,设置 DB_DRIVER 与 DB_DSN;DATABASE_URL 可作为 DB_DSN 的备用变量。例如:
# PostgreSQL
DB_DRIVER=postgres
DB_DSN=host=127.0.0.1 user=flai password=change-me dbname=flai port=5432 sslmode=disable
# MySQL / MariaDB
# DB_DRIVER=mysql
# DB_DSN=flai:change-me@tcp(127.0.0.1:3306)/flai?charset=utf8mb4&parseTime=True&loc=Local生产环境
在非开发环境(staging / production 等)下,JWT_SECRET 必须改为安全的随机值,否则服务会拒绝启动。
运行
./dist/flai-community.exe启动后访问 http://localhost:8080:
- 首次访问会进入 初始化设置 创建管理员;
- 健康检查:
GET /health。
反向代理与 HTTPS
生产部署建议在前面放一层反向代理(Nginx / Caddy 等)负责 TLS 终止,并把真实客户端 IP 透传给后端(影响 API 密钥的 IP 限制与限流)。把 OIDC_REDIRECT_URL、支付回调地址、站点 base_url 都设置为对外的 HTTPS 域名。
数据与备份
默认数据存储在 DB_PATH 指向的 SQLite 文件(如 flai.db)。定期备份该文件即可备份全部业务数据。迁移到其他机器时连同该文件一起迁移。PostgreSQL/MySQL 则应使用其各自的备份与恢复机制。
从 SQLite 迁移
可用一次性的 --migrate 命令把 SQLite 数据复制到新的 PostgreSQL 或 MySQL 数据库。命令只读取 DB_PATH 的 SQLite 源文件,不会修改它;目标库必须为空。
DB_PATH=flai.db
DB_DRIVER=postgres
DB_DSN=host=127.0.0.1 user=flai password=change-me dbname=flai port=5432 sslmode=disablego run . --migrate完成后移除 --migrate,以相同的 DB_DRIVER 和 DB_DSN 正常启动服务。该迁移是单向复制,不用于合并两个已有数据库;执行前请备份 SQLite 文件,并先在副本和空目标库上验证。