饑荒聯(lián)機(jī)服務(wù)器 docker linux
注:本文為自建饑荒服務(wù)器記錄,不是新手教程
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`為服務(wù)器創(chuàng)建一個(gè)令牌。
``````yaml
TOKEN=pds-g^KU_...
``````
## 4.編輯overworld.env
```yaml
# 服務(wù)器令牌(必需)
TOKEN=pds-g^KU_Qvt-jPIp^0zm3VPpFI996mLYm7S1IV+R6wppas5iNHkusi06C7EQ=
# 設(shè)置服務(wù)器名稱,在公共服務(wù)器列表和游戲中顯示(默認(rèn): RANDOM)
NAME=linworld
# 定義要附加到服務(wù)器名稱前面的文本
#NAME_PREFIX=
# 設(shè)置服務(wù)器描述,在公共服務(wù)器列表和游戲中顯示(默認(rèn): Powered by DST-Academy.)
#DESCRIPTION=Powered by DST-Academy.
# 設(shè)置服務(wù)器的語(yǔ)言
# en: 英語(yǔ)(默認(rèn))
# de: 德語(yǔ)
# it: 意大利語(yǔ)
# fr: 法語(yǔ)
# es: 西班牙語(yǔ)
# pt: 葡萄牙語(yǔ)
# pl: 波蘭語(yǔ)
# ru: 俄語(yǔ)
# ko: 韓語(yǔ)
# zh: 中文
# zhr: 簡(jiǎn)體中文
LANGUAGE=zh
# 定義服務(wù)器密碼,只有知道密碼的玩家才能連接
PASSWORD=123123
# 定義游戲服務(wù)器在 Docker 容器內(nèi)運(yùn)行的端口號(hào)(默認(rèn): 10999)
SERVER_PORT=10999
# 控制服務(wù)器是否在列表中公開(kāi)和可訪問(wèn)
# true: 是
# false: 否(默認(rèn))
OFFLINE_ENABLE=true
# 控制服務(wù)器是否只能從局域網(wǎng)訪問(wèn)
# true: 是
# false: 否(默認(rèn))
LAN_ONLY=false
# 設(shè)置允許同時(shí)連接和游玩的最大玩家數(shù)量
# 該設(shè)置對(duì)服務(wù)器的整體性能和游戲體驗(yàn)有很大影響,請(qǐng)確保硬件具有足夠的能力以為配置的玩家數(shù)量提供流暢的體驗(yàn)
MAX_PLAYERS=10
# 為管理員和/或其他玩家預(yù)留玩家位,并將其添加到可以連接到服務(wù)器的總玩家數(shù)中
# MAX_PLAYERS 和 WHITELIST_SLOTS 的總和確定可以同時(shí)連接到服務(wù)器的玩家數(shù)量
WHITELIST_SLOTS=0
# 要添加到 adminlist.txt 文件中的 Klei 用戶 ID,列表中的玩家將獲得管理員權(quán)限
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
ADMINLIST=KU_Qvt-jPIp
# 要添加到 whitelist.txt 文件中的 Klei 用戶 ID,列表中的玩家將獲得白名單權(quán)限
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
#WHITELIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 要添加到 blocklist.txt 文件中的 Klei 用戶 ID,列表中的玩家將被禁止
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
#BLOCKLIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 啟用/禁用 PVP,確定玩家是否可以相互攻擊
# true: 是
# false: 否(默認(rèn))
PVP_ENABLE=false
# 定義服務(wù)器運(yùn)行的游戲模式
# survival: 生存模式(默認(rèn))
# endless: 無(wú)盡模式
# wilderness: 荒野模式
GAME_MODE=survival
# 配置服務(wù)器的游戲意圖(INTENTION)供玩家選擇,如果沒(méi)有設(shè)置則使用默認(rèn)值(取決于 GAME_MODE)
# social: 社交
# cooperative: 合作
# competitive: 競(jìng)爭(zhēng)
# madness: 瘋狂
INTENTION=social
# 啟用/禁用每個(gè)游戲日后自動(dòng)保存世界狀態(tài)
# true: 是(默認(rèn))
# false: 否
AUTOSAVER_ENABLE=true
# 設(shè)置服務(wù)器的刻度率(tick-rate),更高的刻度率意味著更流暢的游戲體驗(yàn),但也需要更多的帶寬和CPU資源
# 15(默認(rèn))
# 20
# 30
# 60
TICK_RATE=20
# 啟用/禁用服務(wù)器上的投票
# true: 是(默認(rèn))
# false: 否
VOTE_ENABLE=true
# 啟用/禁用通過(guò)投票踢出玩家的功能
# true: 是(默認(rèn))
# false: 否
VOTE_KICK_ENABLE=true
# 啟用/禁用當(dāng)沒(méi)有玩家連接時(shí)暫停世界
# true: 是
# false: 否(默認(rèn))
PAUSE_WHEN_EMPTY=true
# 設(shè)置 Steam 的身份驗(yàn)證端口號(hào),通常不需要更改此值(默認(rèn): 8766)
STEAM_AUTHENTICATION_PORT=8766
# 設(shè)置 Steam 的主服務(wù)器端口號(hào),通常不需要更改此值(默認(rèn): 27016)
STEAM_MASTER_SERVER_PORT=27016
# 將服務(wù)器關(guān)聯(lián)到對(duì)應(yīng)的 Steam 群組
#STEAM_GROUP_ID=
# 啟用/禁用只有 Steam 群組成員才能加入服務(wù)器,非群組成員將無(wú)法加入
# true: 是
# false: 否(默認(rèn))
STEAM_GROUP_ONLY=false
# 啟用/禁用將 Steam 群組官員提升為服務(wù)器管理員
# true: 是
# false: 否(默認(rèn))
#STEAM_GROUP_ADMINS=false
# 禁用/啟用管理員的游戲內(nèi)控制臺(tái)
# true: 是(默認(rèn))
# false: 否
CONSOLE_ENABLE=true
# 啟用/禁用連接多個(gè)服務(wù)器到一個(gè)大世界的分片功能
# true: 是
# false: 否(默認(rèn))
SHARD_ENABLE=true
# 為此服務(wù)器分片設(shè)置一個(gè)唯一名稱
SHARD_NAME=overworld
# 為此服務(wù)器分片設(shè)置一個(gè)唯一標(biāo)識(shí)符
#SHARD_ID=
# 定義此服務(wù)器是否為主服務(wù)器
# true: 是
# false: 否(默認(rèn))
SHARD_IS_MASTER=true
# 定義從屬服務(wù)器連接到的主服務(wù)器的 IP 地址
#SHARD_MASTER_IP=
# 定義主服務(wù)器的端口,此端口號(hào)需要與主服務(wù)器和所有從屬服務(wù)器設(shè)置為相同
SHARD_MASTER_PORT=10888
# 配置允許從中接收分片連接的 IP 地址,通常不需要更改此值以使其與 Docker 正常工作(默認(rèn): 0.0.0.0)
SHARD_BIND_IP=0.0.0.0
# 為驗(yàn)證傳入的分片連接設(shè)置一個(gè)唯一且保密的群集密鑰,該密鑰需要與主服務(wù)器和所有從屬服務(wù)器設(shè)置為相同
SHARD_CLUSTER_KEY=secret
# 設(shè)置 worldgenoverride.lua 文件中的預(yù)定義預(yù)設(shè)
# SURVIVAL_TOGETHER_CLASSIC
# SURVIVAL_TOGETHER(默認(rèn))
# SURVIVAL_DEFAULT_PLUS
# DST_CAVE
# DST_CAVE_PLUS
# COMPLETE_DARKNESS
# MOD_MISSING
WORLD_PRESET=SURVIVAL_TOGETHER
# 設(shè)置世界生成的配置,基本上就是 worldgenoverride.lua 文件的內(nèi)容
# 由于該值可能非常大,建議將配置放入單獨(dú)的文件中,并在之前將其讀入變量中
WORLD_CONFIGURATION=$(cat /home/linqlpnil/leveldataoverride1.lua)
# 定義要安裝和啟用的 mods
# 字符串,以逗號(hào)分隔的創(chuàng)意工坊 ID
MODS=1898292532,2048838506,2119742489,347079953,362175979,375850593,375859599,378160973,501385076,543945797
# 設(shè)置所有 mods 的配置,基本上就是 modsoverrides.lua 文件的內(nèi)容
# 由于該值可能非常大,建議將配置放入單獨(dú)的文件中,并在之前將其讀入變量中
MODS_CONFIGURATION=$(cat /home/linqlpnil/modoverrides.lua)
# 重啟服務(wù)器時(shí)啟用日志備份
# 數(shù)字,指定備份的服務(wù)器日志數(shù)量(默認(rèn): 0)
BACKUP_LOG_COUNT=0
# 啟用路徑編碼以與不區(qū)分大小寫(xiě)的操作系統(tǒng)兼容
# true: 是(默認(rèn))
# false: 否
ENCODE_USER_PATH=true
```
其中生存世界配置,啟用mod,mod配置均可在本地存檔中找到。
## 5.編輯underworld.env
```yaml
# 設(shè)置服務(wù)器的語(yǔ)言
# en: 英語(yǔ)(默認(rèn))
# de: 德語(yǔ)
# it: 意大利語(yǔ)
# fr: 法語(yǔ)
# es: 西班牙語(yǔ)
# pt: 葡萄牙語(yǔ)
# pl: 波蘭語(yǔ)
# ru: 俄語(yǔ)
# ko: 韓語(yǔ)
# zh: 中文
# zhr: 簡(jiǎn)體中文
LANGUAGE=zh
# 設(shè)置允許同時(shí)連接和游玩的最大玩家數(shù)量
# 該設(shè)置對(duì)服務(wù)器的整體性能和游戲體驗(yàn)有很大影響,請(qǐng)確保硬件具有足夠的能力以為配置的玩家數(shù)量提供流暢的體驗(yàn)
MAX_PLAYERS=10
# 為管理員和/或其他玩家預(yù)留玩家位,并將其添加到可以連接到服務(wù)器的總玩家數(shù)中
# MAX_PLAYERS 和 WHITELIST_SLOTS 的總和確定可以同時(shí)連接到服務(wù)器的玩家數(shù)量
WHITELIST_SLOTS=0
# 要添加到 adminlist.txt 文件中的 Klei 用戶 ID,列表中的玩家將獲得管理員權(quán)限
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
ADMINLIST=KU_Qvt-jPIp
# 要添加到 whitelist.txt 文件中的 Klei 用戶 ID,列表中的玩家將獲得白名單權(quán)限
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
#WHITELIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 要添加到 blocklist.txt 文件中的 Klei 用戶 ID,列表中的玩家將被禁止
# 可以通過(guò)在游戲主菜單底部右下角點(diǎn)擊“帳戶”來(lái)找到玩家的 Klei 用戶 ID
#BLOCKLIST=KU_G_cla3ou,KU_yDc5M7bx,KU_ad39dik
# 啟用/禁用 PVP,確定玩家是否可以相互攻擊
# true: 是
# false: 否(默認(rèn))
PVP_ENABLE=false
# 定義服務(wù)器運(yùn)行的游戲模式
# survival: 生存模式(默認(rèn))
# endless: 無(wú)盡模式
# wilderness: 荒野模式
GAME_MODE=survival
# 配置服務(wù)器的游戲意圖(INTENTION)供玩家選擇,如果沒(méi)有設(shè)置則使用默認(rèn)值(取決于 GAME_MODE)
# social: 社交
# cooperative: 合作
# competitive: 競(jìng)爭(zhēng)
# madness: 瘋狂
INTENTION=social
# 啟用/禁用每個(gè)游戲日后自動(dòng)保存世界狀態(tài)
# true: 是(默認(rèn))
# false: 否
AUTOSAVER_ENABLE=true
# 設(shè)置服務(wù)器的刻度率(tick-rate),更高的刻度率意味著更流暢的游戲體驗(yàn),但也需要更多的帶寬和CPU資源
# 15(默認(rèn))
# 20
# 30
# 60
TICK_RATE=20
# 啟用/禁用服務(wù)器上的投票
# true: 是(默認(rèn))
# false: 否
VOTE_ENABLE=true
# 啟用/禁用通過(guò)投票踢出玩家的功能
# true: 是(默認(rèn))
# false: 否
VOTE_KICK_ENABLE=true
# 啟用/禁用當(dāng)沒(méi)有玩家連接時(shí)暫停世界
# true: 是
# false: 否(默認(rèn))
PAUSE_WHEN_EMPTY=true
# 設(shè)置 Steam 的身份驗(yàn)證端口號(hào),通常不需要更改此值(默認(rèn): 8766)
STEAM_AUTHENTICATION_PORT=8766
# 設(shè)置 Steam 的主服務(wù)器端口號(hào),通常不需要更改此值(默認(rèn): 27016)
STEAM_MASTER_SERVER_PORT=27016
# 將服務(wù)器關(guān)聯(lián)到對(duì)應(yīng)的 Steam 群組
#STEAM_GROUP_ID=
# 啟用/禁用只有 Steam 群組成員才能加入服務(wù)器,非群組成員將無(wú)法加入
# true: 是
# false: 否(默認(rèn))
STEAM_GROUP_ONLY=false
# 啟用/禁用將 Steam 群組官員提升為服務(wù)器管理員
# true: 是
# false: 否(默認(rèn))
#STEAM_GROUP_ADMINS=false
# 禁用/啟用管理員的游戲內(nèi)控制臺(tái)
# true: 是(默認(rèn))
# false: 否
CONSOLE_ENABLE=true
# 啟用/禁用連接多個(gè)服務(wù)器到一個(gè)大世界的分片功能
# true: 是
# false: 否(默認(rèn))
SHARD_ENABLE=true
# 為此服務(wù)器分片設(shè)置一個(gè)唯一名稱
SHARD_NAME=underworld
# 為此服務(wù)器分片設(shè)置一個(gè)唯一標(biāo)識(shí)符
#SHARD_ID=
# 定義此服務(wù)器是否為主服務(wù)器
# true: 是
# false: 否(默認(rèn))
SHARD_IS_MASTER=false
# 定義從屬服務(wù)器連接到的主服務(wù)器的 IP 地址
SHARD_MASTER_IP=overworld
# 定義主服務(wù)器的端口,此端口號(hào)需要與主服務(wù)器和所有從屬服務(wù)器設(shè)置為相同
SHARD_MASTER_PORT=10888
# 配置允許從中接收分片連接的 IP 地址,通常不需要更改此值以使其與 Docker 正常工作(默認(rèn): 0.0.0.0)
SHARD_BIND_IP=0.0.0.0
# 為驗(yàn)證傳入的分片連接設(shè)置一個(gè)唯一且保密的群集密鑰,該密鑰需要與主服務(wù)器和所有從屬服務(wù)器設(shè)置為相同
SHARD_CLUSTER_KEY=secret
# 設(shè)置 worldgenoverride.lua 文件中的預(yù)定義預(yù)設(shè)
# SURVIVAL_TOGETHER_CLASSIC
# SURVIVAL_TOGETHER(默認(rèn))
# SURVIVAL_DEFAULT_PLUS
# DST_CAVE
# DST_CAVE_PLUS
# COMPLETE_DARKNESS
# MOD_MISSING
WORLD_PRESET=DST_CAVE
# 設(shè)置世界生成的配置,基本上就是 worldgenoverride.lua 文件的內(nèi)容
# 由于該值可能非常大,建議將配置放入單獨(dú)的文件中,并在之前將其讀入變量中
WORLD_CONFIGURATION=$(cat /home/linqlpnil/leveldataoverride2.lua)
# 定義要安裝和啟用的 mods
# 字符串,以逗號(hào)分隔的創(chuàng)意工坊 ID
MODS=1898292532,2048838506,2119742489,347079953,362175979,375850593,375859599,378160973,501385076,543945797
# 設(shè)置所有 mods 的配置,基本上就是 modsoverrides.lua 文件的內(nèi)容
# 由于該值可能非常大,建議將配置放入單獨(dú)的文件中,并在之前將其讀入變量中
MODS_CONFIGURATION=$(cat /home/linqlpnil/modoverrides.lua)
# 重啟服務(wù)器時(shí)啟用日志備份
# 數(shù)字,指定備份的服務(wù)器日志數(shù)量(默認(rèn): 0)
BACKUP_LOG_COUNT=0
# 啟用路徑編碼以與不區(qū)分大小寫(xiě)的操作系統(tǒng)兼容
# true: 是(默認(rèn))
# false: 否
ENCODE_USER_PATH=true
# 定義游戲服務(wù)器在 Docker 容器內(nèi)運(yùn)行的端口號(hào)
SERVER_PORT=11000
```
同overworld.env
## 6.運(yùn)行docker-compose
這樣我在dst文件夾下就有7個(gè)配置文件
docker-compose.yml? leveldataoverride1.lua? leveldataoverride2.lua? local.env? modoverrides.lua? overworld.env? underworld.env