关于用 Docker 免费搭建 DNF 台服这件事
前言
事情是这样的,前段时间在值得买看到了一篇如何搭建 DNF 台服的文章,看了之后心中的勇士之魂蠢蠢欲动,于是自己的搭了一个玩玩。但是搭建 DNF 台服是有系统限制的,只有在 centOS 上能用,而且还有版本限制,网上大多都是使用 centOS 5.8 系统,我实测 cetnOS 6.11 也行。但这两个系统已经廉颇老矣,特别是 cetnOS 5.8,官方早已停止维护,各大云服务厂商甚至都不会提供这个系统,就算能安装,更新源文件也麻烦。
就在这个时候,突然就想到还有 Docker 这么好用的玩意,上 Docker Hub 一搜,果然有镜像,马不停蹄的搭了一个试试。顺便分享一下教程。
这篇文章就可以帮助你在任何支持 Docker 的机器上搭建一个免费的 DNF 台服。本文需要用到 SSH 命令行操作,可能会劝退一部分人,但我还是建议你看完,纯命令行的搭建难度也不是很高,如果你用群晖之类的 Linux 系统的 NAS 完全可以用纯 UI 界面搭建。
需要准备的东西
一个装有 Linux 系统的电脑/服务器/VPS
DNF 台服客户端 提取码:fybn
网关文件 提取码:2333
会用键盘的人
需要把网关文件补丁覆盖到客户端文件夹内,提取密码:2333
建议可以先开始下载,一边下载一边看教程。
理论上所有能够运行 Docker 的 Linux 系统都能安装(WINDOWS 没测试过),包括那些 NAS 系统,比如:群晖 DSM、威联通 QNAP、UNRAID、TrueNAS 等等。这里我用 Ubuntu 2104 虚拟机来演示。
SSH 登陆
打开 PUTTY,输入服务器的 IP 和用户名密码的参数,点击登陆。
依次输入用户名和密码
更新以及安装 Docker
连接到服务器第一件事获取 root 权限和更新一下软件源。
sudo -i
apt update
先安装一个 Docker,下面用到官方的脚本进行安装。
curl -sSL <https://get.docker.com/> | sh
docker --version #如果有版本信息反馈表示安装成功
设置 SWAP 虚拟内存
因为这个 DNF 台服容器非常消耗内存,作者推荐设置 8G SWAP 虚拟内存,所以我们这就来设置一下。如果你的机器已经大于 8G 内存,可以跳过这一步。
先输入下面命令
swapon --show
从返回的命令可以看到现在系统内已经有 4G SWAP,存储在 /swap.img 文件里,显然只有 4G 是不够的,我们要把它删了重新新建一个。
删除 SWAP
swapoff -v /swap.img
删除 fastab 文件最后一行 swap 的配置文件下,命令如下:
nano /etc/fstab
删除完后按 Crtl + X 推出,Y 保存,回车确定。
rm /swap.img
这里就已经成功把 SWAP 卸载。
创建 SWAP
下面创建一个文件并设置为 swap。
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
nano /etc/fstab
在最后一行粘贴以下内容,然后按 Crtl + X ,再按 Y ,再按回车。
/swapfile swap swap defaults 0 0
最后输入命令看一下返回信息,如果和我下面一样就表示成功了。
swapon --show
创建数据库
首先创建一个文件夹用于存放数据库和日志等文件。
mkdir /dnf
把镜像拉回到本地并初始化数据库 (下面一整段复制粘贴到终端)。
docker run --rm -v /dnf/log:/home/neople/game/log -v /dnf/mysql:/var/lib/mysql -v /dnf/data:/data 1995chen/dnf:stable /bin/bash /home/template/init/init.sh
这里如果显示出这个数据库正在启动的界面就代表成功了,这里会在前台跑一个生成数据库的脚本,并不是卡住了,要耐心等大概 10 分钟就行了。
显示这个界面就代表初始化已经完成了(主要看最后三行)。初始化完成后容器会自动删除。
搭建服务器端
接下来第二步就是重新启动容器并加上其他一些必要的参数。命令我放到下面,如果前面你的文件路径设置和我完全一样,下面这些命令直接复制粘贴,如果修改了位置,那下面的三个 -v 参数前面的路径请替换成自己设置的路径。
docker run -d --name=dnf -e PUBLIC_IP=192.168.5.235 -e DNF_DB_ROOT_PASSWORD=88888888 -e GM_ACCOUNT=gm_user -e GM_PASSWORD=gm_pass -v /dnf/log:/home/neople/game/log -v /dnf/mysql:/var/lib/mysql -v /dnf/data:/data -p 3000:3306/tcp -p 7600:7600/tcp -p 881:881/tcp -p 20303:20303/tcp -p 20303:20303/udp -p 20403:20403/tcp -p 20403:20403/udp -p 40403:40403/tcp -p 40403:40403/udp -p 7000:7000/tcp -p 7000:7000/udp -p 7001:7001/tcp -p 7001:7001/udp -p 7200:7200/tcp -p 7200:7200/udp -p 10011:10011/tcp -p 31100:31100/tcp -p 30303:30303/tcp -p 30303:30303/udp -p 30403:30403/tcp -p 30403:30403/udp -p 10052:10052/tcp -p 20011:20011/tcp -p 20203:20203/tcp -p 20203:20203/udp -p 30703:30703/udp -p 11011:11011/udp -p 2311-2313:2311-2313/udp -p 30503:30503/udp -p 11052:11052/udp --cpus=1 --memory=1g --memory-swap=-1 --shm-size=8g --restart always 1995chen/dnf:stable
PUBLIC_IP 等号后面填你服务器的公网 IP,我已经在命令行上用粗字标注了,如果你是局域网内搭建的,可以和我一样填内网 IP。(这个一定要改)
-e 参数可以自行设置数据库账号密码
-v 参数可以自行设置数据库等位置
输入完命令之后会有一个反馈提示。
我们先用命令查看容器有没有在后台运行,如果有返回结果表示容器在后台运行。
docker ps
稍稍等候两到三分钟后,输入下面的命令查看日志。
grep -rHi 'GeoIP Allow Country Code' /dnf/log
如果没有返回信息稍等片刻再输入一次试试,直到有反馈信息为止。看到这里有返回了地区信息,就代表服务端已经搭建并启动成功了。
客户端设置
离成功就差最后一步了。现在的操作就要回到我们熟悉的桌面操作了。下载并解压文章前面给的网关文件。
打开前面下载的统一网关,点到第二项,把你的服务器地址填上,如果你上面没有修改 Docker 参数的话,可以直接抄我的作业(IP 除外)。确保服务器防火墙放行了对应端口和所有参数都填好了以后点击一下连接。
通讯密钥: 763WXRBW3PFTC3IXPFWH
登录器端口: 7600
网关端口:881
GM账户: gm_user
GM密码: gm_pass
登陆器版本:20180307
如果没有返回错误信息就代表连接网关成功,接下来就是生成启动器。
点到第一页,把版本号、IP 地址、密钥等参数填到对应的地方,点击增加,再点击生成,然后程序就会帮你生成一个独一无二的登陆器,把登陆器复制到 DNF 台服客户端的根目录。
再点击最后一页,依次“获取当前密码→生成随机密码→应用当前密码”,再点击打开文件,把解压文件里面的 Script.pvf 文件选上,然后点击应用,得到一个新的 Script.pvf 文件,把这个文件放回 DNF 台服客户端内即可。
打开客户端目录中的统一启动器,如果没有报错,证明正常连上服务器,点击右下的账号注册,信息随便填,账号和密码记住就好。
输入刚创建的账号和密码稍等片刻就可以看到耳熟能详的掉线 BGM 了
容器默认会随着系统开启而打开,如果容器进程被杀或者启动失败,可以用下面的命令:
docker stop dnf #关掉 DNF 容器
docker start dnf #打开 DNF 容器
docker restart dnf #重启 DNF 容器
至此,Docker 搭建 DNF 台服是成功了, 感谢镜像作者提供了另一种搭建方法,摆脱了 CentOS 系统的束缚,其他 Linux 系统也可以用 Docker 灵活搭建。容器还有其他可自定义选项,更加详细的文档请访问作者的 Github 中查看,有搭建方面的问题也可以留言或者去作者的群里面询问一下。
总的来说 Docker 对比虚拟机搭建还是有着不少优势的,Docker 不怎么挑系统,对硬件的使用率也要高于虚拟机。而且就向开头所说,如果你用的群晖、威联通等带 Docker UI 的 NAS 系统,搭一个这样的私服也非常简单方便。如果服务器、NAS 这些你都没有,那你还能用 WIN10 自带的 WSL 子系统搭建,反正路子很广,多花一点点时间学习,不比去淘宝花钱买一个好?
最后希望大家都能搭建成功,复兴阿拉德大陆的重任就交给你们了。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
Hikarunara
校验提示文案
刘奶奶拿牛奶
校验提示文案
麻花腾儿
校验提示文案
小巷子
校验提示文案
_anonymous
校验提示文案
该账户为系统黑名单
校验提示文案
yeper
校验提示文案
没钱花的小骆驼
校验提示文案
咕咕噜
校验提示文案
值友1046807966
校验提示文案
丨池鱼丨
校验提示文案
造一
校验提示文案
值友8553463038
校验提示文案
清风wh
校验提示文案
值友6094400950
校验提示文案
Syozhi
校验提示文案
值友5947546748
校验提示文案
影子君
校验提示文案
二零二一
校验提示文案
ygritte
校验提示文案
不要停下来啊
校验提示文案
蔡花
校验提示文案
值友3718469201
校验提示文案
值友9836508141
校验提示文案
蔡花
校验提示文案
今晚打UFO
校验提示文案
花里胡哨草履虫
导入数据的时候提示Failed to get D-Bus connection: Operation not permitted,我使用privilege参数解决了。
后面打开init日志看,发现在 Loading Items 之后就没下文了,想请教下大家怎么解决啊?
校验提示文案
路路买买买
校验提示文案
挖出一个未来
校验提示文案
惊蛰Zer
校验提示文案
到底有毛不直得买
The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)
校验提示文案
雨天就不打伞
校验提示文案
condition
校验提示文案
jesseying
校验提示文案
值友3877226543
我是台服残端一开始出来就关注了,玩了几个都不太满意,很多自诩还原的都根本不还原,数据都是简单的加倍或减倍,作为网游如果一点都不改又不适合单人或者小团体玩。
直到玩到蛐蛐魔改不悔70这个pvf,才发现这个做的真的好,材料装备商店里有卖不用说,还专门做了任务指引你了解这些,日常任务也加了很多,有全套的sao活动,强力推荐!贴吧置顶帖里有下载
校验提示文案
anokk
校验提示文案
值友3877226543
校验提示文案
asdf2080
有人搭个奇迹mu么
校验提示文案
凤凰院真凶
校验提示文案
值友3548121562
校验提示文案