环境:Ubuntu22.04 LTS 64bit
SSH工具:Final Shell
前期准备
新开的服务器首先需要更新
sudo apt update
sudo apt upgrade
1、安装编译环境
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install lib32gcc-s1 libcurl4-gnutls-dev:i386 lib32stdc++6 lib32z1 -y
2、安装steamcmd,运行
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
运行安装包:
./steamcmd.sh
运行后会显示:
steam>
3、在steamcmd中安装饥荒服务器
force_install_dir ../dontstarvetogether_dedicated_server # 安装路径
login anonymous # 匿名登录
app_update 343050 validate # 343050是饥荒的代码
quit # 安装完成后退出
安装的过程需要一定的时间,等待过程中可以进行后续操作;
安装成功后查看是否安装成功:
cd ~/dontstarvetogether_dedicated_server/bin/
./dontstarve_dedicated_server_nullrenderer
若出现下图表示成功,Ctrl+C退出;

4、创建本地存档

在选择角色界面直接退出;

主页面点击数据,查看存档:


5、创建服务器世界存档
mkdir -p ~/.klei/DontStarveTogether/Cluster_1
之后将4中的本地存档上传到该文件目录,利用Final Shell可直接复制粘贴,上传之后的样子:

其中的adminlist.txt和cluster_token.txt在后续步骤中添加;
6、添加token
点击主页面的账号

在打开的界面中点击游戏,饥荒联机版的游戏服务器:

添加新的服务器:

复制所添加的服务器token:

新建一个cluster_token.txt文件,将上面的token粘贴进去,保存后上传到服务器中:
~/.klei/DontStarveTogether/Cluster_1 # 上传到世界存档的路径
7、添加mod
在所创建世界文档的Master文件夹中有一个modoverrides.lua文件,其中就是创建世界时添加的mod

workshop-xxxxxxxxx中的数字表示mod的ID
下一步:
cd ~/dontstarvetogether_dedicated_server/mods
找到其中的steam_dedicated_server_mods_setup.lua文件,将所添加的mod ID按照要求格式添加进去:

8、添加管理员
如果和朋友多人联机游戏,让每个人都有暂停世界或者回档的权限时,需要在服务器的世界存档Cluster1中添加一个adminlist.txt文件,在其中加入klei用户ID

每个ID占一行,不需要加任何标点符号

若在Cluster_1中添加adminlist.txt后无效,可尝试将该文件添加到Master文件夹;
9、运行服务器
cd ~
touch start.sh
直接粘贴下面的内容,保存,也可直接在本地创建好后粘贴到服务器
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.klei/DontStarveTogether"
function fail()
{
echo Error: "$@" >&2
exit 1
}
function check_for_file()
{
if [ ! -e "$1" ]; then
fail "Missing file: $1"
fi
}
cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"
check_for_file "$install_dir/bin"
cd "$install_dir/bin" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
run_shared+=(-shard)
"${run_shared[@]}" Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'
修改文件权限
chmod 755 ~/start.sh
启动服务器
./start.sh
直到显示如下内容时,表示服务器成功启动:

若想要关闭SSH工具后仍能运行,使用screen命令:
screen -S dst # 新建窗口
./start.sh # 启动服务器
ctrl+a+d # 将当前窗口放到后台执行,此时logout也不会影响该窗口中执行的内容
screen -r dst # 恢复dst窗口
10、更新
若饥荒更新,需要在服务器中停止饥荒服务器运行(Ctrl+C),启动steamcmd,再次运行如下的命令:
force_install_dir ../dontstarvetogether_dedicated_server # 安装路径
login anonymous # 匿名登录
app_update 343050 validate # 343050是饥荒的代码
quit # 安装完成后退出
完成后重新启动服务器即可;
11、添加mod
若后续想要添加mod,可以新建一个世界,将该世界存档中Master目录中的modoverrides.lua文件替换掉云服务器中世界存档的相应文件,再在步骤七提到的~/dontstarvetogether_dedicated_server/mods目录下的steam_dedicated_server_mods_setup.lua文件中按照格式写入所添加的mod ID即可。