GooseForum 是一个基于 Go + Vue 3 的现代化论坛系统,支持 SQLite/MySQL、Markdown 内容、分类、回复、通知、管理后台和单文件部署。 本文介绍如何获取、启动、配置和自行构建 GooseForum。 获取 GooseForum 你可以在 GitHub Releases 页面获取已经构建完成的程序包: GitHub Releases 下载与你服务器系统和 CPU ...
GooseForum 是一个基于 Go + Vue 3 的现代化论坛系统,支持 SQLite/MySQL、Markdown 内容、分类、回复、通知、管理后台和单文件部署。
本文介绍如何获取、启动、配置和自行构建 GooseForum。
获取 GooseForum
你可以在 GitHub Releases 页面获取已经构建完成的程序包:
GitHub Releases
下载与你服务器系统和 CPU 架构匹配的压缩包即可。文件名通常类似:
GooseForum_Linux_x86_64.tar.gz
GooseForum_Darwin_arm64.tar.gz
GooseForum_Windows_x86_64.zip
例如普通 64 位 Linux 服务器,一般选择:
GooseForum_Linux_x86_64.tar.gz
启动 GooseForum
下载后解压并启动:
# 解压
tar -zxvf GooseForum_Linux_x86_64.tar.gz
# 赋予执行权限
chmod +x ./GooseForum
# 启动服务
./GooseForum serve
启动后访问:
http://服务器IP:5234
默认端口为 5234,可以在 config.toml 中通过 server.port 修改。
管理员账号
GooseForum 首次启动后,第一个注册的用户会自动成为管理员。
管理后台地址:
http://服务器IP:5234/admin
如果后续需要管理用户或重置管理员账号,可以在服务器执行:
./GooseForum user:manage
该命令会进入交互式用户管理流程,可用于修改密码、调整角色等管理操作。
配置文件
GooseForum 启动时会检查当前目录下是否存在 config.toml。如果不存在,会自动创建默认配置文件。
常用配置如下:
[app]
env = "production" # local / production
debug = false # 调试模式,生产环境一般保持 false
maintenance = false # 维护模式,开启后站点返回维护页
cdn_url = "" # CDN 地址,可留空
[server]
url = "http://localhost" # 站点 URL,会影响邮件、RSS、sitemap 等链接生成
port = 5234 # 服务监听端口
accessLog = true # 是否记录访问日志
[jwtopt]
validTime = 604800 # 登录有效期,单位秒
[db]
migration = "on" # 是否执行数据库迁移,首次启动或升级时建议开启
backupSqlite = true # 是否备份 SQLite 数据库
backupDir = "./storage/databasebackup/"
keep = 7 # 备份保留数量
spec = "0 3 * * *" # 备份定时规则,默认每天凌晨 3 点
[db.default]
connection = "sqlite" # sqlite / mysql
path = "./storage/database/sqlite.db"
url = "db_user:db_pass@tcp(db_host:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local"
maxIdleConnections = 3
maxOpenConnections = 5
maxLifeSeconds = 300
[db.file]
connection = "sqlite"
path = "./storage/database/file.db"
[log]
type = "file" # stdout / file
path = "./storage/logs/run.log"
rolling = true
maxage = 10
maxsize = 256
maxBackUps = 30
slowSQL = true
slowSQLThreshold = "200ms"
[meilisearch]
url = "http://localhost:7700"
masterkey = ""
如果只是个人站点或小型社区,默认 SQLite 配置即可正常运行。
生产环境建议
生产环境建议至少完成以下配置:
- 将
app.env 设置为 production
- 将
server.url 改为你的真实站点地址
- 使用 Nginx、Caddy 等反向代理配置 HTTPS
- 保留 SQLite 自动备份,或改用 MySQL
- 定期备份
storage/ 目录和 config.toml
如果使用 Nginx,可以将外部 80/443 端口反向代理到 GooseForum 的 5234 端口。
浏览器缓存配置
GooseForum 已经按路径设置了浏览器缓存头:
| 路径 |
建议缓存策略 |
说明 |
/assets/ |
长缓存 |
前端构建产物,文件名带 hash,适合长期缓存 |
/static/ |
长缓存 |
内置头像、徽章、图标等静态资源 |
/theme.css |
长缓存 |
主题 CSS,程序会返回 public, max-age=31536000, immutable |
/sitemap.xml |
短缓存 |
程序返回短缓存,避免搜索引擎频繁请求 |
/rss、/feed |
短缓存 |
程序返回短缓存,内容会随帖子更新 |
/、/p/...、/u/...、/admin、/settings 等页面 |
不要额外加长缓存 |
页面包含登录态、通知、动态内容 |
/api/ |
不要额外加长缓存 |
API 响应是动态数据 |
/file/ |
不建议统一长缓存 |
用户上传文件可能替换或需要权限/策略控制 |
配置 Nginx、宝塔或 1Panel 反向代理时,不建议在全站统一覆盖 Cache-Control。不要把所有响应都设成 no-cache,否则静态资源缓存失效;也不要把所有响应都设成长缓存,否则页面、登录状态、通知等动态内容可能更新不及时。
推荐做法是让 GooseForum 返回自己的缓存头,反向代理只负责转发:
location / {
proxy_pass http://127.0.0.1:5234;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
如果确实要在 Nginx 中单独处理缓存,也请按路径区分,不要套到整站:
# 可以长缓存的静态资源
location ^~ /assets/ {
proxy_pass http://127.0.0.1:5234;
add_header Cache-Control "public, max-age=31536000, immutable" always;
}
location ^~ /static/ {
proxy_pass http://127.0.0.1:5234;
add_header Cache-Control "public, max-age=31536000, immutable" always;
}
# 动态页面、API、上传文件交给 GooseForum 自己控制
location / {
proxy_pass http://127.0.0.1:5234;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
宝塔面板部署
宝塔面板适合不想直接手写 Nginx 和 systemd 配置的用户。整体思路是:上传 GooseForum 主程序,创建运行目录,启动服务,再通过宝塔网站反向代理到 GooseForum 端口。
1. 准备运行目录
在宝塔文件管理中创建目录,例如:
/www/wwwroot/gooseforum
将下载好的 GooseForum 压缩包上传到该目录并解压,确认目录中至少包含:
GooseForum
如果是 Linux 服务器,需要给主程序执行权限:
cd /www/wwwroot/gooseforum
chmod +x ./GooseForum
2. 首次启动生成配置
在宝塔终端中执行:
cd /www/wwwroot/gooseforum
./GooseForum serve
看到服务启动后,可以先按 Ctrl+C 停止。此时目录中会生成 config.toml 和 storage/。
编辑 config.toml,建议至少确认:
[app]
env = "production"
debug = false
[server]
url = "https://你的域名"
port = 5234
3. 配置守护进程
推荐使用宝塔的进程守护能力,或使用 Supervisor 管理 GooseForum。
进程命令:
/www/wwwroot/gooseforum/GooseForum serve
运行目录:
/www/wwwroot/gooseforum
如果使用 Supervisor,注意工作目录必须是 GooseForum 所在目录,否则程序可能找不到同级的 config.toml。
4. 配置网站和反向代理
在宝塔中添加站点,例如:
forum.example.com
然后为该站点配置反向代理:
目标 URL: http://127.0.0.1:5234
如果你已经在 config.toml 中修改了端口,请把这里的 5234 改成对应端口。
5. 配置 HTTPS
在宝塔站点设置中申请或上传 SSL 证书,并开启 HTTPS。
HTTPS 开启后,记得将 config.toml 中的 server.url 改为:
[server]
url = "https://forum.example.com"
修改配置后重启 GooseForum。
1Panel 部署
1Panel 也可以用“主机目录 + 进程管理 + OpenResty/Nginx 反向代理”的方式部署 GooseForum。
1. 创建运行目录
在服务器中创建目录,例如:
/opt/gooseforum
上传并解压 GooseForum:
cd /opt/gooseforum
tar -zxvf GooseForum_Linux_x86_64.tar.gz
chmod +x ./GooseForum
2. 首次启动生成配置
cd /opt/gooseforum
./GooseForum serve
首次启动会生成:
config.toml
storage/
停止服务后编辑 config.toml:
[app]
env = "production"
debug = false
[server]
url = "https://你的域名"
port = 5234
3. 添加进程守护
在 1Panel 中可以使用进程管理功能,或通过系统服务管理 GooseForum。
进程启动命令:
/opt/gooseforum/GooseForum serve
工作目录:
/opt/gooseforum
建议开启自动重启,确保服务器重启后 GooseForum 自动恢复。
4. 创建网站并配置反向代理
在 1Panel 网站管理中创建站点,例如:
forum.example.com
反向代理目标填写:
http://127.0.0.1:5234
然后在站点中申请或绑定 SSL 证书。
5. 数据备份建议
无论使用宝塔还是 1Panel,都建议定期备份:
config.toml
storage/
如果使用默认 SQLite,数据库位于:
storage/database/sqlite.db
GooseForum 默认也支持 SQLite 自动备份,可以在 config.toml 中调整:
[db]
backupSqlite = true
backupDir = "./storage/databasebackup/"
keep = 7
spec = "0 3 * * *"
从源码构建
如果你希望自行构建 GooseForum,需要准备:
- Go 1.26+
- Node.js 18+
- pnpm
克隆代码:
git clone https://github.com/leancodebox/GooseForum.git
cd GooseForum
构建前端资源:
cd resource
pnpm install
pnpm build
cd ..
构建 Go 程序:
go mod tidy
go build -ldflags="-w -s" .
构建完成后,项目根目录会生成可执行文件:
GooseForum
启动方式同样是:
./GooseForum serve
使用 GoReleaser 构建
你也可以使用 GoReleaser 快速构建发行包。
安装 GoReleaser:
go install github.com/goreleaser/goreleaser@latest
构建当前平台:
goreleaser build --snapshot --clean --single-target
构建所有平台:
goreleaser build --snapshot --clean
常用命令
# 启动服务
./GooseForum serve
# 用户/管理员管理
./GooseForum user:manage
# 重新构建文章搜索索引
./GooseForum repairArticleIndexData
# 重建 Markdown 渲染结果
./GooseForum rebuildMarkdown2Html
目录说明
GooseForum/
├── GooseForum # 主程序
├── config.toml # 配置文件
├── storage/ # 数据库、上传文件、日志、备份等运行数据
│ ├── database/
│ ├── databasebackup/
│ └── logs/
└── resource/ # 前端资源,源码构建时使用
部署时请重点保护:
config.toml
storage/
这两个位置包含站点配置、数据库、文件和运行数据。