安裝並註冊 AeroNyx 節點

AeroNyx11 分鐘閱讀

使用儲存庫的 quickstart 指令在 Linux 伺服器上安裝開源的 AeroNyx 節點,以一次性 Nodeboard 代碼註冊,並驗證網路接納。另涵蓋中繼角色、免許可加入、TEE 部署與 AI 輔助安裝。

本指南說明如何在 Linux 伺服器上安裝開源的 AeroNyx 節點軟體,使用一次性代碼將其註冊到您的 Nodeboard 營運者帳戶,並確認網路已接納該節點。受支援的方式是儲存庫中的指令碼 deploy/node/aeronyx-node.sh quickstart,這與 Nodeboard 為您產生的指令相同。

營運節點之前,請先閱讀節點營運者政策。

開始之前

項目需求
作業系統具備 systemd 的 Linux。安裝程式會使用 apt-get(Debian、Ubuntu)、dnf 或 yum 安裝套件。
存取權限root shell。本指南中的每個指令都假設您已先執行 sudo -i。
TUN 裝置VPN 資料平面需要 /dev/net/tun 存在。
記憶體低於 2 GB 時,安裝程式會發出警告並繼續執行。節點會在伺服器上從原始碼編譯,因此 4 GB 以上較為穩妥。
磁碟可用空間低於 4 GB 時,安裝程式會發出警告並繼續執行。請為建置快取與升級流程保留的版本備份預留 20 GB 以上空間。
輸入連接埠51820/UDP(VPN 監聽器)與 8422/TCP(經簽署的探索與對等節點 API)。請在您的雲端防火牆中開放這些連接埠;安裝程式不會變更輸入防火牆規則。
僅限本機127.0.0.1:8421 是本機健康檢查與管理 API。請勿對外公開。

為何需要 root:儲存庫位於 /root/open/AeroNyx,安裝程式會以模式 700 寫入 /etc/aeronyx 與 /var/lib/aeronyx,並以模式 600 寫入 server.toml。讀取這些路徑的指令在其他使用者下會失敗,而 Git 也會拒絕從其他帳戶讀取 root 擁有的工作目錄(「dubious ownership」)。

quickstart 會做什麼

quickstart 會執行四個步驟,並在任何主機變更之前停下,等待您核准:

  1. 列印解析後的安裝計畫(唯讀)。
  2. 等待您輸入 INSTALL。直接按 Enter 會安全停止。
  3. 執行預檢、安裝套件與儲存庫固定版本的 Rust 工具鏈;若 /etc/aeronyx/server.toml 不存在則寫入該檔案(既有檔案會保留);設定 IP 轉送與 NAT;建置節點;安裝 aeronyx-server systemd 單元;以您的代碼註冊節點身分;啟動服務;並最多等待 120 秒取得網路接納。
  4. 列印 status 與 health --json 摘要。

接納等待期間會檢查:本機健康狀態回報 ok;後端傳回了新的政策(心跳往返正常);探索至少有一個已驗證的經簽署對等節點,且已完成一輪 gossip;若為公開節點,還會檢查節點已列入公開節點池。

步驟 1:建立註冊代碼

  1. 登入 Nodeboard 並開啟 Registration Codes。
  2. 選取 Generate Code。
  3. 請妥善保密此代碼。它會在 15 分鐘後到期,只能使用一次,並會將新節點綁定到建立該代碼的帳戶。

接著,Nodeboard 會顯示 quickstart 指令、逐步的預覽與安裝指令、狀態指令,以及 AI 助理提示詞。其 Install Progress 欄位會追蹤安裝程式的進度:not_started → planning → running → completed | failed。

後端會在安裝程式執行到註冊步驟時檢查代碼,而這一步位於建置之後。在小型伺服器上首次建置可能超過 15 分鐘。若註冊因代碼到期而失敗,請產生新代碼並再次執行 quickstart;第二次執行會重複使用建置快取。

步驟 2:取得或更新儲存庫

aeronyx-node.sh 不是系統指令,而是隨儲存庫提供。以下是 Nodeboard 使用的複製或更新指令:

bash
mkdir -p /root/open && cd /root/open
if [ -d AeroNyx/.git ]; then cd AeroNyx && git fetch origin main && git checkout main && git pull --ff-only origin main; else git clone https://github.com/AeroNyxNetwork/AeroNyx.git AeroNyx && cd AeroNyx; fi
git rev-parse HEAD

請一律向指令碼傳入 --repo-dir "$PWD"(或 --repo-dir /root/open/AeroNyx)。若未傳入,install、upgrade、health 與 status 會預設使用 /opt/aeronyx/AeroNyx。

步驟 3:執行 quickstart

