饥荒专服搭建
通过 docker 镜像搭建饥荒专服
参考文章,感谢大佬们的倾情分享:
- DockerHub 饥荒专服镜像
- 用 Docker 搭建饥荒服务器
- 2021年手把手教你搭建饥荒服务器 这是个系列文章,写的很细,大家可以仔细看看
我的配置:
- 阿里云 ECS Centos 7.5 ,2核4G,20G云盘,自动分配公网,5M带宽峰值
- 服务器开放端口 10999-11000,12346-12347
- steam 饥荒联机版
有一说一我这个配置俩人玩有点奢侈了,你在搭建的时候按照自己的需求来即可,关于我服务器的花费后面会详细谈到的。而且下面的配置都是以 root 用户的身份,所以命令都是不加 sudo
的,因为我的服务器每次用完就销毁了,所以应该也没啥安全问题。
我后面找到了新的方式部署,不过需要一点基础才能看懂,建议你看完这篇之后可以去看看我的这篇 饥荒专服部署维护
安装docker
docker 安装这里我想尽量的快,因为我这个只是用来做游戏专服不是我的主用服务器,这一套命令下去 docker 安装一般就 OK 了。
# 安装 docker 的公钥
rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
# 一键安装脚本
curl -sSL https://get.daocloud.io/docker | sh
# 查看是否安装成功
docker version
# 启动 docker
systemctl start docker
获取 steam 账户token
网上教程很多,先略过
拉取饥荒镜像
设置阿里云镜像加速器,如果没开加速可能会比较煎熬,这个镜像有一说一还蛮大的,起码明显的有个 1.6G 的包,开了加速之后速度嗷嗷快,差不多三分左右就可以下载完毕。配置加速需要一个 ID ,所以这个页面需要登录之后查看,每个人的加速地址(ID)都是不一样的应该。
镜像拉取及配置工作, ${HOME}
指的是当前用户的用户目录,比如一般我登录用的都是 root ,这里就是 /root/dst
,安装了一个 docker-compose 用来方便命令的配置,不然每次输入一堆命令也很麻烦不是吗
docker pull jamesits/dst-server
yum install -y docker-compose
mkdir /${HOME}/dst
cd /${HOME}/dst
vim docker-compose.yml
新建一个配置文件 docker-compose.yml
,写入以下内容并保存(注释可以不加,加了可能复制的时候格式会乱)。记得开放你的服务器的端口,阿里云的话是要配置安全组 UDP协议 的 10999-11000 和 12346-12347 。
version: '3.5'
services:
dst-server:
# 环境变量
environment:
- DST_CLUSTER_TOKEN=你的账户token
# 镜像名字信息
image: jamesits/dst-server:latest
restart: "on-failure:5"
# 端口映射
ports:
- "10999-11000:10999-11000/udp"
- "12346-12347:12346-12347/udp"
# 数据卷挂载
volumes:
- ${HOME}/.klei/dst:/data
stop_grace_period: 6m
在 当前目录下执行 docker-compose up
,等待执行完毕后看到输出如下(输出差不多):
dst-server_1 | [00:09:25]: Sim paused
dst-server_1 | [00:09:25]: Sim paused
dst-server_1 | [00:09:31]: Registering master server in Sing lobby
dst-server_1 | [00:10:28]: Registering secondary shard in Sing lobby
Control + c
退出容器编辑配置文件
配置服务器
配置房间信息、森林世界、洞穴世界以及需要的 mods 。
cd ~
cd .klei/dst/DoNotStarveTogether/Cluster_1
vim cluster.ini
简单配置下,这里基本是关于游戏模式和服务器的设置。你也可以在本地新建一个房间,然后把配置文件拿过来替换掉服务器上的配置。 https://wuter.cn/342.html/ 这里具体配置的作用可以看这个大佬的文章,附录里非常详细的,完全可以满足配置需要了我觉得
; Here is all the server configs you will ever want to change
[NETWORK]
; DO change the name and description please!
cluster_name = A Room
cluster_description = This is a room.
cluster_password = 123455
offline_cluster = false
lan_only_cluster = false
whitelist_slots = 1
cluster_intention = social
autosaver_enabled = true
;tick_rate = 30
[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty = true
vote_kick_enabled = false
[STEAM]
steam_group_only = false
steam_group_id = 0
steam_group_admins = false
[MISC]
console_enabled = true
max_snapshots = 6
; ====================================================================
; STOP! Don't change configs below unless you know what you are doing.
; ====================================================================
[SHARD]
; 是否允许地上与洞穴互通,开洞穴的话必须为 true
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10998
cluster_key = MsAhBOXhhnEl16IPKr1G
已有存档转服务器
本地存档和线上存档都是以 Cluster_
开头的文件夹,后面跟一个数字,这一个文件夹就是这个世界所有的信息了,下文我们使用 Cluster_1
来举例,方便些。我看服务器上和本地的有点区别,就是文件夹内多了个 mods 的文件夹,这个也比较好理解就是世界单独配置模组,不使用公共的,我们在文件替换的时候注意下就好了说下我自己的尝试之后最后总结的方法吧,首先通过前面的操作我们在服务器上开放了4个端口,然后我们在服务器上查看已有的存档设置,可以看到这些端口。PS:不同的安装途径对端口的需求也不一定一样,按照本文的镜像的话是需要这些端口。
; cluster.ini 根目录下的配置节选
[SHARD]
master_port = 10998
; Master/server.ini 主世界下的配置节选
[SHARD]
is_master = true
[NETWORK]
server_port = 10999
[STEAM]
master_server_port = 12346
authentication_port = 8766
; Caves/server.ini 洞穴世界下的配置节选
[SHARD]
is_master = false
name = Caves
id = 3781942903
[NETWORK]
server_port = 11000
[STEAM]
master_server_port = 12347
authentication_port = 8767
因为你本地的存档的端口号的使用八成和你服务器上的不一致,所以这些文件我们还是保留服务器上的,将其他文件上传替换即可。将 Master 和 Caves 中除 server.ini
文件替换为已有存档,如果自己有 leveldataoverride.lua
(自定义世界配置) ,记得把 worldgenoverride.lua
(默认世界配置)删掉,因为后者比前者优先级高。
如果不保留这些文件的话,还要去修改安全组,同理,如果你想要跑多个服务,需要多配几个 docker-compose.yml
把它们的端口区分开,注意容器内的端口可以都使用 10999
这些,只改映射出来的端口应该还容易些。
根据 Master 和 Caves 文件夹下面的 modoverrides.lua
文件,打开可以看到里面有一些 mod id,去 Cluster_1/mods/dedicated_server_mods_setup.lua
文件中使用要求的语法将之挨个引入即可
-- 类似这样
ServerModSetup("350811795")
ServerModSetup("350811xxx")
ServerModSetup("350811xxx")
结语
因为大家网上部署饥荒的服务器的方法可能都有差别,但是一些核心的东西是不变的,比如说要开放端口,比如说存档的迁移,至于是自己手动安装还是脚本安装亦或是 docker 安装专服我理解都是属于基础,看个人爱好选择就好了。我这里用 docker 一方面是练习下 docker ,另一方面已经做好的镜像一般不会出现依赖缺失这样的问题会方便一些。