部署饥荒联机版Linux服务器

本文详细介绍了如何在CentOS系统上使用Docker部署Docker版饥荒联机服务器,包括Docker的安装、服务器镜像的启动、游戏存档和Mod的准备与转移。过程中提到了网络环境对下载创意工坊Mod的影响以及服务器防火墙的设置要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文为 Docker 版饥荒联机版服务器在 CentOS 下的部署教程。

为什么要部署Linux服务器?因为玩到后面,只要一联机连主机都卡,闲得想试

这个中文教程讲了native steam版的安装方法,包括了Cent OS缺少的库,坑全踩了一遍写得十分详细。官方文档实在太拉,基本就是没有文档,像跨平台缺库这种事情也没有解决,没有脚本。不过教程中对于网络环境问题与mod的配置方法提得不多。

我这里使用的是Docker版本。优点是

  • 国内的云平台对于Dockerhub的加速后走内网流量,不使用公网流量下载镜像。而且国内的服务器公网下载速度堪忧。
  • Docker版本的文档写得对用户友好,易上手
  • 文件管理集中,比较方便。原版服务器的mod和存档是分开放的

也有一些在国内环境下比较要命的缺点

  • 网络环境原因,无法下载创意工坊mod。最近靠改 hosts 也不行了。
  • 如果想开代理下载,docker容器开代理(设置环境变量)非常麻烦,具体来讲
    1. 如果每次开关代理都创建一个新的容器,Steam和游戏文件的更新都得再触发一次,又消耗流量又慢
    2. 如果动态修改容器的配置文件,docker需要重启才能生效,所有docker服务都得宕机一会儿

准备

  • 一台至少2G内存的服务器
  • 使用ssh连接服务器、传输并管理文件的技能

Docker的安装

由于涉及到Docker镜像和Dockerhub加速的问题,具体安装步骤建议看docker的文档和各个云平台。

我使用的腾讯云,见安装 Docker 并配置镜像加速源,大约花费2分钟。

服务器防火墙设置

需要放行 10999,11000,12346,12347 这四个端口的UDP流量。

  • 在国内云平台的控制台-防火墙中,放行服务器的这四个端口
  • 如果服务器上iptables有流量拦截,也需要放行

饥荒服务器镜像的启动

mkdir ${HOME}/Klei # 创建存放数据有文件夹

# 拉取镜像并在前台启动
# 由于Steam要更新,根据网络环境可能要等比较久的时间
# 如果实在无法连接,再考虑给容器挂个代理下载。但总体不建议容器挂代理,因为我不清楚挂代理后steam是连接到服务器的游戏端口还是连到代理的端口上去了,取消容器的代理也非常麻烦。
docker run --name dst -v ${HOME}/Klei:/data -p 10999-11000:10999-11000/udp -p 12346-12347:12346-12347/udp -it jamesits/dst-server:latest

以上命令执行期间,可以去准备一下游戏存档和Mod相关文件。

准备游戏存档和Mod

我使用的Mac,饥荒的游戏文件相关目录位于

# 游戏存档
SAVE_DIR="~/Documents/Klei/DoNotStarveTogether/324927772/Cluster_1"
# mod下载目录
MODS_DIR="~/Library/Application Support/Steam/steamapps/common/Don't Starve Together/dontstarve_steam.app/Contents/mods" #

cd $SAVE_DIR # 进入存档目录

windows可以在饥荒游戏内点数据打开游戏存档,并在Steam中查看游戏的安装目录。

准备存档信息

点开饥荒的账号,记下 Klei User ID。如果没有就注册一个。

然后,新建adminlist.txt,并写入你的Klei User ID。

$ vim adminlist.txt
# 写入以下内容
你的Klei User ID

点开自建饥荒服务器的页面,新建一个服务器,记下生成的Server Token,其他不用管。

然后,新建 cluster_token.txt,并写入Server Token。

$ vim cluster_token.txt
# 写入以下内容
你的Server Token

准备mods

不开mod的可以跳过这一步。

由于国内环境没法下载mod,需要把对应的mod文件复制过来。我为了方便就全复制了

cp -r "$MODS_DIR" mods

先查看一下目前的存档开了哪些mod。

