1. 为什么选择云服务器而不是本地开服
1.1 本地开服和云服务器的真实差距
很多人第一次接触《饥荒联机版》(Don't Starve Together,简称DST)开服,第一反应是用自己家里的电脑当主机。这个思路本身没错,但实际跑起来问题不少。我自己最早也是用一台旧笔记本开服,结果遇到几个绕不过去的坎:家里宽带的上传带宽通常远小于下载带宽,朋友连进来延迟高、掉线频繁;电脑一关机世界就没了;Windows 防火墙和路由器端口映射对新手来说又是一道门槛。
云服务器的优势在这里就体现出来了。它有一个固定的公网 IP,上行带宽有保障,24 小时不间断运行,而且系统环境干净,不会跟你本地的软件冲突。阿里云的 ECS(弹性计算服务)在国内节点延迟低,按量付费或者包月都很灵活,对于三五好友一起玩饥荒这种场景,一台 2 核 4G 的入门配置就完全够用了。
这里要澄清一个常见误解:饥荒联机版的服务器端(Dedicated Server)本身非常轻量,它不像 Minecraft 那样吃内存。DST 的服务器进程主要消耗的是单核性能和少量内存,一个洞穴(Cave)加一个地面世界(Master)两个进程加起来,稳定运行时内存占用通常在 1.5G 到 2.5G 之间。所以选服务器的时候,单核主频比核心数量更重要,这一点后面选型时会详细说。
1.2 阿里云 ECS 的选型逻辑与配置建议
选阿里云 ECS 的时候,有几个参数需要重点考虑。我把常见的几个维度整理成表格,方便对照:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 实例规格 | 通用型 g7 或计算型 c7 | 计算型单核主频更高,更适合 DST |
| vCPU | 2 核 | 地面 + 洞穴各占一个进程,2 核刚好 |
| 内存 | 4 GB | 双进程稳定运行有余量,2G 会紧张 |
| 系统盘 | 40 GB ESSD | 系统和存档占用不大,40G 足够 |
| 带宽 | 按量付费 5 Mbps 起 | 按实际流量计费,人少时成本很低 |
| 操作系统 | Ubuntu 22.04 LTS 64 位 | 长期支持版本,社区资料最全 |
关于带宽,这里有个经验值:DST 每个玩家大约需要 30 到 50 Kbps 的上行带宽,听起来很小对吧?但这是平均值,实际在玩家移动、战斗、大量实体加载时会有突发流量。5 Mbps 上行带宽支撑 6 到 8 个玩家是比较稳妥的。如果你只是两三个人玩,3 Mbps 也够,但建议留点余量。
还有一个容易被忽略的点:地域选择。阿里云的地域(Region)决定了服务器的物理位置,直接影响延迟。原则是选离你和朋友都近的地域。如果大家都在同一个省份,选最近的地域即可;如果分散在全国,选一个地理中心位置的地域,比如华东或华中。延迟在 50ms 以内体验就很好了,超过 100ms 会有明显的操作延迟感。
提示:购买时如果拿不准配置,可以先按量付费开一台低配的测试,跑起来看实际资源占用,再决定是否升级或转包月。按量付费随时可以释放,试错成本很低。
1.3 安全组规则的设置要点
阿里云 ECS 默认的安全组只开放了 22 端口(SSH),饥荒联机版需要额外开放端口。DST 默认使用 UDP 协议,端口号是 10999(地面世界)和 11000(洞穴世界),另外还有一个 Steam 查询端口 27016(UDP)。
在阿里云控制台的「安全组」配置里,添加入方向规则:
协议类型:自定义 UDP
端口范围:10999/11000
授权对象:0.0.0.0/0(如果只想让特定朋友连,可以填他们的公网 IP)
协议类型:自定义 UDP
端口范围:27016/27016
授权对象:0.0.0.0/0
这里有个坑要提醒:很多人只开了 TCP 端口,结果连不上。饥荒联机版的游戏流量走的是 UDP,不是 TCP。Steam 的服务器列表查询也走 UDP。所以安全组里一定要选 UDP 协议。如果你不确定,可以 TCP 和 UDP 都开一份,但 UDP 是必须的。
另外,如果你后续想用一些管理面板(比如通过 Web 界面查看服务器状态),可能还需要开放 TCP 端口,但纯游戏联机只需要 UDP 就够了。安全组的原则是「最小开放」,不需要的端口不要开,减少被扫描的风险。
2. Ubuntu 系统环境的准备与依赖安装
2.1 连接服务器与基础环境检查
买好 ECS 之后,你会拿到一个公网 IP、一个用户名(通常是 root 或 ubuntu)和密码(或者密钥对)。用 SSH 工具连上去,Windows 用户可以用 PowerShell 自带的 ssh 命令,也可以用 Xshell、PuTTY 这类工具。
连接命令长这样:
ssh root@你的公网IP第一次连接会提示确认指纹,输入 yes 即可。连上之后,先做几件基础检查:
# 查看系统版本 lsb_release -a # 查看 CPU 核心数和主频 lscpu | grep -E "Model name|CPU\(s\)" # 查看内存 free -h # 查看磁盘空间 df -h确认系统是 Ubuntu 22.04 或 20.04,内存有 4G 左右,磁盘有足够空间。如果系统版本不对,可以在阿里云控制台重装系统,选择 Ubuntu 22.04 LTS。
接下来更新系统软件包,这一步很重要,能避免很多依赖问题:
apt update && apt upgrade -yapt update是刷新软件源索引,apt upgrade是升级已安装的软件包。这两个命令在 Ubuntu 上是最基础的维护操作,建议养成习惯,装任何新软件之前先跑一遍。
2.2 安装 SteamCMD 及其依赖库
SteamCMD 是 Valve 官方提供的命令行版 Steam 客户端,专门用来下载和更新游戏服务器端文件。饥荒联机版的服务器端就是通过 SteamCMD 下载的。
在 Ubuntu 上安装 SteamCMD,需要先启用 32 位架构支持,因为 SteamCMD 本身是 32 位的:
# 启用 32 位架构 dpkg --add-architecture i386 # 更新软件源 apt update # 安装 SteamCMD 及依赖 apt install -y steamcmd如果apt install steamcmd提示找不到包,说明你的软件源里没有 multiverse 仓库。Ubuntu 的软件源分为 main、universe、restricted、multiverse 几个部分,SteamCMD 在 multiverse 里。需要先启用:
add-apt-repository multiverse apt update apt install -y steamcmd安装完成后,验证一下:
steamcmd如果看到Steam>提示符,说明安装成功。输入quit退出。
这里有个实操经验:SteamCMD 第一次运行时会自动更新自己,这个过程可能需要几分钟,取决于网络状况。如果卡在某个进度不动,可以按 Ctrl+C 中断,重新运行。有时候是 Valve 的服务器在维护,换个时间段再试就好。
2.3 创建专用用户与目录规划
直接用 root 用户跑游戏服务器不是好习惯,一是安全风险,二是 SteamCMD 在 root 下运行有时会有权限警告。建议创建一个专用用户:
# 创建用户 useradd -m -s /bin/bash steam # 设置密码 passwd steam-m表示同时创建家目录,-s /bin/bash指定默认 shell。创建好之后,切换到该用户:
su - steam接下来规划目录结构。我习惯把服务器文件放在~/dst_server下,结构如下:
/home/steam/dst_server/ ├── server_files/ # 游戏服务器端文件(SteamCMD 下载) ├── config/ # 配置文件(世界设置、管理员列表等) │ ├── Master/ # 地面世界配置 │ └── Caves/ # 洞穴世界配置 └── mods/ # 模组文件先创建这些目录:
mkdir -p ~/dst_server/server_files mkdir -p ~/dst_server/config/Master mkdir -p ~/dst_server/config/Caves mkdir -p ~/dst_server/mods目录规划看起来是小事,但后面配置路径的时候会频繁用到。提前规划好,配置文件里写路径的时候不容易出错。特别是 Master 和 Caves 两个世界的配置要分开存放,因为它们的端口、存档目录、世界设置都不一样。
3. 下载与配置饥荒联机版服务器端
3.1 用 SteamCMD 下载服务器端文件
饥荒联机版的服务器端在 Steam 上的应用 ID 是 343050。用 SteamCMD 下载:
steamcmd +force_install_dir /home/steam/dst_server/server_files +login anonymous +app_update 343050 validate +quit这条命令拆解一下:
+force_install_dir指定安装目录+login anonymous以匿名方式登录,下载服务器端不需要账号+app_update 343050更新指定应用validate校验文件完整性+quit完成后退出
下载过程可能需要几分钟到十几分钟,取决于网络。如果中途断了,重新跑一遍命令即可,SteamCMD 支持断点续传。
下载完成后,检查一下关键文件是否存在:
ls ~/dst_server/server_files/bin/应该能看到dontstarve_dedicated_server_nullrenderer这个可执行文件,这就是服务器的主程序。
注意:饥荒服务器端依赖一些 32 位的运行库。如果启动时报错找不到
libcurl-gnutls.so.4或类似的库,需要安装对应的 32 位库。Ubuntu 22.04 上通常需要:apt install -y lib32gcc-s1 lib32stdc++6 libcurl4-gnutls-dev:i386
3.2 生成世界配置与令牌获取
饥荒联机版的服务器需要一个「集群令牌」(Cluster Token),这是用来验证服务器身份、关联到你的 Steam 账号的。获取方式:
- 打开 Steam 客户端,进入饥荒联机版游戏
- 在主菜单点击「账户」或「Account」
- 找到「游戏服务器」或「Game Server」选项
- 点击「添加新服务器」,会生成一串令牌
- 复制这串令牌,后面配置要用
令牌是一长串字符,类似 `pds-g^KU_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx