Linux 搭建饥荒服务器指南

本文最后更新于:2020-06-02 19:35

:为什么要用Linux Server而不是Windows创建饥荒服务器呢?

Linux Server没有图形界面,同样配置下比Windows更节省系统资源。这样就能把更多资源留给饥荒服务器。另外Linux可以用ssh连接,当你熟悉代码后会发现比Windows更高效。

本指南的目的是在Linux上创建带洞穴的饥荒服务器,多层世界的指南将在以后说明。

本指南基于Ubuntu 16.04 64位制作,推荐使用此Linux发行版本或Ubuntu 18.04搭建服务器,以免不必要的麻烦

安装运行SteamCMD所需的依赖项

您需要为您的服务器安装一些软件包以让SteamCMD正常工作:

如果您使用的是Ubuntu 32位,那么就跳过这个步骤;如果您使用的Ubuntu 64位,请逐行执行以下代码以安装相关软件包

1
2
3
4
5
sudo dpkg --add-architecture i386
sudo apt-get update -y
sudo apt-get install lib32gcc1 -y
sudo apt-get install lib32stdc++6 -y
sudo apt-get install libcurl4-gnutls-dev:i386 -y

下载SteamCMD

请逐行执行以下代码

1
2
3
4
5
6
cd
mkdir steamcmd # steamcmd文件夹
mkdir dst # 饥荒主程序文件夹
cd steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar xzvf steamcmd_linux.tar.gz

现在您可以安装SteamCMD

请逐行执行以下代码

1
2
3
4
5
6
cd ~/steamcmd
./steamcmd.sh
login anonymous
force_install_dir ~/dst
app_update 343050 validate
quit

启动两个服务器(地面和洞穴)

您需要创建两个bash脚本(master.shcaves.sh)来分别运行两个世界

我们先创建master.sh,逐行输入以下代码

1
2
3
cd ~/dst/bin
nano master.sh
./dontstarve_dedicated_server_nullrenderer -persistent_storage_root ~/klei -conf_dir DoNotStarveTogether -cluster Cluster_1 -shard Master

代码输入完毕,按组合键CTRL + X退出,然后再按Y保存编辑

然后,我们能再创建caves.sh,逐行输入以下代码

1
2
3
cd ~/dst/bin
nano caves.sh
./dontstarve_dedicated_server_nullrenderer -persistent_storage_root ~/klei -conf_dir DoNotStarveTogether -cluster Cluster_1 -shard Caves

代码输入完毕,按组合键CTRL + X退出,然后再按Y保存编辑

运行和停止两个服务器
以创建存档文件Master(地面)和Caves(洞穴)

地面的存档

请逐行执行以下代码

1
2
3
cd ~/dst/bin
chmod +x master.sh
./master.sh

当你在屏幕上看到Your Server Will Not Start字眼时,按组合键CTRL + C退出

洞穴的存档

请逐行执行以下代码

1
2
3
cd ~/dst/bin
chmod +x caves.sh
./caves.sh

当你在屏幕上看到Your Server Will Not Start字眼时,按组合键CTRL + C退出

为服务器创建cluster_token.txt

在你Windows PC上打开饥荒联机版游戏 -> 点击开始游戏 -> 点击账户信息 -> 点击最上面一排的游戏

-> 点击Don't Starve Together Servers -> 拉到最下面,随便输一个名字,点击添加新服务器

即可获取一串以pds-g开头的字符串,复制

然后逐行输入一下代码

1
2
cd ~/klei/DoNotStarveTogether/Cluster_1/
nano cluster_token.txt

把刚刚复制的字符串粘贴进去,按组合键CTRL + X退出,然后再按Y保存编辑

为两个服务器创建leveldataoverride.lua

leveldataoverride.lua代表生成世界的设置,你可以调整季节、怪物或生物群系以及更多

获取leveldataoverride.lua文件配置

  1. 打开Windows PC饥荒联机版游戏
  2. 按照您的喜好在第一个存档位置创建您的世界(需添加洞穴)
  3. 创建成功世界后退出游戏
  4. 打开您电脑中的该路径C:\Users\XXX\Documents\Klei\DoNotStarveTogether

    XXX为您电脑的用户名

  5. 打开该路径下的名字为数字的文件夹
  6. 打开Cluster_1,里面会有MasterCaves文件夹,这两个文件夹里分别有一个leveldataoverride.lua文件

创建Linux上的leveldataoverride.lua

地面的leveldataoverride.lua

请逐行执行以下代码

