饥荒服务器搭建
本文记录一下激光服务器搭建的流程。
#type / howto
#status / evergreen
#recreation / game
#tech / ops
#resource / dont-starve-together
[!info] related notes
饥荒服务器搭建
概览
阿里云试用 2v 4g 经济型e ESSD Entry 40GiB Ubuntu 使用 docker 部署: jamesits/dst-server - Docker Image - docker容器官方文档,需要仔细阅读
[!NOTE] 注意服务器网络 区分 峰值带宽 和 固定带宽,优先用固定带宽 5 M(4个人应该够了)。
准备基础设施
在连接服务器之前,需要准备好两样东西:Token(令牌) 和 设置防火墙。
1. 获取服务器令牌 (Cluster Token)
- 打开浏览器访问 Klei 官网账号页面。
- 登录你的 Steam 账号。
- 点击页面上的 “Add New Server”(添加新服务器)。
- 随便填个名字(比如 “MyAliyunServer”),点击 “Configure”。
- 你会看到一串很长的代码,复制这串 Server Token,保存好备用。
pds-g^KU_LPW1CZE1^hpd17sGKhZrtbP+Hi15Ge36XXpzFy+4ZgkCicuERkI4=
2. 配置阿里云安全组(防火墙)
如果不做这一步,服务器开了你也搜不到。
- 进入阿里云 ECS 控制台,找到你的实例。
- 点击 “安全组” -> “配置规则”。
- 点击 “手动添加”,填写以下信息(一定要选 UDP):
- 端口范围:
10999/11000和12346/12347(或者直接填10900/13000以防万一) - 协议类型: 自定义 UDP (注意:饥荒走的是UDP协议,选TCP没用!)
- 授权对象:
0.0.0.0/0(允许所有人连接)
- 端口范围:
- 点击保存。
3. 服务器安装 docker
阿里云试用有预装 docker 选项
# 更新软件源
sudo apt-get update
# 安装 Docker
sudo apt-get install -y docker.io docker-compose
# 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
部署服务器的 docker 容器
我们将使用 Docker Compose 来一次性开启“地面”和“洞穴”。
-
创建游戏目录:
mkdir -p /opt/dst_server cd /opt/dst_server -
创建
docker-compose.yml配置文件: 输入nano docker-compose.yml进入编辑器。 -
粘贴配置代码: 将下面的代码复制,然后粘贴进去。 注意: 必须把
你的令牌粘贴在这里替换成你在第一步获取的 Token。
version: '3'
services:
dst_server:
image: crpi-guiwp8np81j97lp0.cn-hangzhou.personal.cr.aliyuncs.com/jihuang/dst-server # 我的镜像
container_name: dst_server
tty: true
stdin_open: true
restart: always
ports:
# 游戏连接端口 (必须是 UDP)
- "10999:10999/udp" # 地面 (Master)
- "11000:11000/udp" # 洞穴 (Caves)
# Steam 通讯端口 (必须是 UDP)
- "12346:12346/udp" # Steam 通讯端口 1
- "12347:12347/udp" # Steam 通讯端口 2
volumes:
# 将宿主机当前目录下的 data 文件夹挂载到容器的 /data
- ./data:/data
env_file:
- .env
environment:
# 官方文档明确要求的变量名:DST_CLUSTER_TOKEN
- DST_CLUSTER_TOKEN=${DST_TOKEN}
- 启动服务器:
sudo docker-compose up -d
系统会自动下载游戏文件(约1-2GB),需要等待几分钟。
- 配置文件修改: 先运行一次生成文件,再手动修改配置文件: 初次启动: 运行 sudo docker-compose up -d。此时服务器会因为没有 Token 而报错停止,但在你的 data 目录下会生成配置文件。 设置 Token: 在 .env 中填入你的 Token(变量名需为 DST_TOKEN)。 修改服务器名称和模式: 打开 data/DoNotStarveTogether/Cluster_1/cluster.ini。 在这里修改 cluster_name(服务器名)、game_mode(游戏模式)等详细设置。 重启生效: 运行 sudo docker-compose restart。
第四步:进入游戏
- 等待约 3-5 分钟(第一次启动要下载更新)。
- 你可以通过命令
sudo docker logs -f dst_master查看进度。当你看到Sim Paused或者Registering master server字样时,说明启动成功了。按Ctrl + C退出日志查看。 - 打开电脑上的《饥荒联机版》,点击“浏览游戏”。
- 搜索你在配置里写的名字(比如“我的阿里云服务器”)。
- 如果搜不到,可以按
~键打开控制台,输入c_connect("你的公网IP", 10999)直连。
进阶:如何添加 Mod?
概述
- 有 服务器 mod、 all client required mod、 纯客户端 mod,只有前两者需要加入到服务器中
- mod在Steam 创业工坊中获取,地址栏末尾 id 为 MOD ID
添加到服务器
- 进入挂载目录:
cd /opt/dst_server/data/DoNotStarveTogether/Cluster_1/mods/
- 找到
dedicated_server_mods_setup.lua文件,编辑它:
ServerModSetup("这里填Mod的ID")
ServerModSetup("这里填另一个Mod的ID")
配置启用
下载了 MOD 并不代表它会自动运行,你需要在世界配置中显式开启它。
- 进入地面世界的配置目录:cd /opt/dst_server/data/DoNotStarveTogether/Cluster_1/Master/。
- 编辑(或创建)启用文件:nano modoverrides.lua。
- 输入以下基础格式代码:
```Lua
return {
["workshop-2334237595"] = { enabled = true },
["workshop-其他ID"] = { enabled = true }
}
```
_注意:如果你希望洞穴也有同样的 MOD,需要将该文件也复制到 `Cluster_1/Caves/` 目录下。_
重启服务器
- 返回 Compose 目录:
cd /opt/dst_server。 - 重启容器:
sudo docker compose restart。 - 检查日志:运行
sudo docker logs -f dst_server。- 你会看到服务器正在调用
SteamCMD下载你刚才配置的 MOD。 - 如果日志显示
Mod 2334237595 download success,说明添加成功。
- 你会看到服务器正在调用
mod配置样例
dedicated_server_mods_setup.lua
-- 饥荒联机版 Mod 下载配置 (告诉服务器去 Steam 下载哪些 Mod)
-- [人物 Mod] 大狐狸 WhaRang
ServerModSetup("1623253738")
-- 防止掉落所有物品
ServerModSetup("661253977")
-- 额外装备栏+
ServerModSetup("2823530744")
-- 木牌传送(GUI界面)
ServerModSetup("2119742489")
-- DST地图全显
ServerModSetup("363112314")
-- 改良版打包箱
ServerModSetup("1618216788")
-- 快速拾取
ServerModSetup("501385076")
-- Show Me 中文(信息显示类)
ServerModSetup("2287303119")
-- DST简易血条
ServerModSetup("1207269058")
-- 可升级箱子
ServerModSetup("2484725102")
-- 虫洞标记
ServerModSetup("362175979")
-- 骨骼重生
ServerModSetup("1271089343")
-- 全图定位(完全同步)
ServerModSetup("3138571948")
-- 冰箱返鲜上万天
ServerModSetup("2371484058")
-- 史诗血量条
ServerModSetup("1185229307")
-- 更多物品堆叠
ServerModSetup("3007715893")
-- 永久燃料灭火器(雪球机)(自用版)
ServerModSetup("2957474497")
-- 防卡两招_新
ServerModSetup("3044756151")
modoverrides.lua
-- 饥荒联机版 Mod 启用配置 (告诉服务器在世界中激活哪些 Mod)
return {
-- [人物 Mod] 大狐狸 WhaRang
["workshop-1623253738"] = { enabled = true },
-- 防止掉落所有物品
["workshop-661253977"] = { enabled = true },
-- 额外装备栏+
["workshop-2823530744"] = { enabled = true },
-- 木牌传送(GUI界面)
["workshop-2119742489"] = { enabled = true },
-- DST地图全显
["workshop-363112314"] = { enabled = true },
-- 改良版打包箱
["workshop-1618216788"] = { enabled = true },
-- 快速拾取
["workshop-501385076"] = { enabled = true },
-- Show Me 中文(信息显示类)
["workshop-2287303119"] = { enabled = true },
-- DST简易血条
["workshop-1207269058"] = { enabled = true },
-- 可升级箱子
["workshop-2484725102"] = { enabled = true },
-- 虫洞标记
["workshop-362175979"] = { enabled = true },
-- 骨骼重生
["workshop-1271089343"] = { enabled = true },
-- 全图定位(完全同步)
["workshop-3138571948"] = { enabled = true },
-- 冰箱返鲜上万天
["workshop-2371484058"] = { enabled = true },
-- 史诗血量条
["workshop-1185229307"] = { enabled = true },
-- 更多物品堆叠
["workshop-3007715893"] = { enabled = true },
-- 永久燃料灭火器(雪球机)
["workshop-2957474497"] = { enabled = true },
-- 防卡两招_新
["workshop-3044756151"] = { enabled = true }
}
饥荒服务器管理平台
OK 上面的 docker 部署方法直接失败,网络太差。发现了新的更简单的方法。就是试用饥荒服务器管理平台
username: admin
password: Zbp164xs38h4yoqa2l2m
17159867123