前言
本教程基于贴主已经探索过的路径上构建,旨在为大家提供简单的开服参考,并不适用于所有情况。文章如有误导和错字也欢迎大家评论区指出。
推荐适用场景
不想太麻烦可以直接去租饥荒游戏服务器或者下载脚本去开服
手头有闲置服务器 或者 想要租一台纯净服务器开服的朋友
掌握 linux 基础操作命令
服务器配置
贴主是在腾讯云上购买的服务器,其他渠道的操作可能不太一样。
操作系统:CentOS 7.4 (64 位)

说明:贴主的服务器一共六个人, 2 核 4G 完全够用。
搭建过程
贴主使用腾讯云官方提供的登录方式,全程以 root 身份登录并操作。
# 更新系统上已安装软件包
yum -y update
# 安装服务器所需依赖
yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686
# 选择/root目录作为steamcmd和服务器的安装目录
cd /root
# 新建并进入steamcmd文件夹
mkdir steamcmd
cd steamcmd
# 下载与解压steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
# 启动steamcmd
./steamcmd.sh
这里就是已经安装好了

# 选择服务器安装的文件夹(dst就是贴主要安装位置的文件夹名称)
force_install_dir /root/dst
# 匿名登录
login anonymous
# 安装饥荒联机版
app_update 343050 validate
安装进行中:

出现 "Success! App '343050' fully installed." 就是安装完成了,可以退出 steamcmd 了。
# 退出steam
quit
然后我们来编写服务器启动脚本,这里贴主推荐并选择 64 位的方式启动
# 进入目录(32位启动在bin目录)
cd /root/dst/bin64
# 如果是32位,请去掉"_x64","Cluster_1"是存档名称
# 地上启动脚本
echo ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Master > master.sh
# 地下启动脚本
echo ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Caves > caves.sh
开放端口
我们去服务器防火墙管理界面,开放图中的端口:

同时在命令行关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
依赖问题
里我们还需要检查启动程序依赖是否正常
说明:如果是 32 位,注意一下文件名称和对应的路径。解决方案的路径就换成 "/usr/lib" 与 "/root/dst/bin/lib32"
检查依赖: "ldd dontstarve_dedicated_server_nullrenderer_x64"
这里一个经典的问题是"libcurl-gnutls.so.4 not found"

解决方案:
ln -s /usr/lib64/libcurl.so.4 /root/dst/bin64/lib64/libcurl-gnutls.so.4
再执行一遍检查的命令
如果变成了"libcurl-gnutls.so.4 => ./lib64/libcurl-gnutls.so.4 (0x00007fc91b8fe000)",而不是 not found,就已经成功了
mod 安装失败问题
然后还需要替换一个脚本,否则后续可能有 mod 无法成功下载的问题!!!
解决方案:
# 将steam库的steamclient复制到启动目录的库中
cp /root/dst/linux64/steamclient.so /root/dst/bin64/lib64/
# 弹出询问后
yes

存档安装
我们先在自己的电脑上调好服务器的配置,如果自己和朋友玩建议设个密码

填好基本信息,有需要的调一下世界配置,配置服务器模组等等,确保没什么问题后,直接生成世界,等到加载到选角色界面,就可以退出了。
这里存档先别删!!!后续更新模组还要用, 比较方便!!!
然后我们需要去官网获取自己的 id


保存好自己的 id,然后去获取服务器的 token

保存好 token

继续找到我们创建的世界的文件夹(这里的文件名称不一定是 "Cluster_2")

到存档文件夹后,新建"cluster_token.tx"t和"adminlist.txt",分别将自己的 token 和 id 复制进去。
然后,如果需要改服务器的基础配置,就编辑"cluster.ini"

最大人数,游戏内限制为 6,想更多人可以调,服务器硬件支持就行,别的除需要外基本不用动。

如果还需要配置黑白名单,网上直接搜索再添加就行。
现在我们就配置好了存档,然后需要将存档上传到服务器上,我们还是使用的腾讯云的官方连接方式提供的文件传输服务

注意选择的路径"/root/.klei/DoNotStarveTogether/"
然后我们上传文件夹,将我们的存档传到服务器对应路径下,注意文件层级保持一致

同时我们需要保持 图中圈起来的地方的名称 和我们 之前配置启动脚本的存档名称 一致

如果不一样,请在命令行改名统一,贴主这里叫 Cluster_1,就不需要改
mv /root/.klei/DoNotStarveTogether/现在的文件名 /root/.klei/DoNotStarveTogether/统一后的名称
然后需要将 mod 添加到配置中,这个稍微麻烦一点
我们可以直接在创意工坊中找到我们已订阅且安装的模组,或者在游戏内找到我们对应存档安装的服务器模组 id(本地模组不用管哈!!!)

整理成这种形式,一个 mod 对应一行
ServerModSetup("你的模组id")
...
然后我们去服务器中编辑配置文件
vim /root/dst/mods/dedicated_server_mods_setup.lua
将你上面的整理好的文本粘贴进去,或者直接在本地写好上传上去也可以,然后我们的模组就配置好了
启动服务器
到这里基本就没有其他问题了,直接去对应目录启动服务器
# 移动到启动路径
cd /root/dst/bin64
# 为主世界创建一个独立的运行窗口叫world
screen -S master
# ==========已进入窗口内===========
# 然后执行启动脚本
sh ./master.sh
静静等待,出现如图两行日志就基本启动好了。

这时同时按下你键盘上的 "Ctrl + A + D" 三个键就可以退出窗口了。
继续启动洞穴,启动完成就可以退出窗口了。
# 为洞穴创建一个独立的运行窗口叫caves
screen -S caves
# ==========已进入窗口内===========
# 然后执行启动脚本
sh ./caves.sh
然后我们可以在列表中搜索到我们的服务器,服务器就已经开好了

贴主这里已经进过游戏了所以有角色的标志哈。
关闭服务器
主世界和洞穴只是名字不一样(贴主的叫 master 和 caves)
# 进入已经创建的窗口
screen -r master
# ==========已进入窗口内===========
# 关闭服务器
# 键盘上 Ctrl + C
# 退出并删除窗口
screen -S master -X quit
后续更新
进行操作时最好先关闭服务器。
游戏更新
与之前安装的步骤基本一样
# 这里的文件不要输错了哈
force_install_dir /root/dst
# 匿名登录
login anonymous
# 更新
app_update 343050 validate
# 退出
quit
存档更新
一般都是新加 mod 或者修改 mod 配置,这里演示一下,存档的配置一般都在"/root/.klei/DoNotStarveTogether/Cluster_1/"的路径下,地上与地下的模组配置是对应的 Master 和 Caves 文件中的"modoverrides.lua"文件。
长这个样子:

如果我们要新增模组的话,需要在"/root/dst/mods/dedicated_server_mods_setup.lua"文件同样新增模组的 id,不然可能不会下载安装(本地电脑的"dedicated_server_mods_setup.lua"不用管)。
现在我们去游戏中到当初用来创档的模组配置界面,配置好我们的模组,然后启动世界(启动完成就可以直接退了,我们的本地配置文件就已经被更新好了),我们可以直接将本地存档的"modoverrides.lua"直接覆盖服务器存档的,也可以在服务器上修改。主世界和洞穴的配置可能有差异,所以前面让大家在本地电脑留着开服的档,方便配置,可能产生的问题也会少。
参考文章
https://www.bilibili.com/opus/670655316493336580
https://tieba.baidu.com/p/9251408506
https://www.bilibili.com/opus/798802812813180931