先安装steam和饥荒服务器需要用到的依赖,

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libstdc++6 libgcc1 libcurl4-gnutls-dev:i386 lib32z1
sudo apt-get install lib32stdc++6

创建steamcmd文件夹

mkdir ~/steamcmd
cd ~/steamcmd

下载 steamcmd程序

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

解压steamcmd_linux.tar.gz文件

tar -xvzf steamcmd_linux.tar.gz

启动steamcmd

./steamcmd.sh

steam> force_install_dir ../dontstarvetogether_dedicated_server
steam> login anonymous
steam> app_update 343050 validate
steam> quit

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

进入游戏创建存档后

mkdir -p ~/.klei/DoNotStarveTogether/Cluster_1

cluster_token.txt密钥
adminlist.txt管理员id

都通过宝塔移入服务器,再编辑这个文件载入mod

cd /dontstarvetogether_dedicated_server/mods
vim dedicated_server_mods_setup.lua

创建脚本

cd ~
vim boot.sh

#!/bin/bash

steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"

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: /'

若64位

cd "$install_dir/bin64" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)

赋予权限

sudo chmod u+x boot.sh

饥荒端口,UDP协议

~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini 中的 master_port。
~/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini 中的 server_port。
~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 server_port
# steam端口,TCP+UDP协议
~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 master_server_port、authentication_port

启动

nohup ./boot.sh>root.log 2>&1 &
tail -f root.log

关闭

ps -ef | grep don
kill 1306308

部分代码参考此处