$ cat Master/modoverrides.lua
# 开启的mod
return {
  ["workshop-1172839635"]={ configuration_options={ icebox_freeze="0.5" }, enabled=true },
  ["workshop-1294206358"]={ configuration_options={  }, enabled=true },
}

然后,编辑 mods/dedicated_server_mods_setup.lua 文件,写入上面的mod编号

$ vim mods/dedicated_server_mods_setup.lua
# 写入以下内容
ServerModSetup("workshop-1294206358")
ServerModSetup("workshop-1595631294")

至此,游戏存档和mods就准备好了。

转移游戏存档和Mods至服务器

上传游戏存档到服务器。打包和上传文件我一般使用GUI操作,用命令行的话是这样

cd ~/Documents/Klei/DoNotStarveTogether/324927772/
tar -cvf Cluster_1.tar.gz Cluster_1 
scp Cluster_1.tar.gz root@myserver:/Klei/

如果之前的服务器连接还在,等无新日志输出后使用control+c退出容器。如果已断开连接,重新用ssh登录服务器。

然后可以看到在服务器的 ~/Klei/DoNotStarveTogether 中有了一个 Cluster_1 存档。

转移游戏存档时,需要注意有两种情况(来自文档

第一种情况是,如果自己的存档开启了洞穴,把自己的存档覆盖过去即可。

rm -rf Cluster_1
tar -xvf Cluster_1.tar.gz

第二种情况是,自己的存档没有开启洞穴,需要

  1. 在自己的电脑中,存档的上一级有个 client_save 。复制下面的除了 session 外的所有文件到服务器的 Cluster_1/save
  2. 自己存档中的 Cluster_1/save/session 需要删除,其他文件可以直接覆盖

存档覆盖完毕后,启动容器

docker start -a dst
# 如果最后输出了 Sim Pause 就代表 OK 了,按 ctrl + c 退出,容器继续后台运行

我第一次装Mod启动时发生了一个莫名其妙的 Segmentation fault,程序退出了,但是第二次启动就好了。搜了一下相关issue,完全相同的情况,也是CentOS,偶尔发生,难稳定复现。

游玩

之前自己的存档叫什么名字就搜什么名字,加入就完事,好好玩吧w


参考资料:

### Don't Starve Together Server Setup on Linux Tutorial For setting up a Don't Starave Together (DST) server on Linux, several key steps must be followed carefully to ensure proper functionality. Keeping all tools within the same platform can reduce complexity as mentioned elsewhere[^1]. However, DST server setup involves specific software and configurations. #### Prerequisites Installation Ensure that SteamCMD is installed since this tool facilitates downloading and updating games from the Steam network. The installation process requires adding a non-root user for security purposes: ```bash sudo adduser steamcmd --disabled-password --gecos "" su - steamcmd mkdir ~/steam && cd ~/steam wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -xvzf steamcmd_linux.tar.gz ./steamcmd.sh ``` Within `steamcmd`, install DST dedicated server files by executing commands inside it: ```plaintext force_install_dir ./dontstarve_dedicated_server/ app_update 343050 validate exit ``` #### Configuration Files Adjustment Adjust configuration settings according to personal preferences or community requirements. Mainly two directories need attention: `modoverrides.lua` under `/steamapps/common/dontstarve_dedicated_server/mods/` and cluster-specific folders like `cluster.ini`. Example content for `cluster.ini` might look like this: ```ini [NETWORK] lan_only_cluster=false offline_cluster=true tick_rate=15 ... ``` #### Running the Server Script Creation Create an executable script file named `startdstserver.sh`. This shell script simplifies starting the game server with necessary parameters set correctly: ```bash #!/bin/bash cd /home/steamcmd/steamapps/common/dontstarve_dedicated_server/bin export HOME=/home/steamcmd exec ./dontstarve_dedicated_server_nullrenderer \ -console \ -cluster MyDediServer \ -shard Master ``` Make sure permissions are appropriately assigned so that running becomes straightforward: ```bash chmod +x startdstserver.sh ``` Finally, execute the created script using nohup or screen session management utilities ensuring continuous operation regardless of terminal connection status changes. --related questions-- 1. What alternatives exist besides SteamCMD for managing game servers? 2. How does one configure advanced options such as cave worlds in DST servers? 3. Can multiple instances of DST servers run simultaneously on different ports? 4. Is there any method to automate backups for a DST server hosted on Linux?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值