
3分钟用Docker一键搭建DNF私服【免费下载链接】dnf项目地址: https://gitcode.com/gh_mirrors/dnf/dnf搭建DNF私服最劝退的不是游戏本身而是没完没了的环境配置依赖装不上、端口对不上、服务起不来。现在一个Docker容器化部署方案把整个服务端打包进单一镜像几条命令就能跑通全流程全程只需3分钟。这篇实战指南按新手最容易卡住的5个问题来组织照做就能跑通。准备环境先满足三个硬性条件再动手动手前先看清门槛避免白折腾项目要求内存4GB以上2GB最低必须配置swap磁盘至少20GB可用空间系统CentOS 7 / Ubuntu 18.04非ARM架构软件Docker与Docker Compose就这些不需要装任何游戏依赖。项目基于官方CentOS基础镜像把登录、频道、公会、拍卖行、数据库等服务全部整合进镜像1995chen/dnf用环境变量控制配置所以服务器上只需一个Docker。装好后验证一下环境是否就绪docker --version能看到版本号就进入下一步。一键部署docker run 拉起完整游戏服务这一节分两小步先建数据目录再启动容器。前置条件Docker已安装内存不低于2GB。第一步创建数据目录。日志、数据库、PVF都落在宿主机上方便备份和迁移mkdir -p /data/log /data/mysql /data/data第二步一键启动。下面命令可直接复制只需把PUBLIC_IP换成你的公网IP局域网部署填内网IPdocker run -d \ -e PUBLIC_IP你的公网IP \ -e WEB_USERroot -e WEB_PASS123456 \ -e DNF_DB_ROOT_PASSWORD88888888 \ -e GM_ACCOUNTgmuser -e GM_PASSWORDgmpass \ -e CLIENT_POOL_SIZE10 \ -v /data/log:/home/neople/game/log \ -v /data/mysql:/var/lib/mysql \ -v /data/data:/data \ -p 2000:180 -p 3000:3306/tcp -p 7600:7600/tcp -p 881:881/tcp \ -p 7001:7001/tcp -p 7001:7001/udp \ -p 30011:30011/tcp -p 31011:31011/udp \ -p 30052:30052/tcp -p 31052:31052/udp \ -p 7300:7300/tcp -p 7300:7300/udp \ -p 2311-2313:2311-2313/udp \ --cap-addNET_ADMIN --hostnamednf \ --cpus1 --memory1g --memory-swap-1 --shm-size8g \ --namednf 1995chen/dnf:centos5-2.1.9.fix1几个关键参数先混个脸熟参数默认值含义PUBLIC_IP无对外IP客户端靠它连服务器OPEN_CHANNEL11,52开启的频道可写1-20,52-56CLIENT_POOL_SIZE10客户端缓冲池单人玩可降到3GM_ACCOUNT / GM_PASSWORDgmuser / gmpass网关登录账号密码--shm-size8g不可删除共享内存Docker默认64M带不动服务启动后等待1~2分钟首次运行会自动初始化MySQL数据。验证是否成功看三处看初始化日志出现5条GeoIP Allow Country Code圈内俗称五国即代表游戏服初始化完成tail -f /data/log/siroco11/Log$(date %Y%m%d).init看游戏进程是否存活docker exec dnf ps -ef | grep df_game浏览器访问http://你的IP:2000用WEB_USER/WEB_PASS登录Supervisor管理页可实时查看每个进程的状态和日志。想用 docker-compose 管理群晖NAS推荐先克隆项目git clone https://gitcode.com/gh_mirrors/dnf/dnf然后进入deploy/dnf/docker-compose/basic目录执行docker-compose up -d即可效果与上面命令一致。读懂端口一张架构图弄清服务分层先看整体架构一秒理解系统是怎么运转的服务大致分四层接入层stun打洞、relay中继、channel分流负责客户端接入游戏服务层game频道服务器承载核心玩法功能模块层公会、拍卖行、点券、监控提供配套功能数据存储层MySQL负责数据持久化。对应到部署命令里各端口作用如下端口作用881统一网关登录器连接入口7600登录器端口2000Supervisor进程管理Web页面3000MySQL数据库注意不是33067001频道分流服务 df_channel_r30011/3101111频道游戏服务 df_game_r30052/3105252频道游戏服务7300P2P中继 df_relay_r2311-2313NAT打洞 df_stun_r想开更多频道改环境变量OPEN_CHANNEL1-20,52-56即可每个频道大约多占200~300MB内存按服务器配置量力而行。详细部署方式可参考doc/OtherDeploy.md。连接客户端三步配置网关生成登录器服务端就绪后客户端要完成三件事。第一步装补丁打开DOF补丁里的DNF.toml把服务器地址改成你的PUBLIC_IP再将补丁文件复制到游戏客户端根目录。第二步配置统一网关参数如下配置项值网关地址你的PUBLIC_IP网关端口881登录账号 / 密码gmuser / gmpass通信密钥763WXRBW3PFTC3IXPFWH登录器端口7600登录器版本20180307第三步生成登录器点击生成登录器把生成的登录器和Config.ini复制到游戏根目录双击即可进游戏。首次登录记得先在游戏里注册账号。排查故障三个高频报错当场解决新手翻车基本集中在这三处对号入座即可。坑1服务启动失败一直卡在 Init DataManager 日志循环原因内存或swap不足。解法执行free -m确认swap是否生效为服务器增加8G swap空间并同步调大--shm-size内存实在不够就只开1个频道OPEN_CHANNEL11。坑2客户端能进频道但点不进去灰频道原因防火墙或安全组未放行对应端口。解法关闭服务器防火墙在云厂商安全组放行881、7600、3000、7001、7300、30011/31011等端口最后确认PUBLIC_IP是客户端能访问到的地址。坑3统一网关提示无法连接数据库原因数据库端口记成了3306。解法本项目MySQL对外端口是3000用户名root、密码默认88888888确认3000端口已在安全组放行。写在最后记住这5点就够了整个服务就是一个容器数据全在/data下备份打包目录迁移换机器重新run。配置全靠环境变量改IP、频道、密码后执行docker restart dnf即可生效。内存不够优先加swap别硬扛单人玩把CLIENT_POOL_SIZE降到3能省一大截内存。进程被系统杀掉很常见docker restart dnf一键拉起或在2000端口页面手动重启。想上多频道、站库分离、多大区甚至K8s项目提供了现成编排文件入口在deploy/dnf/docker-compose/与deploy/dnf/k8s-deploy/插件扩展见plugin/目录照着示例改就能用。最后提醒本项目仅供学习研究使用请勿用于商业运营。把服务器跑起来叫上朋友重温阿拉德的冒险这才是容器化部署最快乐的地方。【免费下载链接】dnf项目地址: https://gitcode.com/gh_mirrors/dnf/dnf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考