如何搭建 Rust 专用服务器
自己开一个 Rust 服务器,地图大小、清档日和规则都由你来定。Facepunch 的服务器程序是免费的,可以在 Windows 和 Linux 上运行。
准备工作
一台 Windows 或 Linux 电脑,有人玩的时候要一直开着;还有 SteamCMD,这是 Valve 出的免费命令行工具,用来下载 Steam 服务器。Rust 服务器是 Steam app 258550,下载 6.1 GB,匿名登录即可:这台电脑不需要有 Rust,也不需要 Steam 账号。
每个玩家都需要自己在 Steam 上拥有 Rust。服务器这边,Facepunch 给的最低要求是 12 GB 空闲内存和 15 GB 硬盘空间,最好是 SSD;地图越大,两者需要的越多。
作为参考:在我们的测试电脑上,一个没有玩家的 1000 m 世界稳定在约 2.8 GB 内存,花了 3 分 18 秒才准备好。完整大小的地图耗时更长,占用也更多。
游戏只需要开放一个端口:UDP 28015。服务器列表和 Rust+ 手机 App 还要用两个端口,见“端口和防火墙”。
已在 2026 年 10 月 22 日的 Rust 服务器版本(协议 2635.289.1)上验证。
安装服务器
1. 从 Valve 下载 SteamCMD,解压到 C:\steamcmd。
2. 打开 PowerShell 或命令提示符,把服务器下载到 C:\rust-server:
C:\steamcmd\steamcmd.exe +force_install_dir C:\rust-server +login anonymous +app_update 258550 validate +quit3. Rust 的启动命令很长,所以把它存成文件。把下面的内容保存为 C:\rust-server\start-server.bat,然后双击运行:
cd /d "%~dp0"
RustDedicated.exe -batchmode +server.identity main +server.port 28015 +server.queryport 28017 +rcon.port 28016 +rcon.password "YOUR-ADMIN-PASSWORD" +rcon.web 1 +app.port 28082 +server.hostname "YOUR-SERVER-NAME" +server.maxplayers 60 +server.worldsize 3500 +server.seed 90817 -logfile server-log.txt加载需要几分钟。窗口显示 Server startup complete 之后,玩家就可以加入了。
这些步骤我们在 Ubuntu 24.04 上测试过。Valve 的 SteamCMD 需要 32 位 GCC 库(lib32gcc-s1),没有它,steamcmd.sh 会马上停止。
sudo apt update
sudo apt install lib32gcc-s1 curl screen
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar xz
./steamcmd.sh +force_install_dir ~/rust-server +login anonymous +app_update 258550 validate +quit在 screen 会话里启动服务器,这样你退出登录后它还会继续运行:
cd ~/rust-server
export LD_LIBRARY_PATH=~/rust-server:~/rust-server/RustDedicated_Data/Plugins/x86_64
screen -S rust ./RustDedicated -batchmode +server.identity main +server.port 28015 +server.queryport 28017 +rcon.port 28016 +rcon.password "YOUR-ADMIN-PASSWORD" +rcon.web 1 +app.port 28082 +server.hostname "YOUR-SERVER-NAME" +server.maxplayers 60 +server.worldsize 3500 +server.seed 90817 -logfile server-log.txt保留 export 这一行。只有当服务器自己的文件夹在 LD_LIBRARY_PATH 里时,服务器才会从这个文件夹加载 Steam 的 steamclient.so。没有这一行,我们的服务器生成完地图后就以 Failed to load module steamclient.so 退出了。
按 Ctrl+A 再按 D 离开会话;screen -r rust 回到会话。Linux 控制台不能输入命令,所以管理操作要用 RCON(见“管理员”)。
Facepunch 没有发布 Docker 镜像。我们的测试是在一个干净的 ubuntu:24.04 容器里以 root 身份运行上面的 Linux 步骤,包括 export 这一行。
启动命令
启动命令里的每一组 +名称 值,都会在世界加载前设置一个控制台变量(convar)。没写的项,服务器就用默认值:
| 选项 | 默认值 | 作用 |
|---|---|---|
-batchmode | 不带图形界面运行服务器。一定要加上。 | |
+server.identity | my_server_identity | server/ 下的文件夹名称,存放这个服务器的存档和设置。换一个 identity,就能用同一份安装再开一个独立的服务器。 |
+server.port | 28015 | 游戏端口,UDP。玩家连接这个端口。 |
+server.queryport | 28016 | 服务器列表使用的 UDP 端口。不能和游戏端口相同。 |
+rcon.port | 28015 | 远程控制台,TCP。 |
+rcon.password | (无) | 远程控制台的密码。自己设一个长密码。 |
+rcon.web | 1 表示 WebSocket RCON,这是 Facepunch 推荐的方式,它的网页控制台也用这种。 | |
+app.port | 28082 | Rust+ 配套 App 的 TCP 端口,10000 或更高。 |
+server.hostname | My Untitled Rust Server | 在服务器列表中显示的名称。 |
+server.maxplayers | 500 | 同时在线的最大玩家数。 |
+server.worldsize | 4500 | 地图大小,1000 到 6000。地图越大,加载越慢,占用内存越多。 |
+server.seed | 1337 | 生成地图用的数字(0 到 2147483647)。 |
-logfile | 把控制台输出复制到文件里。 | |
默认值是我们的测试服务器在日志和 RCON 中报告的数值。不设置 +server.seed 的话,每个服务器都会生成同一张种子 1337 的地图。
服务器设置
每次重启后都要保留的设置写进 server.cfg,它位于服务器文件夹里的 server\main\cfg(main 就是你的 server.identity)。每行写一个 convar,不带 +。
第一次启动时会创建 cfg 文件夹,里面有 users.cfg、bans.cfg 和 serverauto.cfg(服务器自己写入的文件)。server.cfg 要你自己创建才会有。
server.tags biweekly,softcore,EU
server.description "YOUR-SERVER-DESCRIPTION"
server.url "https://YOUR-WEBSITE"
server.headerimage "https://YOUR-WEBSITE/header.png"
server.pve false
decay.scale 0.5服务器每次启动都会读取 server.cfg。在我们的测试中,同时写在 server.cfg 和启动命令里的 convar 保留了启动命令的值;server.cfg 的其他行都生效了。服务器自己从不写入 server.cfg。
| Convar | 默认值 | 作用 |
|---|---|---|
server.description | No server description has been provided. | 玩家加入前看到的界面上的文字。 |
server.url | (空) | 该界面上的网站链接。 |
server.headerimage | (空) | 该界面上横幅图片的链接。 |
server.tags | (空) | 服务器列表的筛选标签,用逗号分隔。 |
server.pve | False | PvE 模式。设为 true 时还会自动加上 pve 标签。 |
decay.scale | 1 | 建筑腐烂(decay)速度的倍率。 |
server.saveinterval | 600 | 自动保存的间隔秒数。 |
标签方便玩家筛选列表。清档标签(weekly、biweekly、monthly)和风格标签(vanilla、softcore、hardcore)各最多选一个,再加一个地区:NA、SA、EU、WA、EA、OC 或 AF。
其他可选标签有 pve、roleplay、creative、minigame、training、battlefield、broyale、builds、tut 和 premium。同一组里用两个标签,可能会让服务器在筛选搜索中消失。
要查看某个 convar 的当前值,在服务器控制台或 RCON 里只输入它的名称即可。
管理员
Rust 有两种权限:owner 和 moderator。在服务器控制台或通过 RCON 用玩家 17 位的 SteamID64 授予。status 命令会列出所有在线玩家及其 ID:
ownerid YOUR-STEAMID64 "YOUR-NAME"
moderatorid A-FRIENDS-STEAMID64 "A-FRIENDS-NAME"然后玩家重新连接。两个命令都会立即把权限写进 cfg/users.cfg;我们在运行 server.writecfg 之前,文件里就已经有这两行了。用 removeowner 和 removemoderator 收回权限。
在游戏中,管理员按 F1 打开控制台,在里面输入命令。
| 命令 | 作用 |
|---|---|
status | 显示在线玩家及其 SteamID64。 |
say <text> | 在聊天中向所有人发送消息。 |
kick <player> <reason> | 把玩家踢出服务器。 |
ban <player> <reason> | 封禁一名在线玩家。 |
banid <SteamID64> <name> <reason> | 按 ID 封禁,离线玩家也可以。 |
unban <SteamID64> | 解除封禁。 |
server.save | 立即保存世界。 |
server.writecfg | 把管理员和封禁名单写进 cfg 文件夹。 |
quit | 保存并停止服务器。 |
如果要从另一台电脑管理,Facepunch 的网页控制台 facepunch.github.io/webrcon 可以用你的 RCON 密码连接 RCON 端口。这个页面是未加密的 HTTP。
端口和防火墙
玩家通过 UDP 28015 连接游戏。服务器列表通过查询端口读取服务器信息,Rust+ App 通过 TCP 和服务器通信。按上面的启动命令,一共是三个端口:UDP 28015、UDP 28017 和 TCP 28082。
不设置 +server.queryport 时,服务器列表端口是游戏端口和 RCON 端口中较大者加一。我们没设 rcon.port 的测试服务器在 UDP 28016 上响应列表查询。
以管理员身份在 PowerShell 中运行,在 Windows 防火墙中放行这些端口:
New-NetFirewallRule -DisplayName "Rust server (UDP)" -Direction Inbound -Protocol UDP -LocalPort 28015,28017 -Action Allow
New-NetFirewallRule -DisplayName "Rust server (Rust+)" -Direction Inbound -Protocol TCP -LocalPort 28082 -Action Allow在路由器上把这三个端口转发到服务器电脑,并给这台电脑设一个固定的内网 IP。每条规则选 UDP 或 TCP,不要选“两者”。RCON(TCP 28016)不需要转发,除非你要在家外面管理服务器。
Rust+ 配套 App
Rust+ 通过 app.port 把手机和服务器配对。不设置 +app.port 时,我们的测试服务器用的是 TCP 28082。端口必须是 10000 或更高,修改后需要重启。
服务器启动时会检查 Rust+ 能否从外部连到它。检查失败的话,Rust+ 会被关闭;我们没开任何端口的测试服务器记录了 Rust+ companion server connectivity test failed。服务器还需要能访问 companion-rust.facepunch.com。
如果 Rust+ 显示的地址不对,把 app.publicip 设为 YOUR-SERVER-IP。要关闭 Rust+,在启动命令里写 +app.port 1-,这里的减号在 1 后面。
identity 文件夹里的 companion.id 文件是服务器的 Rust+ 身份。千万不要删除,也不要给别的服务器用:否则每个玩家都得重新配对,而且删掉的文件无法恢复。
加入服务器
在 Rust 主菜单按 F1,输入:
client.connect YOUR-SERVER-IP:28015如果和服务器在同一个网络里,改用它的内网 IP 地址(用 ipconfig 查看)。查询端口开放后,服务器还会出现在服务器浏览器的 Community 分类下;如果运行了改变玩法的插件,则在 Modded 分类下。
存档、清档和更新
一个服务器保存的所有内容都在 server\main 里。启动并保存一次后,我们的文件夹里有:
| 文件 | 内容 |
|---|---|
proceduralmap.1000.90817.289.sav | 世界:建筑、物品和所有放置的东西。289 来自协议号。 |
….sav.1 | 上一次的存档。服务器会保留两份旧副本(server.savebackupcount 2)。 |
proceduralmap.1000.90817.289.map | 生成的地图,按大小、种子和协议命名。 |
.navmesh, _occlusion_3.dat | 服务器根据地图生成的 AI 寻路和可见性数据。 |
player.blueprints.18.db | 玩家已学会的蓝图。 |
player.deaths, .identities, .states | 玩家记录,每项一个 .db 文件。 |
player.tokens.db | Rust+ 配对。 |
clans.289.db, relationship.289.db | 部落和玩家关系。 |
sv.files.289.db | 标志等可绘画物品上的图片。 |
companion.id | 服务器的 Rust+ 身份。 |
cfg/ | users.cfg、bans.cfg、serverauto.cfg 和你的 server.cfg。 |
*.db-wal | 旁边那个 .db 文件的最新改动。要和它一起复制。 |
备份:运行 server.save,停止服务器,复制整个 identity 文件夹,包括 -wal 文件。因为有 companion.id,只能恢复到同一个服务器上。
清档
清档就是让服务器从头开始。Facepunch 每月的更新会提高存档名里的协议号,所以服务器会自动生成新地图:这就是强制清档。不要靠改旧 .sav 的文件名来绕过它。
要自己清图,先停止服务器,删除 .sav 和 .map 文件,或者修改 server.seed。如果要清蓝图,同时还要删除 player.blueprints。
游戏内的清档倒计时默认是伦敦时间周四 19:00。用 wipetimer.wipeDayofWeek(0 是周日,4 是周四)、wipetimer.wipeHourofDay 和 wipetimer.wipeTimezone 修改。
更新
Rust 服务器不会自动更新。游戏打补丁后,停止服务器,再运行一次安装步骤里的 SteamCMD 命令:存档和 cfg 文件夹都会保留。在那之前,新版本的玩家无法加入。
插件和模组
插件运行在社区框架 Oxide(uMod)或 Carbon 上。Facepunch 为两者提供了说明,但都不是它做的。用 Oxide 的话,停止服务器,把 umod.org 上的 Rust 版本解压覆盖到服务器文件夹,再重新启动。插件放进 oxide/plugins。
每次用 SteamCMD 更新都会覆盖 Oxide 的文件,所以每次更新后都要重装 Oxide。Rust 打补丁后,Oxide 通常很快就会发布对应版本。
Facepunch 要求插件改变玩法或添加界面(采集倍率、礼包、信息面板)的服务器列在 Modded 下。管理工具、反作弊、聊天美化和修改原版 convar 的服务器可以留在 Community。违反规则可能会被移出列表。
常见问题
朋友连不上
等到出现 Server startup complete。检查 UDP 28015 是否转发到了正确的内网 IP,并在防火墙中放行。在自己的网络里,改用内网 IP 连接。
服务器没有出现在服务器列表里
转发查询端口(按我们的启动命令是 UDP 28017),并且不要和游戏端口相同。还在加载的服务器不会出现在列表里。
server.cfg 里的设置不生效
检查启动命令。同一个 convar 两边都写了时,以启动命令的值为准;在我们的测试服务器上,server.cfg 里的 maxplayers 和 hostname 就因此被忽略了。每个 convar 只写在一个地方。
玩家收到服务器需要更新的提示
Rust 打了补丁,但服务器没更新。停止服务器,再运行一次 SteamCMD 命令,如果用了 Oxide 或 Carbon,再重新安装。
更新后插件不工作了
SteamCMD 用原版游戏文件替换了 Oxide 的文件。重新安装最新的 Oxide 版本。
Rust+ 配对不上
app.port 必须是 10000 或更高,并按 TCP 转发。在日志里查看启动时的 Rust+ 检查结果,地址不对就设置 app.publicip,并且不要移动 companion.id。
服务器在加载地图时崩溃
内存不够。Facepunch 要求 12 GB 空闲内存;server.worldsize 设小一点,需要的内存就少一些。
SteamCMD 在开始下载前就停止了
命令里缺少 +login anonymous。把它加在 +app_update 前面。没有它时,我们的 SteamCMD 以 Failed to request app info update 结束。
Linux 服务器以 Failed to load module steamclient.so 退出
在运行 ./RustDedicated 之前,在同一个 shell 里先运行启动步骤中的 export 那一行,这样服务器才能找到它自己文件夹里的 steamclient.so。
常见问答
开 Rust 服务器需要拥有 Rust 吗?
不需要。SteamCMD 用匿名登录下载服务器。每个玩家需要在 Steam 上拥有 Rust。
Rust 服务器要转发哪个端口?
玩游戏要 UDP 28015。按本页的启动命令,想出现在服务器列表里再加 UDP 28017,Rust+ 再加 TCP 28082。
Rust 服务器需要多少内存?
Facepunch 要求至少 12 GB 空闲内存。我们 1000 m 的小测试地图在没人在线时用了约 2.8 GB;地图越大、玩家越多,需要的越多。
怎么在自己的 Rust 服务器上给自己管理员权限?
在服务器控制台或通过 RCON 运行 ownerid,加上你 17 位的 SteamID64 和一个名字,然后重新加入。游戏里的控制台按 F1 打开。
Rust 服务器能设密码吗?
原版 Rust 不行:没有加入密码。在我们的测试服务器上,find password 只列出了 RCON 的设置。想限制谁能加入,需要用插件。
Rust 服务器什么时候清档?
Facepunch 会随每月更新强制清图,通常是每月第一个周四。在这之间,你随时可以删除存档来清档。
能在 Linux 上运行 Rust 服务器吗?
可以。服务器也有 Linux 版。我们在 Ubuntu 24.04 上测试过。
Wikily Servers 提供 Rust 服务器托管
每月 €10.99 起

