Note1:本文写就于2020年7月份,内容有效截止时间未知
Note2:可能算非小白向
Note3:可能省略了大量细节
文章内容:
一、全手动搭建以及管理饥荒云服务器。
二、其他半自动化搭建管理方法一览。
三、其他托管方式。
四、部分常见问题以及细节。
一、全手动搭建以及管理饥荒云服务器
0.本文前置环境
两个阿里云(1核2.5GHz,2G内存,40G SSD系统盘,5M峰值带宽)分开搭建地上地下世界;均为Ubuntu18.04LTS系统。随便用什么SSH软件连接云服务器。
1.安装宝塔面板(双服务器都这么干)
这是我个人习惯,每买来一台VPS,先安装宝塔面板。(宝塔面板也有一个SSH)可以不装,但是装上可视化、修改配置、传文件、纠错方便一些。下面步骤按已有宝塔面板来讲解。装完了记住最后出现的Bt-Panel,username,password。
2.开放游戏等所需的端口(双服务器都这么干)
首先按照宝塔面板的教程,在阿里云控制台开放宝塔面板需要的端口,然后为游戏,开放TCP:10999和UDP:10999,TCP:10998和UDP:10998,TCP:10888和UDP:10888。虽然宝塔面板的安全规则只是TCP,但还是最好开放10999、10998、10888。
3.安装环境依赖(双服务器都这么干)
不管是32位系统还是64位,或者后面可能出错再安装什么依赖,统统装上。
sudo apt-get update
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev
sudo apt-get install lib32gcc1 lib32stdc++6
sudo apt-get install screen
4.安装steamcmd(双服务器都这么干)
安装各种软件的路径都可以修改,但是记得改全了,不要改完一个忘了改另外一个。
mkdir ~/steamcmd #在root下创建一个文件夹
cd ~/steamcmd #进去
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载steamcmd安装包
tar -xvzf steamcmd_linux.tar.gz #解压缩
./steamcmd.sh #运行steamcmd
5.匿名登录Steam以及安装饥荒(双服务器都这么干)
这是在Steam运行的前提下
login anonymous #匿名登录
force_install_dir ../dstserver #指定安装路径
app_update 343050 validate #安装或更新饥荒
quit #退出Steam
6.试运行服务器(双服务器都这么干)
cd ~/dstserver/bin #去游戏文件夹下
./dontstarve_dedicated_server_nullrenderer #不带启动参数运行饥荒
看到类似的提示:
[200] Account Failed (6): "E_INVALID_TOKEN"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
按Ctrl+C结束运行
7.得到令牌文件和创建管理员名单(双服务器都这么干)
把复制得到的令牌放到cluster_token.txt里,管理员的KU_ID一行一个放到adminlist.txt。先放好,一会放到服务器的/root/.klei/DoNotStarveTogether/Cluster_1存档下面。保险起见,在/root/.klei/DoNotStarveTogether下也放一份。
8.创建存档或者迁移存档(双服务器都这么干)
创建存档:打开饥荒,创建世界,设定好包括MOD在内的世界设置,把文档/Klei/DoNotStarveTogether/数字文件夹/Cluster_X整个复制到服务器的/root/.klei/DoNotStarveTogether的下面,当然要提前把原有的Cluster_1删掉。X指代的是你的世界位置,创建的第几个世界X就是几,复制过去后最好都重命名为Cluster_1。
迁移存档:把文档/Klei/DoNotStarveTogether/数字文件夹/Cluster_X整个复制到服务器的/root/.klei/DoNotStarveTogether的下面,当然要提前把原有的Cluster_1删掉。X指代的是你的世界位置,创建的第几个世界X就是几,复制过去后都重命名为Cluster_1。
把第7步的令牌文件和管理员名单放到对应的位置。
9.配置或更新存档中的Mods(双服务器都这么干)
首先讲几个前置知识:
控制往你服务器上下载哪些MOD的是/root/dstserver/mods/dedicated_server_mods_setup.lua。
控制你的地上地下世界用什么MOD不用什么MOD、各个MOD配置的是/root/.klei/DoNotStarveTogether/Cluster_1/Master/modoverrides.lua和/Cluster_1/Caves/modoverrides.lua两个文件。
所以第一步,配置dedicated_server_mods_setup.lua把mods下载到服务器上。
首先在Steam创意工坊(需梯子访问)创建一个你自己的合集,把你在用和以后想用的mod添加进去。然后复制合集页面的URL,得到ID,在/root/dstserver/mods/dedicated_server_mods_setup.lua的–ServerModCollectionSetup("379114180")下面添加一行ServerModCollectionSetup("ID"),这个应该不会重置,而上面–ServerModSetup("350811795")会重置。
效果即每次启动饥荒服务器都会自动更新下载mods。
至于配置mod则不需要再动手,本地创建世界时已经配置好了,想要后续修改mod设置,需要知道mod对应的ID号,了解点lua语法,然后照葫芦画瓢修改Master和Caves/modoverrides.lua啥的。
10.分别配置两个饥荒服务器的网络设置
地上世界的/root/.klei/DoNotStarveTogether/Cluster_1/cluster.ini把bind_ip修改为bind_ip = 0.0.0.0;
地下世界的cluster.ini注释掉#bind_ip = 127.0.0.1(不注释貌似并无影响),master_ip改为master_ip = 地上服务器公网IP。
11.创建饥荒服务器启动脚本(双服务器都这么干)
Master和Caves分开启动的脚本文件
创建两个脚本文件
cd /root/dstserver/bin #去这个文件夹里
echo "./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master" > master_start.sh #创建Master启动脚本
echo "./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves" > caves_start.sh #创建Caves启动脚本
分别赋予运行权限
chmod u+x ./master_start.sh
chmod u+x ./caves_start.sh
注意事项:因为我是默认路径启动的,服务器启动路径参数有些我没写,如果你修改了启动路径可以查询着写上启动参数。
12.分别正式启动或关闭饥荒地上地下服务器
screen -S dst #创建一个可以放到后台的窗口,nohup和&好像有点问题(双服务器都这么干)
cd /root/dstserver/bin #进这个文件夹(双服务器都这么干)
./master_start.sh(地上世界输入这个)./caves_start.sh(地下世界输入这个)
等到出现Sim Pause时差不多就启动好了
Ctrl+A+D将dst窗口放到后台运行(双服务器都这么干)
注:screen -r dst可以查看服务器运行反馈(查看完了记得再放回后台)
关掉SSH窗口就行了。
关闭服务器需要screen -r dst,然后c_save(),c_shutdown()
二、其他半自动化搭建管理方法一览
1. 有一个go.sh shell脚本文件可以开服以及管理服务器https://github.com/heroydx/for_download/blob/master/go.sh
2. 这是另外一个shell开服脚本https://github.com/TauWu/DST_server_config
3. 这又是一个shell开服脚本https://github.com/moonprism/installDSTserver.sh
4. 贴吧有一个云服工具https://tieba.baidu.com/p/5997047746?share=9105&fr=share&see_lz=0&sfc=copy&client_type=2&client_version=10.3.8.0&st=1564663480&unique=5DE7302&red_tag=1525416786
5. 贴吧还有一个Web开服管理面板,19年据作者说不支持Ubuntu,故没试。https://tieba.baidu.com/p/6166394484?pid=126148787014&cid=#126148787014
6. Google到一个Docker部署饥荒服务器的方法,这是作者放教程和软件的地址https://github.com/mathielo/dst-dedicated-server#dont-starve-together—dedicated-server。(可以借助宝塔面板管理Docker)
7. 这是一个写得非常详细的搭建教程https://steamcommunity.com/sharedfiles/filedetails/?id=590565473(需要梯子访问),可能有点旧了。其中包括了安排一个任务,每天早上6:00更新服务器;使用crontab,来允许在Linux上创建计划任务;以及其他回滚、重置世界的操作。
8. 这是饥荒论坛的一篇搭建、修改配置指南https://dontstarve.fandom.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers
9. 这是一篇十分实用的服务器架构以及配置文件的详细说明,可据此修改双服务器为单服务器,也可据此搭建多服务器的多层世界。https://steamcommunity.com/sharedfiles/filedetails/?id=1616647350(需要梯子访问)
10. 自建服务器物理机,搞内网穿透,从性能上看一般是过剩的,长期是比较划算的,但开始比较麻烦。
三、其他托管方式
1. 英文Google饥荒服务器管理可以搜索到许多托管饥荒服务器的厂商,但多数是国外服务器地址。
2. 淘宝同样有带管理面板的类似服务,价格较为便宜,实际具体情况不了解。
四、部分常见问题以及细节
1. 可以查询端口查看服务是否启动成功:
netstat -nlp |grep :10999
netstat -nlp |grep :10998
2. 搜索不到服务器、服务器无响应可能需要更新饥荒
cd ~/steamcmd
./steamcmd.sh
login anonymous #匿名登录
force_install_dir ../dstserver #指定安装路径
app_update 343050 validate #安装或更新饥荒
quit #退出Steam
3. 什么房间都搜索不到就在游戏控制台中输入c_connect("地上公网IP",10999,"密码")
没有密码就输入c_connect("地上公网IP",10999)
4. 网络原因mod自动下载更新失败可以在本地下载好,在游戏里面更新、应用后,把对应ID号的mod文件夹复制到双服务器上
5. 提示更新mod就关闭饥荒服务器,再重新按照步骤打开就行了。
6. 长时间没使用的令牌token可能存在问题,删掉后重新申请一个。
7. 服务器的密码名字人数上限什么的在Cluster_X的cluster.ini中修改,地上地下的世界设定动植物、灾难什么的在Master或Caves的leveldataoverride.lua中修改。
8. 可以根据需要自行修改开源的那些开服脚本,没有太复杂的逻辑。
五、参考文献
太多了,统统来源网络。
原文链接:https://www.bilibili.com/read/cv6767832/