GooseForum 配置文档
June 5, 2026 · View on GitHub
本文档详细说明了 GooseForum 的所有配置选项。GooseForum 启动时会自动检查执行目录下是否存在 config.toml 文件,如果不存在则会自动创建一个默认配置文件。
📋 配置文件结构
配置文件采用 TOML 格式,包含以下主要部分:
[app]- 应用基础配置[server]- 服务器配置[jwtopt]- JWT 认证配置[db]- 数据库配置[log]- 日志配置
🔧 详细配置说明
[app] 应用配置
[app]
env = "production" # 运行环境: local, production
debug = false # 调试模式,可选覆盖项
cdn_url = "" # CDN 域名
配置说明:
env: 影响某些加载逻辑,生产环境建议保持productiondebug: 可选覆盖项;不配置时local默认开启,其他环境默认关闭。开启后会输出更详细的日志信息cdn_url: CDN 域名,用于静态资源加速
[server] 服务器配置
[server]
url = "http://localhost" # 站点基础 URL
port = 5234 # 监听端口
配置说明:
url: 影响 RSS、Sitemap 等功能返回的 URL 地址port: 服务监听端口,默认 5234
[jwtopt] JWT 认证配置
[jwtopt]
signingKey = "your-random-signing-key" # JWT 签名密钥
validTime = 604800 # Token 有效期(秒)
配置说明:
signingKey: JWT 签名密钥,系统会自动生成随机密钥。修改此值会导致所有已登录用户退出登录validTime: Token 有效期,默认 604800 秒(7天)
[db] 数据库配置
[db]
migration = "on" # 数据库迁移: on, off
backupSqlite = true # 是否定时备份 SQLite
backupDir = "./storage/databasebackup/" # 备份目录
keep = 7 # 保留备份数量
spec = "0 3 * * *" # 备份时间(Cron 表达式)
配置说明:
migration: 数据库迁移开关,首次启动或版本升级时建议开启backupSqlite: 是否启用 SQLite 自动备份backupDir: 备份文件存储目录keep: 保留的备份文件数量spec: Cron 表达式,默认每天凌晨 3 点备份
[db.default] 主数据库配置
[db.default]
connection = "sqlite" # 数据库类型: sqlite, mysql
path = "./storage/database/sqlite.db" # SQLite 路径
url = "user:pass@tcp(host:3306)/db?charset=utf8mb4&parseTime=True&loc=Local" # MySQL 连接字符串
maxIdleConnections = 3 # 最大空闲连接数
maxOpenConnections = 5 # 最大打开连接数
maxLifeSeconds = 300 # 连接最大生存时间(秒)
SQLite 配置示例:
[db.default]
connection = "sqlite"
path = "./storage/database/sqlite.db"
MySQL 配置示例:
[db.default]
connection = "mysql"
url = "username:password@tcp(localhost:3306)/gooseforum?charset=utf8mb4&parseTime=True&loc=Local"
maxIdleConnections = 10
maxOpenConnections = 20
maxLifeSeconds = 3600
[log] 日志配置
[log]
type = "stdout" # 日志输出类型: stdout, file
path = "./storage/logs/run.log" # 日志文件路径
rolling = true # 是否开启日志滚动
maxage = 10 # 日志文件最大保存天数
maxsize = 256 # 单个日志文件最大大小(MB)
maxBackUps = 30 # 最大保留日志文件数量
配置说明:
type:stdout输出到控制台,file输出到文件rolling: 开启后会自动切割日志文件maxage: 超过指定天数的日志文件会被自动删除maxsize: 单个日志文件超过指定大小后会自动切割maxBackUps: 保留的历史日志文件数量
[github] OAuth 配置(可选)
[github]
client_id = "" # GitHub OAuth App Client ID
client_secret = "" # GitHub OAuth App Client Secret
配置说明:
- 需要在 GitHub Settings > Developer settings > OAuth Apps 创建应用
- Authorization callback URL:
https://yourdomain.com/api/oauth/github/callback
🔄 配置文件热重载
GooseForum 支持配置文件热重载,修改 config.toml 文件后无需重启服务即可生效(部分配置除外)。
需要重启的配置项:
- 服务器端口 (
server.port) - 数据库连接配置 (
db.*) - 日志配置 (
log.*)
🛡 安全建议
- JWT 签名密钥:使用强随机密钥,不要使用默认值
- 数据库密码:使用复杂密码,定期更换
- 邮箱密码:使用应用专用密码或授权码
- 文件权限:确保配置文件权限设置正确(建议 600)
# 设置配置文件权限
chmod 600 config.toml
🔍 故障排除
常见问题
-
服务启动失败
- 检查端口是否被占用
- 检查配置文件语法是否正确
- 查看日志文件获取详细错误信息
-
数据库连接失败
- 检查数据库服务是否启动
- 验证连接字符串是否正确
- 确认数据库用户权限
-
邮件发送失败
- 检查 SMTP 服务器配置(通过管理后台设置)
- 验证邮箱用户名和密码
- 确认网络连接正常
调试模式
需要强制开启调试模式时可以显式配置:
[app]
env = "production"
debug = true
[log]
type = "stdout"