☰
World of ClaudeCraft生产部署指南:Docker Compose、Caddy反代与AWS单机上线完整步骤
2026/10/7 3:15:44 网站建设 项目流程

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 中:

服务作用对外暴露
postgresPostgreSQL 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="" # 可选:管理后台独立域名

脚本会自动完成:

  1. 安装 Docker + Compose v2 + Caddy,创建 swap
  2. clone 仓库到/opt/eastbrook(私有 fork 请改用 deploy key)
  3. 用openssl rand生成强随机 Postgres 密码写入.env(权限 600)
  4. docker compose up -d --build构建并启动全部服务
  5. 写入 Caddyfile、配置每日 03:15 UTC 的pg_dump自动备份(保留 14 天)
  6. 安装 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 步)

  1. sudo git pull拉取最新代码
  2. 按 DEPLOY.md 在容器内跑一次tsc --noEmit类型检查门槛
  3. 可选:POST /internal/restart-countdown(带RESTART_COUNTDOWN_SECRET头)向玩家广播 10 分钟维护倒计时
  4. sudo docker compose stop game—— 优雅停机,服务端会保存全部角色
  5. sudo docker compose up -d --build重建启动
  6. 复跑第 5 节的验证清单

在线玩家仅断开数秒即可重新登录,存档不丢失。

7. 可选进阶配置

需求配置项参考
真实邮件(SES)EMAIL_PROVIDER=ses+ IAM 角色server/email/
世界容量上限MAX_PLAYERS_PER_REALM(默认 5000)docker-compose.yml
人机检测私有版克隆到private/bot_detectorserver/bot_detector/
性能遥测METRICS_TOKEN开启/metricsDEPLOY.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询