- 作者:
- 分类:其它->游戏
- 阅读:6970
- 点赞:10
- 版权: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 MyDediServerdocker 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_1systemctl 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") -- saberServerModSetup("2414471353") -- 奥米茄ServerModSetup("501385076") -- 快速割草ServerModSetup("363112314") -- 地图持久化ServerModSetup("462434129") -- 复活ServerModSetup("1571581787") -- 背包99999ServerModSetup("378160973") -- 全局队友ServerModSetup("2589712698") --额外装备ServerModSetup("2536607878") --显示生命ServerModCollectionSetup("2519917081") -- 羊ServerModCollectionSetup("2589174774") -- 芮塔ServerModCollectionSetup("2533421726") -- saberServerModCollectionSetup("2414471353") -- 奥米茄ServerModCollectionSetup("501385076") -- 快速割草ServerModCollectionSetup("363112314") -- 地图持久化ServerModCollectionSetup("462434129") -- 复活ServerModCollectionSetup("1571581787") -- 背包99999ServerModCollectionSetup("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 +quitcp $HOME/dedicated_server_mods_setup.lua $install_dir/mods

