尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
阿里云Ubuntu部署饥荒联机版专用服务器完整教程
1. 为什么选择阿里云Ubuntu部署饥荒联机版服务器1.1 自建服务器的核心动机玩过饥荒联机版的朋友都知道这游戏最舒服的体验就是几个人长期在一个固定世界里慢慢发展建家、打Boss、过四季。但问题来了——官方服务器延迟高、Mod管理不灵活、世界存档不在自己手里而且一旦房主下线其他人就全被踢出去了。我最早是几个人用本地主机开房间玩结果每次都要等房主上线后来换过各种第三方平台要么限制人数要么Mod装不了要么存档丢了找不回来。自己租一台云服务器来跑饥荒联机版专用服务器Dedicated Server是目前最稳妥的方案。阿里云的ECS实例在国内访问延迟低Ubuntu系统对SteamCMD的支持非常成熟整个部署流程也不算复杂。这篇文章我会把从购买服务器到多人成功联机的完整过程拆开讲包括踩过的坑和参数选择的理由你照着做基本能一次跑通。1.2 适合谁来参考这套方案这套方案适合三类人一是想和朋友长期稳定联机、不想受房主在线时间限制的玩家二是有一定Linux基础、愿意花半小时折腾一次换长期省心的技术爱好者三是想顺便练手云服务器运维的学生或开发者。如果你完全没碰过Linux命令行也不用怕我会把每条命令的作用都解释清楚你复制粘贴也能跑起来。需要提前说明的是饥荒联机版专用服务器的性能需求并不高。我实测下来4人以内的小型世界2核4G的实例完全够用甚至2核2G也能跑只是洞穴和地面同时开启时内存会紧张一些。后面我会给出具体的配置建议和参数计算。1.3 整体部署路线概览整个流程可以拆成六个阶段购买并初始化阿里云ECS实例、配置Ubuntu基础环境、安装SteamCMD并下载饥荒服务端、生成世界配置和集群令牌、配置Systemd守护进程实现开机自启、最后是Mod管理和日常维护。每个阶段都有一些容易出错的细节比如安全组端口开放、集群令牌的获取方式、洞穴分片的配置等我会逐一展开。2. 阿里云ECS实例选购与Ubuntu系统初始化2.1 实例规格与镜像选择先说配置。饥荒联机版服务端本质上是单线程为主的程序地面和洞穴各占一个进程所以CPU核心数比单核频率更重要。我的建议是玩家规模推荐规格内存带宽系统盘2-4人2核2G2GB3Mbps40G ESSD4-6人2核4G4GB5Mbps40G ESSD6人以上多Mod4核8G8GB5Mbps60G ESSD带宽这块要重点说一下。饥荒联机版的网络同步数据量不大但延迟敏感。3Mbps带宽支撑4人联机绰绰有余但如果Mod很多、世界实体数量爆炸同步数据会增大建议留5Mbps余量。地域选择上选你和朋友们物理距离最近的地域比如大家都在华东就选杭州或上海。镜像选择Ubuntu 22.04 LTS 64位。为什么不用20.04因为22.04的glibc版本更新SteamCMD的兼容性更好而且长期支持到2027年。别选CentOS虽然也能跑但SteamCMD在Ubuntu上的社区文档和踩坑记录最丰富出问题好查。2.2 安全组端口配置这是新手最容易卡住的地方。饥荒联机版需要开放的端口分两类UDP 10999地面世界的游戏通信端口UDP 10998Steam主查询端口用于服务器列表展示UDP 27015Steam查询端口UDP 10888如果开启洞穴洞穴分片的通信端口如果你还想要Steam创意工坊自动更新Mod需要额外开放TCP 27016可选。在阿里云控制台的安全组里添加入方向规则协议类型选自定义UDP端口范围填10998/10999授权对象填0.0.0.0/0。洞穴的话再加10888/10888。这里有个坑很多人只开了10999结果朋友能连上但服务器不出现在Steam列表里就是因为10998没开。注意安全组规则修改后立即生效不需要重启实例。但如果你的服务器同时装了ufw防火墙还需要在系统内放行对应端口两层都要开。2.3 系统初始化与基础环境用SSH连上服务器后先做几件基础事。第一是更新系统包并安装必要工具sudo apt update sudo apt upgrade -y sudo apt install -y lib32gcc-s1 lib32stdc6 libcurl4-gnutls-dev wget screen vimlib32gcc-s1和lib32stdc6是SteamCMD运行必需的32位库缺了会报error while loading shared libraries。screen用于后台保持会话虽然我们最终会用Systemd管理但调试阶段screen很方便。第二是创建一个专用用户来跑服务端不要用root直接跑这是安全习惯sudo useradd -m -s /bin/bash steam sudo passwd steam给steam用户设个密码后面切换过去操作。用专用用户的好处是权限隔离即使服务端被攻击也不会影响系统关键文件。第三是调整文件描述符限制。饥荒服务端在实体多的时候会打开大量文件句柄默认的1024可能不够sudo vim /etc/security/limits.conf在文件末尾加上steam soft nofile 65535 steam hard nofile 65535保存后重新登录steam用户生效。这个细节很多人忽略结果玩到中后期服务器突然崩溃日志里报Too many open files就是这个原因。3. SteamCMD安装与饥荒服务端下载3.1 SteamCMD的正确安装方式切换到steam用户创建安装目录su - steam mkdir -p ~/steamcmd cd ~/steamcmd下载SteamCMD的Linux版本wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -xvzf steamcmd_linux.tar.gz解压后会得到steamcmd.sh脚本和linux32目录。第一次运行会自动下载更新./steamcmd.sh进入SteamCMD的交互界面后先设置安装目录force_install_dir /home/steam/dst_server login anonymous app_update 343050 validate quit这里解释几个关键点。343050是饥荒联机版专用服务器的Steam AppID不是游戏本体的322330别搞混。login anonymous表示匿名登录饥荒专用服务器不需要购买账号就能下载。validate参数会校验文件完整性第一次下载建议加上后续更新可以去掉以加快速度。实操心得国内服务器下载SteamCMD内容有时会很慢甚至超时。我试过在阿里云杭州节点白天速度还行晚上高峰期偶尔卡住。如果遇到下载卡死可以尝试在凌晨时段操作或者多试几次。SteamCMD支持断点续传中断后重新运行app_update会接着下。3.2 目录结构与关键文件说明下载完成后/home/steam/dst_server目录下会有这些关键内容bin/服务端可执行文件包括dontstarve_dedicated_server_nullrendererdata/游戏数据包括databundles和scriptsmods/Mod存放目录steamapps/Steam相关元数据服务端的启动命令是bin/dontstarve_dedicated_server_nullrenderer后面跟一堆参数。但直接跑这个命令很麻烦我们需要用配置文件来管理。3.3 依赖库的补充安装饥荒服务端在Ubuntu 22.04上跑有时会缺一些库。我遇到过报错libcurl-gnutls.so.4: cannot open shared object file解决方法是sudo apt install -y libcurl4-gnutls-dev如果还报其他32位库缺失用ldd命令检查ldd ~/dst_server/bin/dontstarve_dedicated_server_nullrenderer看哪个库显示not found然后apt search找对应的32位包安装。Ubuntu上32位库通常带:i386后缀需要先启用i386架构sudo dpkg --add-architecture i386 sudo apt update这一步不是必须的但如果你的服务端启动就崩八成是库的问题按这个思路排查。4. 世界配置、集群令牌与洞穴分片4.1 集群目录结构规划饥荒服务端的配置全部放在~/.klei/DoNotStarveTogether/目录下。我们手动创建集群目录比如叫MyClustermkdir -p ~/.klei/DoNotStarveTogether/MyCluster cd ~/.klei/DoNotStarveTogether/MyCluster集群目录下需要这些内容cluster.ini集群全局配置cluster_token.txt集群令牌Master/地面世界配置目录Caves/洞穴世界配置目录Master和Caves目录下各自需要server.ini、worldgenoverride.lua可选、leveldataoverride.lua可选等文件。4.2 集群令牌的获取方法集群令牌是服务器上线到Steam的凭证没有它服务器起不来。获取方式是在游戏内操作打开饥荒联机版进入账户页面点击游戏标签找到服务器区域点击添加新服务器输入一个名字然后会生成一串令牌。复制这串令牌粘贴到cluster_token.txt文件里。注意令牌是敏感信息泄露了别人可以用你的名义开服。不要把它提交到公开的Git仓库。如果令牌泄露在游戏内删除该服务器重新生成即可。4.3 cluster.ini核心参数详解cluster.ini控制集群的全局行为我给出一个经过实测的配置模板[GAMEPLAY] game_mode survival max_players 6 pvp false pause_when_empty true [NETWORK] cluster_name 我们的饥荒世界 cluster_description 长期稳定联机 cluster_password yourpassword cluster_language zh [MISC] console_enabled true max_snapshots 6 [SHARD] shard_enabled true bind_ip 127.0.0.1 master_ip 127.0.0.1 master_port 10889 cluster_key yourclusterkey逐项解释。max_players设6是因为2核4G的实例跑6人比较稳人多会卡。pause_when_empty true表示没人时暂停游戏节省CPU。cluster_password一定要设否则任何人都能进。shard_enabled true开启洞穴分片bind_ip和master_ip都填127.0.0.1因为地面和洞穴在同一台机器上走本地回环通信。cluster_key是分片间通信的密钥随便设一串字符地面和洞穴的配置里要一致。4.4 地面与洞穴的server.ini配置Master/server.ini[NETWORK] server_port 10999 [SHARD] is_master true [STEAM] master_server_port 27018 authentication_port 8768Caves/server.ini[NETWORK] server_port 10998 [SHARD] is_master false name Caves [STEAM] master_server_port 27019 authentication_port 8769关键点是端口不能冲突。地面用10999洞穴用10998Steam查询端口也要错开。is_master标记哪个是主分片地面是true洞穴是false。4.5 世界生成参数定制如果你想要自定义世界比如资源更多、季节更长可以在Master目录下创建worldgenoverride.lua。这个文件用Lua表格式描述世界生成参数。举个例子让资源丰富一些return { override_enabled true, preset SURVIVAL_TOGETHER, overrides { resources high, season_start autumn, autumn long, winter short, } }preset是预设模式overrides里可以覆盖具体参数。资源选项有never、verylow、low、default、high、veryhigh。季节长度有very short、short、default、long、very long。这个文件不写也行服务端会用默认参数生成世界。5. Systemd守护进程与开机自启配置5.1 为什么用Systemd而不是screen调试阶段用screen很方便但生产环境必须用Systemd。原因有三一是开机自启服务器重启后服务自动拉起二是崩溃自动重启服务端偶尔会因Mod冲突崩溃Systemd能自动恢复三是日志管理Systemd的journal能统一收集输出方便排查。5.2 地面服务的unit文件创建/etc/systemd/system/dst-master.service[Unit] DescriptionDont Starve Together Master Server Afternetwork.target [Service] Typesimple Usersteam Groupsteam WorkingDirectory/home/steam/dst_server/bin ExecStart/home/steam/dst_server/bin/dontstarve_dedicated_server_nullrenderer -console -cluster MyCluster -shard Master Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target5.3 洞穴服务的unit文件创建/etc/systemd/system/dst-caves.service[Unit] DescriptionDont Starve Together Caves Server Afternetwork.target dst-master.service [Service] Typesimple Usersteam Groupsteam WorkingDirectory/home/steam/dst_server/bin ExecStart/home/steam/dst_server/bin/dontstarve_dedicated_server_nullrenderer -console -cluster MyCluster -shard Caves Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target注意After里加了dst-master.service确保地面先启动洞穴后启动。因为洞穴需要连接地面的主分片顺序反了会连接失败。5.4 启用与验证sudo systemctl daemon-reload sudo systemctl enable dst-master dst-caves sudo systemctl start dst-master sleep 15 sudo systemctl start dst-caves等15秒再启动洞穴给地面服务初始化时间。验证状态sudo systemctl status dst-master sudo systemctl status dst-caves看到active (running)就成功了。查看日志sudo journalctl -u dst-master -f日志里出现Sim paused表示世界已加载等待玩家加入。实操心得第一次启动时服务端会生成世界这个过程可能持续1-3分钟期间日志会刷大量生成信息。别急着以为卡死了耐心等。如果超过5分钟还没出现Sim paused检查cluster_token.txt是否正确、端口是否被占用。6. Mod管理与自动更新机制6.1 创意工坊Mod的安装方式饥荒联机版的Mod通过dedicated_server_mods_setup.lua文件管理。这个文件在~/dst_server/mods/目录下。格式是ServerModSetup(378160973) ServerModSetup(458587300) ServerModSetup(661253977)每行一个Mod的创意工坊ID。ID怎么获取在Steam创意工坊页面URL末尾的数字就是ID。比如https://steamcommunity.com/sharedfiles/filedetails/?id378160973ID就是378160973。6.2 Mod配置文件的编写光安装还不够还要在集群目录下配置哪些Mod启用。创建~/klei/DoNotStarveTogether/MyCluster/Master/modoverrides.luareturn { [workshop-378160973] { enabled true }, [workshop-458587300] { enabled true, configuration_options { } }, [workshop-661253977] { enabled true }, }洞穴目录Caves/modoverrides.lua也要同样配置一份否则洞穴里Mod不生效。这是很多人踩的坑——地面Mod正常一下洞穴就报错就是因为洞穴没配。6.3 Mod自动更新的实现服务端启动时会自动检查并更新dedicated_server_mods_setup.lua里列出的Mod。但有个前提服务端进程要有权限写入mods目录。用steam用户跑服务端目录属主也是steam一般没问题。如果Mod更新后导致服务端崩溃可以临时禁用某个Mod把modoverrides.lua里对应的enabled改成false重启服务即可。排查是哪个Mod的问题时可以用二分法先禁用一半看是否恢复逐步缩小范围。6.4 Mod冲突的常见表现与处理Mod冲突的典型表现有三种一是服务端启动直接崩溃日志报Lua错误二是能启动但玩家一进就掉线三是游戏内某些功能异常比如物品无法制作。处理思路是看日志定位报错的Mod然后去创意工坊页面看有没有兼容性说明或更新。我遇到过两个Mod都修改了同一个游戏机制导致冲突。解决方法是找功能重叠的替代Mod或者联系Mod作者。大部分热门Mod都有兼容性维护保持更新能避免很多问题。7. 常见问题排查与运维经验7.1 连接类问题速查现象可能原因排查方法服务器不出现在Steam列表10998端口未开放检查安全组和ufw朋友连接超时10999端口未开放telnet测试UDP端口能连上但频繁掉线带宽不足或Mod冲突看日志和监控带宽洞穴无法进入10888端口未开放或cluster_key不一致检查两处配置提示服务器需要维护服务端版本过旧运行SteamCMD更新7.2 性能问题的排查思路服务器卡顿通常有三个来源CPU、内存、磁盘IO。用htop看CPU和内存占用用iostat看磁盘。饥荒服务端在实体数量多的时候CPU会飙升这是正常的。如果长期CPU跑满考虑升级实例规格或减少Mod数量。内存方面地面和洞穴各占约1-1.5G加上系统开销2G内存的实例跑双分片会很紧张。我建议至少4G。如果内存不足服务端会被OOM Killer杀掉日志里能看到Killed字样。7.3 存档备份与恢复存档在~/.klei/DoNotStarveTogether/MyCluster/Master/save/和Caves/save/目录下。定期备份是好习惯可以写个cron任务0 4 * * * tar -czf /home/steam/backup/dst_$(date \%Y\%m\%d).tar.gz /home/steam/.klei/DoNotStarveTogether/MyCluster每天凌晨4点备份一次。恢复时停掉服务解压覆盖再启动。注意备份时最好先停服务或用c_save()命令让服务端保存当前状态否则可能备份到不一致的数据。7.4 版本更新与维护节奏饥荒联机版会不定期更新服务端也要跟着更新。更新流程是停服务、运行SteamCMD的app_update 343050 validate、启动服务。建议在更新前先备份存档因为大版本更新有时会改变存档格式。我个人的维护节奏是每周检查一次更新每月做一次完整备份归档。Mod更新更频繁但服务端启动时会自动拉取不用手动干预。如果某次更新后出问题回滚的方法是SteamCMD加上-beta参数指定旧版本但饥荒的旧版本分支不总是可用所以备份存档才是最后的保险。7.5 几个容易被忽略的细节第一服务器的时区设置。默认UTC时区游戏内的时间和现实对不上。改成东八区sudo timedatectl set-timezone Asia/Shanghai第二cluster.ini里的cluster_name如果包含中文某些客户端可能显示乱码。建议用英文或拼音游戏内再改显示名。第三如果服务器公网IP变了比如重启后集群令牌可能需要重新生成。阿里云ECS默认是固定公网IP一般不会变但如果你用的是按量付费实例且释放过就要注意。第四max_snapshots控制存档快照数量设太大会占磁盘。6个快照大约占几百MB40G系统盘完全够用。这套方案我从最早的单人测试跑到现在的6人长期服前后调整了十几次配置踩过的坑基本都写在上面了。核心思路就是用Systemd保证稳定性用配置文件管理世界参数用定期备份兜底。剩下的就是享受游戏了。
RELATED

