饥荒联机版(Don't Starve Together)是 Klei 出品的长青联机神作,但它的服务端架构和别的游戏都不一样:"集群(Cluster)"概念——一个集群 = 一个地面世界(Master)+ 一个洞穴世界(Caves)两个独立进程,靠一个配置文件目录组织。新手常被 cluster_token、shard、server.ini 这几个概念绕晕。
这篇教程把集群结构讲清楚:从 SteamCMD 安装、token 申请、cluster.ini 到双世界(洞穴)配置、MOD 管理和备份,全部命令可抄。Linux 原生支持,不折腾。
本文由财富云计算整理,我们主营 NAT 型云服务器(无独立公网 IP),价格比独立 IP 机型省一半以上,跑饥荒这种轻中负载联机服完全够用。更多开服教程见端口速查表。
一、先理解集群结构
一个饥荒服务器(集群)长这样:
~/.klei/DoNotStarveTogether/MyCluster/ ← 集群目录,名字随便起
├── cluster_token.txt ← 服务器令牌(必须)
├── cluster.ini ← 集群级设置(人数、密码、模式)
├── Master/ ← 地面世界
│ ├── server.ini ← 世界级设置(端口、房间)
│ └── leveldataoverride.lua ← 世界生成覆盖(可选)
└── Caves/ ← 洞穴世界
├── server.ini
└── leveldataoverride.lua- Master:地面世界,玩家主活动区。
- Caves:地下世界,独立进程、独立存档、独立端口。不开洞穴也能玩,但饥荒的完整体验(猴子、兔人、发光浆果、远古科技)全在洞里,推荐开。
- 两个进程是一台服务器上的两个程序,各占各的内存。
二、配置需求
| 规模 | CPU | 内存 | 磁盘 | 带宽 |
|---|---|---|---|---|
| 单世界(不开洞)1–4 人 | 2 核 | 2 GB | 3 GB | 5 Mbps |
| 单世界 5–8 人 | 2 核 | 3 GB | 5 GB | 10 Mbps |
| 双世界(开洞)1–4 人 | 2–4 核 | 4 GB | 10 GB | 10 Mbps |
| 双世界 5–8 人 | 4 核 | 6–8 GB | 15 GB | 15 Mbps |
- 洞穴进程大约再吃 1.5–2GB 内存,开洞按 +2G 估。
- NAT 型可跑,单世界只需 UDP 10999;双世界再加 UDP 10998,映射两条(NAT 型能力指南)。
三、安装:Linux 原生服务端
sudo adduser --disabled-password --gecos "" dst
sudo mkdir -p /opt/dst && sudo chown dst:dst /opt/dst
sudo -u dst -s
cd ~/steamcmd
./steamcmd.sh +force_install_dir /opt/dst/server +login anonymous +app_update 343050 validate +quit服务端程序在 /opt/dst/server/bin64/:
ls /opt/dst/server/bin64/
# dontstarve_dedicated_server_nullrenderer_x64 ← 无渲染服务端(服务器用这个)四、申请 cluster_token(最容易卡住的一步)
没有 token,服务端起不来。申请方式:
- 用玩游戏的 Steam 账号启动饥荒联机版客户端
- 主菜单 → 账户 → 「管理服务器」/「Create Server Token」
- 创建一个令牌,下载得到
cluster_token.txt - 上传到服务器的集群目录:
sudo -u dst mkdir -p ~/.klei/DoNotStarveTogether/MyCluster
# 把本地 cluster_token.txt 传到:
# ~/.klei/DoNotStarveTogether/MyCluster/cluster_token.txttoken 和账号绑定:谁能创建令牌谁就是这个服的"服主",令牌泄露别人就能蹭你的服。别把它提交到公开仓库(泄露案例见Git 仓库与代码泄露防范),也不要在网页前端展示它。
五、cluster.ini 集群配置
[GAMEPLAY]
game_mode = survival # survival生存 wilderness荒野 endless轻松
max_players = 8
pvp = false # true=可以互殴
pause_when_empty = true # 无人时暂停,省资源
vote_kick_enabled = false # 投票踢人,公共服可开
[NETWORK]
cluster_name = 我们的饥荒小队
cluster_description = 新人友好,长期经营
cluster_password = your_password
lan_only_cluster = false
offline_cluster = false
cluster_intention = cooperative # cooperative社交 competitive竞技 madless轻松 social友好
[MISC]
console_enabled = true # 允许游戏内控制台
max_snapshots = 6 # 自动快照数量| 配置 | 说明 |
|---|---|
| game_mode | survival 最主流;wildless 死了不删档适合新手 |
| pvp | 好友服建议 false,开了容易友尽 |
| cluster_password | 进服密码,好友服必填 |
| cluster_intention | 影响匹配推荐,好友服填 cooperative 即可 |
| pause_when_empty | 无人时世界暂停,好友服神器(不用怕挂机被猎狗咬死) |
六、Master 与 Caves 的 server.ini
Master/server.ini(地面世界):
[NETWORK]
server_port = 10999 # UDP
[SHARD]
is_master = true
[STEAM]
master_server_port = 27018 # Steam 通信端口
authentication_port = 8768
[ACCOUNT]
encode_user_path = trueCaves/server.ini(洞穴世界):
[NETWORK]
server_port = 10998 # UDP,必须与 Master 不同
[SHARD]
is_master = false
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
shard_enabled = true
[STEAM]
master_server_port = 27019
authentication_port = 8769
[ACCOUNT]
encode_user_path = true要点:
- Master 的
is_master = true,Caves 的is_master = false。 - 两个进程通过
127.0.0.1内部通信,bind_ip/master_ip都填 127.0.0.1 就行(同机部署)。 - 端口别撞:游戏端口 10999/10998,Steam 端口 27018/27019,认证端口 8768/8769。
- 防火墙放行 UDP 10999(地面);开了洞穴再加 UDP 10998。Steam 查询端口默认与游戏端口相邻(10997/10996),不确定就放行 UDP 10990–11000 区间,图个省心。
七、启动:两个进程 + systemd
写一个统一启动脚本:
cat > /opt/dst/start.sh <<'EOF'
#!/bin/bash
cd /opt/dst/server/bin64
exec ./dontstarve_dedicated_server_nullrenderer_x64 \
-cluster MyCluster \
-persistent_storage_root /home/dst/.klei \
-console
EOF
chmod +x /opt/dst/start.sh注意:一个 -cluster MyCluster 启动的是整个集群——如果 Caves 目录存在且配置正确,服务端会自动拉起洞穴进程,不需要启动两次。
sudo tee /etc/systemd/system/dst.service <<'EOF'
[Unit]
Description=Don't Starve Together Dedicated Server
After=network.target
[Service]
Type=simple
User=dst
ExecStart=/opt/dst/start.sh
Restart=on-failure
RestartSec=10
WorkingDirectory=/opt/dst/server/bin64
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now dst
journalctl -u dst -f日志里出现 Master 和 Caves 两个世界的加载信息 = 集群起来了。systemd 细节见systemd 服务管理指南。
不开洞穴:把 Caves 目录改名(比如 Caves.disabled),集群就只跑地面世界,内存立省 2G。新手资源紧可以这么干。
八、MOD 管理
饥荒 MOD 全走 Steam 创意工坊。服务端强制 MOD 的方式:
- 在服务端集群目录建
mods/子目录(Master 和 Caves 各有一个) - 创建
mods/dedicated_server_mods_override.lua:
return {
["workshop-378160973"] = { enabled = true }, -- 例如:全局地图显示
["workshop-1201557287"] = { enabled = true },
}- MOD 文件本身:客户端订阅后,把
.klei或 Steam 工坊缓存里的 MOD 拷到服务端mods/目录(路径ugc_mods/MyCluster/Master/等,以 Klei 文档为准) - 玩家必须订阅同样的 MOD,版本不一致进不去
MOD 更新后服务端要重启才生效。改 MOD 前备份存档——某些 MOD 会往世界数据里写东西,卸载后世界可能残留异常。
九、管理员与存档
管理员在集群目录放 adminlist.txt(每行一个 KleiID,格式 KU_xxxx):
echo "KU_你的ID" > ~/.klei/DoNotStarveTogether/MyCluster/adminlist.txt游戏内按 ~ 开控制台,管理员可用 c_gonext() 传送、c_spawn() 刷物品等调试命令(别滥用,好友服乐趣在经营)。
存档位置:
~/.klei/DoNotStarveTogether/MyCluster/Master/save/ ← 地面世界
~/.klei/DoNotStarveTogether/MyCluster/Caves/save/ ← 洞穴世界备份脚本(整个集群目录打包,两个世界 + 配置一起走):
cat > /opt/dst/backup.sh <<'EOF'
#!/bin/bash
SRC="/home/dst/.klei/DoNotStarveTogether"
DST="/opt/dst/backups"
mkdir -p "$DST"
tar -czf "$DST/dst-$(date +%F-%H%M).tar.gz" -C "$SRC" MyCluster
ls -t "$DST"/dst-*.tar.gz | tail -n +21 | xargs -r rm
EOF
chmod +x /opt/dst/backup.sh
(crontab -l 2>/dev/null; echo "0 4 * * * /opt/dst/backup.sh") | crontab -十、更新
sudo systemctl stop dst
/opt/dst/backup.sh
sudo -u dst -s
cd ~/steamcmd
./steamcmd.sh +force_install_dir /opt/dst/server +login anonymous +app_update 343050 validate +quit
exit
sudo systemctl start dst饥荒大版本更新偶尔改存档格式,更新前备份是铁律。自动化更新见游戏服自动更新实战。
十一、性能与常见问题
性能要点:世界天数越多(尤其中后期地表被玩家改造 + 洞里猴子兔人房一堆)内存持续涨;凌晨定时重启:0 5 * * * systemctl restart dst。swap 兜底见swap 优化。定位瓶颈见资源排查。
Q1:服务端启动就退出,日志刷 token 错误?cluster_token.txt 不在集群目录、名字打错、或内容不完整。重新从游戏客户端下载令牌,文件名必须精确为 cluster_token.txt。
Q2:有 Master 日志没有 Caves 日志?
Caves 目录缺失、server.ini 端口和 Master 撞了、或 shard_enabled 没开。两个端口 10998/10999 不能一样。
Q3:玩家能进地面但进不了洞(洞口黑屏/掉线)?
UDP 10998 没放行,或 NAT 只映射了 10999。洞穴是独立端口独立进程。
Q4:加 MOD 后玩家进不去?
玩家没订阅同一个 MOD,或 MOD 版本和服务端不一致。让所有人从工坊更新,服务端重启。
Q5:世界越来越卡?
天数太长了。饥荒没有"删档重来"的温和选项,开新集群是终极解法;中期缓解靠重启和升内存。
Q6:一台机器开几个饥荒服?
每个集群独立目录 + 独立端口组(10999/10998 → 10997/10996…)+ 独立 systemd 服务,2 核 4G 带一个 8 人双世界服,两个服建议 4 核 8G。多开方案见一台服务器开多个游戏服。
十二、小结
饥荒开服的复杂度全在"集群"概念上:一个目录、两个世界、两个进程、两组端口。理清 Master/Caves 关系和 cluster_token 的位置,剩下的就是常规运维。好友服最佳实践:game_mode=wilderness(死了不删档)、pause_when_empty=true、pvp=false——这份配方能让你的群三年不散。
需要服务器,可以看看财富云计算的 NAT 型云服务器——无独立公网 IP,价格比独立 IP 机型省一半以上,UDP 双端口映射清晰可控。更多联机游戏开服教程持续更新在游戏配置与开服教程总索引。
相关阅读:英灵神殿开服 · 泰拉瑞亚开服 · 七日杀开服 · 僵尸毁灭工程开服 · 游戏服运营完全手册
延伸阅读
- 高防误区与避坑清单:25 个坑+下单前必问 14 问+到货验货流程
- DNS 攻击防护专题:劫持、隧道、投毒、放大四类攻击与 DNSSEC
- 电商大促防攻击预案:T-14 到当天的分级响应与降级开关
- 源站真实 IP 隐藏完全指南:六大暴露面排查+NAT 型终极方案
- 日志分析找攻击源:Nginx 日志三维度分析法与证据固定
- 攻击应急响应手册:六阶段响应流程,从确认到复盘的照做清单
- iptables 抗 DDoS 配置模板:状态过滤+SYN 防护+防扫描+游戏服版
- OpenResty Lua 自研 WAF:动态限流+攻击特征检测+Redis 黑名单

[...]"这游戏能自己开服吗?"是后台被问最多的问题。这篇横评把主流联机游戏按开服难度排了个队,从服务端可得性、系统兼容、配置门槛、运维复杂度四个维度打分,帮你十分钟决定玩哪个、买什么配置。结论先行:只想要"能联机、不折腾",选泰拉瑞亚、饥荒、英灵神殿;愿意折腾换深度玩法,选 Rust、七日杀、PZ。本文由财富云计算整理,我们主营 NAT 型云服务器(无独立公网 IP),价格比独立 IP 机型省一半以上,[...]
2026-10-21 回复
[...]top # JVM 的 java 进程 CPU/内存TPS 低于 18 就该优化了,顺序:降 view-distance → 降 simulation-distance → 砍插件 → 用 spark 找热点 → 最后才是升配。排查流程见服务器资源排查,监控体系见游戏服监控实战。十、常见问题Q1:服务端起不来,日志说 EULA?eula.txt 里 eula=true 没写或文件名[...]
2026-10-21 回复
[...]EOF玩家侧:Steam 库 → 饥荒 → 创意工坊 → 订阅同样 ID 的 MOD。MOD 更新的传播路径:作者发布新版 → Steam 推送给订阅者 → 玩家客户端自动更新 → 服务端也要手动更新(app_update 不覆盖 MOD,MOD 要单独拉)。饥荒 MOD 细节见饥荒联机开服完全指南第八节。四、七日杀/PZ/柯南的 MOD 同步这三个都是"服务端 modlist + 玩家创意工坊订[...]
2026-10-21 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-21 回复