Skip to content

Linux / Docker ​

2026-09-06 新部署方向:两台主机计划重装 Ubuntu,采用 Rust 网关与多国度 Docker 部署包。当前交付源码与部署包,尚未在正式机发布。下文为旧 Compose 维护说明,新装多国度请使用新包。

Linux Compose 适合测试、灾备重建和旧环境回滚。当前权威正式数据位于 Windows 主机,未经迁移窗口不得启动旧 Linux 游戏或论坛容器写同一批账号、角色和订单。

主机准备 ​

bash
# 刷新系统软件包索引,不安装或升级软件包。
sudo apt-get update
# 安装 Docker、Compose、OpenSSH Server 和 Python;会修改主机软件包。
sudo apt-get install -y docker.io docker-compose-plugin openssh-server python3
# 立即启动 Docker/SSH 并设置开机自启;执行后相关端口可能开始监听。
sudo systemctl enable --now docker ssh
# 把当前用户加入 docker 组;重新登录后生效,该组等同于主机高权限。
sudo usermod -aG docker "$USER"

防火墙只开放实际入口;数据库、D2CS、D2DBS、D2GS 管理口和容器内部 API 不对公网开放。

配置 ​

bash
# 进入服务器项目根目录;确认该目录是本次准备部署的副本。
cd /opt/d2113
# 从示例创建本机私有环境文件;已有 deploy/.env 时不要覆盖,先备份并逐项合并。
cp deploy/.env.example deploy/.env
# 限制环境文件仅当前用户可读写,避免数据库和服务密钥泄露。
chmod 600 deploy/.env

逐项修改随机密码、API 签名密钥、论坛 CSRF、数据库密码、端口和公网地址。109 与 113 必须使用不同 volume、账号目录、CHARSAVE、索引数据库和令牌。不要把 deploy/.env 提交到 Git。

deploy-remote.py 的目标主机、SSH 端口、用户和远端根目录读取 catalog.json 的 legacyHosts;首次创建远端 .env 时读取完整的 deploy/.env.example,填写目标公网地址并生成各项秘密,不再在 Python 中复制一组端口默认值。需要改变 Compose 端口或内部 URL 时修改 .env.example 或目标机私有 .env,不要改部署脚本。

构建与启动 ​

bash
# 只解析并校验 Compose 与环境变量,打印最终配置,不创建容器。
docker compose --env-file deploy/.env -f deploy/docker-compose.prod.yml config
# 构建生产镜像;会消耗 CPU、磁盘和网络,但不会启动新容器。
docker compose --env-file deploy/.env -f deploy/docker-compose.prod.yml build
# 正式创建或更新并后台启动整套容器;会改变运行服务,执行前必须完成备份和端口核对。
docker compose --env-file deploy/.env -f deploy/docker-compose.prod.yml up -d
# 只读查看 Compose 容器状态和端口,确认启动结果。
docker compose --env-file deploy/.env -f deploy/docker-compose.prod.yml ps

从开发机远程发布旧 Linux 目标可使用:

powershell
# 仅在当前 PowerShell 进程中暂存 SSH 密码,并以安全字符串交互读取;不要把密码直接写在命令行。
$env:D2113_DEPLOY_PASSWORD = Read-Host 'SSH password' -AsSecureString
# 正式连接目录中配置的 Linux 主机并执行远程部署;运行前先查看 --help、确认目标和备份。
python .\scripts\deploy-remote.py

实际脚本使用 Paramiko 密码认证;凭据通过进程环境或交互参数提供,不写入仓库。执行前先阅读脚本 --help 并确认目标根目录。

数据卷与恢复 ​

必须共同备份论坛数据库、论坛附件、PvPGN 账号、CHARINFO、CHARSAVE、交易托管、API 索引和审计回执。恢复时先停所有写入容器,恢复同一时间点数据,再只读验收,最后开放玩家入口。

双写

Windows 与 Linux 不得同时运行同一版本的权威 D2DBS、论坛 worker 或交易结算器。即使挂载的是复制目录,也可能产生订单重复交付和角色回档。

仅供 CNBN D2 服务管理与开发人员使用