DNF私服终极整合镜像部署教程:网关+五国+假人+SSH+进度条看板 一包全带走

DNF 私服终极整合镜像部署教程:网关+五国+假人+SSH 一包全带走

一条 docker run 命令,拉起完整 DNF 私服:MySQL 数据库 + 登录网关 + 五国三频道 + 假人机器人系统 + SSH 远程 + 实时状态看板 + 一键端菜单,登录就看见每一条服务的进度条。

root@dof:~ — Xshell 登录实拍效果(假人在线 40/20)
-- 输入减号(-)回车进入【常用指令】 --
-- 输入加号(+)回车进入【快捷五国状态】 --
==================================================
         DOF 状态面板  ·  网关/五国/假人
==================================================
 时间 2026-09-18 17:32   已运行 0天19小时12分
 系统   ● MySQL在线   内存 6.8G/7.6G   负载 30.20
          ● 开机自启已启用 (dof-run)

● 网关Gateway 登录入口 ████████████████████ 100% ✔ 就绪 :8188
● 假人Robot 挂机系统 ████████████████████ 100% 在线40/20 Auto:On

● siroco12 1区2频道 ████████████████████ 100% ✔ 已上线 :10012
● siroco52 5区2频道 ████████████████████ 100% ✔ 已上线 :10052
● siroco56 5区6频道 ████████████████████ 100% ✔ 已上线 :10056

总状态 ● 五国全部在线,可以进游戏了

运维命令速查
看加载详情 tail -f /home/neople/game/log/siroco12/Log*.init
重启五国 /root/dof-restart.sh
假人Web http://服务器IP:8112


一、这个镜像里有什么

组件 说明 端口
MySQL 5.6 游戏数据库,数据目录挂载持久化 3306
登录网关 BaoYu + Gatewayd,玩家入口 8188
五国三频道 siroco12/52/56,完整服务链(stun/monitor/manager/relay/bridge/channel/auction/point/guild…) 10012/10052/10056
假人机器人 robot 静态二进制,Web 管理台,自动登录/喊话/摆摊 8112
SSH 服务 openssh,root 直登,登录即见状态看板 2222
状态看板 dof-status:网关/假人/五国 三区进度条 + 运维命令速查 –
一键端菜单 减号回车进入常用指令(y 菜单) –

镜像规格:dof:v5,约 3.6GB(导出包约 2.3GB)。基于 CentOS 7,已内置 32 位运行库、NSS/gconv 字符集、GeoIP 数据、libz——所有历史踩坑全部填平。

二、服务器要求

项目 最低 推荐
内存 6G 8G 以上(开假人很吃内存)
硬盘 30G 空闲 40G+ SSD
系统 任意能装 Docker 的 Linux Debian 11 / CentOS 7+
网络 需要公网 IP 建议境外/免备案服务器

三、五分钟部署

Step 1 · 安装 Docker(已有跳过)

curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

Step 2 · 上传并导入镜像

把 dof-v5.tar.gz 上传到服务器(scp / 网盘中转均可),然后:

gunzip -c dof-v5.tar.gz | docker load
docker images   # 应看到 dof:v5

Step 3 · 一条命令运行(核心)

docker run -d --name dof \
  --network host \
  --cap-add=SYS_NICE \
  --shm-size=2g \
  -v dof-mysql:/var/lib/mysql \
  -v dof-neople:/home/neople \
  -v dof-root:/root \
  -v dof-dp2:/dp2 \
  -e DOF_SSH_PASS=你的SSH密码 \
  --restart unless-stopped \
  dof:v5

参数逐条解释(新手必读):

参数 为什么必须
--network host 游戏端口直接走宿主网络,客户端才能连上(容器隔离网络会导致玩家无法连接)
--cap-add=SYS_NICE 服务端要用 nice -20 提权,没有会启动失败
--shm-size=2g TP 反作弊模块用共享内存,默认 64M 会段错误
-v dof-mysql:/var/lib/mysql 数据库目录持久化,重建容器数据不丢
-v dof-neople:/home/neople 游戏目录持久化(含 /home/neople/game 主目录、PVF、拍卖行数据),改 PVF 也在这改
-v dof-root:/root /root 持久化:假人配置、看板、日志、网关配置都在这
-e DOF_SSH_PASS=... 容器内 root 的 SSH 密码,改成你自己的强密码
--restart unless-stopped 服务器重启后容器自动拉起,全链自动恢复

Step 4 · 放行防火墙端口

云服务器请在安全组放行(本机防火墙同理):

