当前位置: 首页 > news >正文

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

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

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

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

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

文章目录

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

1. 环境安装

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

  1. 安装依赖

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

      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

      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 后, 看看缺什么依赖:

    ldd ~/steamcmd/linux32/steamcmd
    

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

  • 运行

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

    cd ~/steamcmd
    ./steamcmd.sh
    

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

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

     Steam>
    

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

    force_install_dir /home/username/server_dst
    login anonymous
    app_update 343050 validate
    

2. 存档配置

先查一下缺不缺依赖:

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

有问题扔给 gpt 解决

~/server_dst/bin下分别执行:

./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 文件夹,该文件夹下有名为 MasterCaves 的两个子文件夹,这两个文件夹分别是地上和洞穴的配置目录。

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 保存到文件中

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 写入.

    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 中添加启用, 具体设置就自己后来再加了:

-- mod name
["workshop-modid"]={configuration_options={},enabled=true 
} 

设置完重启服务器就行.

5.开放服务器端口

# 饥荒端口,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. 服务器启动脚本

  • ~下新建启动脚本:

    #!/bin/bashsteamcmd_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: "$@" >&2exit 1
    }function check_for_file() { # 检查文件是否存在if [ ! -e "$1" ]; thenfail "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: /'
    

    并给权限:

    chmod a+x start.sh
    

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

    cd "$install_dir/bin64" || fail
    run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)
    

    ~下运行启动:

    nohup ~/start.sh>server_dst.log 2>&1 &
    

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

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

    ps -ef | grep don
    kill 找到的进程号
    

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

4. 可能的问题

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

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

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

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

~/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
http://www.dtcms.com/a/437910.html

相关文章:

  • 使用Go做一个分布式短链系统
  • 北京专业做网站设计公司全国高校教师网络培训中心
  • 元萝卜 1.0.9 | 免root支持XP模块,一键微信平板模式,游戏增强,应用多开
  • Unity Time参数:Maximum Particle Timestep
  • 网站运营包括哪些内容爱用建站怎么样
  • Java JVM --- JVM内存区域划分,类加载,GC垃圾回收
  • 做网站卖广告位赚钱吗最火的自媒体平台排名
  • 从“快递签收规则”看 sigaction:信号处理的“总开关”
  • 中国建设银行官网首页 网站网站顶部flash
  • 微服务项目(k8s集群)部署
  • linux网站建设技术指南 pdf郑州做网站华久科技
  • Conda 常用命令速查表
  • 网站建设如何网络销售html网页教程
  • 大模型面试题剖析:模型微调中冷启动与热启动的概念、阶段与实例解析
  • 计算机网络基础详解:从OSI模型到HTTP/HTTPS与Socket编程
  • 大型网站建设机构小程序订货系统
  • springboot多功能智能手机阅读APP设计与实现(代码+数据库+LW)
  • hadoop-hdfs-journalNode
  • 记一次手机付费充电设备研究
  • 做网站公司价格多少人事外包收费标准
  • 网站百度关键词排名软件网络舆情
  • 网站毕业设计任务书秦皇岛营销式网站制作
  • 注册公司网站源码建设银行企业网站无法打印回单
  • 文化馆的网站怎么建设seo文章外包
  • mvc5 网站开发之美百度沈阳分公司地址在哪里
  • 针对餐饮公司推广做网站方法高端的网站设计多少钱
  • 网站开发不用框架阳春县建设局网站
  • 优秀的网站建设开发案例网站商品管理功能
  • 做网站是什么时候分页贸易网站开发
  • 汕头整站优化wordpress 时区问题