Pterodactyl Panel 支援建立伺服器備份,不過在開始使用之前,你需要先設定備份要儲存在哪裡。
這裡有個小細節要注意:更換備份儲存方式之後,先前用舊儲存驅動程式建立的備份並不會消失,使用者仍然可以下載或刪除它們。舉例來說,如果你打算把備份從 S3 遷移回本機儲存,切換過去之後別急著刪掉 S3 的憑證設定,因為舊備份仍然要靠這組憑證才能存取。
Pterodactyl Panel 預設就是透過 Wings 把備份存在本機儲存空間,不需要額外設定。如果你想明確指定這個行為,也可以在 .env 檔案中加入以下設定:
# 設定你的 panel 透過 Wings 使用本機儲存空間來備份
APP_BACKUP_DRIVER=wings
有一點要提醒你:走本機儲存時,備份實際存放的路徑是由 Wings 決定的,而不是 Panel。你需要在 Wings 的 config.yml 中用以下設定金鑰指定目的地:
system:
backup_directory: /path/to/backup/storage
如果你想把備份存到遠端或雲端,AWS S3(或相容的儲存服務)是個好選擇。要啟用這個功能,只要在 .env 檔案或環境變數中設定以下選項即可:
# 設定你的 panel 使用 s3 來備份
APP_BACKUP_DRIVER=s3
# 實際使用 s3 所需的資訊
AWS_DEFAULT_REGION=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_BACKUPS_BUCKET=
AWS_ENDPOINT=
小提醒:有些服務商需要把 S3 URL 的格式從 bucket.domain.com 改成 domain.com/bucket 才能正常運作。遇到這種情況,只要在 .env 檔案加入 AWS_USE_PATH_STYLE_ENDPOINT=true 就能解決。
S3 備份底層是靠 S3 的分段上傳功能來運作的。多數情況下你完全不用理會這個機制,但少數情況下,你可能會想調整單一分段的大小,或是預簽章 URL 的有效期限。預設值分別是分段大小 5GB、預簽章 URL 有效期限 60 分鐘。
如果想自行調整,可以用 BACKUP_MAX_PART_SIZE 環境變數設定分段大小上限(單位是位元組),並用 BACKUP_PRESIGNED_URL_LIFESPAN 變數設定預簽章 URL 有效期限(單位是分鐘)。
舉個例子,以下 .env 設定會把分段大小設為 1GB,並將預簽章 URL 有效期限設為 120 分鐘:
BACKUP_MAX_PART_SIZE=1073741824
BACKUP_PRESIGNED_URL_LIFESPAN=120
如果需要指定 S3 的儲存類別,可以使用 AWS_BACKUPS_STORAGE_CLASS 環境變數,預設值是 STANDARD(也就是 S3 Standard)。
以下範例示範如何把儲存類別改成 STANDARD_IA(這裡僅作示範,實際要用哪個類別依你的需求決定):
# 這裡的 STANDARD_IA 只是範例。
AWS_BACKUPS_STORAGE_CLASS=STANDARD_IA
如果你把 Pterodactyl 架在反向代理後方(例如 Cloudflare Flexible SSL (opens new window),或是 NGINX、Apache、Caddy 這類反向代理),就需要對 Panel 做一點小修改才能正常運作。
這裡先解釋一下為什麼:Panel 預設並不知道自己是透過反向代理接收請求的,判斷連結產生方式時,它會誤以為自己執行在 HTTP 而不是 HTTPS。結果就是你可能會登入失敗,或是在瀏覽器主控台看到「載入不安全資源」的警告。
解法是編輯 Panel 根目錄中的 .env 檔案,加入 TRUSTED_PROXIES=*。不過這裡建議你不要偷懶用 *,而是明確填入實際會轉發流量的 IP 位址(可以用逗號分隔多個)。舉例來說,如果反向代理跟 Panel 是架在同一台機器上,通常只要 TRUSTED_PROXIES=127.0.0.1 就夠了。
如果你用的是 NGINX,記得在 location 設定區塊中加入以下內容,Pterodactyl 才能正確回應:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering off;
如果你是透過 Cloudflare Flexible SSL 使用反向代理,TRUSTED_PROXIES 就要填入 Cloudflare 的 IP 位址清單 (opens new window),設定範例如下:
TRUSTED_PROXIES=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22
Panel 會用隱形 reCAPTCHA 保護登入頁面,防止有心人士暴力破解密碼。簡單來說,只有在系統判斷某次登入嘗試可疑時,使用者才需要額外完成 reCAPTCHA 驗證。
系統預設會提供一組全域的 Site Key 與 Secret Key 可以直接用,但強烈建議你換成自己的金鑰,這樣安全性才有保障。
你可以到 reCAPTCHA 管理主控台 (opens new window)自行產生一組金鑰,接著在管理面板的 Advanced 分頁套用即可。
安全性警告
不建議停用 reCAPTCHA,它是提高帳戶被暴力破解難度的重要安全機制。
話雖如此,如果使用者反映登入太麻煩,或是你的 Panel 根本沒有對外網公開,停用 reCAPTCHA 也是合理的選擇。
要停用很簡單,到管理面板的 Advanced 分頁,把 reCAPTCHA 的 Status 改成 disabled 就完成了。
萬一你完全無法存取 Panel 介面,也可以直接修改資料庫來達成同樣效果:
# 若使用 MariaDB(v11.0.0+)
mariadb -u root -p
# 若使用 MySQL
mysql -u root -p
UPDATE panel.settings SET value = 'false' WHERE `key` = 'settings::recaptcha:enabled';
一般情況下,2FA 相關設定都應該透過 Panel 介面調整。以下步驟是留給萬一無法存取 Panel 時的備用手段。
# 若使用 MariaDB(v11.0.0+)
mariadb -u root -p
# 若使用 MySQL
mysql -u root -p
UPDATE panel.settings SET value = 0 WHERE `key` = 'settings::pterodactyl:auth:2fa_required';
在 /var/www/pterodactyl 目錄中執行以下命令即可:
php artisan p:user:disable2fa
這個版本的遙測服務跟官方不一樣
你現在裝的是 Pterodactyl Taiwan 繁體中文化版本。安裝這個版本之後,遙測資料預設會傳送到我們自己維護的服務(telemetry.pterodactyl.tw),而不是官方的 telemetry.pterodactyl.io。資料的蒐集內容跟運作方式與官方版本相同,差別只在於資料實際存放與由誰管理。
從 1.11 版開始,Panel 會蒐集自身與所有已連線節點的匿名指標資料。這項功能預設是開啟的,不過不論是手動安裝時執行的設定精靈,還是使用我們的官方安裝腳本,過程中都會明確詢問你是否要啟用遙測,並附上這個文件頁面的連結,讓你可以在做決定前先了解會蒐集哪些資料;你隨時也可以事後再關閉它。
先說清楚一件事:這些資料絕對不會被出售,也不會用於廣告。蒐集彙總統計資料的唯一目的,是幫助我們了解社群實際的使用概況、把軟體做得更好,必要時可能會在社群內公開彙總後的統計結果。
遙測系統的運作邏輯是這樣的:Panel 安裝時會先產生一組隨機的 UUIDv4 識別碼並存入資料庫,這樣一來,即使你用多個 Panel 執行個體做負載平衡,每個執行個體依然擁有各自唯一的識別碼。之後,系統會把這組識別碼連同相關遙測資料一起傳送到遠端伺服器。
值得注意的是,遙測資料每 24 小時才收集傳送一次,並不是持續蒐集,也不會事先存在本機,而是在真正要傳送前才即時收集。
目前所有遙測收集邏輯都寫在 Panel 的 TelemetryCollectionService (opens new window) 裡,負責彙整所有要送往遠端伺服器的資料,跟官方版本用的是同一套收集邏輯,差別只在於送出去的目標網址換成了我們自己的服務。
如果你想確認完整的收集內容,可以直接參考上面連結的原始碼,或是在伺服器上執行 php artisan p:telemetry 命令,就能看到實際會送出的資料內容。
截至 2022-12-12,收集的資料包括:
amd64、arm64 等)我們自己架設並維護 telemetry.pterodactyl.tw 這個服務來接收資料:Panel 把遙測資料 POST 過來之後,會直接存進我們自己管理的資料庫,並提供一個管理介面讓核心維護團隊查看社群整體的統計數字(例如版本分布、環境概況、節點規模等),不會有任何個人或伺服器內容存在裡面,也不會公開單一使用者可被識別的原始資料。這個管理介面僅限授權的核心團隊成員登入查看,且每個帳號的登入與活動時間都會被記錄。
收集這些資料,最主要是想幫助我們對這個繁體中文化版本的未來做出更好的判斷。舉例來說,如果我們想調整最低 PHP 版本需求,或是評估某個新功能值不值得投入時間翻譯與維護,這些資料能讓我們知道實際上會影響多少使用者,不用只靠猜的。節點的架構、核心版本、作業系統這些資訊尤其重要,能幫助我們判斷該優先支援哪些環境。
當然,也有一部分資料的價值單純只是讓我們(以及社群)更了解這套軟體在台灣被使用的實際情形:目前總共有多少個 Panel 在運作?加起來跑了多少台伺服器?大家常用的版本、資料庫、快取驅動又是哪些?這些都能幫助我們更清楚社群目前的樣貌。
如果你對我們蒐集的資料有任何疑問,歡迎到 Discord (opens new window) 找我們聊聊。我們的目標是盡可能保持透明,讓社群清楚知道我們在做什麼、為什麼要這麼做。
遙測預設就是啟用狀態。如果你之前手動關閉過,想重新打開的話,只要編輯 .env 檔案,把 PTERODACTYL_TELEMETRY_ENABLED 這一行刪掉,或是直接設為 true 即可:
PTERODACTYL_TELEMETRY_ENABLED=true
也可以改用 php artisan p:environment:setup 命令來啟用;如果是走非互動式設定,可以搭配 --telemetry 旗標。不論是互動式還是使用我們的官方安裝腳本,設定過程都會先提示這個文件頁面的連結,再詢問你要不要啟用。
想停用的話,編輯 .env 檔案,把 PTERODACTYL_TELEMETRY_ENABLED 設為 false 即可:
PTERODACTYL_TELEMETRY_ENABLED=false
同樣地,也可以使用 php artisan p:environment:setup 命令來停用;非互動式設定時可搭配 --telemetry=false 旗標。