TCP: 2222(SSH)  8188(网关)  8112(假人Web)  10012 10052 10056  30303 7200
UDP: 10012 10052 10056  11012 11052 11056  2311 2312 2313

3306(MySQL)不要对公网开放。

Step 5 · 等待首次加载

容器启动后自动按顺序拉起:MySQL → 网关 → SSH → 五国 →(五国上线后)假人系统。PVF 加载约 7~15 分钟。

docker logs -f dof        # 看启动链日志

四、连接 SSH:登录即见看板

用 Xshell / PuTTY / 终端连接:

主机:你的服务器IP
端口:2222          ← 注意是 2222 不是 22
用户:root
密码:你 -e DOF_SSH_PASS 设置的密码

命令行连接示例:

ssh root@服务器IP -p 2222

登录瞬间自动弹出状态面板(这就是打进镜像里的进度条看板):

  • 网关 Gateway 行:登录入口 8188 就绪状态,进度条 100% 为正常
  • 假人 Robot 行:在线人数/目标人数进度条 + Auto 开关状态(0/20 表示还没开自动)
  • 三频道行:PVF 加载里程碑实时进度(35% 加载物品 → 55% 祭坛 → 85% GeoIP → 100% 上线)
  • 总状态:全部绿了就能进游戏

底部是灰色运维命令速查,常用的重启、看日志、改配置命令都在。

五、快捷键(加减号命令)

登录容器 SSH 后:

敲 - 回车  →  进入一键端常用指令菜单(y)
敲 + 回车  →  随时刷新五国状态看板
敲 dof-status 回车  →  同上,任何时候可敲

六、启动假人机器人(三步)

1. 浏览器打开 http://服务器IP:8112(密码 twadmin)
2. 顶部点 Auto → 设置 Target online(目标假人数,先 10~20 测试)→ 保存并启动
3. 回 SSH 敲 dof-status,假人行进度条开始爬升:在线 3/20 → 8/20 → 20/20

假人登录依赖五国在线(Game port 绿色)。Game port 红色时先等五国上线再开 Auto。

七、日常运维速查

dof-status              # 状态看板(随时敲)
/root/dof-restart.sh    # 重启五国(容器内)
docker restart dof      # 重启整个容器(全链自动恢复)
docker logs -f dof      # 容器启动链日志
tail -f /var/log/dof-run.log              # 五国加载日志
tail -f /var/log/robot.log                # 假人日志
vi /root/config/conf/robot_config.ini     # 假人配置(职业/目标人数/出生点)

改 PVF:/home/neople/game/Script.pvf(挂载卷内,改前备份,改后 docker restart dof)。
数据备份:直接备份三个 docker 卷(dof-mysql / dof-neople / dof-root)即全量。

八、常见问题

Q:启动后五国一直 0%?
看 docker logs dof 是否报 MySQL 错误;确认内存 ≥6G;确认没有端口占用(ss -tlnp | grep 10012,先停掉旧服务)。

Q:假人进度条一直 0/20 不动?
① 五国是否已 100% 上线;② Web 8112 里 Auto 是否真的启动了;③ 数据库卡片是否正常;④ 假人上限受服务器最大人数限制,先降低 Target。

Q:服务器重启后会自动恢复吗?
会。--restart unless-stopped + 容器内启动链 = 开机自动按 网关→五国→假人 顺序恢复,无需人工干预。

Q:能把 22 端口改回标准 SSH 吗?
容器 SSH 固定监听 2222(host 网络直通),不影响宿主机自己的 22 端口,二者互不冲突。

Q:SSH 看板里”开机自启未启用”是红色的?
这是正常显示。容器版由 docker --restart unless-stopped 托管自启(登录横幅会提示”容器托管模式”),等效于物理机的开机自启,无需处理。

Q:想迁移到新服务器?
旧机:tar 三个 docker 卷 → 新机:导入镜像 + 还原三个卷 + 同一条 run 命令,五分钟完成迁移。

附:Docker-Compose 部署方式(推荐长期运维)

把下面的编排文件存为 /root/dof/docker-compose.yml(数据卷 external: true 直接引用既有卷,换镜像不丢数据):

services:
  dof:
    image: dof:v5
    container_name: dof
    network_mode: host
    cap_add:
      - SYS_NICE
    shm_size: 2g
    restart: unless-stopped
    environment:
      - DOF_SSH_PASS=你的SSH密码
    volumes:
      - dof-mysql:/var/lib/mysql
      - dof-neople:/home/neople
      - dof-root:/root
      - dof-dp2:/dp2

