饥荒服务器开服指南及全网最全踩坑记录
写在之前
网上确实有很多饥荒服务器的搭建教程,之所以会写这篇文章是因为网上很多教程都有瑕疵,按照知乎上的来最后会出现这样那样的问题,所以才会写这一篇博客,按照这篇博客来百分百成功,希望能帮到大家。
服务器选择
可以选择云服务器:阿里云、腾讯云等,推荐配置2核2G(1-2个mod),安装CentOS7.9 64位。正好最近两家服务器都在做活动,2核2G 99一年,可以4-6人流畅运行。如果多mod的话要4G内存。购买服务器网上一搜一大堆。
如果你自己有服务器或者nas并且有公网就可以省去这笔费用,使用docker安装steamcmd。
安装专用服务器
本篇博客以CentOS7.9为例进行搭建。
连接终端
根据服务器厂商提供的公网地址,复制后在SSH连接工具上输入,推荐finalshell
更新软件包
1 | yum -y update |
1 | yum -y update |
如果是Ubuntu或者debian就是apt update
安装依赖项
1 | yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686 |
创建steam用户
1 | useradd steam |
接下来要设置密码,按照提示来就行了,Linux输入密码是不会显示的,输完了直接回车就行。
安装steamcmd
1 | su - steam |
这一步会访问steam的网络,可能会比较慢,如果长时间没反应或者失败就再试几次。一直不行的话建议安装shellclash,自行配置订阅文件。这边建议安装,后续steam本体下载还是会比较慢,有clash会好一点。
安装游戏
1 | ./steamcmd.sh |
确保目录在Steam文件夹下,启动steamcmd,等待steam安装更新,这一步没有魔法会比较慢。
等到右边出现Steam>时就说明steam更新完成了。
1 | force_install_dir ../dontstarvetogether_dedicated_server |
这一步在获取专用服务器文件,稍等片刻,完成后输入quit
获取存档
生成存档
如果是已有的存档上传直接看下面的内容就行了
在Windows上打开《饥荒联机版》,在选单界面点击【创建游戏】对联机需要创建的世界进行配置,服务器模式选择【公共】,配置好密码,并勾选要使用的MOD(只勾选“服务器模组”)。
配置完成后,点击“生成世界”,等待世界创建完成,在进入选择人物界面后,就可以退出了。
踩坑点一:直接创建.klei文件夹导致专用服务器无存档访问权限
_避免上述问题,需要先让服务器运行一次!!!_本人亲自踩坑!这也是很多教程没说的地方。具体启动服务器方法见下面,为了保持结构的结构完整性这里先假设你已经运行了一次服务器,并且服务器也已经在home里面创建了.klei文件夹。
踩坑点二:在root登录的状态下将存档文件上传.klei里面导致专用服务器无存档访问权限
如果使用finalshell需要用steam用户登陆,winscp也是一样更换成steam用户登录再上传文件。
上传存档
Windows游戏存档在C://User/xxx/文档/klei/DoNotStarveTogether里面,将对应的世界文件夹(一般是一串数字)上传到.klei/DoNotStarveTogether/Cluster_1里面,cluster_token.txt没有没关系,后面会创建。
获取token以及添加管理员权限
这些操作没有坑,建议上网搜,或者参照这篇文章
订阅mod(可选)
还是参照上面的文章来
启动脚本
1 | cd ~ |
复制下段代码到终端中,粘贴前先按i,粘贴后按esc,再输入:wq(英文输入法的冒号)回车
1 |
|
脚本中默认启动的是32位服务器,如果想启动64位服务(会用更大的内存,相对也会更流畅一些),只需要更改这两行:
1 | cd "$install_dir/bin" || fail |
为:
1 | cd "$install_dir/bin64" || fail |
踩坑点三:启动脚本在win端创建上传服务器导致出现所有者问题而提示没有该文件
一定要vim boot.sh,不能直接上传。
赋予boot.sh执行权限
1 | sudo chmod u+x boot.sh |
注意,这里如果是在steam用户下使用sudo要先把steam添加到sudors
1 | su root |
好了之后再su - steam切换回来,再执行上面的指令
开放端口
udp:10888、10999、10998、8767、27017
tcp:8767、27017
踩坑点四:未开启CentOS自带的防火墙使得无法连通
虽然不知道为什么,但是确实如此,必须开启防火墙端口才能通。
默认防火墙是关着的,开启输入指令
1 | systemctl start firewalld |
如果有绿色的active就说明成功了
接着一个个输入
1 | firewall-cmd --zone=public --add-port=端口/协议类型 --permanent |
例如开放10888udp则输入
1 | firewall-cmd --zone=public --add-port=10888/udp --permanent |
udp\tcp都要放行,全部搞完了重载一下防火墙
1 | sudo firewall-cmd --reload |
输入以下指令查看是否成功
1 | firewall-cmd --permanent --list-ports |
ports右边如果有刚才添加的就成功了,之后别忘了在阿里云的安全组或者腾讯的防火墙也放行一下。
启动饥荒服务器
直接./boot.sh就行了,或者套一个screen在里面启动也可以
如果提示启动成功但是搜不到是因为没有更新到最新版本
1 | su - steam |