執行 quickstart 時,請勿在指令列中帶入代碼。在終端機中執行時,它會以隱藏輸入的提示要求代碼,因此代碼不會回顯、不會存入 shell 歷史記錄,也不會作為處理程序引數傳遞:

bash
cd /root/open/AeroNyx
./deploy/node/aeronyx-node.sh quickstart --repo-dir "$PWD" --branch main --quick \
  --node-name "Example1" --region DE --public-vpn
  • --node-name 是顯示在 Nodeboard 與 VPN 節點清單中的名稱。
  • --region 是 ISO 3166-1 alpha-2 國家代碼。
  • --public-vpn 會將節點發布到公開 VPN 節點池。省略此選項即可讓節點保持私有。

在 Nodeboard registration code: 處貼上代碼並按 Enter。檢視計畫後,輸入 INSTALL。

關於 Nodeboard 產生的指令

Nodeboard 的 quickstart 指令會將代碼直接寫在指令中,例如 AERONYX_REGISTRATION_CODE='<code>' ./deploy/node/aeronyx-node.sh quickstart --repo-dir "$PWD" --branch main --quick。這樣可以運作,但代碼會被存入您的 shell 歷史記錄。若您使用此指令:

  • 請檢查 echo "$HISTCONTROL"。若其中包含 ignorespace 或 ignoreboth,在指令開頭加一個空格,Bash 就不會記錄它。
  • 否則,請事後以 history -d <number> 移除該筆記錄。

代碼只能使用一次,且會在 15 分鐘後到期,這限制了暴露範圍,但請勿將它貼到工單、螢幕截圖或聊天中。

非互動式安裝

用於自動化時,請先預覽,再透過標準輸入傳入代碼。read -rs 可讓代碼不顯示在螢幕上,也不進入歷史記錄:

bash
cd /root/open/AeroNyx
./deploy/node/aeronyx-node.sh plan --repo-dir "$PWD" --branch main
read -rs AERONYX_CODE
printf '%s\n' "$AERONYX_CODE" | ./deploy/node/aeronyx-node.sh install \
  --repo-dir "$PWD" --branch main --quick --registration-code-stdin \
  --node-name "Example1" --region DE --public-vpn
unset AERONYX_CODE

install --quick 不會要求輸入 INSTALL。請僅在檢視過計畫後使用。

步驟 4:驗證節點

bash
cd /root/open/AeroNyx
systemctl is-active aeronyx-server
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json

健康的新節點會顯示:

  • aeronyx-server 為 active,且 health 回報 fail=0
  • 安裝程式列印了 [OK] Node admission accepted,並帶有 health=ok、management=fresh 與 discovery=ready(公開節點還會有 public_pool=online)
  • status 列印 operator_status=ok 以及下一步
  • health --json 的最後一行 JSON 含有 "success":true;警告會出現在 checks 之下

在 Nodeboard 中,代碼會顯示 completed,節點會出現在 Nodes 之下,並顯示其名稱、地區、可見性與最新的心跳。節點詳細資料頁面會顯示 Capacity Decision,其值為 ready、watch、blocked 或 waiting。

日常檢查、日誌、升級與復原,請參閱執行與檢查 AeroNyx 節點。

選用:加入加密中繼

VPN 節點與加密中繼節點是兩個獨立的選擇。參與中繼包含三個部分:可連線的公開對等節點 API、盲 ChatRelay 儲存轉送角色,以及不作為出口的 OnionMiddle 角色。兩個角色在預設設定中皆為關閉。

  1. 確認 8422/TCP 可從網際網路連線。

  2. 編輯 /etc/aeronyx/server.toml(例如 nano /etc/aeronyx/server.toml),並在 [discovery] 區段中使用您的公開位址設定以下鍵:

    toml
    public_endpoint = "http://203.0.113.10:8422"
    public_discovery = true
    region = "DE"
    
  3. 驗證檔案:

    bash
    cd /root/open/AeroNyx
    ./target/release/aeronyx-server validate -c /etc/aeronyx/server.toml
    
  4. 在不重新啟動的情況下啟用 ChatRelay。此輔助指令會備份設定、要求您輸入 ENABLE CHATRELAY、進行驗證,並在驗證失敗時還原備份:

    bash
    ./deploy/node/aeronyx-node.sh chat-relay --repo-dir "$PWD" --enable-chat-relay
    
  5. 在一個受保護的步驟中啟用 OnionMiddle 並重新啟動。它會要求您輸入 ENABLE ONIONMIDDLE,若節點有作用中的工作階段,或無法回報工作階段數量,則會拒絕重新啟動:

    bash
    ./deploy/node/aeronyx-node.sh onion-middle --repo-dir "$PWD" --enable-onion-middle --restart
    

    若遭拒絕,請在 Nodeboard 的 Settings 中為該節點開啟 Maintenance Mode,等到作用中的工作階段降為零,再重新執行。請勿加上 --yes:它會略過確認步驟與作用中工作階段保護。

  6. 檢查中繼就緒狀態:

    bash
    ./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json
    