volumes:
  dof-mysql:
    external: true
  dof-neople:
    external: true
  dof-root:
    external: true
  dof-dp2:
    external: true

常用命令:

cd /root/dof
docker compose up -d        # 启动
docker compose logs -f      # 跟日志
docker compose restart      # 重启容器
docker compose down         # 停止并移除(数据卷保留)

注意:首次部署若沿用旧数据卷,卷里可能没有 v5 新增的假人文件,可从镜像提取补齐:

docker create --name tmp-extract dof:v5
VD=/var/lib/docker/volumes/dof-root/_data
docker cp tmp-extract:/root/robot $VD/ && docker cp tmp-extract:/root/config $VD/
docker cp tmp-extract:/root/robot-start.sh $VD/ && docker rm tmp-extract
docker exec dof /root/robot-start.sh   # 手动拉起一次假人


附:部署后常见环境问题修复(含一键端/y菜单)

以下四项是实测中遇到的环境坑,症状与修复命令全部给出。若你的镜像已是最新构建版本,可跳过;不确定就直接跑一遍修复命令,幂等无害。

① SSH 登录后没有自动弹出状态看板

症状:连上容器 SSH 只有光秃秃的 [root@NB652723 ~]#,没有看板。
原因:CentOS 7 镜像 root 家目录没有 .bash_profile(登录 shell 不读 .bashrc),且数据卷会覆盖镜像内的 /root/.bashrc。
修复(容器内执行,或宿主机 docker exec dof 进容器):

cat > /root/.bash_profile <<'EOF'
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
PATH=$PATH:$HOME/bin
export PATH
EOF

cat > /root/.bashrc <<'EOF'
alias -- -='/usr/local/bin/y'
alias -- +='dof-status'
if [[ $- == *i* ]]; then
    echo "-- 输入减号(-)回车进入【常用指令】 --"
    echo "-- 输入加号(+)回车进入【快捷五国状态】 --"
    [ -x /usr/local/bin/dof-status ] && /usr/local/bin/dof-status
fi
EOF

修复后重新登录 SSH 即见看板。

② y 菜单 SQL 备份失败(sudo: command not found)

症状:备份时报 sudo: command not found,随后 tar: /root/mysqlbak/cc: No such file or directory、压缩失败。
原因:镜像未装 sudo;MySQL 编译安装于 /usr/local/mysql/bin,不在 PATH,mysqldump 没跑成导致无备份文件可压缩。
修复:

yum install -y sudo
ln -sf /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -sf /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -sf /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
mkdir -p /root/mysqlbak

数据库凭据读取自 /root/config.ini 的 [db] 段(db_user_name / db_password)。

③ 提示「当前服务端IP与实际不符」

症状:一键端检测提示服务端 IP 是别的机器(例如服务器换了机器或迁移过数据卷)。
原因:/home/neople/game/cfg/siroco*.cfg(各频道服务端配置)里写死了旧服务器 IP,迁移数据卷后原样带过来。
修复(把旧 IP 换成本机 IP,示例以 1.2.3.4 为本机为例):

grep -rl '38.76.219.243' /home/neople/game/cfg/ | wc -l   # 确认旧IP分布
sed -i 's/38.76.219.243/1.2.3.4/g' /home/neople/game/cfg/*.cfg
grep -r '38.76.219.243' /home/neople/game/cfg/ | wc -l    # 应为 0

⚠️ 新 IP 要重启五国才生效:容器内执行 /root/dof-restart.sh(约 10 分钟加载完),运行中的服务端不会热读配置。挑没人玩的时间点做。

④ y 菜单显示「数据库版本:[错误]链接失败」

症状:菜单底部数据库版本显示链接失败,或 mysql 命令报 Could not open required defaults file: /etc/my.cnf / Fatal error in defaults handling。
原因:镜像缺 /etc/my.cnf,mysql 客户端读默认配置直接中止(还没走到密码环节)。
修复:

printf '[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
' > /etc/my.cnf
chmod 600 /etc/my.cnf
mysql -e "select version();"   # 验证能返回版本号

注意 chmod 600 不能省——mysql 会忽略全局可写的配置文件。


实战续篇已发布:DNF私服整合镜像实战教程:九大踩坑修复实录 + DOF_SERVER_IP 一键换机 —— 9 大踩坑实录(SSH 白板 / 网关死循环 / 僵尸进程假活 / MySQL 大小写折叠 / 暴雨后台空白)、DOF_SERVER_IP 环境变量一键换机、一键体检修复脚本 check-dof.sh。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容