幻兽帕鲁服务器管理 REST API:踢人封禁、公告与远程存档
《幻兽帕鲁》服务器管理接口已从 RCON 换成 REST API,踢人、封禁、公告、强制存档、关服都走它。怎么开、怎么认证、常用端点怎么调,以及 8212 端口为什么绝不能开到公网。
专用服务器开起来之后,房主迟早要做这几件事:踢掉一个捣乱的人、在重启前给全服发条公告、不停服强制存一次档。《幻兽帕鲁》给这些事提供的官方接口是 REST API——老教程里的 RCON 已被官方弃用并宣布将停止工作,还在教你配 RCON 的内容可以直接跳过。
这篇讲清楚接口怎么开、怎么调、能做什么、以及一条绝对不能破的安全底线。服务器本身怎么搭在开服教程里。
为什么不再是 RCON
RCON 在帕鲁上有三个实际问题,官方弃用它不是心血来潮:
- 多字节字符会被截断。玩家昵称里有中文、日文、韩文时,RCON 指令经常判定失败或者日志乱码——对国内的服来说这几乎是必然撞上的。
- 认证太弱。明文密码走网络,端口一旦暴露就是在公网上裸奔
AdminPassword。 - 返回的是一段字符串。想拿在线人数、帧率做监控,得自己从文本里抠。
REST API 走 HTTP + JSON,这三条全部解决。
怎么开
PalWorldSettings.ini 那一行里加三项(改法与格式陷阱见世界设定详解),改完重启服务端:
RESTAPIEnabled=True
RESTAPIPort=8212
AdminPassword="一个足够长的密码"
AdminPassword 不只是接口的密码,它同时是游戏内管理员指令的密码。设一个长的,不要和 ServerPassword 一样——房间密码是要发给朋友的,管理密码不是。
认证方式是 HTTP Basic:用户名固定为 admin,密码就是上面那个。
一条不能破的底线
8212 端口不要对公网开。 官方文档的原话是这套接口「不设计为直接暴露在互联网上,直接暴露可能导致服务器被未授权操作」。它能关服、能踢人、能改的东西太多,而它的全部防护只有一个 Basic 密码。
正确的姿势:接口只监听本机,脚本在同一台机器上调它;真要远程管,走 SSH 隧道,或者前面加一层带 HTTPS 和来源 IP 白名单的反向代理。安全组里看到 8212 对 0.0.0.0/0 开放,就是配错了。
常用端点
全部挂在 http://127.0.0.1:8212/v1/api/ 下,写操作用 POST、JSON 请求体:
| 端点 | 方法 | 做什么 |
|---|---|---|
/info | GET | 服务器名、版本 |
/players | GET | 在线玩家列表,含每个人的 userId |
/metrics | GET | 帧率、在线人数、运行时长这类指标 |
/settings | GET | 当前生效的世界设定 |
/announce | POST | 全服公告 |
/kick | POST | 踢人 |
/ban | POST | 封禁 |
/unban | POST | 解封 |
/save | POST | 立即把世界写盘 |
/shutdown | POST | 倒计时后优雅关服 |
/stop | POST | 立即强制停止 |
几个最常用的,curl 直接能试:
PW='一个足够长的密码'
API='http://127.0.0.1:8212/v1/api'
# 谁在线
curl -s -u "admin:$PW" "$API/players"
# 全服公告
curl -s -u "admin:$PW" -X POST "$API/announce" \
-H 'Content-Type: application/json' \
-d '{"message":"Server restarts in 5 minutes"}'
# 强制存档
curl -s -u "admin:$PW" -X POST "$API/save"
# 60 秒后优雅关服,期间自动发全服公告
curl -s -u "admin:$PW" -X POST "$API/shutdown" \
-H 'Content-Type: application/json' \
-d '{"waittime":60,"message":"Server is going down in 60 seconds"}'
踢人与封禁:认 userId,不认昵称
踢人和封禁的对象是玩家的 userId,不是游戏里显示的名字——名字随时能改,userId 不能。所以流程是两步:先 GET /players 拿到那个人的 userId,再把它交给 /kick 或 /ban:
# 先查
curl -s -u "admin:$PW" "$API/players"
# 再封
curl -s -u "admin:$PW" -X POST "$API/ban" \
-H 'Content-Type: application/json' \
-d '{"userid":"steam_7656119xxxxxxxxxx","message":"Banned for griefing"}'
跨平台服务器上这一点更要紧:Xbox 和 PS5 玩家没有 Steam ID,老式的 KickPlayer <SteamID> 指令对他们无效,而 userId 是所有平台统一的标识。
踢和封的区别:踢出只是断开这一次连接,对方随时能回来;封禁是把他挡在门外,直到 /unban。
托管上不用碰接口
空岛灵境 的《幻兽帕鲁》专用服务器把这一段收进了会员中心:我的服务器里那台服务器的在线玩家面板列出当前在线的人,捣乱的人直接点踢出或封禁,不用先查 userId,封过的人在已封禁里随时解封。管理密码由平台代管,接口本身不对公网开放;自动备份前也会先通过它强制存档一次。
用它做什么
接口真正的价值不在手敲 curl,在于把它接进脚本:
- 不丢存档的定时重启:公告、存档、关服、拉起串成一个 cron 任务,整套做法在内存泄漏与定时重启里。
- 备份前先落盘:拷存档之前先
POST /save,拿到的才是完整的一份(备份与回档)。 - 帧率监控:
/metrics定时拉一次,服务端帧率长时间掉到 20 以下就是该重启的信号。
常见问题
帕鲁服务器怎么踢人和封禁?
开启 REST API 并设好 AdminPassword,先用 /players 查到对方的 userId,再用它调 /kick 或 /ban。对象必须是 userId,昵称可以改所以不作数。
帕鲁的 RCON 还能用吗?
官方已宣布弃用并将在后续版本停止工作,而且它对中文昵称有截断问题。新开的服直接用 REST API,别在 RCON 上花时间。
REST API 端口能开给朋友帮忙管理吗?
不能对公网开。它的防护只有一个密码,却能关服、踢人、改世界。要远程管就走 SSH 隧道或加反向代理与 IP 白名单。
不停服怎么强制存档?
POST /save。它让服务端立刻把内存里的世界写盘,之后再拷存档目录。但它只是降低撞上写盘的概率,正式备份还是停服拷最稳。