Linux 搭建饥荒专属服务器

腾讯云的服务器都快过期了还没杂用,感觉血亏。在过期前搭个饥荒服务器玩玩吧~

需要用到的:

  • 腾讯云
  • linuxgsm
  • termius

安装gsm

跟着官方文档走,没发生什么意外:

  1. 安装依赖

    sudo dpkg --add-architecture i386; sudo apt update; sudo apt install mailutils postfix curl wget file bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux lib32gcc1 libstdc++6 libstdc++6:i386 libcurl4-gnutls-dev:i386
    
  2. 新建账户
    因为脚本不允许 root 下使用,所以需新建一个用户:

    adduser dstserver  // 添加账户
    passwd dstserver  // 修改密码
    su - dstserver // 切换账户
  3. 下载并安装 gsm

    wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh &&      bash linuxgsm.sh dstserver
    
    ./dstserver install
    

    安装时会提示输入 Token,你登录 https://accounts.klei.com/account/info 后在这里添加新的服务器,复制输入生成的 Server Token。

服务器设置

vim /home/dstserver/.klei/DoNotStarveTogether/Cluster_1/cluster.ini
[GAMEPLAY]
game_mode = endless         # 游戏模式
max_players = 8             # 最大玩家人数
pvp = false                 # pvp开关
pause_when_empty = true     # 没人在线时暂停世界
vote_enabled = true         # 投票开关(投票T人,投票重置世界)

[NETWORK]
lan_only_cluster = false    # 只允许本地局域网加入开关
offline_cluster = false     # 离线游戏
cluster_description = '0.0' # 服务器简介
cluster_name = 'My World'   # 服务器名称
cluster_intention = cooperative     # 服务类型,cooperative、social等
cluster_password = 123456   # 服务器密码
tick_rate = 30              # 帧刷新频率
connection_timeout = 120000 # 掉线等待时间,单位毫秒
whitelist_slots = 1         # 白名单个数
enable_autosaver = true    # 天亮自动保存
server_save_slot = 1
[MISC]
console_enable = true       # 是否开启控制台
max_snapshots = 6           # 最大快照數

[SHARD]
shard_enabled = true        # 是否多世界
bind_ip = 127.0.0.1         # 主从世界在同一台服务器上(默认)
master_ip = 127.0.0.1       # 主从世界在同一台服务器上(默认)
master_port = 10888         # 端口
cluster_key = rain          # 主从世界连接密码

[STEAM]
steam_group_only = false    # 是否只允许同steam组的人加入
steam_group_id = 2222222    # steam组ID
steam_group_admins = true   # steam组员自动成为管理员

地图设置

当然这里可以使用默认的,也可以在本地选择需要的配置新建后把配置复制过来。

vim /home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Master/leveldataoverride.lua

开启 MOD

把 mod 添加至dedicated_server_mods_setup.lua 服务器会自动下载,但启用还需在 modoverrides.lua 中配置。

下载 MOD

vim /home/dstserver/serverfiles/mods/dedicated_server_mods_setup.lua

填写格式有两种,一种是把合集里的都加上 ServerModCollectionSetup("379114180"),一种单个添加 ServerModSetup("378160973")。括号里的数字是打开创意工坊 url 的后缀。

形式如下:

ServerModSetup("345692228")   --"Minimap HUD"
ServerModSetup("347079953")   --"Display food values"
ServerModSetup("351325790")   --"Geometric Placement"
ServerModSetup("367546858")   --"Chinese Language Pack"
ServerModSetup("375850593")   --"Extra Equip Slots"
ServerModSetup("375859599")   --"Health Info"
ServerModSetup("376333686")   --"Combined Status"
ServerModSetup("378160973")   --"Global Positions"
ServerModSetup("444438334")   --"DJPaul's Sort Inventory"
ServerModSetup("458587300")   --"Fast Travel"
ServerModSetup("458940297")   --"Food Values - Item Tooltips (Server and Client)"
ServerModSetup("462434129")   --"Restart"
ServerModSetup("556027744")   --"SUMMON BIGFOOT( With Old Bell)"
ServerModSetup("572538624")   --"Chinese Plus"
ServerModSetup("623749604")   --" Storeroom"
ServerModSetup("928706300")   --"To Do Chores"
ServerModSetup("949822556")   --"Egg Pain Together"

如果一些 mod 下载缓慢,也可以直接把 mod 文件直接下载或上传至 ~/serverfiles/mods,文件夹格式如:workshop-345692228。

https://t.vvwall.com 该网站可根据 ID 直接下载 mod。

配置并启用 MOD

vim ~/.klei/DoNotStarveTogether/Cluster_1/Master/modoverrides.lua

配置如果自己写很麻烦,还是在本地新建世界,并且配置好需要的 mod 后,把配置文件复制过来更方便。

