WARNING
請勿編輯控制面板內建的服務或選項。每次更新時,我們可能會對這些內容進行細微變更,而您所做的修改也會因此遺失。
首先,您需要建立新的服務。在此情況下,名稱與描述的用途相當直觀。Folder Name 必須是未被其他服務使用的唯一名稱,且只能包含字母、數字、底線與連字號。這個名稱會作為 Daemon 儲存該服務選項的資料夾名稱。
預設啟動指令也是必填項目,但您可以針對個別選項進行變更。
建立服務後,您應該會在頁面右下角看到一個名為 New Egg 的按鈕,請按下該按鈕。

接著您會進入新的服務選項頁面,大部分的設定都會在此完成。首先,請從 Associated Nest 下拉式選單中選取先前建立的服務。

接著輸入用於描述此選項的名稱,本例使用 Widget。您也需要提供一個有效的 Docker 映像檔,以及要套用到使用此服務選項之伺服器的啟動指令(如有需要,也可以針對個別伺服器進行調整)。
Docker 映像檔必須經過專門設計,才能與 Pterodactyl 控制面板搭配使用。 詳細資訊請參閱建立 Docker 映像檔指南。
這可能是服務選項設定中最重要的步驟,因為此處會告訴 Daemon 如何執行所有操作。

您首先會看到的欄位是 Copy Settings From。預設選項為 None,這是正常且可接受的設定。此下拉式選單會在本文最後說明。
接著是 Stop Command。顧名思義,此欄位應填入用於安全停止該選項的指令。某些遊戲使用 stop 或 end。部分程式與遊戲沒有指定的停止指令,此時您可以輸入 ^C,讓 Daemon 傳送 SIGINT 以結束程序。
記錄現在完全由 Daemon 處理,並使用 Docker 記錄輸出伺服器的完整輸出內容。設定方式如下:
{}
下一個區塊是較複雜的 Configuration Files 設定。Daemon 會在啟動伺服器前處理此區塊,以確保所有必要的設定都已定義並正確設定。
{
"server.properties": {
"parser": "properties",
"find": {
"server-ip": "0.0.0.0",
"enable-query": "true",
"server-port": "{{server.build.default.port}}",
"query.port": "{{server.build.default.port}}"
}
}
}
在此範例中,我們告訴 Daemon 讀取 /home/container 中的 server.properties。在這個區塊內,我們定義了 parser,本例使用 properties。以下是有效的解析器 (opens new window):
file:此解析器會根據行首進行比對,而不是像其他五種解析器一樣比對特定屬性。請盡可能避免使用此解析器。yaml(支援 * 萬用字元)propertiesinijson(支援 * 萬用字元)xml定義解析器後,接著定義 find 區塊,用來告訴 Daemon 要尋找並替換哪些特定元素。在此範例中,我們提供了 server.properties 檔案中的四個項目,並將其替換為指定的值。您可以使用精確值,也可以指定 server.json 檔案中的特定伺服器設定。在本例中,我們將預設伺服器連接埠指定給 server-port 與 query.port。這些替換字串區分大小寫,且不應包含空格。
您可以在此列出多個檔案,Daemon 會在啟動伺服器前平行處理這些檔案。使用 yaml 或 json 時,您可以對元素進行更進階的搜尋。
{
"config.yml": {
"parser": "yaml",
"find": {
"listeners[0].query_enabled": true,
"listeners[0].query_port": "{{server.build.default.port}}",
"listeners[0].host": "0.0.0.0:{{server.build.default.port}}",
"servers.*.address": {
"127.0.0.1": "{{config.docker.interface}}",
"localhost": "{{config.docker.interface}}"
}
}
}
}
在此範例中,我們使用 yaml 解析器解析 config.yml。前面三個 find 項目只是為第一個監聽器區塊指定連接埠與 IP 位址。最後一個項目 servers.*.address 使用萬用字元比對,會比對 servers 區塊中的所有項目,然後尋找這些項目中的每個 address 區塊。
此檔案設定的進階功能之一,是可以針對單一比對行定義多個尋找與替換陳述式。在本例中,我們會尋找 127.0.0.1 或 localhost,並將其替換為設定檔中定義的 Docker 介面 {{config.docker.interface}}。
最後要設定的區塊,是使用此服務選項執行之伺服器的 Start Configuration。
{
"done": ")! For help, type "
}
在上述範例中,我們將 done 定義為完整的一行,或表示伺服器已完成啟動並準備好讓玩家加入的部分行內容。當 Daemon 偵測到此輸出時,就會將伺服器狀態從 STARTING 標記為 ON。
基本的服務選項設定到此完成。
如上所述,新增選項時會看到獨特的 Copy Settings From 下拉式選單。顧名思義,此功能可以讓您從其他選項複製已定義的設定。

