在云服务器搭建部署私人饥荒联机版游戏服务器 [2025.10.3][ubuntu 24.04][腾讯云2核2G服务器]

频繁断联, 看不到内存占用和流量使用情况, 界面难用.

SB 阿里云, 配完不要了, 又转去腾讯云了.

相同配置的腾讯云能跑起来, 直接源文件打包到阿里云就爆了...

你看他还在运行中, 实际已经死掉了, 重启(长达数分钟的关停中...)后有概率恢复.

文章目录

    • [1. 环境安装](#1. 环境安装)
    • [2. 存档配置](#2. 存档配置)
      • [1. 创建存档](#1. 创建存档)
      • [2. 获取 tokens](#2. 获取 tokens)
      • [3. 添加管理员权限](#3. 添加管理员权限)
      • [4.订阅 mod](#4.订阅 mod)
      • 5.开放服务器端口
    • [3. 服务器启动脚本](#3. 服务器启动脚本)
    • [4. 可能的问题](#4. 可能的问题)
      • [1. 饥荒更新后搜索不到原来的服务器](#1. 饥荒更新后搜索不到原来的服务器)
      • [2. 提示服务器模组版本低](#2. 提示服务器模组版本低)
    • 参考链接:

1. 环境安装

适用 Ubuntu 24.04 64 位, 不一样的话前期依赖可以让 gpt 解决.

  1. 安装依赖

    • 启用 i386 架构并 update apt, 安装依赖 (这里图省事, 属于超量安装)

      bash 复制代码
      sudo dpkg --add-architecture i386
      sudo apt update
      sudo apt install -y lib32gcc-s1 lib32stdc++6 zlib1g:i386 libcurl4:i386 libc6:i386 libstdc++6:i386 libgcc1:i386  libcurl3-gnutls:i386
    • 安装 steamcmd

      bash 复制代码
      mkdir ~/steamcmd/
      mkdir ~/server_dst/
      cd ~/steamcmd/
      wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz"
      tar -xvzf steamcmd_linux.tar.gz
      rm steamcmd_linux.tar.gz
  • 验证

    装完 steamcmd 后, 看看缺什么依赖:

    bash 复制代码
    ldd ~/steamcmd/linux32/steamcmd

    如果还缺什么, 建议直接扔给 gpt 解决.

  • 运行

    执行自带的启动脚本, 进入 steamcmd:

    bash 复制代码
    cd ~/steamcmd
    ./steamcmd.sh

    会进入漫长的启动环节, 和 windows 中 steam 启动的更新流程差不多.

    结束后进入 steamcmd 的交互界面:

    bash 复制代码
     Steam>

    选择安装文件夹位 server_dst (务必用绝对路径, steam 无法解析 ~ . ... 这些 linux 的相对符号), 匿名登录, 然后安装饥荒服务端, 饥荒对应代码是 343050, 安装结束后 quit 退出 steamcmd:

    bash 复制代码
    force_install_dir /home/username/server_dst
    login anonymous
    app_update 343050 validate

2. 存档配置

先查一下缺不缺依赖:

bash 复制代码
ldd ~/server_dst/bin/dontstarve_dedicated_server_nullrenderer

# ldd ~/server_dst/bin/dontstarve_dedicated_server_nullrenderer_x64
# 这是 64 位版本

有问题扔给 gpt 解决

在~/server_dst/bin下分别执行:

bash 复制代码
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Master
./dontstarve_dedicated_server_nullrenderer -console -cluster Cluster_1 -shard Caves

分别均会看到 "Your Server Will Not Start", 然后 ctrl + c 停止.

就会在 ~/.klei/DoNotStarveTogether/ 中就生成了一个 Cluster_1 文件夹,该文件夹下有名为 Master 和 Caves 的两个子文件夹,这两个文件夹分别是地上和洞穴的配置目录。

Cluster_1是存档名. 更详细参数在: LINK

到这里, 存档的文件就建好了, 接下来就是往存档里填东西.

eg: 这一步你也可以选择 mkdir 去建, 只要路径名和你后面启动服务器时传的参数一致就行. 这一步还有个作用就是最后检查一下环境依赖.

接下来就可以按照 LINK, 去写存档的选项文件, 但太麻烦. 这里选择在 windows 的游戏中创建好存档, 在传入服务器.

1. 创建存档

在 windows 的游戏中正常创建存档, 到选择人物的界面就可以退出了.存档在C:\Users\username\Documents\Klei\DoNotStarveTogether\1477698797\Cluster_1. 用这个文件夹去替换上面的 Cluster_1, 可以用 sftp, ssh也可以直接传.

这考虑几个文件, 关于这些文件的详细设置, 见 LINK:

  1. ~/.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/<worldgenoverride.lua/leveldataoverride.lua

    存放世界生成选项的文件, 就是通过 windows 生成世界时候的一堆选项. 已经被生成.

  2. ~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini

    包含 overworld 和 caves 两个服务器的设置.

  3. ~/.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/server.ini

    每个服务器独立的设置.

2. 获取 tokens

访问 accounts.klei.com 获取 tokens, 同时, 配置服务器也是在这.

登陆后选择 主页 -> 游戏 -> 饥荒 -> 添加新服务器. 得到 pds 开头的一串.

在服务器的 Cluster_1 文件夹下创建文件 cluster_token.txt, 将服务器 token 保存到文件中

bash 复制代码
echo 你的得到的 token > ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt

#cat ~/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt
#进行检查

3. 添加管理员权限

在 accounts.klei.com 找到自己的 klei ID, 添加到 ~/.klei/DoNotStarveTogether/Cluster_1/adminlist.txt. 添加多个直接换行就行.

4.订阅 mod

  • .klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/modoverrides.lua

    这是存档内 mod 的设置文件, 在 windows 中生成世界时已经设置, 想要调整, 可以到 ~/server_dst/mods/workshop-modID/modinfo.lua 或者 ~/server_dst/ugc_mods/Cluster_1/Caves/content/322330 中查看信息.

  • ~/server_dst/mods/dedicated_server_mods_setup.lua这个告诉服务器要下载哪些 mod, 可以后续再选择是否要在 modoverrides.lua 中启用并设置. 因为 Cluster_1 是从 windows 中复制来的, 现在其为空, 我们要把 modoverrides.lua 中对应的 mod 写入.

    bash 复制代码
    ServerModSetup("ID") # ID 就是 modoverrides.lua 中的 workshop-ID
    #每行一个, 行尾无任何符号
    
    ServerModCollectionSetup("ID") # 下载创意工坊中的 mod 集合. 一般用不到
    
    # 注意到, mod ID 就是 steam mod 的网址中最后的一串数字

后续要添加 mod, 先关闭服务器, 直接在 ~/server_dst/mods/dedicated_server_mods_setup.lua 中添加 ID, 再在.klei/DoNotStarveTogether/Cluster_1/<Master/Caves>/modoverrides.lua 中添加启用, 具体设置就自己后来再加了:

json 复制代码
-- mod name
["workshop-modid"]={
    configuration_options={
    },
    enabled=true 
} 

设置完重启服务器就行.

5.开放服务器端口

txt 复制代码
# 饥荒端口,UDP协议
~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini 中的 master_port。
~/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini 中的 server_port。
~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 server_port
# steam端口,TCP+UDP协议
~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini 中的 master_server_port、authentication_port

在云服务器的控制台开放. 我是懒人就直接 udp + tcp 的 ipv4 全开了, 谁没事攻击你一个私人游戏服务器.

3. 服务器启动脚本

  • 在 ~下新建启动脚本:

    bash 复制代码
    #!/bin/bash
    
    steamcmd_dir="$HOME/steamcmd"
    install_dir="$HOME/server_dst"
    cluster_name="Cluster_1" #存档名
    dontstarve_dir="$HOME/.klei/DoNotStarveTogether" #这两个是 -persistent_storage_root 和 -conf_dir 的默认值
    
    function fail() { # 打印错误信息并退出
        echo Error: "$@" >&2
        exit 1
    }
    
    function check_for_file() { # 检查文件是否存在
        if [ ! -e "$1" ]; then
            fail "Missing file: $1"
        fi
    }
    
    cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
    check_for_file "steamcmd.sh"
    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
    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: /'

    并给权限:

    bash 复制代码
    chmod a+x start.sh

    这里走的是 32 位, 要走64位, 改为如下, 可能要新依赖.

    bash 复制代码
    cd "$install_dir/bin64" || fail
    run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)

    在~下运行启动:

    bash 复制代码
    nohup ~/start.sh>server_dst.log 2>&1 &

    日志在 ~/server_dst.log, 通过 tail -f server_dst.log 查看

    要停止的话, 查找进程号, 再 kill

    bash 复制代码
    ps -ef | grep don
    kill 找到的进程号

    也可以 htop 选择要杀死的进程, 更直观.

4. 可能的问题

在维护我自己的服务器的过程中不断更新...

1. 饥荒更新后搜索不到原来的服务器

游戏客户端更新了,服务器没更新就会出现版本不一致,从而导致搜索不到服务器,这个时候我们需要去把服务器也更新一遍.

进入 steamcmd, 再跑一边 dst 的安装流程.

bash 复制代码
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/username/server_dst +app_update 343050 validate +quit
## 务必用绝对路径

注意 ! ! !

这个操作可能会清空模组设置. 请备份文件:

~/server_dst/mods/dedicated_server_mods_setup.lua

~/.klei/DoNotStarveTogether/Cluster_1/Master/modoverrides.lua

~/.klei/DoNotStarveTogether/Cluster_1/Caves/modoverrides.lua

2. 提示服务器模组版本低

可能是服务器 mod 版本低, 升级一下就行.

也有可能是你本地 mod 版本低, 检查网络环境, 是不是启动时本地 mod 没更新成功. 到自己的模组管理那里看看, 模组如果不正常显示(不显示名字, 显示 workshop - ID), 那就是你本地的问题了.

参考链接:

  1. https://developer.valvesoftware.com/wiki/SteamCMD
  2. https://steamcommunity.com/sharedfiles/filedetails/?id=590565473
  3. https://steamcommunity.com/sharedfiles/filedetails/?id=591543858
  4. https://zhuanlan.zhihu.com/p/625645476
  5. https://blog.ttionya.com/article-1233.html
  6. https://blog.ttionya.com/article-1235.html
  7. https://zhuanlan.zhihu.com/p/146379848
  8. https://blog.csdn.net/2201_75556881/article/details/145100458
相关推荐
土星云SaturnCloud1 小时前
土星云智慧服务区方案:AI视觉+边缘计算+视频存管一体化的全场景智能化落地解析
服务器·人工智能·ai·边缘计算
liqingdi4373 小时前
[SWPUCTF 2023 秋季新生赛]Easy SMC
服务器·前端·javascript
我先去打把游戏先3 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
自养Agent3 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
派小心.4 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
A心有千千结5 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
fengkai45455 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
数字新视界5 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
算力小木5 小时前
#标题:5090 vs 4090D 到底差多少?我拿八卡实测了一周
服务器
数据中心的那点事儿5 小时前
艾特网能:GPU算力服务器冷却系统配套设计介绍
运维·服务器·gpu算力