啟用角色不等於會被用於路由。只有在對等節點認為該節點可連線,且存在新的路徑證明證據之後,節點才會成為路由候選。請參閱節點探索與加密中繼。

不使用 Nodeboard 加入

join 會安裝節點,並將其經簽署的描述元提交給種子節點以取得 Stage-A 接納,不需要註冊代碼或 Nodeboard 帳戶:

bash
cd /root/open/AeroNyx
./deploy/node/aeronyx-node.sh join --repo-dir "$PWD" \
  --seed http://SEED_PUBLIC_IP:8422 \
  --public-endpoint http://YOUR_PUBLIC_IP:8422 --json
  • --seed 接受 1 到 8 個公開種子節點;請求會送往第一個。--public-endpoint 是您節點可連線的對等節點 API。兩者都必須是使用公開 IP 位址(而非主機名稱)的 http 或 https URL。
  • 它以 root 身分在具備 systemd 的 Linux 上執行,需要 Python 3.11 或更新版本,或是安裝了 tomli 套件的 python3。
  • 它會設定六個 [discovery] 值(enabled、advertise_self、public_discovery、gossip_enabled、public_endpoint、seed_endpoints),檔案其餘部分保持不變。
  • 若服務已以不同設定執行中,它會停止且不做任何變更。
  • --commit <40-hex SHA> 會固定確切的原始碼提交。--dry-run 會列印預計結果而不做變更。--check-only 會驗證已加入的節點,而不傳送任何內容。

成功的結果為 "admission_stage":"stage_a_candidate",並帶有 "route_authority":false 與 "route_ready":false。Stage-A 接納表示種子節點接受了您的描述元。這並不會讓節點可被路由、列入 Nodeboard 或 VPN 節點池,或使其具備獲得報酬的資格。除非種子節點使用 HTTPS,否則種子節點的回應是透過純 HTTP 傳輸,因此它不是密碼學回執。

使用 Docker 進行 TEE 部署

儲存庫也包含一套容器部署,供執行 dstack 的機密虛擬機器(Phala Cloud 或自行託管的 Intel TDX)使用:deploy/node/Dockerfile、deploy/node/compose.tee.yaml、deploy/node/server.tee.toml 與 deploy/node/tee-entrypoint.sh。

此角色不是 VPN 節點:

  • vpn.enabled = false:沒有 TUN 裝置、沒有 DNS 代理、沒有 MemChain。容器會捨棄所有 Linux capabilities,並以 no-new-privileges 執行。
  • 它執行洋蔥中繼(advertise_onion_middle = true)、ChatRelay 與匿名信箱,且只公開 8422。
  • 節點身分來自 dstack 金鑰管理服務([server_key] source = "dstack")。不存在金鑰檔案。
  • 固定的種子。 server.tee.toml 透過 discovery.pinned_seeds 固定了四個種子節點。沒有營運者快照的節點沒有其他信任錨點,每個固定項目都只透過身分綁定 TLS 連線。請保留或替換這些固定項目;參閱 節點探索與加密多跳中繼。

部署方式:

  1. 從 ghcr.io/aeronyxnetwork/aeronyx-node 選擇一個發行版映像檔。CI 會從 node-v* 標籤建置 linux/amd64 映像檔,並附上建置來源證明。找出其摘要值,例如使用 docker buildx imagetools inspect ghcr.io/aeronyxnetwork/aeronyx-node:<tag>。
  2. 在 compose.tee.yaml 中,將 IMAGE_DIGEST 替換為該摘要值。請一律以摘要值固定,而非以標籤固定;在 dstack 虛擬機器中,compose 檔案是受量測部署的一部分。
  3. 將 AERONYX_PUBLIC_ENDPOINT 設為 dstack 閘道指派給連接埠 8422 的 https:// 來源。進入點會拒絕任何其他協定。
  4. 可選擇設定 AERONYX_REGION(預設為 tee)。
  5. 僅在首次啟動時,以加密機密的形式提供 AERONYX_REGISTRATION_CODE。進入點會將其以管道傳給 aeronyx-server register --code-stdin。當 /var/lib/aeronyx 磁碟區中已存在 node_info.json 後,就不再需要此代碼。

容器不包含 aeronyx-node.sh。請透過 Nodeboard 及其公開探索 API 監控 TEE 節點。

使用 AI 程式設計助理安裝

Claude Code、Codex、OpenClaw 或 Hermes 等終端機助理都可以執行此流程。Nodeboard 會在每個代碼旁提供現成的 AI assistant prompt。無論您使用哪一種助理,以下規則都適用。

