# 從 0.4.X 升級至 0.5.X

此軟體已停止維護

本文件適用於已停止維護的軟體,該軟體不再取得任何安全性更新,也不再獲得社群支援。本文件僅因歷史原因而繼續保留。

在正式環境中,你應安裝並使用 Wings 以及 Pterodactyl 控制面板 1.0

危險

在開始之前先提醒一下:這次升級流程會需要透過 Daemon 執行的所有伺服器暫時離線,因為系統得重新整理資料、重新建置伺服器容器。建議你提前安排好維護時間,再著手進行。

另外,你也需要先把控制面板更新至 0.7.X 系列,才能繼續完成後面的升級流程。

# Docker 調整

先說一個小插曲:過去我們曾在安裝說明中提供快速安裝 Docker 的指令碼,但很遺憾,我們沒有深入檢查該指令碼的內容,因而忽略了它其實會啟用 Docker 的 Edge 測試版套件來源。所以這裡要請你參閱 Docker 官方文件,把套件來源切換回穩定版本通道。

以下列出幾個常見支援系統的快速連結,方便你直接查閱 Docker 官方文件,了解如何在伺服器上安裝 Docker CE:

# 下載檔案

Docker 確認沒問題後,若要從 v0.4.X 升級,請先切換到安裝 Daemon 的目錄;如果你當初是依照安裝指南操作的,Daemon 很可能位於 /srv/daemon。接著使用以下指令下載並解壓縮套件:

curl -L https://github.com/pterodactyl/daemon/releases/download/v0.5.7/daemon.tar.gz | tar --strip-components=1 -xzv

解壓完成後,再執行以下指令,更新 Daemon 的核心相依套件:

npm update --only=production

# 清理 SFTP

接下來要處理 SFTP 部分。這個版本的 Daemon 已經內建了 SFTP 子系統,不再需要特殊的 Docker 容器,也不會再遇到過去那些令人困惑的檔案權限問題。好消息是,Daemon 大多可以自行處理相關的內部變更,你只需要動手移除舊的 SFTP Docker 容器就好。

請執行以下指令;如果你使用的不是預設連接埠,記得把 2022 換成你實際使用的連接埠:

docker rmi -f quay.io/pterodactyl/scrappy
sudo kill $( sudo lsof -i:2022 -t )

清完舊容器後,接著要啟動 Daemon,讓系統自動建立新的系統使用者。請在 Daemon 目錄中執行 sudo npm start。這裡建議以前景模式執行,方便你即時監控進度、確認過程中沒有出錯。等 Daemon 完成啟動並正常運作後,就可以用 CTRL+C 將它停止。

小提醒:如果你因為某些原因,需要把使用者名稱設定成 pterodactyl 以外的名稱,可以在啟動 Daemon 之前,先修改 core.json 中的 docker.container.username 項目。不過老實說,99.9% 的使用者其實都不需要更動這個使用者名稱。

# 檔案遷移

接下來要進入升級過程中最耗時的部分:資料遷移。好消息是,從 v0.4.X 升級至 v0.5.X 只需要執行一次資料遷移就夠了。

進行遷移前,你必須先停止所有伺服器。這是因為所有伺服器的容器都需要重新建置;而由於還得把一些新資料更新進伺服器設定裡,這部分工作會透過控制面板中的主控台指令來完成,我們會在所有資料遷移都跑完之後再執行那道指令。

若要執行遷移,請在 Daemon 目錄中執行以下指令,並依照畫面提示操作。這裡要有點耐心,如果資料量比較大,這個步驟可能會需要幾分鐘時間。

sudo npm run migrate
docker system prune

# 重新建置容器

資料遷移跑完後,還有最後一步:到控制面板上執行指令,更新這些伺服器的所有設定。首先,請確認 Daemon 是以前景模式啟動的(sudo npm start)。接著,切換到控制面板目錄(注意,不是 Daemon 目錄),執行以下指令:

php artisan p:server:rebuild --node=###

記得把上方的 ### 替換為你正在更新之節點的 ID。這道指令會把所有伺服器標記為需要重新建置,並把最新資訊寫入它們的設定檔。完成後,請先停止 Daemon,執行以下指令,再重新啟動一次 Daemon。如果你想一次更新所有正在執行的 Daemon,只要移除 --node 參數即可。

最後,再以前景模式啟動一次 Daemon,確認整個過程沒有任何錯誤。確認沒問題後,停止 Daemon,並改用以下服務指令重新啟動:

sudo systemctl start wings

謝謝!

到這裡就全部完成了!感謝你的耐心。這次更新修正了先前軟體實作中的不少問題,也順便為日後遷移至新版 Daemon 做好了資料準備,而新版 Daemon 目前仍在開發中,敬請期待。