在控制面板中,我們會利用此功能複製相似服務選項之間相同的設定,例如許多 Minecraft 選項。
以 Sponge (SpongeVanilla) 服務選項為例。
如您所見,它被設定為從 Vanilla Minecraft 複製設定。這表示所有留白的欄位都會繼承指定父選項的設定。接著,我們可以定義 Sponge 與 Vanilla 不同的特定 userInteraction 行,同時讓其他設定維持不變。
請注意,Copy Settings From 不支援巢狀複製。您只能從單一父選項複製設定,而且該父選項不得再從其他選項複製設定。
Egg 變數的一項重要功能,是可以定義特定變數,讓使用者及/或管理員調整不同設定,而無需讓使用者修改啟動指令。若要建立新的變數或編輯現有變數,請前往剛建立的服務選項,然後按下頁面頂端的 Variables 分頁。以下將以一個可建立的變數作為範例。

名稱與描述相當直觀,因此我們直接說明 Environment Variable 欄位。此欄位應使用由字母、數字與底線組成的名稱,並且應使用大寫字母。這會成為環境變數的名稱,可在啟動指令中以 {{WOOZLE_WOO}} 存取,在檔案修改設定中以 {{env.WOOZLE_WOO}} 存取,或在任何 Shell 指令碼中直接使用 ${WOOZLE_WOO}(此變數會透過環境傳入)。本範例也為此環境變數定義了預設值,但並非必要。
下一個區段是 Permissions,這是一個包含兩個選項的下拉式選單:Users Can View 與 Users Can Edit。
Users Can View:允許使用者在前端查看此欄位,以及該變數目前指定的值。他們也能在啟動指令中看到替換後的值。Users Can Edit:允許使用者編輯變數值,例如執行 Minecraft 時,用於指定 server.jar 檔案名稱的變數。請謹慎設定這些權限。即使您不指定任何權限,也不代表該值會真正隱藏。熟悉系統的使用者仍然可以取得其伺服器的環境變數。在大多數情況下,這項設定只是將變數從使用者介面中隱藏,然後在 Dockerfile 中使用該變數執行操作,因此使用者是否能看見該值通常並不重要。
最後,您需要定義一些輸入規則,以驗證變數值。在此範例中,我們使用 required|string|between:1,10,這表示欄位為 required(必填)、必須是 string(字串),且長度必須介於 1 到 10 個字元之間。您可以在 Laravel 網站上查看所有可用的驗證規則 (opens new window)。您也可以使用 regex: 規則標記進行以正規表示式為基礎的驗證。例如,required|regex:/^([\w\d._-]+)(\.jar)$/ (opens new window) 會要求此欄位必填,並比對由字母或數字(\w\d)、底線(_)、句點(.)與連字號(-)組成,且以 .jar 結尾的內容。
之後,這些變數會在管理伺服器啟動設定時,同時顯示於管理控制面板與前端介面。

預設變數一律可供所有 Egg 使用,無需另外建立。它們可以用於 Egg 啟動指令、安裝指令碼或設定檔解析器。
| 變數 | 描述 | 範例 |
|---|---|---|
| TZ | 時區 | Etc/UTC |
| STARTUP | Egg 的啟動指令 | java -Xms128M -XmxM -jar |
| SERVER_MEMORY | 伺服器可用的記憶體,單位為 MB | 512 |
| SERVER_IP | 伺服器的預設 IP 位址 | 127.0.0.1 |
| SERVER_PORT | 主要伺服器連接埠 | 27015 |
| P_SERVER_LOCATION | 伺服器的位置 | Example City |
| P_SERVER_UUID | 伺服器的 UUID | 539fdca8-4a08-4551-a8d2-8ee5475b50d9 |
| P_SERVER_ALLOCATION_LIMIT | 伺服器允許使用的配置數量上限 | 0 |