Установка и регистрация узла AeroNyx
Установите узел AeroNyx с открытым исходным кодом на сервер Linux командой quickstart из репозитория, зарегистрируйте его одноразовым кодом Nodeboard и проверьте допуск в сеть. Также рассмотрены роли ретрансляции, подключение без разрешения, развёртывание в TEE и установка с помощью ИИ.
В этом руководстве описано, как установить программное обеспечение узла AeroNyx с открытым исходным кодом на сервер Linux, зарегистрировать узел в вашей учётной записи оператора Nodeboard с помощью одноразового кода и проверить, что сеть приняла его. Поддерживаемый способ — скрипт из репозитория deploy/node/aeronyx-node.sh quickstart; это та же команда, которую генерирует для вас Nodeboard.
- Консоль оператора: app.aeronyx.network
- Исходный код (AGPL-3.0): github.com/AeroNyxNetwork/AeroNyx
Прежде чем эксплуатировать узел, ознакомьтесь с Политикой для операторов узлов.
Перед началом
| Параметр | Требование |
|---|---|
| Операционная система | Linux с systemd. Установщик устанавливает пакеты с помощью apt-get (Debian, Ubuntu), dnf или yum. |
| Доступ | Оболочка root. Все команды в этом руководстве предполагают, что сначала выполнена sudo -i. |
| Устройство TUN | Для плоскости данных VPN должно существовать устройство /dev/net/tun. |
| Память | Если памяти меньше 2 ГБ, установщик выдаёт предупреждение и продолжает работу. Узел компилируется из исходного кода прямо на сервере, поэтому надёжнее иметь 4 ГБ или больше. |
| Диск | Если свободного места меньше 4 ГБ, установщик выдаёт предупреждение и продолжает работу. Заложите 20 ГБ или больше под кэш сборки и резервные копии релизов, которые сохраняет процедура обновления. |
| Входящие порты | 51820/UDP (слушатель VPN) и 8422/TCP (подписанное обнаружение и API пиров). Откройте их в облачном межсетевом экране; установщик не изменяет правила входящего трафика. |
| Только локально | 127.0.0.1:8421 — локальный API состояния и управления. Не открывайте его наружу. |
Почему root: репозиторий находится в /root/open/AeroNyx, установщик создаёт /etc/aeronyx и /var/lib/aeronyx с правами 700, а server.toml — с правами 600. Команды, читающие эти пути, завершаются ошибкой для других пользователей, а Git отказывается читать принадлежащую root рабочую копию из другой учётной записи («dubious ownership»).
Что делает quickstart
quickstart выполняет четыре шага и до вашего подтверждения не вносит никаких изменений в систему:
- Выводит итоговый план установки (только чтение).
- Ждёт, пока вы введёте
INSTALL. Нажатие Enter безопасно прерывает работу. - Выполняет предварительные проверки, устанавливает пакеты и закреплённый в репозитории набор инструментов Rust, создаёт
/etc/aeronyx/server.toml, если его нет (существующий файл сохраняется), настраивает пересылку IP и NAT, собирает узел, устанавливает модуль systemdaeronyx-server, регистрирует идентичность узла с вашим кодом, запускает службу и до 120 секунд ожидает допуска в сеть. - Выводит
statusи сводкуhealth --json.
Ожидание допуска проверяет, что локальная проверка состояния сообщает ok, что бэкенд вернул свежую политику (цикл обмена heartbeat работает), что у обнаружения есть хотя бы один проверенный подписанный пир и завершён раунд gossip, а для публичных узлов — что узел числится в публичном пуле.
Шаг 1: создайте регистрационный код
- Войдите в Nodeboard и откройте Registration Codes.
- Выберите Generate Code.
- Никому не сообщайте код. Он истекает через 15 минут, действует один раз и привязывает новый узел к учётной записи, которая его создала.
После этого Nodeboard показывает команду quickstart, команды пошагового просмотра плана и установки, команду проверки статуса и подсказку для ИИ-ассистента. Столбец 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, не указывая код в командной строке. При запуске в терминале скрипт запрашивает код через скрытое приглашение, поэтому код не отображается на экране, не сохраняется в истории оболочки и не передаётся как аргумент процесса:
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
Команда quickstart из Nodeboard содержит код прямо в строке, например AERONYX_REGISTRATION_CODE='<code>' ./deploy/node/aeronyx-node.sh quickstart --repo-dir "$PWD" --branch main --quick. Это работает, но код сохраняется в истории оболочки. Если вы используете эту команду:
- Проверьте
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и следующий шаг- последняя строка JSON в выводе
health --jsonсодержит"success":true; предупреждения отображаются вchecks
В Nodeboard код получает статус completed, а узел появляется в разделе Nodes со своим именем, регионом, видимостью и свежим heartbeat. На странице сведений об узле отображается 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Если команда отказывается, включите для узла Maintenance Mode в разделе Settings в Nodeboard, дождитесь, пока число активных сеансов станет нулевым, и запустите её снова. Не добавляйте
--yes: этот флаг пропускает подтверждение и защиту от активных сеансов. -
Проверьте готовность к ретрансляции:
bash./deploy/node/aeronyx-node.sh relay-probe --repo-dir "$PWD" --two-hop --json
Включение роли не означает, что узел будет использоваться в маршрутах. Узел становится кандидатом для маршрутов только после того, как пиры видят его доступным и появляются свежие доказательства проверки пути. См. Обнаружение узлов и зашифрованная ретрансляция.
Подключение без Nodeboard
join устанавливает узел и отправляет его подписанный дескриптор на seed-узел для допуска 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 публичных seed-узлов; запрос отправляется первому из них.--public-endpoint— доступный API пиров вашего узла. Оба значения должны быть URL-адресамиhttpилиhttpsс публичным IP-адресом, а не именем хоста.- Команда выполняется от root в Linux с systemd и требует Python 3.11 или новее либо
python3с пакетомtomli. - Она задаёт шесть значений в
[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 означает, что seed-узел принял ваш дескриптор. Он не делает узел пригодным для маршрутизации, не добавляет его в Nodeboard или пул VPN и не даёт права на оплату. Ответ seed-узла передаётся по обычному HTTP, если только seed-узел не использует HTTPS, поэтому он не является криптографическим подтверждением.
Развёртывание в TEE с помощью Docker
Репозиторий также содержит контейнерное развёртывание для конфиденциальных виртуальных машин под управлением 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. Контейнер запускается со сброшенными возможностями (capabilities) Linux и с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 собирает образыlinux/amd64из теговnode-v*и прикладывает аттестацию происхождения сборки. Найдите дайджест, например, с помощьюdocker buildx imagetools inspect ghcr.io/aeronyxnetwork/aeronyx-node:<tag>. - В
compose.tee.yamlзаменитеIMAGE_DIGESTэтим дайджестом. Всегда закрепляйте образ по дайджесту, а не по тегу; в виртуальной машине dstack файл compose входит в измеряемое развёртывание. - Задайте в
AERONYX_PUBLIC_ENDPOINToriginhttps://, который шлюз dstack назначает порту 8422. Точка входа отклоняет любую другую схему. - При необходимости задайте
AERONYX_REGION(по умолчаниюtee). - Только для первого запуска передайте
AERONYX_REGISTRATION_CODEкак зашифрованный секрет. Точка входа передаёт его по конвейеру вaeronyx-server register --code-stdin. После того как в томе/var/lib/aeronyxпоявитсяnode_info.json, код больше не нужен.
Контейнер не содержит aeronyx-node.sh. Отслеживайте узел TEE в Nodeboard и через его публичный API обнаружения.
Установка с помощью ИИ-ассистента для программирования
Эту процедуру могут выполнять терминальные ассистенты, такие как Claude Code, Codex, OpenClaw или Hermes. Рядом с каждым кодом Nodeboard предлагает готовую подсказку AI assistant prompt. Следующие правила действуют независимо от того, какой ассистент вы используете.
Оператор-человек:
- предоставляет сервер и подтверждает каждое изменение системы
- лично вводит
INSTALLпосле прочтения плана - хранит регистрационный код в тайне. Подсказка для ИИ из Nodeboard содержит код, поэтому, вставляя её, вы передаёте код поставщику ассистента. Чтобы этого избежать, позвольте ассистенту обновить репозиторий и выполнить
planбез кода, затем запуститеquickstartсами и введите код в скрытом приглашении. Для проверки снова передайте работу ассистенту.
Ассистент обязан:
- использовать только
deploy/node/aeronyx-node.shизgithub.com/AeroNyxNetwork/AeroNyxи передавать--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 показывает узел со свежим heartbeat и Capacity Decision
- в Alerts / Events → Incident Closure нет непросмотренных элементов
openдля этого узла - вы знаете, где в Nodeboard находится страница сведений об узле
Что сообщает зарегистрированный узел
Локальная диагностика (status, health, relay-probe) выводит только агрегированные значения: состояние службы, ёмкость, счётчики пакетов, готовность обнаружения и результаты проверок доказательств.
Зарегистрированный узел VPN также сообщает бэкенду AeroNyx о каждом сеансе VPN: идентификатор сеанса, ключ клиента (client_wallet), виртуальный IP-адрес туннеля, количество байтов, временные показатели и качество соединения. Он не сообщает публичные IP-адреса клиентов, адреса назначения, содержимое DNS или полезную нагрузку пакетов. Операторы могут видеть эти записи о сеансах для своих узлов в Nodeboard; см. Руководство по консоли оператора Nodeboard. Как и любой сервер VPN, сам узел обрабатывает клиентский трафик в открытом виде на выходе, поэтому операторы обязаны соблюдать Политику для операторов узлов.
Связанные страницы
- Эксплуатация и проверка узла AeroNyx
- Руководство по консоли оператора Nodeboard
- Обнаружение узлов и зашифрованная ретрансляция
- Статистика сети и граница приватности
Часто задаваемые вопросы
Откуда берётся aeronyx-node.sh?
Это файл в репозитории узла AeroNyx по пути deploy/node/aeronyx-node.sh, а не системная команда. Клонируйте или обновите https://github.com/AeroNyxNetwork/AeroNyx в /root/open/AeroNyx и запускайте скрипт оттуда с --repo-dir "$PWD".
Как не допустить попадания регистрационного кода в историю оболочки?
Запустите 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 без регистрационного кода. Подключённый таким образом узел не пригоден для маршрутизации, не отображается в Nodeboard или пуле VPN и не имеет права на оплату.
Можно ли запустить узел в конфиденциальной виртуальной машине?
Да, репозиторий включает развёртывание Docker для конфиденциальных виртуальных машин dstack, которое выполняет луковую ретрансляцию, ChatRelay и анонимный почтовый ящик. Оно не предоставляет услугу VPN и получает идентичность из службы управления ключами dstack.
<!-- faq:end -->