1
2
cd ~/klei/DoNotStarveTogether/Cluster_1/Master/
nano leveldataoverride.lua

把刚刚上一步获取的Masterleveldataoverride.lua里的内容复制粘贴进来

按组合键CTRL + X退出,然后再按Y保存编辑

洞穴的leveldataoverride.lua

请逐行执行以下代码

1
2
cd ~/klei/DoNotStarveTogether/Cluster_1/Caves/
nano leveldataoverride.lua

把刚刚获取的Cavesleveldataoverride.lua里的内容复制粘贴进来

按组合键CTRL + X退出,然后再按Y保存编辑

创建并配置cluster.ini

执行代码

1
nano ~/klei/DoNotStarveTogether/Cluster_1/cluster.ini

将下面代码根据解释自定义后粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[GAMEPLAY]
game_mode = endless
max_players = 8
pvp = false
pause_when_empty = true


[NETWORK]
lan_only_cluster = false
cluster_intention = cooperative
cluster_password = 123456
cluster_name = 服务器测试
cluster_description = 一起嗨起来
offline_cluster = false
cluster_language = zh

[STEAM]
steam_group_id = 35243410
steam_group_admins = false
steam_group_only = false


[MISC]
max_snapshots = 20
console_enabled = true


[SHARD]
shard_enabled = true
bind_ip=0.0.0.0
master_ip = 127.0.0.1
master_port = 10888
cluster_key = defaultPass

注:
game_mode 游戏模式,选项为survival endless wilderness,分别对应生存 无尽 荒野模式
max_players 最大人数
pvp 开启PVP模式,选项为true false
cluster_intention 游戏风格,选项为cooperative competitive social madness
cluster_password 服务器密码
cluster_name 服务器名
cluster_description 服务器介绍
steam_group_id steam群组的id,如果不添加群组请留空
steam_group_admins 群组的管理也变成服务器的管理员,选项为true false
steam_group_only 只有群组成员才能加入,选项为true false
max_snapshots 最大存档天数,游戏默认只保存5天的存档

为两个服务器创建server.ini

地面的server.ini

执行代码

1
nano ~/klei/DoNotStarveTogether/Cluster_1/Master/server.ini

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[NETWORK]
server_port = 10999


[SHARD]
is_master = true


[ACCOUNT]
encode_user_path = true


[STEAM]
master_server_port = 27018
authentication_port = 8768

洞穴的server.ini

执行代码

1
nano ~/klei/DoNotStarveTogether/Cluster_1/Caves/server.ini

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[NETWORK]
server_port = 11000


[SHARD]
is_master = false
name = Caves
id = 11


[ACCOUNT]
encode_user_path = true


[STEAM]
master_server_port = 27019
authentication_port = 8769

为两个服务器添加mod

还记得上文的为服务器创建leveldataoverride.lua的方法吧?

为服务器添加mod的方法类似

获取modoverrides.lua文件配置

  1. 打开Windows PC饥荒联机版游戏
  2. 按照您的喜好在第一个存档位置创建您的世界(需添加洞穴),这是需添加mod,提前在创意工坊订阅好
  3. 创建成功世界后退出游戏
  4. 打开您电脑中的该路径C:\Users\XXX\Documents\Klei\DoNotStarveTogether

    XXX为您电脑的用户名

  5. 打开该路径下的名字为数字的文件夹
  6. 打开Cluster_1,里面会有MasterCaves文件夹,这两个文件夹里分别有一个modoverrides.lua文件

创建Linux上的modoverrides.lua

地面的modoverrides.lua

请逐行执行以下代码

1
2
cd ~/klei/DoNotStarveTogether/Cluster_1/Master/
nano modoverrides.lua

把刚刚上一步获取的Mastermodoverrides.lua里的内容复制粘贴进来

按组合键CTRL + X退出,然后再按Y保存编辑

洞穴的modoverrides.lua

请逐行执行以下代码

1
2
cd ~/klei/DoNotStarveTogether/Cluster_1/Caves/
nano modoverrides.lua

把刚刚获取的Cavesmodoverrides.lua里的内容复制粘贴进来

按组合键CTRL + X退出,然后再按Y保存编辑

修改dedicated_server_mods_setup.lua以让服务器下载相应mod

输入代码

1
nano ~/dst/mods/dedicated_server_mods_setup.lua

在里面另起一行,输入你要添加的mod,格式如下:

1
2
3
4
5
6
7
ServerModSetup("375850593")
ServerModSetup("1438233888")
ServerModSetup("850494968")
ServerModSetup("666155465")
ServerModSetup("1185229307")
ServerModSetup("1595631294")
ServerModSetup("462434129")

