World of ClaudeCraft生产部署指南:Docker Compose、Caddy反代与AWS单机上线完整步骤
【免费下载链接】world-of-claudecraft项目地址: https://gitcode.com/gh_mirrors/wo/world-of-claudecraft
World of ClaudeCraft 是一款基于浏览器的 3D 开放世界 MMORPG 开源项目,服务端为 Node.js + PostgreSQL 架构,游戏客户端、REST API 与 WebSocket 世界循环全部打包在单个 Docker 镜像中。本文带你用一台 AWS 单机(Docker Compose + Caddy TLS 反代)完成从裸机到 HTTPS 上线的完整流程,适合想自建游戏私服或学习游戏服务器运维的新手。
1. 部署架构:一台机器跑什么
整个生产栈只有4 个 Docker 服务 + 1 个 Caddy 反向代理,全部定义在 docker-compose.yml 中:
| 服务 | 作用 | 对外暴露 |
|---|---|---|
postgres | PostgreSQL 16 游戏数据库 | 仅回环127.0.0.1:5433 |
game | 游戏服务端(客户端静态文件 + API + WebSocket,单端口 8787) | 仅回环127.0.0.1:8787 |
discord-bot | 可选的 Discord 中继机器人(discordprofile) | 不监听端口 |
mediawiki | 玩家 Wiki(含独立 MariaDB) | 仅回环127.0.0.1:8080 |
关键安全设计:所有服务只绑定回环地址,Caddy 是唯一公网入口,因此安全组只需要放行22 / 80 / 443三个端口。
镜像构建过程见 Dockerfile:多阶段构建先用node:26-slim+ pnpm 编译客户端与服务端,运行时镜像以node非特权用户启动,并内置/livez健康检查与 75 秒优雅停机窗口(覆盖角色存档落盘)。
2. 准备 AWS 实例(最快配置方法)
官方推荐规格(见 DEPLOY.md):
- AMI:Ubuntu Server 24.04 LTS(arm64)
- 机型:
t4g.small(2 vCPU Graviton / 2 GB,约 $14/月),适合少量在线玩家 - 存储:20 GB gp3
- 安全组:22(限你的 IP)、80、443,其他一律不放行
💡 2 GB 内存偏紧,初始化脚本会自动加 2 GB swap;游戏容器有
mem_limit: 5g与NODE_OPTIONS堆上限保护(适合约 8 GB 内存主机,小机器请按比例调小)。
别忘了分配一个Elastic IP,保证域名始终指向同一地址。
3. 一键初始化:User Data 脚本
无需手动装环境。编辑 deploy/user-data.sh,填入域名后整体粘贴到 EC2 启动向导的User data字段:
DOMAIN="play.example.com" # 你的游戏域名,先留空可测 IP ADMIN_DOMAIN="" # 可选:管理后台独立域名脚本会自动完成:
- 安装 Docker + Compose v2 + Caddy,创建 swap
- clone 仓库到
/opt/eastbrook(私有 fork 请改用 deploy key) - 用
openssl rand生成强随机 Postgres 密码写入.env(权限 600) docker compose up -d --build构建并启动全部服务- 写入 Caddyfile、配置每日 03:15 UTC 的
pg_dump自动备份(保留 14 天) - 安装 deploy/game_watchdog.sh 看门狗(每分钟巡检,容器
unhealthy时自动重启)
构建耗时几分钟,可用以下命令实时观察:
ssh ubuntu@<弹性IP> "sudo tail -f /var/log/eastbrook-setup.log"4. Caddy 反代与自动 HTTPS
user-data.sh写入的 Caddy 配置做了三件关键事:
- 自动 HTTPS:域名指向实例后,Caddy 自动申请并续期 Let's Encrypt 证书,WebSocket 无需额外配置,客户端在 https 页面会自动走
wss:// - 屏蔽运维端点:
/livez、/readyz、/metrics、/internal/*对外一律 404,健康探测只发生在容器内部,避免暴露运维信息 - gzip 压缩:
encode gzip降低静态资源传输体积
如果先用 IP 测试(无域名),之后启用 TLS 只需重写/etc/caddy/Caddyfile并执行sudo systemctl reload caddy,配置模板见 DEPLOY.md 第 4 节。
5. 上线后验证清单
curl -fsS http://127.0.0.1:8787/api/status # 服务端应答 sudo docker compose ps # 容器状态应为 healthy sudo docker compose logs game --since 10m # 启动日志无报错浏览器打开https://play.example.com能登录进世界即上线成功。
6. 日常更新流程(6 步)
sudo git pull拉取最新代码- 按 DEPLOY.md 在容器内跑一次
tsc --noEmit类型检查门槛 - 可选:
POST /internal/restart-countdown(带RESTART_COUNTDOWN_SECRET头)向玩家广播 10 分钟维护倒计时 sudo docker compose stop game—— 优雅停机,服务端会保存全部角色sudo docker compose up -d --build重建启动- 复跑第 5 节的验证清单
在线玩家仅断开数秒即可重新登录,存档不丢失。
7. 可选进阶配置
| 需求 | 配置项 | 参考 |
|---|---|---|
| 真实邮件(SES) | EMAIL_PROVIDER=ses+ IAM 角色 | server/email/ |
| 世界容量上限 | MAX_PLAYERS_PER_REALM(默认 5000) | docker-compose.yml |
| 人机检测私有版 | 克隆到private/bot_detector | server/bot_detector/ |
| 性能遥测 | METRICS_TOKEN开启/metrics | DEPLOY.md |
全部可配置项及说明见 .env.example(cp .env.example .env后按需修改)。备份恢复命令、回滚注意事项与更多运维细节,请直接查阅 DEPLOY.md。
至此,你的 World of ClaudeCraft 世界已在单机上稳定运行:Caddy 负责 TLS,Docker Compose 管理服务生命周期,看门狗与自动备份兜底——这正是生产级游戏服务的最小完整形态。
【免费下载链接】world-of-claudecraft项目地址: https://gitcode.com/gh_mirrors/wo/world-of-claudecraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考