人類營運者:

  • 提供伺服器,並核准每一項主機變更
  • 在閱讀計畫後親自輸入 INSTALL
  • 妥善保密註冊代碼。Nodeboard 的 AI 提示詞包含代碼,因此貼上提示詞就等於將代碼分享給該助理的供應商。若要避免這種情況,請讓助理更新儲存庫並執行不含代碼的 plan,接著由您自己執行 quickstart,並在隱藏輸入提示處輸入代碼。之後再交回給助理進行驗證。

助理必須:

  • 只使用來自 github.com/AeroNyxNetwork/AeroNyx 的 deploy/node/aeronyx-node.sh,並傳入 --repo-dir
  • 只使用指令碼有記載的選項(./deploy/node/aeronyx-node.sh help)。未知選項會失敗;例如,--api-base 會使安裝程式以 Unknown option 停止。
  • 在任何主機變更之前顯示或摘要計畫,並等待核准
  • 在安裝或升級後執行 status,回報 operator_status、operator_title、operator_detail 與 operator_next_step,需要更多細節時再執行 health --json
  • 將警告如實回報為警告,且不得僅憑處理程序正在執行就宣告成功
  • 除非您核准在維護時段內重新啟動,否則優先使用 upgrade --no-restart
  • 未經您明確核准,絕不使用 --force 或 --yes,也絕不重新啟動有作用中工作階段的節點
  • 絕不列印註冊代碼、私密金鑰、API 機密、用戶端公開 IP、目的地、DNS 內容、封包酬載或聊天明文

完成的定義:

  • 儲存庫位於 main,並已回報提交
  • quickstart 或 install 以 Node admission accepted 結束
  • status 回報 operator_status=ok,或每一項警告都已說明
  • health --json 回報 "success":true
  • Nodeboard 顯示該節點,並帶有最新的心跳與 Capacity Decision
  • Alerts / Events → Incident Closure 中沒有該節點未審查的 open 項目
  • 您知道該節點在 Nodeboard 中的詳細資料頁面

已註冊節點會回報什麼

本機診斷(status、health、relay-probe)只會列印彙總值:服務狀態、容量、封包計數器、探索就緒狀態與證明結果。

已註冊的 VPN 節點也會向 AeroNyx 後端回報每個 VPN 工作階段:工作階段 ID、用戶端的金鑰(client_wallet)、通道的虛擬 IP、位元組數、時間資訊與連線品質。它不會回報用戶端公開 IP、目的地、DNS 內容或封包酬載。營運者可在 Nodeboard 中查看自己節點的這些工作階段記錄;請參閱 Nodeboard 營運者主控台指南。與任何 VPN 伺服器一樣,節點本身會在出口處以明文處理用戶端流量,因此營運者必須遵守節點營運者政策。

相關頁面

<!-- faq:start -->

常見問題

aeronyx-node.sh 從哪裡來?

它是 AeroNyx 節點儲存庫中位於 deploy/node/aeronyx-node.sh 的檔案,不是系統指令。請將 https://github.com/AeroNyxNetwork/AeroNyx 複製或更新到 /root/open/AeroNyx,並在該處以 --repo-dir "$PWD" 執行。

如何讓註冊代碼不進入 shell 歷史記錄?

執行 quickstart 時不帶代碼,並在隱藏輸入的 Nodeboard registration code: 提示處輸入。用於指令碼時,請以 read -rs 讀取代碼,並以管道傳給 install --quick --registration-code-stdin。

為何指令碼會去 /opt/aeronyx/AeroNyx 尋找?

那是指令碼為 --repo-dir 內建的預設值,而 Nodeboard 會複製到 /root/open/AeroNyx。請在每個指令中傳入 --repo-dir,讓 install、health、status 與 upgrade 都使用服務實際執行所在的工作目錄。

若代碼在安裝期間到期,會發生什麼事?

註冊步驟會失敗,安裝程式會在啟動服務之前停止。代碼是在建置之後才檢查,因此請產生新代碼並再次執行 quickstart;第二次執行會重複使用建置快取。

執行節點一定需要 Nodeboard 嗎?

不需要,join 會安裝節點並將其提交以取得 Stage-A 接納,不需要註冊代碼。透過 join 加入的節點不可被路由、不會列入 Nodeboard 或 VPN 節點池,也不具備獲得報酬的資格。

可以在機密虛擬機器中執行節點嗎?

可以,儲存庫包含一套適用於 dstack 機密虛擬機器的 Docker 部署,可執行洋蔥中繼、ChatRelay 與匿名信箱。它不提供 VPN 服務,其身分取自 dstack 金鑰管理服務。

<!-- faq:end -->