饥荒联机服务器 docker linux
注:本文为自建饥荒服务器记录,不是新手教程
dockerhub地址:https://hub.docker.com/r/yeetzone/dontstarvetogether
## 1.安装docker
## 2.编辑docker-compose.yml
``````yaml
version: "3.9"
services:
overworld:
image: yeetzone/dontstarvetogether
container_name: overworld
hostname: overworld
depends_on:
- data
env_file:
- overworld.env
- local.env
ports:
- "10999:10999/udp"
volumes:
- type: volume
source: data
target: /data
underworld:
image: yeetzone/dontstarvetogether
container_name: underworld
hostname: underworld
depends_on:
- data
env_file:
- underworld.env
- local.env
ports:
- "11000:11000/udp"
volumes:
- type: volume
source: data
target: /data
data:
image: yeetzone/dontstarvetogether-data
volumes:
- type: volume
source: data
target: /data
volumes:
data:
``````
## 3.编辑local.env
`local.env`为服务器创建一个令牌。
``````yaml
TOKEN=pds-g^KU_...
``````
## 4.编辑overworld.env
```yaml
# 服务器令牌(必需)
TOKEN=pds-g^KU_Qvt-jPIp^0zm3VPpFI996mLYm7S1IV+R6wppas5iNHkusi06C7EQ=
# 设置服务器名称,在公共服务器列表和游戏中显示(默认: RANDOM)
NAME=linworld
# 定义要附加到服务器名称前面的文本
#NAME_PREFIX=
# 设置服务器描述,在公共服务器列表和游戏中显示(默认: Powered by DST-Academy.)
#DESCRIPTION=Powered by DST-Academy.
# 设置服务器的语言
# en: 英语(默认)
# de: 德语
# it: 意大利语
# fr: 法语
# es: 西班牙语
# pt: 葡萄牙语
# pl: 波兰语
# ru: 俄语
# ko: 韩语
# zh: 中文
# zhr: 简体中文
LANGUAGE=zh
# 定义服务器密码,只有知道密码的玩家才能连接
PASSWORD=123123
# 定义游戏服务器在 Docker 容器内运行的端口号(默认: 10999)
SERVER_PORT=10999
# 控制服务器是否在列表中公开和可访问
# true: 是
# false: 否(默认)
OFFLINE_ENABLE=true
# 控制服务器是否只能从局域网访问
# true: 是
# false: 否(默认)
LAN_ONLY=false
# 设置允许同时连接和游玩的最大玩家数量
# 该设置对服务器的整体性能和游戏体验有很大影响,请确保硬件具有足够的能力以为配置的玩家数量提供流畅的体验
MAX_PLAYERS=10
# 为管理员和/或其他玩家预留玩家位,并将其添加到可以连接到服务器的总玩家数中
# MAX_PLAYERS 和 WHITELIST_SLOTS 的总和确定可以同时连接到服务器的玩家数量
WHITELIST_SLOTS=0
# 要添加到 adminlist.txt 文件中的 Klei 用户 ID,列表中的玩家将获得管理员权限
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
ADMINLIST=KU_Qvt-jPIp
# 要添加到 whitelist.txt 文件中的 Klei 用户 ID,列表中的玩家将获得白名单权限
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
#WHITELIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 要添加到 blocklist.txt 文件中的 Klei 用户 ID,列表中的玩家将被禁止
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
#BLOCKLIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 启用/禁用 PVP,确定玩家是否可以相互攻击
# true: 是
# false: 否(默认)
PVP_ENABLE=false
# 定义服务器运行的游戏模式
# survival: 生存模式(默认)
# endless: 无尽模式
# wilderness: 荒野模式
GAME_MODE=survival
# 配置服务器的游戏意图(INTENTION)供玩家选择,如果没有设置则使用默认值(取决于 GAME_MODE)
# social: 社交
# cooperative: 合作
# competitive: 竞争
# madness: 疯狂
INTENTION=social
# 启用/禁用每个游戏日后自动保存世界状态
# true: 是(默认)
# false: 否
AUTOSAVER_ENABLE=true
# 设置服务器的刻度率(tick-rate),更高的刻度率意味着更流畅的游戏体验,但也需要更多的带宽和CPU资源
# 15(默认)
# 20
# 30
# 60
TICK_RATE=20
# 启用/禁用服务器上的投票
# true: 是(默认)
# false: 否
VOTE_ENABLE=true
# 启用/禁用通过投票踢出玩家的功能
# true: 是(默认)
# false: 否
VOTE_KICK_ENABLE=true
# 启用/禁用当没有玩家连接时暂停世界
# true: 是
# false: 否(默认)
PAUSE_WHEN_EMPTY=true
# 设置 Steam 的身份验证端口号,通常不需要更改此值(默认: 8766)
STEAM_AUTHENTICATION_PORT=8766
# 设置 Steam 的主服务器端口号,通常不需要更改此值(默认: 27016)
STEAM_MASTER_SERVER_PORT=27016
# 将服务器关联到对应的 Steam 群组
#STEAM_GROUP_ID=
# 启用/禁用只有 Steam 群组成员才能加入服务器,非群组成员将无法加入
# true: 是
# false: 否(默认)
STEAM_GROUP_ONLY=false
# 启用/禁用将 Steam 群组官员提升为服务器管理员
# true: 是
# false: 否(默认)
#STEAM_GROUP_ADMINS=false
# 禁用/启用管理员的游戏内控制台
# true: 是(默认)
# false: 否
CONSOLE_ENABLE=true
# 启用/禁用连接多个服务器到一个大世界的分片功能
# true: 是
# false: 否(默认)
SHARD_ENABLE=true
# 为此服务器分片设置一个唯一名称
SHARD_NAME=overworld
# 为此服务器分片设置一个唯一标识符
#SHARD_ID=
# 定义此服务器是否为主服务器
# true: 是
# false: 否(默认)
SHARD_IS_MASTER=true
# 定义从属服务器连接到的主服务器的 IP 地址
#SHARD_MASTER_IP=
# 定义主服务器的端口,此端口号需要与主服务器和所有从属服务器设置为相同
SHARD_MASTER_PORT=10888
# 配置允许从中接收分片连接的 IP 地址,通常不需要更改此值以使其与 Docker 正常工作(默认: 0.0.0.0)
SHARD_BIND_IP=0.0.0.0
# 为验证传入的分片连接设置一个唯一且保密的群集密钥,该密钥需要与主服务器和所有从属服务器设置为相同
SHARD_CLUSTER_KEY=secret
# 设置 worldgenoverride.lua 文件中的预定义预设
# SURVIVAL_TOGETHER_CLASSIC
# SURVIVAL_TOGETHER(默认)
# SURVIVAL_DEFAULT_PLUS
# DST_CAVE
# DST_CAVE_PLUS
# COMPLETE_DARKNESS
# MOD_MISSING
WORLD_PRESET=SURVIVAL_TOGETHER
# 设置世界生成的配置,基本上就是 worldgenoverride.lua 文件的内容
# 由于该值可能非常大,建议将配置放入单独的文件中,并在之前将其读入变量中
WORLD_CONFIGURATION=$(cat /home/linqlpnil/leveldataoverride1.lua)
# 定义要安装和启用的 mods
# 字符串,以逗号分隔的创意工坊 ID
MODS=1898292532,2048838506,2119742489,347079953,362175979,375850593,375859599,378160973,501385076,543945797
# 设置所有 mods 的配置,基本上就是 modsoverrides.lua 文件的内容
# 由于该值可能非常大,建议将配置放入单独的文件中,并在之前将其读入变量中
MODS_CONFIGURATION=$(cat /home/linqlpnil/modoverrides.lua)
# 重启服务器时启用日志备份
# 数字,指定备份的服务器日志数量(默认: 0)
BACKUP_LOG_COUNT=0
# 启用路径编码以与不区分大小写的操作系统兼容
# true: 是(默认)
# false: 否
ENCODE_USER_PATH=true
```
其中生存世界配置,启用mod,mod配置均可在本地存档中找到。
## 5.编辑underworld.env
```yaml
# 设置服务器的语言
# en: 英语(默认)
# de: 德语
# it: 意大利语
# fr: 法语
# es: 西班牙语
# pt: 葡萄牙语
# pl: 波兰语
# ru: 俄语
# ko: 韩语
# zh: 中文
# zhr: 简体中文
LANGUAGE=zh
# 设置允许同时连接和游玩的最大玩家数量
# 该设置对服务器的整体性能和游戏体验有很大影响,请确保硬件具有足够的能力以为配置的玩家数量提供流畅的体验
MAX_PLAYERS=10
# 为管理员和/或其他玩家预留玩家位,并将其添加到可以连接到服务器的总玩家数中
# MAX_PLAYERS 和 WHITELIST_SLOTS 的总和确定可以同时连接到服务器的玩家数量
WHITELIST_SLOTS=0
# 要添加到 adminlist.txt 文件中的 Klei 用户 ID,列表中的玩家将获得管理员权限
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
ADMINLIST=KU_Qvt-jPIp
# 要添加到 whitelist.txt 文件中的 Klei 用户 ID,列表中的玩家将获得白名单权限
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
#WHITELIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 要添加到 blocklist.txt 文件中的 Klei 用户 ID,列表中的玩家将被禁止
# 可以通过在游戏主菜单底部右下角点击“帐户”来找到玩家的 Klei 用户 ID
#BLOCKLIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 启用/禁用 PVP,确定玩家是否可以相互攻击
# true: 是
# false: 否(默认)
PVP_ENABLE=false
# 定义服务器运行的游戏模式
# survival: 生存模式(默认)
# endless: 无尽模式
# wilderness: 荒野模式
GAME_MODE=survival
# 配置服务器的游戏意图(INTENTION)供玩家选择,如果没有设置则使用默认值(取决于 GAME_MODE)
# social: 社交
# cooperative: 合作
# competitive: 竞争
# madness: 疯狂
INTENTION=social
# 启用/禁用每个游戏日后自动保存世界状态
# true: 是(默认)
# false: 否
AUTOSAVER_ENABLE=true
# 设置服务器的刻度率(tick-rate),更高的刻度率意味着更流畅的游戏体验,但也需要更多的带宽和CPU资源
# 15(默认)
# 20
# 30
# 60
TICK_RATE=20
# 启用/禁用服务器上的投票
# true: 是(默认)
# false: 否
VOTE_ENABLE=true
# 启用/禁用通过投票踢出玩家的功能
# true: 是(默认)
# false: 否
VOTE_KICK_ENABLE=true
# 启用/禁用当没有玩家连接时暂停世界
# true: 是
# false: 否(默认)
PAUSE_WHEN_EMPTY=true
# 设置 Steam 的身份验证端口号,通常不需要更改此值(默认: 8766)
STEAM_AUTHENTICATION_PORT=8766
# 设置 Steam 的主服务器端口号,通常不需要更改此值(默认: 27016)
STEAM_MASTER_SERVER_PORT=27016
# 将服务器关联到对应的 Steam 群组
#STEAM_GROUP_ID=
# 启用/禁用只有 Steam 群组成员才能加入服务器,非群组成员将无法加入
# true: 是
# false: 否(默认)
STEAM_GROUP_ONLY=false
# 启用/禁用将 Steam 群组官员提升为服务器管理员
# true: 是
# false: 否(默认)
#STEAM_GROUP_ADMINS=false
# 禁用/启用管理员的游戏内控制台
# true: 是(默认)
# false: 否
CONSOLE_ENABLE=true
# 启用/禁用连接多个服务器到一个大世界的分片功能
# true: 是
# false: 否(默认)
SHARD_ENABLE=true
# 为此服务器分片设置一个唯一名称
SHARD_NAME=underworld
# 为此服务器分片设置一个唯一标识符
#SHARD_ID=
# 定义此服务器是否为主服务器
# true: 是
# false: 否(默认)
SHARD_IS_MASTER=false
# 定义从属服务器连接到的主服务器的 IP 地址
SHARD_MASTER_IP=overworld
# 定义主服务器的端口,此端口号需要与主服务器和所有从属服务器设置为相同
SHARD_MASTER_PORT=10888
# 配置允许从中接收分片连接的 IP 地址,通常不需要更改此值以使其与 Docker 正常工作(默认: 0.0.0.0)
SHARD_BIND_IP=0.0.0.0
# 为验证传入的分片连接设置一个唯一且保密的群集密钥,该密钥需要与主服务器和所有从属服务器设置为相同
SHARD_CLUSTER_KEY=secret
# 设置 worldgenoverride.lua 文件中的预定义预设
# SURVIVAL_TOGETHER_CLASSIC
# SURVIVAL_TOGETHER(默认)
# SURVIVAL_DEFAULT_PLUS
# DST_CAVE
# DST_CAVE_PLUS
# COMPLETE_DARKNESS
# MOD_MISSING
WORLD_PRESET=DST_CAVE
# 设置世界生成的配置,基本上就是 worldgenoverride.lua 文件的内容
# 由于该值可能非常大,建议将配置放入单独的文件中,并在之前将其读入变量中
WORLD_CONFIGURATION=$(cat /home/linqlpnil/leveldataoverride2.lua)
# 定义要安装和启用的 mods
# 字符串,以逗号分隔的创意工坊 ID
MODS=1898292532,2048838506,2119742489,347079953,362175979,375850593,375859599,378160973,501385076,543945797
# 设置所有 mods 的配置,基本上就是 modsoverrides.lua 文件的内容
# 由于该值可能非常大,建议将配置放入单独的文件中,并在之前将其读入变量中
MODS_CONFIGURATION=$(cat /home/linqlpnil/modoverrides.lua)
# 重启服务器时启用日志备份
# 数字,指定备份的服务器日志数量(默认: 0)
BACKUP_LOG_COUNT=0
# 启用路径编码以与不区分大小写的操作系统兼容
# true: 是(默认)
# false: 否
ENCODE_USER_PATH=true
# 定义游戏服务器在 Docker 容器内运行的端口号
SERVER_PORT=11000
```
同overworld.env
## 6.运行docker-compose
这样我在dst文件夹下就有7个配置文件
docker-compose.yml leveldataoverride1.lua leveldataoverride2.lua local.env modoverrides.lua overworld.env underworld.env