前言
本教程基於貼主已經探索過的路徑上構建,旨在為大家提供簡單的開服參考,並不適用於所有情況。文章如有誤導和錯字也歡迎大家評論區指出。
推薦適用場景
不想太麻煩可以直接去租饑荒遊戲服務器或者下載腳本去開服
手頭有閒置服務器 或者 想要租一臺純淨服務器開服的朋友
掌握 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