677 字
3 分鐘
如何同主機多開 Pterodacty Wings

前言#

有架過 Pterodactyl Panel (翼手龍面板) 的人,對Panel與Wings運作方式應該不陌生
但 Wings 默認只能由一個絕對位置進行伺服器檔案儲存,不能將伺服器的檔案分成兩個位置
前陣子架設時就發現了有這個問題,並上網查詢是否有人研究出來方法,但很可惜的 沒有。
因此我研究了一個方法可以讓兩個Wings同時運行在同一主機上且不互相干擾

CleanShot 2025-04-07 at 16.27.46

實現辦法#

官方教程是以新增 service 文件並以Systemctl指令進行控制
我們只需對 service 文件修改成 template unit (單元模板)
也就是讓本來單一的服務可以以模板的方式執行多個服務
用講的有點困難,我們直接開始操作,後面就懂了!

具體實現辦法#

這是官方提供的service檔案
我們只要對紅色框起來的地方下手並修改檔案名稱即可
CleanShot 2025-04-07 at 16.45.09 那要怎麼改呢?
因為wings預設會讀取 /etc/pterodactyl 底下的 config.yml 檔案
我們需要使用 --config= 這個啟動參數來指定我們的配置檔案,改成下方這樣就可以了
CleanShot 2025-04-07 at 16.49.38@2x 你會發現到裡面有個 %i 是做什麼用的,後面我會講,你先把它當作類似函數接受的參數就好 接下來我們來把service更名

mv /etc/systemd/system/wings.service /etc/systemd/system/[email protected]

更名完後輸入指令,重新載入systemctl守護程序

systemctl daemon-reload

接下來我們用配置文件
配置文件一樣照常使用翼手龍面板生成配置文件
記得要改 Daemon Server File Directory 還有節點端口去SFTP端口
CleanShot 2025-04-07 at 17.01.44

寫入文件時請注意要加一樣東西,在config與yml中間用點區隔
放上自定義Wings名稱,用於區別多個wings的服務
CleanShot 2025-04-07 at 16.58.54@2x

若都完成後使用以下指令加上你自定義的Wings名稱即可啟動多個wings

systemctl start wings@1
systemctl start wings@2

我來解釋為何service文件裡面要加 %i
service文件名稱凡有加上@的都會被判斷為 template unit
在使用systemctl時代號後打的任何東西都會被service文件內的 %i 作為參數抓取使用
當執行以下指令時

systemctl start wings@1

就可以看成service這樣註冊並執行了服務

ExecStart=/usr/local/bin/wings --config=/etc/pterodactyl/config.1.yml

結語#

這是我第一次寫教學文,寫的不好請見諒,希望能透過此文章幫助到大家
還有做完以上的步驟也別忘了註冊開機啟動

systemctl enable wings@1
systemctl enable wings@2