饥荒测试服专用服务器并不需要另装一套软件,它和正式服共用同一份服务端程序,只是在 SteamCMD 下载时多带一个 -beta 分支参数,再用一份全新的 cluster 存档目录把测试服和正式服彻底隔开。下面按能跑通的顺序,把命令、配置和排错路径一次摆清楚,照着做即可。
饥荒测试服专用服务器怎么搭建:先把三个前置条件理清
多数人卡住不是因为命令写错,而是前置条件缺了一块,测试服的开服逻辑和正式服几乎一致,差别集中在版本分支和存档隔离上。
测试服用的还是同一套 Klei 账号体系
测试分支只是 Steam 上的一个 beta 渠道,服务端授权依然走 Klei 的 Cluster Token,你需要登录 Klei 账号中心,在“游戏”里找到 Don’t Starve Together,进入服务器管理页面生成令牌,生成后把整串字符粘进 cluster_token.txt,注意不要带多余空格和换行(据 Klei 官方文档)。
同一个账号可以生成多个令牌,测试服建议单独建一个,方便日后区分哪台属于哪个环境。
目录规划决定你能不能不打架
测试服和正式服必须使用不同的安装目录与不同的 cluster 名,原因很直接:测试分支的存档格式和正式分支可能不同步,用同一份存档来回切换,轻则模组报错,重则世界数据损坏,行业共识认为,测试服应当视为独立环境,不与线上世界共用任何文件。
推荐的目录划分:
- 服务端程序:
~/dst_beta(测试)、~/dst_main(正式) - 存档:
~/.klei/DoNotStarveTogether/MyTestCluster - 启动脚本:
~/start_test_master.sh、~/start_test_caves.sh
客户端也要切分支
只开服务端不够,玩家客户端在 Steam 库里右键 Don’t Starve Together,进入“属性 – 测试版”,选中对应的 beta 分支,服务端和客户端分支不一致时,进服会提示版本不匹配,这是测试服最常见的“看不见服务器”原因之一。
用 SteamCMD 拉取测试分支的完整命令
这部分是实操核心,Linux 和 Windows 思路一致,下面以 Ubuntu 22.04 为例。
依赖先装齐,否则启动即闪退
DST 的 Linux 服务端依赖 32 位运行库,缺一个就会在启动日志里报 libcurl 找不到:
sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y lib32gcc-s1 lib32stdc++6 libcurl4-gnutls-dev:i386
安装与更新命令
mkdir -p ~/steamcmd && cd ~/steamcmd curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - ./steamcmd.sh +force_install_dir ~/dst_beta +login anonymous +app_update 343050 -beta dst_beta validate +quit
几个关键点:
343050是 DST 专用服务端的 App ID(据 Steam 商店页)。-beta后面跟的是测试分支名,以 SteamDB 上该应用的 betas 列表为准,目前常用值为dst_beta,分支名会随版本调整,拉取前扫一眼最稳。- 正式服去掉
-beta dst_beta这段即可,其余完全一样。 - 每次测试分支更新后重跑这条命令就能升级,不需要删目录。
初始化 cluster 目录
首次启动服务端会自动生成存档骨架,但你也可以手动建好再写配置,省一轮:
mkdir -p ~/.klei/DoNotStarveTogether/MyTestCluster/{Master,Caves}
配置文件怎么写才不白开一晚
配置错一个字符,服务器能启动但进不去,下面这份是双分片(地上加洞穴)的最小可用版本。
cluster.ini 的必填项
放在 cluster 根目录:
[GAMEPLAY] game_mode = survival max_players = 6 pvp = false pause_when_empty = true [NETWORK] cluster_name = DS Test Server cluster_description = beta test cluster_password = cluster_intention = cooperative cluster_language = zh [SHARD] shard_enabled = true bind_ip = 127.0.0.1 master_port = 10888 cluster_key = yourkey
cluster_key 是主从分片之间的通信口令,自己随便定一串,但 Master 和 Caves 必须完全一致。pause_when_empty 开着,没人时世界暂停,能省不少 CPU。
Master 与 Caves 的端口分配
各分片的 server.ini 放在对应子目录里,端口不能撞。
| 项目 | Master(地上) | Caves(洞穴) |
|---|---|---|
| server_port | 10999 | 10998 |
| master_server_port | 27016 | 27017 |
| authentication_port | 8768 | 8769 |
| is_master | true | false |
| 分片名 | 默认 | name = Caves |
示例 Master 的 server.ini:
[NETWORK] server_port = 10999 [SHARD] is_master = true [STEAM] master_server_port = 27016 authentication_port = 8768
Caves 只需把 is_master 改成 false,加上 name = Caves,端口换成上表右列。
防火墙与令牌
云服务器要把 UDP 端口放行,只放 TCP 是没用的:
sudo ufw allow 10999/udp sudo ufw allow 10998/udp sudo ufw allow 27016/udp sudo ufw allow 27017/udp
把 Klei 生成的令牌写进 cluster_token.txt,管理员名单写进 cluster 根目录的 adminlist.txt,一行一个 Klei ID,格式为 KU_xxxxxxxx。
饥荒测试服专用服务器配置要求:2核4G够不够用
这是被问得最多的实际问题,答案取决于你开几个分片。
内存与带宽的真实开销
单个分片空载时占用通常在 1GB 上下,带模组、玩家在线时会往上走,双分片(地上加洞穴)建议 4GB 起步,6 人以内 2 核 4G 一般够用,模组数量多、世界实体密集的存档,8GB 更从容。
带宽方面,DST 对带宽要求不高,但对延迟敏感,官方推荐的上行带宽并不夸张,瓶颈更多出现在网络质量而非带宽大小。
国内节点延迟与地域选择
国内玩家同服,优先选国内机房或就近的亚太节点,跨洋线路的典型表现是走路回弹、拾取延迟、世界回档,玩家体验差别非常明显,如果你打算长期开,选机房时把“到目标玩家城市的延迟”当成第一指标,配置放第二位。
租用一年大概多少钱
按当前主流云厂商的轻量套餐,2 核 4G 这一档一年的费用大致在数百元量级,配置更高的通用型实例会到一千多元,测试服如果只在版本更新期开几天,按量计费或直接在自己闲置的机器上跑更划算,这部分价格波动大,下单前以官网实时报价为准。
启动、联机与故障排查
启动命令
cd ~/dst_beta/bin64 ./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyTestCluster -shard Master
洞穴另开一个进程,把 -shard Master 换成 -shard Caves。bin64 目录不存在,改用 bin 目录下的同名可执行文件(用 ls 看一眼最稳),用 tmux 或 screen 挂后台,否则 SSH 一断服就没了。
进服顺序
先起 Master,等日志出现 Sim unpaused 之类的世界加载完成提示,再起 Caves,反过来启动,洞穴分片会连不上主分片并反复重试。
搜不到服务器时的排查顺序
- 客户端是否切到了同一个 beta 分支
cluster_token.txt是否有不可见字符- 云服务器安全组和系统防火墙是否都放行了 UDP
- 日志里是否出现
No auth token或Version mismatch cluster_name是否含中文或特殊符号,改成纯英文先试
饥荒专用服务器和本地开房有什么区别
本地开房本质是“主机托管”,你的电脑既是玩家又是服务器,人一退世界就停,网络抖动也会传染给所有人,专用服务器是常驻进程,玩家下线世界照常运转,断电以外基本不中断。
在测试服这个场景里,差别更明显:测试分支更新频繁,专用服务器可以只重启服务端而不影响玩家本地文件,回滚版本也方便,模组调试同样如此,服务端统一配置 dedicated_server_mods_setup.lua,玩家进服自动同步,不用每人手动装一遍。
饥荒测试服专用服务器常见问题Q&A
饥荒测试服专用服务器必须和正式服分开部署吗
建议分开,测试分支的存档结构与正式分支可能不同步,共用一份 cluster 目录存在数据损坏风险,出问题时也很难判断是操作失误还是版本本身的问题,分开部署的成本只是多一份磁盘空间和一组端口。
测试服的存档以后能搬回正式服吗
不能直接搬,版本差异带来的数据字段变化可能导致读取失败,Klei 官方也不提供跨分支的存档迁移支持,如果某个测试世界你想长期保留,等对应内容进入正式分支后重建更稳妥。
服务器已经跑起来,为什么游戏里还是搜不到
按顺序查三件事:客户端分支是否一致、令牌是否有效、UDP 端口是否放行,这三项覆盖了绝大多数“服务端日志正常但列表里没影子”的情况,其中分支不一致占的比例最高。
测试服专用服务器说到底是正式服开服流程加一个分支参数,真正花时间的从来不是命令,而是目录隔离和端口规划,把这两件事在动手前定好,后面升级、回滚、加模组都是改几行配置的事。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/770998.html


