简单的 Unciv 多人联机服务器
- 游戏存档上传/下载
- WebSocket 实时聊天
- Web 管理后台(管理员面板 + 用户面板)
- 自动数据库版本管理和迁移
- 定时清理过期数据
- 登录限流保护
- Go 1.25.0+
- PostgreSQL 数据库
# 不注入版本信息
go build -ldflags="-s -w" -o unciv-srv ./cmd/server
# 注入版本信息
go build -ldflags="-s -w -X main.Version=v1.0.0 -X main.BuildTime=2025-12-05T10:30:00Z -X main.GitCommit=abc1234" -o unciv-srv ./cmd/server在项目根目录创建 .env 文件:
# 服务端口
PORT=11451
# 数据库配置(TCP 连接)
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=unciv-srv
# 可选:使用 Unix Socket 连接(设置后优先使用)
# DB_SOCKET_PATH=/var/run/postgresql
# 管理员账户
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
# 登录限流配置
MAX_ATTEMPTS=5 # 最大尝试次数
LOCK_TIME=5 # 锁定时间(分钟)# 直接运行(开发模式)
go run ./cmd/server
# 运行编译后的程序
./unciv-srv程序启动时会自动:
- 加载
.env配置文件 - 连接数据库
- 执行数据库迁移
- 启动定时任务
- 监听 HTTP 服务
程序首次运行时会自动执行迁移脚本,无需手动创建表结构。
只需提前创建好数据库即可:
CREATE DATABASE "unciv-srv";GET/PUT /auth- 玩家认证GET/PUT /files/{gameId}- 游戏存档读写/chat- WebSocket 聊天
/- 主页/admin/- 管理员面板/user/- 用户面板/isalive- 健康检查