一、前言
上次玩饥荒还是6年前,时间过去的太久忘了如何搭建服务器。所以我整理做成笔记方便将来查找,这次我直接使用了黑群晖搭建,相比云服务器有更大的内存和带宽,性价比更高,更适合饥荒这种需要大内存来运行的游戏。
本教程使用的环境
硬件:4代i3/z170/8G/电信100M(上行20M)
系统:黑群晖(版本:6.1.4)
路由:ikuai
二、群晖配置
1. Docker 安装
开发套件 -> 实用工具(或搜索Docker) -> Docker -> 安装。
2. Docker-Centos7 下载
-
注册表 -> 双击centos7 -> 标签选择centos7.9.2009 -> 确定等待下载。(注:如果介意centos7即将停止维护,推荐AlmaLinux,100%兼容centos7)(2023-3-1补充:注意大版本号必须是7!!!,不要选lateset!!!如果你不仔细没选7,后面操作使用到的命令会找不到!!!)
-
映像 -> 双击centos:centos7.9.2009 -> 取个名字 -> 【高级设置】 -> 点击端口设置标签 -> 添加一个11000udp端口(对应地表)和一个11001udp端口(对应洞穴),容器和本地端口都是11000和11001 (具体哪两个端口还得看server.ini中的配置,这里以11000和11001举例,默认好像是10998和10999) -> 其他都默认 -> 【应用】 -> 【下一步】 -> 【应用】。(注:cpu\内存限制自己按实际情况调整,饥荒的话1G后期估计会卡建议4G,存储空间标签是用来把群晖共享目录打通到Centos虚拟机中,一般不需要可以不用配置,udp的11000和udp的11001是饥荒服务器用到的两个对外端口。为了能使外界能够访问docker中的这两个端口,必须在【端口设置】中配置端口映射,把内部端口映射到群晖外部的11000和11001上。)(2023-3-1补充:udp两个端口转发并不是一定需要的!!即使不穿透端口,也不会影响在服务器列表中搜索到服务器!!)
3. 安装ssh服务
docker中的centos默认不带ssh服务,为了方便用管理工具管理群晖docker中的centos,首先要安装ssh服务端。
-
虚拟机端口映射中再添加一个端口映射:容器端口:22 本地端口:20022 类型:TCP
-
容器 -> 启动centos7.9 -> 双击centos7.9 -> 终端机 -> 输入以下指令(无法复制只能手敲)
3.在本地电脑使用客户端连接工具连接centos7,端口:20022,登录名:root,密码使用刚设置的密码。
Tabby Terminal(SSH客户端)下载:https://github.com/Eugeny/tabby/releases。
WinSCP(SFTP客户端)下载:https://winscp.net/eng/index.php。(注:如果使用winscp自带的文本编辑器修改文本,为了避免乱码,需设置默认编码UTF-8。[选项->编辑器->内置编辑器->默认编码])
4. 安装必须组件
1.安装依赖包:wget(下载工具) 、32位运行库、screen(多重视窗管理程序)
2.安装依赖包2 (饥荒用到的库)
3.创建一个专门用于管理游戏服务器的账户并使用该账户进行后续操作!!!
4.安装steamcmd(Steam命令行客户端)
三、游戏配置
5. 安装饥荒服务端
1.打开steamcmd后下载饥荒服务端
2.饥荒目录结构
主目录:/home/steam/Steam/steamapps/common/Don't Starve Together Dedicated Server
服务启动程序:{主目录}/bin/dontstarve_dedicated_server_nullrenderer
地图目录:{主目录}/allworlds/world (需要自己创建)
创意工坊MOD列表:{主目录}/mods/dedicated_server_mods_setup.lua (里面填创意工坊ModId,启动游戏后会自动下载)
6.生成服务器配置文件
1.登录klei玩家账户网站:https://accounts.klei.com/account/info。输入steam账号登录到用户信息页面,记录一下Klei用户ID,等会会用到。(注:steamcommunity.com网站如果无法打开,建议使用加速器)。
2.点击上方游戏标签页,点击【饥荒:联机版游戏服务器】-> 输入集群名 ->【添加新服务器】,服务器信息创建成功。 再点击【配置服务器】-> 【下载设置】下载服务器基本配置文件。
3.将下载设置的压缩包内的文件解压,将解压后的目录和文件放到{地图目录}中。(注意复制到服务器的过程依然使用steam账户而不是root)
4.在{地图目录}新建文件adminlist.txt,文件内容为刚刚记录下的Klei用户ID。
7.利用windows版生成地图参数配置文件
现在我们还缺,地图信息配置文件(leveldataoverride.lua)和MOD加载状态配置文件(modoverrides.lua),这里我们利用windows客户端版替我们生成。
1.打开游戏,【创建游戏】-> 【创建新世界】。
2.设置游戏风格,设置森林选项,打开洞穴地图,勾选服务器模组。设置好之后点击生成世界, 等待进入选人界面就可以断开了。
3.进入windows版地图目录(C:\Users\用户名\Documents\Klei\DoNotStarveTogether\数字\Cluster_1),将2个leveldataoverride.lua文件和2个modoverrides.lua文件拷贝到我们服务器上的对应目录。(注意复制到服务器的过程依然使用steam账户而不是root)
8.将使用中的创意工坊ModID添加到dedicated_server_mods_setup.lua
打开modoverrides.lua,比如这里我使用了2个创意工坊mod,将这2个创意工坊modID添加到{主目录}/mods/dedicated_server_mods_setup.lua文件中。格式为ServerModSetup("数字"),这样的话在服务器启动时才会帮你自动下载创意工坊Mod。
9. 启动饥荒服务端
1.关于配置文件
cluster.ini:一般用于修改服务器名称、服务器密码和服务器描述,其他保持默认。
server.ini:服务器内部及外部端口信息,保持默认。
2.编写启动脚本.sh
3.启动游戏服务(screen)
在screen中启动可以保证在后台继续运行。
10.问题整理
1.libcurl-gnutls.so.4未找到 :检查第4步操作。
2.Failed to save file… :可能有部分操作使用了root账号,启动服务器又使用了steam账户,导致账号权限不够。以allworlds目录为例,将拥有者从root转为steam的命令:
3.服务器端无法自动下载mod:可以将(本地电脑)D:\steam\steamapps\common\Don't Starve Together\mods中的名为"workshop-[数字]"的文件夹复制(上传)到服务器中的{主目录}/mods中。[注意:依然使用steam用户上传] 2024-1-9补充 by白鲨同学
四、进入游戏
11.服务器列表搜索进入游戏
12.关于IP直连进入游戏。
进入最外层路由器的管理员后台,找到端口转发。将群晖服务器的udp10010、udp10011两个端口转发到公网ip的udp10010、udp10011两个端口,ip填公网的ip地址。(注:如果连接失败,可以试试把游戏端口换成10999和10998,这里我不确定饥荒是否有默认端口的说法)
公网(10010) <——> 群晖(10010) <——> docker(10010)
公网(10011) <——> 群晖(10011) <——> docker(10011)
众所周知公网ip是动态的,不便于使用,最好弄一个动态域名(DDNS),如花生壳等。有了域名之后再在群晖中设置启用,控制面板 -> 外部访问 -> DDNS -> 填写域名、用户名、密码 -> 启用 (注:DDNS最好设置在路由器上,否则群晖挂了就一起挂了)
五、其他
13.常用控制台命令
原文链接:https://www.bilibili.com/read/cv16885519/