相关推荐

BabelDOC 上手指南:把英文 PDF 翻译成保留原排版的中文双语 PDF

BabelDOC 上手指南:把英文 PDF 翻译成保留原排版的中文双语 PDF

BabelDOC 上手指南:把英文 PDF 翻译成保留原排版的中文双语 PDF 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC 是一个开源的 PDF 翻译库,调用 OpenAI 兼容的大…

📅 2026/9/18 19:51:24
VS2015 + Qt 5.14.2 在 Win10 下的安装配置与踩坑指南

VS2015 + Qt 5.14.2 在 Win10 下的安装配置与踩坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/18 19:46:24
数据中心交换机芯片:从配置到行为,核心机制与排障调优

数据中心交换机芯片:从配置到行为,核心机制与排障调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/18 19:46:24
MORE NEWS

更多资讯

📰

宏平均与微平均的本质区别及业务选择指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

电路图高清交付:从EDA导出到印刷的像素级标准

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

LeetCode 14 最长公共前缀(Longest Common Prefix)四种解法全解:从水平扫描到 Trie 前缀树

LeetCode 14 最长公共前缀(Longest Common Prefix)四种解法全解:从水平扫描到 Trie 前缀树 【免费下载链接】leetcode Leetcode solutions 项目地址: https://gitcode.com/GitHub_Trending/leetcode1/leetcode 导读 本文以 LeetCode …

📰

WhiteSur 主题实操指南:6 步装好、调美、卸干净

WhiteSur 主题实操指南:6 步装好、调美、卸干净 【免费下载链接】WhiteSur-gtk-theme MacOS like theme for all gtk based desktops 项目地址: https://gitcode.com/GitHub_Trending/wh/WhiteSur-gtk-theme WhiteSur 主题是一套 macOS Big Sur 风格的 Linux…

📰

Claude Desktop Debian 构建工具链安装指南:setup-build-tools Skill 与依赖引导全解析

Claude Desktop Debian 构建工具链安装指南:setup-build-tools Skill 与依赖引导全解析 【免费下载链接】claude-desktop-debian Claude Desktop for Linux 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-desktop-debian 导读 本文围绕 claude-…

📰

【ComfyUI】Flux 主题扩展人物写实写真

今天给大家演示一个基于 Flux 文生生写真风格的 ComfyUI 自动润色工作流。该工作流融合了图像上传、文本提示、模型引导与自动修复,能够精准识别人像照片中的面部特征,结合 Lora 模型和提示语意生成系统自动进行主题风格润色。 本例采用敦煌飞天为默认主…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