目录

使用群晖 Docker 搭建饥荒联机版服务器

多年后再次打开了steam的这个游戏,发现增加了很多内容~

偶尔玩玩吧,主要没人一起,用服务器搭建就不太合算~

前提条件

  • Linux x86_64并运行Docker(18.05.0-ce或更高版本)。
  • 您可能需要一个公共IP才能使服务器可以从Internet访问。
  • 您需要4个UDP端口公开给公共网络。(UDP 10999(主服务器)11000(洞穴);UDP 1234612347 用于steam连接。这些端口不能改变。)
  • CPU:1核足以用于小型服务器(不要超过30帧)。
  • 内存:我们建议为服务器保留1G内存,每位活跃用户再加上60M。
  • 磁盘大小:Docker映像占用1.5GiB,并且您至少需要另一个5MiB来存储映射,配置和日志。建议使用4GiB可用磁盘空间。

开始搭建

下载镜像

开启Docker–注册表–搜索框输入starve–搜索–双击jamesits/dst-starve–选择latest–选择

https://img.pulnd.com/post/nas-docker-dst/U2ZF1K.png

等待下载完成

启动镜像

在群晖/docker下创建DST文件夹,复制以下内容并保存为 docker-compose.yml(使用UTF-8)文件到DST文件夹里

注意volumes部分需要修改成自己对应的地址

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
version: '3.5'
services:
  dst-server:
     image: jamesits/dst-server:latest
     restart: "on-failure:5"
     ports:
        - "10999-11000:10999-11000/udp"
        - "12346-12347:12346-12347/udp"
     volumes:
        - /volume2/docker/DST:/data/DoNotStarveTogether
     stop_grace_period: 6m

进入群晖的ssh获取root权限

sudo -i

进到docker-compose.yml文件目录下面

cd /volume2/docker/DST

执行

docker-compose up -d

https://img.pulnd.com/post/nas-docker-dst/U2ZpkR.png

https://img.pulnd.com/post/nas-docker-dst/U2Vvm4.png

可以进入群晖Docker容器详情里的终端机查看具体运行情况,/docker/DST/Cluster_1 目录会生成一些文件,确认完成后我们先停止掉饥荒服务器容器

配置服务器

获取KLEI用户ID

电脑打开饥荒游戏,点左下角的账号即可看到KLEI用户ID,复制备用

https://img.pulnd.com/post/nas-docker-dst/U2Vz79.png

https://img.pulnd.com/post/nas-docker-dst/U2Vx0J.png

获取服务器token

上面的页面切换到游戏选项卡点击饥荒联机版游戏服务器,输入一个名称添加服务器,复制生成的服务器token备用

https://img.pulnd.com/post/nas-docker-dst/U2ZCfx.png

https://img.pulnd.com/post/nas-docker-dst/U2Z9t1.png

https://img.pulnd.com/post/nas-docker-dst/U2Zip6.png

编辑配置文件

打开/docker/DST/Cluster_1 目录

将服务器token填入cluster_token.txt,将用户ID填入adminlist.txt(管理员列表)和whitelist.txt(白名单列表),保存文件。

编辑cluster.ini文件,参考如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[NETWORK]
cluster_name = pulnd.com (房间名称)
cluster_description = pulnd.com (房间说明)
cluster_password = pulnd.com (房间密码)
offline_cluster = false
lan_only_cluster = false
whitelist_slots = 1
cluster_intention = social
autosaver_enabled = true
tick_rate = 30

[GAMEPLAY]
game_mode = endless
max_players = 6
pvp = true
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

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10998
cluster_key = MsAhBOXhhnElO5IPKr4G

配置服务器mod

不需要mod的可以跳过这个步骤

进入群晖里的/docker/DST/Cluster_1/mods(饥荒mods文件夹)下,编辑dedicated_server_mods_setup.lua文件,将你需要的mod添加进去,不填的话服务器会直接显示无mod

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
--There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.

--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
	--The Workshop id can be found at the end of the url to the mod's Workshop page.
	--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
	--ServerModSetup("350811795")

--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It will download all the mods in the collection and install them to the mod directory on boot.
	--The Workshop id can be found at the end of the url to the collection's Workshop page.
	--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114180
	--ServerModCollectionSetup("379114180")
ServerModSetup("1185229307")
ServerModSetup("1271089343")
ServerModSetup("2114886212")
ServerModSetup("378160973")
ServerModSetup("458587300")
ServerModSetup("501385076")

打开饥荒游戏,在本地建立一个世界并开启你想要的服务器mod,世界生成后退出,找到本地数据将modoverrides.lua文件分别上传到/volume2/docker/DST/Cluster_1下的MasterCaves文件夹里。

本地数据可以打开游戏点左下角的数据会自动打开文件夹,根据自己参见世界的顺序找到对应文件夹

https://img.pulnd.com/post/nas-docker-dst/U2Zk6O.png

modoverrides.lua文件示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
return {
  ["workshop-1185229307"]={ configuration_options={ distance=20, timeout=10 }, enabled=true },
  ["workshop-1271089343"]={
    configuration_options={ bekkitt_skeleton_pen=0, null_option=true, skeleton_player=true },
    enabled=true 
  },
  ["workshop-2114886212"]={
    configuration_options={ Blue=0, Display="target", Green=0, Projectile=true, Red=1, Type="hit" },
    enabled=true 
  },
  ["workshop-378160973"]={
    configuration_options={
      ENABLEPINGS=true,
      FIREOPTIONS=2,
      OVERRIDEMODE=false,
      SHAREMINIMAPPROGRESS=true,
      SHOWFIREICONS=true,
      SHOWPLAYERICONS=true,
      SHOWPLAYERSOPTIONS=2 
    },
    enabled=true 
  },
  ["workshop-458587300"]={ configuration_options={ Ownership=false, Travel_Cost=32 }, enabled=true },
  ["workshop-501385076"]={ configuration_options={ quick_harvest=true }, enabled=true } 
}

开始运行

打开群晖Docker–容器–选中dst-server–操作–启动

可以进入详情–终端机查看具体运行情况,如果出现问题可以根据反馈内容自行调整

如果一切顺利,那么你进入游戏搜索你创建的房间名就可以找到并加入游戏了!

https://img.pulnd.com/post/nas-docker-dst/U2Z03V.png

参考文章

[1]. 群晖中的小小饥荒世界—利用群晖Docker搭建 Don’t Starve Together 服务器

[2]. 饥荒联机专用服务器搭建教程

[3]. 不要挨饿专用服务器Docker映像