本地的配置文件在下面路径找找:

  • Windows
    Documents\Klei\DoNotStarveTogether
  • Linux
    ~/.klei/DoNotStarveTogether
  • MacOS
    ~/Documents/Klei/DoNotStarveTogether

配置文件例:

return {
["workshop-345692228"] = { enabled = true },
["workshop-347079953"] = { enabled = true },
["workshop-351325790"] = { enabled = true },
["workshop-367546858"] = { enabled = true },
["workshop-375850593"] = { enabled = true },
["workshop-375859599"] = { enabled = true },
["workshop-376333686"] = { enabled = true },
["workshop-378160973"] = { enabled = true },
["workshop-444438334"] = { enabled = true,
    configuration_options =
    {
        keybind = 103,
        maxLights = 2,
        backpackCategory = "food"
    }
},
["workshop-458587300"] = { enabled = true },
["workshop-458940297"] = { enabled = true },
["workshop-462434129"] = { enabled = true },
["workshop-556027744"] = { enabled = true },
["workshop-572538624"] = { enabled = true },
["workshop-623749604"] = { enabled = true },
["workshop-928706300"] = { enabled = true },
["workshop-949822556"] = { enabled = true }
}

启动服务

这时候就已经可以启动服务了。

~/dstserver start
~/dstserver c //查看日志 报错找原因

开启地洞

默认配置是没有地洞的,在我想要开启地洞的的时候踩了一堆坑。

我这里的方式是在一个机器下部署地表世界和地下世界。也就是 机器上有 1 个 cluster,
cluster 包含了 Master(地表) 和 Cave(地底) 两个 shard。

1.修改默认配置

先查看下当前配置

~/dstserver details

修改从 github 上下载下来的_default 配置

vim ~/lgsm/config-default/config-lgsm/dstserver/_default.cfg

将servername 一行注释掉

#servername="dst-server-{shard}"

2.配置地洞

首先我们需要新建另一个script 来启动地洞,linuxgsm.sh 新建后会多出来个 dstserver-2.

~/linuxgsm.sh dstserver 

修改自动创建的配置文件 ~/lgsm/config-lgsm/dstserver/dstserver-2.cfg

先抄一份默认的文件

cat _default.cfg >> dstserver-2.cfg

修改部分

# Installation Variables
sharding="true"
master="false"
shard="Caves" 
cluster="Cluster_1"
cave="true"

修改之前地表的配置文件 ~/lgsm/config-lgsm/dstserver/dstserver.cfg

# Installation Variables
sharding="true"
master="true"
shard="Master" 
cluster="Cluster_1"
cave="false"

修改地表服务配置 ~/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini

[SHARD]
is_master = true

[NETWORK]
server_port = 11000

[STEAM]
authentication_port = 8768
master_server_port = 27018

添加地底服务配置 ~/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini

[SHARD]
is_master = false
name = Caves

[NETWORK]
server_port = 11001

[STEAM]
authentication_port = 8769
master_server_port = 27019

添加地底地图 ~/dstserver/.klei/DoNotStarveTogether/Cluster_1/Caves/worldgenoverride.lua

return {
         override_enabled = true,
         preset = "DST_CAVE",
         misc = {
                 world_size = "huge"
         }
 }

修改 ~/.klei/DoNotStarveTogether/Cluster_1/cluster.ini

[SHARD]
shard_enabled = true

把地表的 modoverrides.lua复制一份到地底文件夹。

现在 Cluster_1 文件夹如下:

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/
├── Caves
│   ├── modoverrides.lua
│   ├── server.ini
│   └── server_log.txt
├── cluster.ini
├── cluster_token.txt
└── Master
    ├── modoverrides.lua
    ├── server.ini
    ├── server_log.txt
    └── worldgenoverride.lua

3. 启动

现在可以把地表地底都启动了

~/dstserver start
~/dstserver-2 start

遇坑

https://docs.linuxgsm.com/game-servers/dont-starve-together
我开始跟着文档做,然而怎么改都是只有一个 Master ,无法使用地洞 Cave 的配置。

有关 gsm 配置的官方文档:
https://docs.linuxgsm.com/configuration/linuxgsm-config
https://docs.linuxgsm.com/configuration/game-server-config

根据官方文档,配置的加载顺序为 _default.cfg>common.cfg>instance.cfg

也就是先是下载github下来的默认配置,然后是游戏的所有实例的公共配置,最后是某个实例配置。

但是如果直接新建服务,默认 _default.cfg 中 shard 是 Master,然后 servername="dst-server-{shard}"。

所以无论你怎么修改,所有的dstserver,dstserver-2,dstserver-3 使用的都是默认的 dstserver-master 配置。

参考

饥荒联机版独立服务器搭建踩坑记录
Linux 上搭建饥荒联机版 Don't Starve Together服务器
wiki/多人版饑荒獨立伺服器
Steam饥荒Linux(CentOS)服务端专房搭建

评论

此博客中的热门博文

1. Angular 错误:ExpressionChangedAfterItHasBeenCheckedError