安裝並註冊 AeroNyx 節點
使用儲存庫的 quickstart 指令在 Linux 伺服器上安裝開源的 AeroNyx 節點,以一次性 Nodeboard 代碼註冊,並驗證網路接納。另涵蓋中繼角色、免許可加入、TEE 部署與 AI 輔助安裝。
本指南說明如何在 Linux 伺服器上安裝開源的 AeroNyx 節點軟體,使用一次性代碼將其註冊到您的 Nodeboard 營運者帳戶,並確認網路已接納該節點。受支援的方式是儲存庫中的指令碼 deploy/node/aeronyx-node.sh quickstart,這與 Nodeboard 為您產生的指令相同。
- 營運者主控台:app.aeronyx.network
- 原始碼(AGPL-3.0):github.com/AeroNyxNetwork/AeroNyx
營運節點之前,請先閱讀節點營運者政策。
開始之前
| 項目 | 需求 |
|---|---|
| 作業系統 | 具備 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 會執行四個步驟,並在任何主機變更之前停下,等待您核准:
- 列印解析後的安裝計畫(唯讀)。
- 等待您輸入
INSTALL。直接按 Enter 會安全停止。 - 執行預檢、安裝套件與儲存庫固定版本的 Rust 工具鏈;若
/etc/aeronyx/server.toml不存在則寫入該檔案(既有檔案會保留);設定 IP 轉送與 NAT;建置節點;安裝aeronyx-serversystemd 單元;以您的代碼註冊節點身分;啟動服務;並最多等待 120 秒取得網路接納。 - 列印
status與health --json摘要。
接納等待期間會檢查:本機健康狀態回報 ok;後端傳回了新的政策(心跳往返正常);探索至少有一個已驗證的經簽署對等節點,且已完成一輪 gossip;若為公開節點,還會檢查節點已列入公開節點池。
步驟 1:建立註冊代碼
- 登入 Nodeboard 並開啟 Registration Codes。
- 選取 Generate Code。
- 請妥善保密此代碼。它會在 15 分鐘後到期,只能使用一次,並會將新節點綁定到建立該代碼的帳戶。
接著,Nodeboard 會顯示 quickstart 指令、逐步的預覽與安裝指令、狀態指令,以及 AI 助理提示詞。其 Install Progress 欄位會追蹤安裝程式的進度:not_started → planning → running → completed | failed。
後端會在安裝程式執行到註冊步驟時檢查代碼,而這一步位於建置之後。在小型伺服器上首次建置可能超過 15 分鐘。若註冊因代碼到期而失敗,請產生新代碼並再次執行 quickstart;第二次執行會重複使用建置快取。
步驟 2:取得或更新儲存庫
aeronyx-node.sh 不是系統指令,而是隨儲存庫提供。以下是 Nodeboard 使用的複製或更新指令:
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 歷史記錄,也不會作為處理程序引數傳遞:
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 可讓代碼不顯示在螢幕上,也不進入歷史記錄:
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:驗證節點
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 角色。兩個角色在預設設定中皆為關閉。
-
確認
8422/TCP可從網際網路連線。 -
編輯
/etc/aeronyx/server.toml(例如nano /etc/aeronyx/server.toml),並在[discovery]區段中使用您的公開位址設定以下鍵:tomlpublic_endpoint = "http://203.0.113.10:8422" public_discovery = true region = "DE" -
驗證檔案:
bashcd /root/open/AeroNyx ./target/release/aeronyx-server validate -c /etc/aeronyx/server.toml -
在不重新啟動的情況下啟用 ChatRelay。此輔助指令會備份設定、要求您輸入
ENABLE CHATRELAY、進行驗證,並在驗證失敗時還原備份:bash./deploy/node/aeronyx-node.sh chat-relay --repo-dir "$PWD" --enable-chat-relay -
在一個受保護的步驟中啟用 OnionMiddle 並重新啟動。它會要求您輸入
ENABLE ONIONMIDDLE,若節點有作用中的工作階段,或無法回報工作階段數量,則會拒絕重新啟動:bash./deploy/node/aeronyx-node.sh onion-middle --repo-dir "$PWD" --enable-onion-middle --restart若遭拒絕,請在 Nodeboard 的 Settings 中為該節點開啟 Maintenance Mode,等到作用中的工作階段降為零,再重新執行。請勿加上
--yes:它會略過確認步驟與作用中工作階段保護。 -
檢查中繼就緒狀態:
bash./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json
啟用角色不等於會被用於路由。只有在對等節點認為該節點可連線,且存在新的路徑證明證據之後,節點才會成為路由候選。請參閱節點探索與加密中繼。
不使用 Nodeboard 加入
join 會安裝節點,並將其經簽署的描述元提交給種子節點以取得 Stage-A 接納,不需要註冊代碼或 Nodeboard 帳戶:
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或httpsURL。- 它以 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 連線。請保留或替換這些固定項目;參閱 節點探索與加密多跳中繼。
部署方式:
- 從
ghcr.io/aeronyxnetwork/aeronyx-node選擇一個發行版映像檔。CI 會從node-v*標籤建置linux/amd64映像檔,並附上建置來源證明。找出其摘要值,例如使用docker buildx imagetools inspect ghcr.io/aeronyxnetwork/aeronyx-node:<tag>。 - 在
compose.tee.yaml中,將IMAGE_DIGEST替換為該摘要值。請一律以摘要值固定,而非以標籤固定;在 dstack 虛擬機器中,compose 檔案是受量測部署的一部分。 - 將
AERONYX_PUBLIC_ENDPOINT設為 dstack 閘道指派給連接埠 8422 的https://來源。進入點會拒絕任何其他協定。 - 可選擇設定
AERONYX_REGION(預設為tee)。 - 僅在首次啟動時,以加密機密的形式提供
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 -->