本教程适用于 Ubuntu 20.04/22.04,部署 Don’t Starve Together(DST)联机版专用服务器,采用集中式目录管理结构,即服务端程序、配置文件、世界存档、MOD 均统一放在一个目录下,便于维护、备份和迁移。
📁 路径结构设定
| 内容 | 路径示例 |
|---|---|
| 安装目录 | /home/youruser/Steam/steamapps/common/dst_dedicated_server |
| 存档配置路径 | 同上,位于 .klei/DoNotStarveTogether/Cluster_1/ 子目录中 |
| 启动脚本 | start.sh 位于 dst_dedicated_server 根目录下 |
| 执行用户 | 假设为 youruser(普通非 root 用户,请替换为实际用户名) |
① 安装依赖和 SteamCMD
执行以下命令安装 32 位运行环境和 SteamCMD:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc-s1 steamcmd
sudo apt remove libcurl4-gnutls-dev
sudo apt install libcurl4-gnutls-dev:i386
确认安装成功:
/usr/games/steamcmd
出现 SteamCMD 命令行界面后输入 quit 退出。
② 安装 DST 服务端
创建服务端目录并安装游戏服务端文件:
mkdir -p /home/youruser/Steam/steamapps/common/dst_dedicated_server
使用以下命令安装 DST:
/usr/games/steamcmd +force_install_dir /home/youruser/Steam/steamapps/common/dst_dedicated_server +login anonymous +app_update 343050 validate +quit
③ 上传或复制世界存档
从客户端游戏中导出的世界存档(如 Cluster_1 文件夹),应上传至以下路径:
/home/youruser/Steam/steamapps/common/dst_dedicated_server/.klei/DoNotStarveTogether/
命令示例:
mkdir -p /home/youruser/Steam/steamapps/common/dst_dedicated_server/.klei/DoNotStarveTogether
scp -r Cluster_1 youruser@server_ip:/home/youruser/Steam/steamapps/common/dst_dedicated_server/.klei/DoNotStarveTogether/
④ 添加服务器 Token
前往 Klei 游戏服务器页面 获取 token,写入:
vim /home/youruser/Steam/steamapps/common/dst_dedicated_server/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt
粘贴并保存,内容应为一行字符串。
⑤ 配置端口(关键)
编辑 cluster.ini:
[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = secret_key_123
编辑 Master/server.ini:
[NETWORK]
server_port = 10999
编辑 Caves/server.ini:
[NETWORK]
server_port = 11000
⑥ 开放防火墙端口
如使用 UFW:
sudo ufw allow 10999/udp # Master 世界
sudo ufw allow 11000/udp # Caves 世界
sudo ufw allow 10889/tcp # Shard 分片连接
sudo ufw allow 8767/udp # Steam大厅匹配(可选)
sudo ufw allow 27017/udp # Steam大厅匹配(可选)
查看状态:
sudo ufw status
⑦ 编写启动脚本
vim /home/youruser/Steam/steamapps/common/dst_dedicated_server/start.sh
内容如下:
#!/bin/bash
install_dir="/home/youruser/Steam/steamapps/common/dst_dedicated_server"
cluster_name="Cluster_1"
dontstarve_dir="$install_dir/.klei/DoNotStarveTogether"
function fail()
{
echo Error: "$@" >&2
exit 1
}
function check_for_file()
{
if [ ! -e "$1" ]; then
fail "Missing file: $1"
fi
}
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
export KLEI_SAVE_DIR="$dontstarve_dir"
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 +x /home/youruser/Steam/steamapps/common/dst_dedicated_server/start.sh
⑧ 配置 systemd 服务
sudo vim /etc/systemd/system/dst_server.service
内容:
[Unit]
Description=Don't Starve Together Dedicated Server
After=network.target
[Service]
Type=simple
User=youruser
WorkingDirectory=/home/youruser/Steam/steamapps/common/dst_dedicated_server
ExecStart=/home/youruser/Steam/steamapps/common/dst_dedicated_server/start.sh
Restart=on-failure
RestartSec=5
Environment=KLEI_SAVE_DIR=/home/youruser/Steam/steamapps/common/dst_dedicated_server/.klei/DoNotStarveTogether
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable dst_server
sudo systemctl start dst_server
🔍 查看运行状态
sudo systemctl status dst_server
journalctl -u dst_server -e --no-pager
✅ 总结目录结构
/home/youruser/Steam/steamapps/common/dst_dedicated_server/
├── bin/ # DST 服务端
├── mods/ # MOD目录
├── start.sh # 启动脚本
├── .klei/DoNotStarveTogether/
│ └── Cluster_1/
│ ├── cluster.ini
│ ├── cluster_token.txt
│ ├── Master/server.ini
│ └── Caves/server.ini
✅ 常见问题提醒
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 服务器大厅无法搜索 | 未开放 UDP 端口 | 检查 10999/11000 UDP 是否开放 |
| 洞穴无法进入 | Caves 配置错误或端口被占用 | 确保 server.ini 和 cluster.ini 设置正确 |
| 多个服务器冲突 | 使用了相同端口 | 给每个服务器分配不同端口组 |
这就是一份可开机自启、集中管理、能直接公网运行的 DST 服务端部署全教程(含端口配置)。