记录一下rust游戏服务器的搭建,包括oxide插件平台的安装及配置。
系统务必使用debian11,机器配置建议用独立服务器,vps的话最低6g内存起步,配置低了是肯定跑不起来的。
首先来安装steamcmd,这里需要注意的是steamcmd这个软件包不在debian存储库的main分类内,要启用存储库的non-free分类才能安装到,所以这里先编辑存储库的配置文件:
apt edit-sources
加入non-free标志:
deb http://deb.debian.org/debian bullseye main contrib non-free deb-src http://deb.debian.org/debian bullseye main contrib non-free deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free deb http://deb.debian.org/debian bullseye-updates main contrib non-free deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
然后再启用系统多架构的支持:
dpkg --add-architecture i386
现在就可以安装steamcmd了,这里顺带把后续需要用到的软件一并安装了:
apt -y update apt -y install steamcmd curl unzip tmux
安装完成之后,新建一个名为steam的用户:
useradd -m -s /bin/bash steam
修改这个用户的密码:
passwd steam
然后直接切到这个用户下:
su - steam
做一个软连接,方便使用:
ln -s /usr/games/steamcmd steamcmd
执行下面的命令启动steamcmd:
steamcmd
在steamcmd的cli内执行如下命令指定游戏安装的目录:
force_install_dir ./rust_server/
在steamcmd的cli内执行如下命令登录匿名用户(用于下载游戏服务端文件)
login anonymous
在steamcmd的cli内执行如下命令开始下载并安装游戏服务端:
app_update 258550 validate
安装完成之后执行如下命令退出steamcmd:
quit
我们的游戏服务端安装在如下路径:
/home/steam/.local/share/Steam/steamcmd/rust_server
现在来安装oxide,下载oxide的压缩包:
curl -L https://umod.org/games/rust/download/develop -o oxide.zip
直接将压缩包内的文件解压到对应的路径即可,注意这里是覆盖解压,会替换掉原服务端的某些文件:
unzip -o oxide.zip -d /home/steam/.local/share/Steam/steamcmd/rust_server
现在先启动一次服务器,进入到如下目录:
cd /home/steam/.local/share/Steam/steamcmd/rust_server
执行下面的命令启动服务器:
./RustDedicated -batchmode \ -server.ip 0.0.0.0 \ -server.port 28015 \ -server.hostname "imlala test server" \ -server.url "https://lala.im" \ -server.maxplayers 200 \ -server.worldsize 5000 \ -server.seed 793197 \ -server.tickrate 10 \ -server.saveinterval 300 \ -rcon.ip 0.0.0.0 \ -rcon.port 28016 \ -rcon.web 1 \ -rcon.password "password"
oxide会在这次服务器启动的时候初始化。等待服务端启动完成后,按ctrl+c退出。
如果正常的话,在当前目录会多出一个Compiler.x86_x64的文件和一个oxide的目录:
现在就可以尝试来安装插件了,比如说现在我要装一个:https://umod.org/plugins/gather-manager
直接下载网页上的cs文件到对应的目录即可:
curl -L https://umod.org/plugins/GatherManager.cs -o /home/steam/.local/share/Steam/steamcmd/rust_server/oxide/plugins/GatherManager.cs
再次启动服务器:
./RustDedicated -batchmode \ -server.ip 0.0.0.0 \ -server.port 28015 \ -server.hostname "imlala test server" \ -server.url "https://lala.im" \ -server.maxplayers 200 \ -server.worldsize 5000 \ -server.seed 793197 \ -server.tickrate 10 \ -server.saveinterval 300 \ -rcon.ip 0.0.0.0 \ -rcon.port 28016 \ -rcon.web 1 \ -rcon.password "password"
等待服务端启动完成后,按ctrl+c退出。现在我们看一下oxide目录下面的结构:
在这次服务器启动后,oxide加载的gather-manager插件生效了,会在config目录下生成gather-manager插件的配置文件,如果后续你要修改gather-manager插件的配置,那么编辑GatherManager.json这个文件即可。
现在来了解一下rust服务器的配置文件和配置方法。
还是先启动服务器,但是这一次启动,我们可以使用tmux将其放在后台运行,这样ssh断开后服务器依旧在运行。
先新建一个tmux会话:
tmux new -s rust
然后和之前一样启动服务器:
./RustDedicated -batchmode \ -server.ip 0.0.0.0 \ -server.port 28015 \ -server.hostname "imlala test server" \ -server.url "https://lala.im" \ -server.maxplayers 200 \ -server.worldsize 5000 \ -server.seed 793197 \ -server.tickrate 10 \ -server.saveinterval 300 \ -rcon.ip 0.0.0.0 \ -rcon.port 28016 \ -rcon.web 1 \ -rcon.password "password"
现在你可以按ctrl+b再按d分离出tmux会话。
查看tmux会话:
tmux ls
等到你需要回到之前的tmux会话中时:
tmux attach -t rust
杀掉会话:
tmux kill-session -t rust
rust服务器有效的配置方法大致可以分为3种。第一种就是上面已经用到的,在启动的时候直接将参数带上去,比如之前用到的这些:
-server.ip 0.0.0.0 // 服务器监听的IP -server.port 28015 // 服务器监听的端口 -server.hostname "imlala test server" // 服务器名 -server.url "https://lala.im" // 服务器的网址,可选配置 -server.maxplayers 200 // 服务器最大玩家数 -server.worldsize 5000 // 设置地图大小,最小3000,最大6000 -server.seed 793197 // 设置种子,种子决定了地图生成的形状 -server.tickrate 10 // 服务器每秒更新游戏状态的频率 -server.saveinterval 300 // 服务器自动保存间隔,单位秒 -rcon.ip 0.0.0.0 // 管理员接口监听的IP -rcon.port 28016 // 管理员接口监听的端口 -rcon.web 1 // 启用websocket,结合rustadmin里面的webrcon使用 -rcon.password "password" // 设置管理员密码
需要注意的是,不是所有的参数都能以这种形式去配置,有些参数用这种方式配置是不能生效的。建议在启动的时候只配置必须用到的启动参数,其他无关的参数不要在这里配置。
在这里列出了所有可配置参数:https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server
另一种就是使用rustadmin,首先去这里下载软件:https://www.rustadmin.com
打开软件,按照下图来配置:
软件的左下角提示连接成功后就可以开始用rustadmin来管理服务器了。
现在你可以借助rustadmin来执行命令将自己的游戏角色设置成服主(管理员)。
在玩家列表找到自己的账号,复制steamid:
在控制台执行如下命令设置管理员:
ownerid 你的steamid "imlala"
如图所示:
需要注意的是,在rustadmin做出的任何配置或者改动,都需要你执行下面的命令去保存,否则服务器重启后会还原:
server.writecfg
如图所示:
通过rustadmin保存的配置,存储在serverauto.cfg文件内:
/home/steam/.local/share/Steam/steamcmd/rust_server/server/my_server_identity/cfg/serverauto.cfg
有一个例外是管理员的配置,存储在users.cfg文件内:
/home/steam/.local/share/Steam/steamcmd/rust_server/server/my_server_identity/cfg/users.cfg
你也可以自己新建一个名为server.cfg的配置文件,将配置写入到这个文件内,直接写到这个文件内的配置是不需要手动保存的,服务器启动的时候会自动加载:
nano /home/steam/.local/share/Steam/steamcmd/rust_server/server/my_server_identity/cfg/server.cfg
比如我要设置服务器的描述和横幅图片:
server.description "test server by imlala\nblog:https://lala.im" server.headerimage "https://233.fi/images/2022/05/16/00dec9f0469d0d52cefabc166fe219e4.png"
这里要注意的是自己新建的server.cfg不要和serverauto.cfg内的配置有相同的条目,以免出现一些问题。
最后一种就是通过游戏内的控制台,前提是你已经是这个服务器的服主(管理员)
在之前我们已经通过rustadmin完成了管理员的设置,所以当我进到游戏后按F1打开控制台,是可以直接修改服务器配置的。
比如我要设置服务器的tag:
server.tags "weekly"
同样的,在控制台做出的任何配置或者改动,都需要执行下面的命令去保存:
server.writecfg
通过控制台保存的配置也存储在serverauto.cfg文件内:
/home/steam/.local/share/Steam/steamcmd/rust_server/server/my_server_identity/cfg/serverauto.cfg
可以简单验证一下,在游戏控制台保存了配置后,服务器的serverauto.cfg文件内就会出现相应的配置:
最后简单介绍一下之前安装的gather-manager插件: