幻獸帕魯伺服器管理 REST API:踢人封鎖、公告與遠端存檔
《幻獸帕魯》伺服器管理介面已從 RCON 換成 REST API,踢人、封鎖、公告、強制存檔、關伺服器都走它。怎麼開、怎麼認證、常用端點怎麼呼叫,以及 8212 埠為什麼絕不能開到公網。
專用伺服器開起來之後,房主遲早要做這幾件事:踢掉一個搗亂的人、在重啟前給全伺服器發條公告、不停機強制存一次檔。《幻獸帕魯》給這些事提供的官方介面是 REST API,舊教學裡的 RCON 已被官方停止支援並公告將不再運作,還在教你設定 RCON 的內容可以直接跳過。
這篇講清楚介面怎麼開、怎麼呼叫、能做什麼、以及一條絕對不能破的安全底線。伺服器本身怎麼架在開服教學裡。
為什麼不再是 RCON
RCON 在帕魯上有三個實際問題,官方停用它不是心血來潮:
- 多位元組字元會被截斷。玩家暱稱裡有中文、日文、韓文時,RCON 指令經常判定失敗或者日誌亂碼,對台灣的伺服器來說這幾乎是必然撞上的。
- 認證太弱。明文密碼走網路,埠一旦暴露就是在公網上裸奔
AdminPassword。 - 回傳的是一段字串。想拿線上人數、FPS 做監控,得自己從文字裡撈。
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 | FPS、線上人數、運行時長這類指標 |
/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。
用它做什麼
介面真正的價值不在手敲 curl,在於把它接進腳本:
- 不掉存檔的定時重啟:廣播、存檔、關閉、拉起串成一個 cron 工作,整套做法在記憶體洩漏與定時重啟裡。
- 備份前先寫入:複製存檔之前先
POST /save,拿到的才是完整的一份(備份與還原)。 - FPS 監控:
/metrics定時拉一次,伺服器端 FPS 長時間掉到 20 以下就是該重啟的訊號。
常見問題
幻獸帕魯伺服器怎麼踢人和封鎖?
開啟 REST API 並設好 AdminPassword,先用 /players 查到對方的 userId,再用它呼叫 /kick 或 /ban。對象必須是 userId,暱稱可以改所以不作數。
幻獸帕魯的 RCON 還能用嗎?
官方已公告停止支援並將在後續版本停止運作,而且它對中文暱稱有截斷問題。新開的伺服器直接用 REST API,別在 RCON 上花時間。
REST API 埠能開給朋友幫忙管理嗎?
不能對公網開。它的防護只有一個密碼,卻能關伺服器、踢人、改世界。要遠端管就走 SSH 隧道或加反向代理與 IP 白名單。
不停機怎麼強制存檔?
POST /save。它讓伺服器端立刻把記憶體裡的世界寫入硬碟,之後再複製存檔目錄。但它只是降低撞上寫入的機率,正式備份還是停機複製最穩。
託管上不用碰介面
上面每一步在託管的伺服器上都變成了會員中心裡的一個按鈕。KeepWorlds 的《幻獸帕魯》專用伺服器在我的伺服器的線上玩家面板裡列出目前在線的人,搗亂的人直接點踢出或封鎖,不用查 userId,封過的人在已封鎖裡隨時解除;自動備份前會先透過介面強制存檔一次;管理密碼由平台代管,介面本身也不對公網開放。
其他語言版本
不想自己維護?
選好遊戲與方案就能開伺服器,整機獨享,備份、遊戲更新與期限提醒都由我們盯著。
看看支援的遊戲