饥荒私服搭建
参考
- https://leanote.zzzmh.cn/blog/post/admin/63e46785da7405001301c7f5 (docker版)
- https://blog.csdn.net/HoewDec/article/details/139900715 (普通版)
- https://code-killerr.github.io/2021/10/17/buildDonNotStarveServe/
- https://www.yeatsj.com/2022/11/04/20221104DST-01/ (一部分内容/图片源自该博客,主要参考)
- https://www.bilibili.com/read/cv14798689/
Part One(失败篇,docker版
拉去镜像,由于要搭在国内服务器上,能配置下
要么代理(我有点懒,不想搞),所以找了个能用的镜像源
1 | { |
改完后重新启动下
1 | sudo systemctl daemon-reload |
然后再拉取镜像
1 | docker pull jamesits/dst-server:nightly |
以下是对不同版本的一个解释
这个描述解释了不同 Docker 镜像版本之间的区别,主要是 latest
、vanilla
、nightly
和 steamcmd-rebase
。让我逐步解释一下每个版本的意义,特别是你提到的 nightly
。
latest
或vanilla
:- 这两个版本更新频率较低,通常是较为稳定的版本,推荐用于日常使用。
- 它们不会经常更新,意味着这个版本的代码和功能不会每天都变化,更加可靠。
- 这些镜像适合不需要紧跟最新开发版本的用户。
nightly
:- 这是一个 “夜间构建” 的版本,意味着它每天自动构建一次,并尝试包含最新的服务器代码。
- 因为是自动化构建的版本,所以可能会包含最新的功能或者修复,但也有可能因为代码不稳定而出现问题。
- 如果你希望每天都使用最新的开发版本,并且能够接受潜在的不稳定性,那么你可以选择这个版本。
- 这个版本的重点在于 “最新”,所以对于开发者或者测试者来说非常合适,但可能不适合生产环境使用。
steamcmd-rebase
:- 这个版本和
latest
类似,但它是基于另一个镜像 (cm2network/steamcmd:root
) 来构建的。 - 它会提供相同的功能,但底层基础镜像有所不同,可能会影响容器的大小或依赖的配置。
- 如果你需要基于
steamcmd
镜像的环境,可以选择这个版本。
- 这个版本和
-slim
版本:- 所有版本(除了
nightly
)都有一个-slim
标签的版本。 - 这些版本没有预先安装
DST
服务器文件,每次启动容器时都需要重新下载所需的文件。 -slim
版本体积更小,但不能在离线环境下运行,因为启动时需要从网络下载文件。
- 所有版本(除了
- 构建方式:
latest
是通过 Docker Hub 的自动构建(autobuild)生成的。- 其他版本(如
nightly
、steamcmd-rebase
等)是通过 Azure DevOps CI(持续集成工具)构建的,意味着它们的构建过程可能更加灵活且集成了持续开发的代码更新。
总结:
latest/vanilla
:稳定且较少更新的版本,推荐日常使用。nightly
:每天自动更新的最新代码版本,可能更不稳定,但包含最新的功能和修复,适合开发或测试。steamcmd-rebase
:类似latest
,但基于不同的底层镜像。-slim
版本:没有预安装服务器文件,每次启动都需要下载文件,无法离线运行。
如果你在测试最新功能,nightly
版本适合你;如果你需要稳定性,latest
是更好的选择。
数据目录
1 | /home/yuan/dock/dst |
启动
1 | docker run -d\ |
有点麻烦,不想搞docker的网络,感觉出问题了,于是换个教程
Part Two(再次失败篇
1. 安装依赖
1 | sudo add-apt-repository multiverse |
2. 安装SteamCMD
1 | mkdir ~/steamcmd |
3. 安装饥荒联机版
1 | steam> force_install_dir ../xxx # 注意这步是设定下载或者以后验证的位置的 |
似乎还是遭遇了网络问题qwq,无奈只好挂上了代理
参考
https://v2raya.org/en/docs/prologue/introduction/
放两张设置截图记录下
Continue…
类目
增加虚拟内存swap(也不知道对不对,看着gpt的弄弄的
4. 本地创建世界
mod什么的也选上
5. 创建私服获取token
不过为了不影响本地的配置,感觉不如传到服务器上再新建,而且Linux下新建文件什么的方便点
6. 上传整个cluster
allworlds/iGotSmoke是我自己新建的,其他的都是之前steamcmd下载的
新建之前说的adminlist.txt和cluster_token.txt,并且把内容放进去
7. 服务器添加mods
找到电脑上Master或者Caves目录下的 modoverrides.lua 文件(这俩似乎是一样的,也许有专门mod?不确定),找到形如 workshop-xxxxxxxx 的内容,后面的xxxxx就是mod的代码,创意工坊内mod界面网址后的数字就是这个。
将这些纯数字代码复制出来写成 ServerModSetup(“xxxxxxx”) 格式,写入服务器上的 /home/yuan/dst/mods/dedicated_server_mods_setup.lua 文件中。可以直接用vim命令写入,也可以借助第三方工具。
这是为了让服务器在setup的时候去(检查)下载这些Mods
重要的事情(补充)
这个 dedicated_server_mods_setup.lua 文件只是代表服务器会下载,具体开启MOD以及设置MOD,需要进入/home/steam/module/DST/allworlds/world/Master,里面修改 modoverrides.lua 文件,由于刚刚电脑中已经配置过了,所以这个文件是准确OK的,但是如果后期添加MOD, dedicated_server_mods_setup.lua 和 modoverrides.lua 都需要修改保存。
8. 创建启动脚本
据说bin64下的也行,占用的内存可能多一点,就没用
1 | ./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/yuan/dst -conf_dir allworlds -cluster iGotSmoke -shard Caves |
1 | ./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/yuan/dst -conf_dir allworlds -cluster iGotSmoke -shard Master |
这里就相当于是填写了cluster(iGotSmoke)内容所在的路径
启动,新建一个master的screen启动脚本,经典报错;
find了一下
ldd看了下确实找不到
使用 ldd
命令检查程序依赖的共享库是否都能找到:
1 | ldd ./dontstarve_dedicated_server_nullrenderer |
这将列出程序所依赖的所有库,并标明哪些库未找到。
ln -s到了/usr/lib然后发现似乎有32位和64位的问题
于是尝试装了一下32位的库
1 | sudo dpkg --add-architecture i386 |
再启动,似乎是成功了
再启动下cave
由于某些操作失误,未能成功,打算重整目录结构再来一遍
Part Three
1. 目录结构准备
client准备存放steamcmd下载的东西
storage则是持久化目录
myscripts则是放各种脚本
2. 运行steamcmd进行下载
1 | Steam> force_install_dir /home/yuan/dst/client |
3. 脚本
1 |
|
一开始自作主张弄了日志重定向,感觉有点问题,因为本身也有一套日志机制,发现在下面这个目录下就有
4. 关于模块
感觉这个模块问题很大,自己传了本地的上去(本地的其实也会有多个路径存储,有的是workshop+id,有的在一个content目录下直接以id为目录
我把本地所有Mod能找到的都扔在了mods目录下,统一用workshop开头(不确定对不对)
建议不装最好…
ugc这个目录也是自己会生成的
理论上加mod只要修改/home/yuan/dst/client/mods/dedicated_server_mods_setup.lua
总结
感觉还是网络的问题,多试试吧
这是最终的结构,看起来把我有两个workshop传上去的又修改了位置(应该是网络畅通就能改正,不容易)
Final
终于成功了
结果第二天起床发现根本连接不了
一直显示
1 | Master: [00:02:44]: [P2P] Session request for '76561199345187771' |
又是处理防火墙又是判断端口,最后发现不知为何公网ip和curl ifconfig.me
显示的不一样
(感觉可能是1.代理 2.服务器的问题)重启了下服务没开代理就正常了,附上一些常用命令
1 | telnet 111.229.109.44 <ip> |
- 标题: 饥荒私服搭建
- 作者: SYuan03
- 创建于 : 2024-09-30 20:53:29
- 更新于 : 2024-10-05 14:49:44
- 链接: https://bblog.031105.xyz/posts/杂记/饥荒私服搭建.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。