在云服务器搭建部署私人饥荒联机版游戏服务器 [2025.10.3][ubuntu 24.04][腾讯云2核2G服务器]
频繁断联, 看不到内存占用和流量使用情况, 界面难用.
SB 阿里云, 配完不要了, 又转去腾讯云了.
相同配置的腾讯云能跑起来, 直接源文件打包到阿里云就爆了…
你看他还在运行中, 实际已经死掉了, 重启(长达数分钟的关停中…)后有概率恢复.
文章目录
- 1. 环境安装
- 2. 存档配置
- 1. 创建存档
- 2. 获取 tokens
- 3. 添加管理员权限
- 4.订阅 mod
- 5.开放服务器端口
- 3. 服务器启动脚本
- 4. 可能的问题
- 1. 饥荒更新后搜索不到原来的服务器
- 2. 提示服务器模组版本低
- 参考链接:
1. 环境安装
适用 Ubuntu 24.04 64 位, 不一样的话前期依赖可以让 gpt 解决.
-
安装依赖
-
启用 i386 架构并 update apt, 安装依赖 (这里图省事, 属于超量安装)
sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y lib32gcc-s1 lib32stdc++6 zlib1g:i386 libcurl4:i386 libc6:i386 libstdc++6:i386 libgcc1:i386 libcurl3-gnutls:i386
-
安装 steamcmd
mkdir ~/steamcmd/ mkdir ~/server_dst/ cd ~/steamcmd/ wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" tar -xvzf steamcmd_linux.tar.gz rm steamcmd_linux.tar.gz
-
-
验证
装完 steamcmd 后, 看看缺什么依赖:
ldd ~/steamcmd/linux32/steamcmd
如果还缺什么, 建议直接扔给 gpt 解决.
-
运行
执行自带的启动脚本, 进入 steamcmd:
cd ~/steamcmd ./steamcmd.sh
会进入漫长的启动环节, 和 windows 中 steam 启动的更新流程差不多.
结束后进入 steamcmd 的交互界面:
Steam>
选择安装文件夹位 server_dst (务必用绝对路径, steam 无法解析 ~ . … 这些 linux 的相对符号), 匿名登录, 然后安装饥荒服务端, 饥荒对应代码是 343050, 安装结束后
quit
退出 steamcmd:force_install_dir /home/username/server_dst login anonymous app_update 343050 validate
2. 存档配置
先查一下缺不缺依赖:
ldd ~/server_dst/bin/dontstarve_dedicated_server_nullrenderer# ldd ~/server_dst/bin/dontstarve_dedicated_server_nullrenderer_x64
# 这是 64 位版本
有问题扔给 gpt 解决
在~/server_dst/bin
下分别执行:
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves
分别均会看到 "Your Server Will Not Start"
, 然后 ctrl + c 停止.
就会在 ~/.klei/DoNotStarveTogether/
中就生成了一个 Cluster_1
文件夹,该文件夹下有名为 Master
和 Caves
的两个子文件夹,这两个文件夹分别是地上和洞穴的配置目录。
Cluster_1
是存档名. 更详细参数在: LINK
到这里, 存档的文件就建好了, 接下来就是往存档里填东西.
eg: 这一步你也可以选择 mkdir
去建, 只要路径名和你后面启动服务器时传的参数一致就行. 这一步还有个作用就是最后检查一下环境依赖.
接下来就可以按照 LINK, 去写存档的选项文件, 但太麻烦. 这里选择在 windows 的游戏中创建好存档, 在传入服务器.
1. 创建存档
在 windows 的游戏中正常创建存档, 到选择人物的界面就可以退出了.存档在C:\Users\username\Documents\Klei\DoNotStarveTogether\1477698797\Cluster_1
. 用这个文件夹去替换上面的 Cluster_1, 可以用 sftp, ssh也可以直接传.
这考虑几个文件, 关于这些文件的详细设置, 见 LINK:
-
~/.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/<worldgenoverride.lua/leveldataoverride.lua
存放世界生成选项的文件, 就是通过 windows 生成世界时候的一堆选项. 已经被生成.
-
~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini
包含 overworld 和 caves 两个服务器的设置.
-
~/.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/server.ini
每个服务器独立的设置.
2. 获取 tokens
访问 accounts.klei.com 获取 tokens, 同时, 配置服务器也是在这.
登陆后选择 主页 -> 游戏 -> 饥荒 -> 添加新服务器. 得到 pds 开头的一串.
在服务器的 Cluster_1 文件夹下创建文件 cluster_token.txt, 将服务器 token 保存到文件中
echo 你的得到的 token > ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt#cat ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt
#进行检查
3. 添加管理员权限
在 accounts.klei.com 找到自己的 klei ID, 添加到 ~/.klei/DoNotStarveTogether/Cluster_1/adminlist.txt
. 添加多个直接换行就行.
4.订阅 mod
-
.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/modoverrides.lua
这是存档内 mod 的设置文件, 在 windows 中生成世界时已经设置, 想要调整, 可以到
~/server_dst/mods/workshop-modID/modinfo.lua
或者~/server_dst/ugc_mods/Cluster_1/Caves/content/322330
中查看信息. -
~/server_dst/mods/dedicated_server_mods_setup.lua
这个告诉服务器要下载哪些 mod, 可以后续再选择是否要在modoverrides.lua
中启用并设置. 因为 Cluster_1 是从 windows 中复制来的, 现在其为空, 我们要把modoverrides.lua
中对应的 mod 写入.ServerModSetup("ID") # ID 就是 modoverrides.lua 中的 workshop-ID #每行一个, 行尾无任何符号ServerModCollectionSetup("ID") # 下载创意工坊中的 mod 集合. 一般用不到# 注意到, mod ID 就是 steam mod 的网址中最后的一串数字
后续要添加 mod, 先关闭服务器, 直接在 ~/server_dst/mods/dedicated_server_mods_setup.lua
中添加 ID, 再在.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/modoverrides.lua
中添加启用, 具体设置就自己后来再加了:
-- mod name
["workshop-modid"]={configuration_options={},enabled=true
}
设置完重启服务器就行.
5.开放服务器端口
# 饥荒端口,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
在云服务器的控制台开放. 我是懒人就直接 udp + tcp 的 ipv4 全开了, 谁没事攻击你一个私人游戏服务器.
3. 服务器启动脚本
-
在
~
下新建启动脚本:#!/bin/bashsteamcmd_dir="$HOME/steamcmd" install_dir="$HOME/server_dst" cluster_name="Cluster_1" #存档名 dontstarve_dir="$HOME/.klei/DoNotStarveTogether" #这两个是 -persistent_storage_root 和 -conf_dir 的默认值function fail() { # 打印错误信息并退出echo Error: "$@" >&2exit 1 }function check_for_file() { # 检查文件是否存在if [ ! -e "$1" ]; thenfail "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 a+x start.sh
这里走的是 32 位, 要走64位, 改为如下, 可能要新依赖.
cd "$install_dir/bin64" || fail run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)
在
~
下运行启动:nohup ~/start.sh>server_dst.log 2>&1 &
日志在
~/server_dst.log
, 通过tail -f server_dst.log
查看要停止的话, 查找进程号, 再 kill
ps -ef | grep don kill 找到的进程号
也可以 htop 选择要杀死的进程, 更直观.
4. 可能的问题
在维护我自己的服务器的过程中不断更新…
1. 饥荒更新后搜索不到原来的服务器
游戏客户端更新了,服务器没更新就会出现版本不一致,从而导致搜索不到服务器,这个时候我们需要去把服务器也更新一遍.
进入 steamcmd, 再跑一边 dst 的安装流程.
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/username/server_dst +app_update 343050 validate +quit
## 务必用绝对路径
注意 ! ! !
这个操作可能会清空模组设置. 请备份文件:
~/server_dst/mods/dedicated_server_mods_setup.lua
~/.klei/DoNotStarveTogether/Cluster_1/Master/modoverrides.lua
~/.klei/DoNotStarveTogether/Cluster_1/Caves/modoverrides.lua
2. 提示服务器模组版本低
可能是服务器 mod 版本低, 升级一下就行.
也有可能是你本地 mod 版本低, 检查网络环境, 是不是启动时本地 mod 没更新成功. 到自己的模组管理那里看看, 模组如果不正常显示(不显示名字, 显示 workshop - ID), 那就是你本地的问题了.
参考链接:
- https://developer.valvesoftware.com/wiki/SteamCMD
- https://steamcommunity.com/sharedfiles/filedetails/?id=590565473
- https://steamcommunity.com/sharedfiles/filedetails/?id=591543858
- https://zhuanlan.zhihu.com/p/625645476
- https://blog.ttionya.com/article-1233.html
- https://blog.ttionya.com/article-1235.html
- https://zhuanlan.zhihu.com/p/146379848
- https://blog.csdn.net/2201_75556881/article/details/145100458