每个mod一行,双引号中间的数字为对应mod的ID

获取mod的ID的方法:

方法一

打开之前获取的modoverrides.lua,里面的格式为

1
["workshop-375850593"]={ configuration_options={  }, enabled=true },

其中workshop后面的数字即为mod的ID

方法二

打mod的创意工坊页面,如https://steamcommunity.com/sharedfiles/filedetails/?id=501385076

链接中id=后面的就是mod的ID

安装screen

到这一步,您的饥荒服务器配置已经完成70%了

您会发现,运行master.sh或caves.sh后,一旦关闭终端,对应的世界也会关闭

这个时候,就需要screen了

安装screen

1
sudo apt-get install screen

screen命令详解请见另一篇文章:Linux Screen命令详解

为两个服务器制作脚本

启动脚本

地面世界的启动脚本

执行代码

1
nano ~/dst/bin/startmaster.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
screen -dmS m ~/dst/bin/master.sh

再执行代码

1
chmod +x startmaster.sh

洞穴的启动脚本

执行代码

1
nano ~/dst/bin/startcaves.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
screen -dmS c ~/dst/bin/caves.sh

再执行代码

1
chmod +x startcaves.sh

一键启动两个服务器的脚本

执行代码

1
nano ~/launch.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
#!/bin/sh
cd ~/dst/bin
sh startmaster.sh
sh startcaves.sh
echo '!!!THE SERVER IS STARTED!!!'

再执行代码

1
chmod +x launch.sh

一键重启两个服务器的脚本

执行代码

1
nano ~/restart.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
6
7
8
#!/bin/sh
screen -dr m -X -S quit
screen -dr c -X -S quit
sleep 10
cd ~/dst/bin
sh startmaster.sh
sh startcaves.sh
echo '!!!THE SERVER IS RESTARTED!!!'

再执行代码

1
chmod +x restart.sh

一键关闭两个服务器的脚本

执行代码

1
nano ~/shutdown.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
#!/bin/sh
screen -dr m -X -S quit
screen -dr c -X -S quit
sleep 10
echo '!!!THE SERVER IS SHUTED DOWN!!!'

再执行代码

1
chmod +x shutdown.sh

更新服务器的脚本

执行代码

1
nano ~/update.sh

将下面代码粘贴进去,并按组合键CTRL + X退出,然后再按Y保存编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh
screen -dr m -p 0 -X stuff "\nc_save()\n"
sleep 10
screen -dr m -X -S quit
screen -dr c -X -S quit
sleep 10
mv ~/dst/mods/dedicated_server_mods_setup.lua ~/dst/mods/dedicated_server_mods_setup.lua.bak
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit
mv ~/dst/mods/dedicated_server_mods_setup.lua.bak ~/dst/mods/dedicated_server_mods_setup.lua
sleep 10
cd ~/dst/bin
sh startmaster.sh
sh startcaves.sh

再执行代码

1
chmod +x update.sh

注:该脚本执行后会先关闭服务器,然后更新服务器,更新完毕后自动重启游戏

测试两个服务器

执行代码

1
sh ~/launch.sh

服务器就在后台启动了

查看服务器日志,看看服务器是否启动成功

输入代码

地面:

1
tail -fn 30 ~/klei/DoNotStarveTogether/Cluster_1/Master/server_log.txt

洞穴:

1
tail -fn ~/klei/DoNotStarveTogether/Cluster_1/Caves/server_log.txt

退出查看日志是按组合键CTRL + C

如果看到Sim paused,说明服务器开启成功,打开游戏看看能不能连接上吧

至此服务器就创建完毕了

其他

添加管理员

如果您用的是自己的cluster_token创建服务器,那么默认您就是游戏管理员

如果您想添加其他的玩家为管理员,那么输入代码

1
nano ~/klei/DoNotStarveTogether/Cluster_1/adminlist.txt

在里面添加对应玩家的ID,一行一个玩家

重启服务器后生效

添加黑名单

同理,输入代码

1
nano ~/klei/DoNotStarveTogether/Cluster_1/blocklist.txt

在里面添加对应玩家的ID,一行一个玩家

重启服务器后生效

玩家ID可在服务器日志中查看,格式为KU_开头

服务器创建模板

我的码云

获取方法:

1
git clone https://gitee.com/jupitersh/dst.git

如未安装git,请先安装:

1
sudo apt-get install git

在服务器创建的过程中如果遇到问题,欢迎在下方留言