KeepWorlds

幻獸帕魯伺服器管理 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 請求本文:

端點方法做什麼
/infoGET伺服器名、版本
/playersGET線上玩家清單,含每個人的 userId
/metricsGETFPS、線上人數、運行時長這類指標
/settingsGET目前生效的世界設定
/announcePOST全伺服器公告
/kickPOST踢人
/banPOST封鎖
/unbanPOST解除封鎖
/savePOST立即把世界寫入硬碟
/shutdownPOST倒數後優雅關閉
/stopPOST立即強制停止

幾個最常用的,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,封過的人在已封鎖裡隨時解除;自動備份前會先透過介面強制存檔一次;管理密碼由平台代管,介面本身也不對公網開放。

其他語言版本

不想自己維護?

選好遊戲與方案就能開伺服器,整機獨享,備份、遊戲更新與期限提醒都由我們盯著。

看看支援的遊戲