选中内容(绿色)时除了会搜索文章名,还会搜索文章内容
点击结果中的文章名进入文章界面后可以按Ctrl+F在页面内搜索
  • 版权:CC BY-SA 4.0
  • 创建:2021-09-05
  • 更新:2021-09-07
饥荒使用自建专有服务器(Don't Starve Together (DST) dedicated server)的方法, 包括手动建立和使用 docker 镜像搭建两种方法


有两种方法:

  • 按照官方教程安装软件,配置,然后运行
  • 使用 docker, 没有复杂的安装过程,只需要安装 docker 配置即可,更简单,而且建多个房间配置更方便, 推荐使用

这里两种方法都介绍, 可以先把两种方法都阅读一遍,理解了过程和原理,再用 docker 进行部署,会避免踩坑

方法一: 使用 docker

安装 docker

推荐看官网安装文档, 最不容易踩坑
装好后docker --version 就可以使用了

然后到这里获取源码, 也有使用文档 , 看这个文档配合源码使用 即可。

以下是使用文档,从这里复制过来的文档, 如有更新, 以这里为准

获得 docker 镜像

可以从 Dockerfile 构建

  1. docker build -t dst_server .

也可以直接从 dockerhub 拉取:

  1. docker pull neucrack/dst_server

申请 key

klei 官网 申请一个 key, 设置好房间, 点击下载, 会获得一个压缩文件, 解压后得到MyDediServer文件夹:

  1. MyDediServer
  2. ├── Caves
  3. └── server.ini
  4. ├── Master
  5. └── server.ini
  6. ├── cluster.ini
  7. ├── cluster_token.txt

添加 mod

在这个文件夹的基础上添加了几个文件, 最后得到:

  1. MyDediServer
  2. ├── Caves
  3. ├── save
  4. ├── server.ini
  5. ├── worldgenoverride.lua
  6. └── modoverrides.lua
  7. ├── Master
  8. ├── save
  9. ├── server.ini
  10. ├── worldgenoverride.lua
  11. └── modoverrides.lua
  12. ├── cluster.ini
  13. ├── cluster_token.txt
  14. ├── dedicated_server_mods_setup.lua
  15. └── 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.luaworldgenoverride.lua分别是设置mod(比如强制启用mod),和设置地图和资源等的参数

保存进度

运行后在 MasterCaves 下有savebackup 文件夹, 复制保存下次覆盖save文件夹即可

创建服务器 docker 容器

获取需要开放的端口(在这三个 ini 配置文件中), 可以利用这里的get_ports.py脚本获取

  1. ports=`python3 get_ports.py ./MyDediServer`
  2. echo $ports

服务器保证这些端口开放,关闭防火墙或者设置这些端口为白名单, 可以把 TCP 和 UDP 都打开

比如用了 ufw, 则 ufw allow 端口号
iptable:
iptables -A INPUT -p udp —dport 端口号 -j ACCEPT
iptables -A OUTPUT -p udp —sport 端口号 -j ACCEPT

替换下面命令的端口号映射并执行

  1. cd MyDediServer
  2. 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_serverneucrack/dst_server

run 命令会自动启动服务器, 可以看 log 是否成功, 也可以在游戏大厅搜索设置的名字, 成功后 ctrl+c 退出

启动容器(服务器)

  1. docker start dst_server_1

停止

  1. docker stop dst_server_1

查看启动日志

  1. docker logs dst_server_1

开机自启

  1. docker update --restart=always dst_server_1
  2. 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

  1. ServerModSetup("2519917081") --
  2. ServerModSetup("2589174774") -- 芮塔
  3. ServerModSetup("2533421726") -- saber
  4. ServerModSetup("2414471353") -- 奥米茄
  5. ServerModSetup("501385076") -- 快速割草
  6. ServerModSetup("363112314") -- 地图持久化
  7. ServerModSetup("462434129") -- 复活
  8. ServerModSetup("1571581787") -- 背包99999
  9. ServerModSetup("378160973") -- 全局队友
  10. ServerModSetup("2589712698") --额外装备
  11. ServerModSetup("2536607878") --显示生命
  12. ServerModCollectionSetup("2519917081") --
  13. ServerModCollectionSetup("2589174774") -- 芮塔
  14. ServerModCollectionSetup("2533421726") -- saber
  15. ServerModCollectionSetup("2414471353") -- 奥米茄
  16. ServerModCollectionSetup("501385076") -- 快速割草
  17. ServerModCollectionSetup("363112314") -- 地图持久化
  18. ServerModCollectionSetup("462434129") -- 复活
  19. ServerModCollectionSetup("1571581787") -- 背包99999
  20. ServerModCollectionSetup("378160973") -- 全局队友
  21. ServerModCollectionSetup("2589712698") --额外装备
  22. ServerModCollectionSetup("2536607878") --显示生命

然后存档配置modoverrides.lua, 这个需要复制到存档文件夹的Master文件夹下:

可以先自己电脑建一遍带有mod的房间,然后拷贝我的文档/klei/DoNotStarveTogether/账号/cluster*下面的,cluster几就代表了第几个存档

  1. return {
  2. ["workshop-1571581787"]={
  3. configuration_options={
  4. ANIMALSTACK=true,
  5. EGGSTACK=true,
  6. MAXSTACKSIZE=99,
  7. TOOLSTACK=false,
  8. TRAPSTACK=true
  9. },
  10. enabled=true
  11. },
  12. ["workshop-1813311384"]={
  13. configuration_options={ DAY_RAIN=true, DELAY_RAIN=5, HEALTH_RAIN=1, WET_RAIN=false },
  14. enabled=true
  15. },
  16. ["workshop-2414471353"]={ configuration_options={ gamemode="YES", wuqimode="NO" }, enabled=true },
  17. ["workshop-2519917081"]={
  18. configuration_options={
  19. [""]=0,
  20. ["Auto Respawn"]=0,
  21. ["Basic Stats"]=0,
  22. ["Language/言語"]=0,
  23. Others=0,
  24. ["Watame Katana"]=0,
  25. ["Watame Shogun Helm"]=0,
  26. enable_watame_auto_respawn=true,
  27. enable_watame_katana_crit_shogun_set=true,
  28. watame_auto_respawn_delay=8,
  29. watame_auto_respawn_frequency=2,
  30. watame_clothes=false,
  31. watame_dmg=0.8,
  32. watame_health=125,
  33. watame_hunger=200,
  34. watame_hunger_rate=1,
  35. watame_katana_atk_damage=34,
  36. watame_katana_crit_chance1=20,
  37. watame_katana_crit_multi1=2.5,
  38. watame_katana_usage=150,
  39. watame_language="AUTO",
  40. watame_sanity=150,
  41. watame_shogun_absoption=0.6,
  42. watame_shogun_atk_buff=1.15,
  43. watame_shogun_cold_insulation=60,
  44. watame_shogun_durability=840,
  45. watame_speed=1,
  46. watame_starting=2,
  47. watame_voice="willow"
  48. },
  49. enabled=true
  50. },
  51. ["workshop-2533421726"]={ configuration_options={ saber_cn=true, saber_weapon=999999 }, enabled=true },
  52. ["workshop-2536607878"]={
  53. configuration_options={
  54. divider=5,
  55. random_health_value=0,
  56. random_range=0,
  57. send_unknwon_prefabs=false,
  58. show_type=0,
  59. unknwon_prefabs=1,
  60. use_blacklist=true
  61. },
  62. enabled=true
  63. },
  64. ["workshop-2584216489"]={ configuration_options={ }, enabled=true },
  65. ["workshop-2589174774"]={ configuration_options={ }, enabled=true },
  66. ["workshop-2589712698"]={
  67. configuration_options={
  68. amulet_slot=true,
  69. backpack_slot=true,
  70. chesspiece_fix=true,
  71. compass_slot=true,
  72. drop_hand_item_when_heavy=true,
  73. enable_ui=0,
  74. render_strategy="neck",
  75. show_compass=false,
  76. slots_num=0,
  77. snurtle_remove_armor=true
  78. },
  79. enabled=true
  80. },
  81. ["workshop-363112314"]={ configuration_options={ }, enabled=true },
  82. ["workshop-378160973"]={
  83. configuration_options={
  84. ENABLEPINGS=true,
  85. FIREOPTIONS=2,
  86. OVERRIDEMODE=false,
  87. SHAREMINIMAPPROGRESS=true,
  88. SHOWFIREICONS=true,
  89. SHOWPLAYERICONS=true,
  90. SHOWPLAYERSOPTIONS=2
  91. },
  92. enabled=true
  93. },
  94. ["workshop-462434129"]={
  95. configuration_options={
  96. MOD_RESTART_ALLOW_KILL=true,
  97. MOD_RESTART_ALLOW_RESTART=true,
  98. MOD_RESTART_ALLOW_RESURRECT=true,
  99. MOD_RESTART_CD_BONUS=0,
  100. MOD_RESTART_CD_KILL=3,
  101. MOD_RESTART_CD_MAX=0,
  102. MOD_RESTART_CD_RESTART=5,
  103. MOD_RESTART_CD_RESURRECT=7,
  104. MOD_RESTART_FORCE_DROP_MODE=0,
  105. MOD_RESTART_IGNORING_ADMIN=true,
  106. MOD_RESTART_MAP_SAVE=2,
  107. MOD_RESTART_RESURRECT_HEALTH=0,
  108. MOD_RESTART_TRIGGER_MODE=1,
  109. MOD_RESTART_WELCOME_TIPS=true,
  110. MOD_RESTART_WELCOME_TIPS_TIME=6
  111. },
  112. enabled=true
  113. },
  114. ["workshop-501385076"]={
  115. configuration_options={
  116. quick_cook_on_fire=true,
  117. quick_harvest=true,
  118. quick_pick_cactus=true,
  119. quick_pick_plant_normal_ground=true
  120. },
  121. enabled=true
  122. }
  123. }

然后遇到了个bug, 检查游戏更新时会把dedicated_server_mods_setup.lua文件删掉。。。。。。
所以改下启动文件,在检查更新后手动复制一下文件到mods目录

  1. ./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit
  2. cp $HOME/dedicated_server_mods_setup.lua $install_dir/mods

参考

文章有误?有想法想讨论?查看或者发起勘误/讨论 主题
(发起评论需要先登录 github)

/wallpaper/wallhaven-28el1y.jpg