先说结论:这条路我没用 Docker
开饥荒联机版(DST)的服务器,现成 Docker 镜像看着不少,但一查更新时间就露馅:常被引用的 Jamesits/docker-dst-server 停在 2023 年,mathielo/dst-dedicated-server 停在 2022 年,当年很流行的 jammsen 镜像仓库现在打开是 404。游戏一直在更新,镜像不动,最后还是要进容器里自己修。
所以这篇用的方法是 LinuxGSM:专做游戏服务器的脚本工具,4,900 多 star,支持 DST(实例名 dstserver),到今天还在提交,安装目标已经跟到 Ubuntu 26.04。它干的事很朴素——用 SteamCMD 装服务端、管进程、管更新、管备份。
准备
- Ubuntu 24.04 或 26.04,2 核 4GB 起步;要带洞穴就按翻倍准备。
- 一个能开 UDP 端口的公网 IP,或者至少能让朋友连进来的网络环境。
- 一份正版 DST(生成 token 必须),以及绑定的 Klei 账号。
顺带记一下两个容易搞混的编号:游戏本体是 Steam app 322330,服务端是 343050。装的是后者。
安装:五条命令
sudo adduser dst --disabled-password
sudo su - dst
curl -Lo linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh
bash linuxgsm.sh dstserver
./dstserver install
安装过程中会停下来问 Cluster Token。去 Klei 的服务器页面(accounts.klei.com/account/game/servers?game=DontStarveTogether)用 Steam 登录,填一个自己认得出来的集群名,点添加,复制那串 token 粘进去。
装完它会写到 ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt。如果当时跳过了,之后用 ./dstserver cluster-token 补,不用重装。
改配置:三个文件就够
路径都在 ~/.klei/DoNotStarveTogether/Cluster_1/ 下面:
cluster.ini——服务器名、密码、最大人数、PvP、游戏模式(生存/无尽/荒野)。Master/server.ini——server_port = 10999、is_master = true,以及 Steam 查询和认证端口。cluster_token.txt——安装时已经写好,一般不用动。
cluster.ini 里还有个 cluster_key,安装时随机生成。单分片用不上,但开洞穴时两个分片必须一致——动它之前先记下来,后面会用到。
启动与控制
./dstserver start
./dstserver console # 进控制台,Ctrl+B 再按 D 退出
./dstserver details # 看端口、进程、版本
第一次启动要生成世界,等几分钟很正常。控制台能敲命令、日志不再刷生成进度,就算起来了。
端口:不止 10999 一个
| 用途 | 默认端口 | 要不要对外 |
|---|---|---|
| 主世界游戏 | 10999/udp | 必须 |
| 主世界 Steam 查询 | 27018/udp | 想在服务器列表里被看到就要 |
| 主世界认证 | 8768/udp | 同上 |
| 洞穴游戏 | 10998/udp | 开洞穴才需要 |
| 洞穴 Steam / 认证 | 27019 / 8769/udp | 开洞穴才需要 |
| 分片间通信 | 11000/udp | 只在本机,绝不对外 |
只放行 10999 是最常见的错误:玩家能直连,但服务器列表里永远找不到你。用 ufw 的话,sudo ufw allow 10999/udp 之后记得把 27018、8768 也加上。
洞穴:它是第二个进程,不是一个开关
很多人以为在配置里勾一下就有洞穴,其实洞穴是另一个同时运行的服务端进程,和主世界共享同一个集群目录、不同的分片目录。LinuxGSM 的做法是再装一个实例,关键配置是这四项:
sharding="true"、master="false"、shard="Caves"、cave="true";server.ini的server_port改成 10998,不能和主世界重复;cluster.ini里master_ip填127.0.0.1、master_port填 11000;cluster_key必须和主世界完全一致,否则洞穴连不上主世界。
两个实例要装在各自独立的目录里。装第二个之前,先把整个 Cluster_1 目录备份一份——安装脚本可能会重写配置,这是最容易把世界搞没的一步。
备份与更新
./dstserver backup
./dstserver update
backup 会把存档打包到 LinuxGSM 的 backup 目录,再同步到另一台机器或对象存储,别只留在本机。update 走 SteamCMD 拉新版本;更新后两个分片都要重启,客户端自动更新之后,旧服务端会直接显示版本不匹配。
三个最常见的问题
- 服务器一直 offline:token 错了或过期了,重新生成一次。
- 能直连但列表里没有:27018/8768 没放行,或者没在 Klei 的服务器页面把它登记进列表。
- 洞穴进不去:Caves 进程没起来,或者
cluster_key两边不一致。
我的判断
DST 的难点从来不在「装」,而在 token、端口和分片这三件事上,而且每一件出错时的表现都很像——连不上。LinuxGSM 把更新和备份接过去之后,这台服务器才算能长期放着不管。
如果是周末和朋友玩两把,游戏里直接「创建世界」更省事。专用服务器的价值在于:你不在线,世界也在;你的存档,不在别人的电脑里。








暂无评论内容