- 作者:
- 分类:其它->游戏
- 阅读:2556
- 点赞:9
- 版权:CC BY-SA 4.0
- 创建:2021-09-05
- 更新:2021-09-07
原文链接(持续更新):https://neucrack.com/p/379
有两种方法:
- 按照官方教程安装软件,配置,然后运行
- 使用 docker, 没有复杂的安装过程,只需要安装 docker 配置即可,更简单,而且建多个房间配置更方便, 推荐使用
这里两种方法都介绍, 可以先把两种方法都阅读一遍,理解了过程和原理,再用 docker 进行部署,会避免踩坑
方法一: 使用 docker
安装 docker
推荐看官网安装文档, 最不容易踩坑
装好后docker --version
就可以使用了
然后到这里获取源码, 也有使用文档 , 看这个文档配合源码使用 即可。
以下是使用文档,从这里复制过来的文档, 如有更新, 以这里为准
获得 docker 镜像
可以从 Dockerfile
构建
docker build -t dst_server .
也可以直接从 dockerhub 拉取:
docker pull neucrack/dst_server
申请 key
klei 官网 申请一个 key, 设置好房间, 点击下载, 会获得一个压缩文件, 解压后得到MyDediServer
文件夹:
MyDediServer
├── Caves
│ └── server.ini
├── Master
│ └── server.ini
├── cluster.ini
├── cluster_token.txt
添加 mod
在这个文件夹的基础上添加了几个文件, 最后得到:
MyDediServer
├── Caves
│ ├── save
│ ├── server.ini
│ ├── worldgenoverride.lua
│ └── modoverrides.lua
├── Master
│ ├── save
│ ├── server.ini
│ ├── worldgenoverride.lua
│ └── modoverrides.lua
├── cluster.ini
├── cluster_token.txt
├── dedicated_server_mods_setup.lua
└── modsettings.lua
这里主要两个文件:
dedicated_server_mods_setup.lua
: 下载哪些插件modoverrides.lua
: 房间启用哪些插件
有一个比较好用的方法就是在工坊订阅 mod, 然后在游戏里新建房间, 勾选 mod 并配置, 生成游戏房间, 然后从游戏的配置文件复制过来:
- 在
C:/User/用户名/.klei/DoNotStarveTogether/账户id/房间号
文件夹下找到modoverrides.lua
配置 - steam 游戏右键属性,打开文件路径, 找到
mods
文件夹中的dedicated_server_mods_setup.lua
另外还有modsettings.lua
和 worldgenoverride.lua
分别是设置mod
(比如强制启用mod
),和设置地图和资源等的参数
保存进度
运行后在 Master
和 Caves
下有save
和backup
文件夹, 复制保存下次覆盖save
文件夹即可
创建服务器 docker 容器
获取需要开放的端口(在这三个 ini 配置文件中), 可以利用这里的get_ports.py
脚本获取
ports=`python3 get_ports.py ./MyDediServer`
echo $ports
服务器保证这些端口开放,关闭防火墙或者设置这些端口为白名单, 可以把 TCP 和 UDP 都打开
比如用了
ufw
, 则ufw allow 端口号
iptable:
iptables -A INPUT -p udp —dport 端口号 -j ACCEPT
iptables -A OUTPUT -p udp —sport 端口号 -j ACCEPT
替换下面命令的端口号映射并执行
cd MyDediServer
docker run --name dst_server_1 -v `pwd`:/root/.klei/DoNotStarveTogether/room -p 10889:10889 -p 11000:11000 -p 11001:11001 dst_server
如果是从docker pull neucrack/dst_server
获取的则需要替换最后的dst_server
为neucrack/dst_server
run 命令会自动启动服务器, 可以看 log 是否成功, 也可以在游戏大厅搜索设置的名字, 成功后 ctrl+c
退出
启动容器(服务器)
docker start dst_server_1
停止
docker stop dst_server_1
查看启动日志
docker logs dst_server_1
开机自启
docker update --restart=always dst_server_1
systemctl enable docker
方法二:手动安装
安装
官方指导: https://forums.kleientertainment.com/forums/topic/64441-dedicated-server-quick-setup-guide-linux/
打 mod
需要两个文件, 一个 dedicated_server_mods_setup.lua
, 设置了需要哪些mod
, 里面的编号来自工坊作品id, 也可以先电脑装好, 然后复制文件, 比如E:\Game\SteamLibrary\steamapps\common\Don't Starve Together\mods
ServerModSetup("2519917081") -- 羊
ServerModSetup("2589174774") -- 芮塔
ServerModSetup("2533421726") -- saber
ServerModSetup("2414471353") -- 奥米茄
ServerModSetup("501385076") -- 快速割草
ServerModSetup("363112314") -- 地图持久化
ServerModSetup("462434129") -- 复活
ServerModSetup("1571581787") -- 背包99999
ServerModSetup("378160973") -- 全局队友
ServerModSetup("2589712698") --额外装备
ServerModSetup("2536607878") --显示生命
ServerModCollectionSetup("2519917081") -- 羊
ServerModCollectionSetup("2589174774") -- 芮塔
ServerModCollectionSetup("2533421726") -- saber
ServerModCollectionSetup("2414471353") -- 奥米茄
ServerModCollectionSetup("501385076") -- 快速割草
ServerModCollectionSetup("363112314") -- 地图持久化
ServerModCollectionSetup("462434129") -- 复活
ServerModCollectionSetup("1571581787") -- 背包99999
ServerModCollectionSetup("378160973") -- 全局队友
ServerModCollectionSetup("2589712698") --额外装备
ServerModCollectionSetup("2536607878") --显示生命
然后存档配置modoverrides.lua
, 这个需要复制到存档文件夹的Master
文件夹下:
可以先自己电脑建一遍带有mod的房间,然后拷贝我的文档/klei/DoNotStarveTogether/账号/cluster*
下面的,cluster几就代表了第几个存档
return {
["workshop-1571581787"]={
configuration_options={
ANIMALSTACK=true,
EGGSTACK=true,
MAXSTACKSIZE=99,
TOOLSTACK=false,
TRAPSTACK=true
},
enabled=true
},
["workshop-1813311384"]={
configuration_options={ DAY_RAIN=true, DELAY_RAIN=5, HEALTH_RAIN=1, WET_RAIN=false },
enabled=true
},
["workshop-2414471353"]={ configuration_options={ gamemode="YES", wuqimode="NO" }, enabled=true },
["workshop-2519917081"]={
configuration_options={
[""]=0,
["Auto Respawn"]=0,
["Basic Stats"]=0,
["Language/言語"]=0,
Others=0,
["Watame Katana"]=0,
["Watame Shogun Helm"]=0,
enable_watame_auto_respawn=true,
enable_watame_katana_crit_shogun_set=true,
watame_auto_respawn_delay=8,
watame_auto_respawn_frequency=2,
watame_clothes=false,
watame_dmg=0.8,
watame_health=125,
watame_hunger=200,
watame_hunger_rate=1,
watame_katana_atk_damage=34,
watame_katana_crit_chance1=20,
watame_katana_crit_multi1=2.5,
watame_katana_usage=150,
watame_language="AUTO",
watame_sanity=150,
watame_shogun_absoption=0.6,
watame_shogun_atk_buff=1.15,
watame_shogun_cold_insulation=60,
watame_shogun_durability=840,
watame_speed=1,
watame_starting=2,
watame_voice="willow"
},
enabled=true
},
["workshop-2533421726"]={ configuration_options={ saber_cn=true, saber_weapon=999999 }, enabled=true },
["workshop-2536607878"]={
configuration_options={
divider=5,
random_health_value=0,
random_range=0,
send_unknwon_prefabs=false,
show_type=0,
unknwon_prefabs=1,
use_blacklist=true
},
enabled=true
},
["workshop-2584216489"]={ configuration_options={ }, enabled=true },
["workshop-2589174774"]={ configuration_options={ }, enabled=true },
["workshop-2589712698"]={
configuration_options={
amulet_slot=true,
backpack_slot=true,
chesspiece_fix=true,
compass_slot=true,
drop_hand_item_when_heavy=true,
enable_ui=0,
render_strategy="neck",
show_compass=false,
slots_num=0,
snurtle_remove_armor=true
},
enabled=true
},
["workshop-363112314"]={ configuration_options={ }, enabled=true },
["workshop-378160973"]={
configuration_options={
ENABLEPINGS=true,
FIREOPTIONS=2,
OVERRIDEMODE=false,
SHAREMINIMAPPROGRESS=true,
SHOWFIREICONS=true,
SHOWPLAYERICONS=true,
SHOWPLAYERSOPTIONS=2
},
enabled=true
},
["workshop-462434129"]={
configuration_options={
MOD_RESTART_ALLOW_KILL=true,
MOD_RESTART_ALLOW_RESTART=true,
MOD_RESTART_ALLOW_RESURRECT=true,
MOD_RESTART_CD_BONUS=0,
MOD_RESTART_CD_KILL=3,
MOD_RESTART_CD_MAX=0,
MOD_RESTART_CD_RESTART=5,
MOD_RESTART_CD_RESURRECT=7,
MOD_RESTART_FORCE_DROP_MODE=0,
MOD_RESTART_IGNORING_ADMIN=true,
MOD_RESTART_MAP_SAVE=2,
MOD_RESTART_RESURRECT_HEALTH=0,
MOD_RESTART_TRIGGER_MODE=1,
MOD_RESTART_WELCOME_TIPS=true,
MOD_RESTART_WELCOME_TIPS_TIME=6
},
enabled=true
},
["workshop-501385076"]={
configuration_options={
quick_cook_on_fire=true,
quick_harvest=true,
quick_pick_cactus=true,
quick_pick_plant_normal_ground=true
},
enabled=true
}
}
然后遇到了个bug, 检查游戏更新时会把dedicated_server_mods_setup.lua
文件删掉。。。。。。
所以改下启动文件,在检查更新后手动复制一下文件到mods
目录
./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit
cp $HOME/dedicated_server_mods_setup.lua $install_dir/mods