Добавление узла
Узел — это сервер, к которому подключаются ваши пользователи. У него нет ни своей базы, ни своих настроек: всё ему сообщает панель. Сначала вы добавляете узел в панели, а затем панель даёт команду, которая его устанавливает.


Перед началом
- Linux-сервер с systemd или с Docker. Поддерживаются amd64, arm64, armv5/v6/v7, 386, s390x и riscv64.
- root или пользователь с sudo.
- TCP-порт 62050, доступный панели по IPv4 или IPv6.
- Порты, которые будут использовать инбаунды узла. Их вы выберете в панели позже.
Узлу не нужен собственный лицензионный ключ. Сколькими узлами управляет панель, решает её лицензия.
Установка командой из панели
Откройте Узлы и добавьте узел. Укажите Название и Адрес — IP или домен, по которому панель до него достаёт. Порт оставьте 62050.
Откройте у узла Установка. Запуск установки сначала сохраняет узел.
На вкладке Вручную скопируйте команду. Она выглядит так:
bashcurl -fsSL https://PANEL/install-node.sh | bash -s -- --panel PANEL --token TOKEN --port 62050--port— это Порт узла. Чтобы взять другой порт, меняйте его в окне узла, а не в команде: панель подключается к сохранённому там порту, и эта команда, и автоматическая установка поднимают узел на нём. За проброшенным портом используйте один номер с обеих сторон: каждая установка и обновление поднимают узел на сохранённом Порту.Выполните её от root на сервере узла.
Панель на собственном самоподписанном сертификате
Мастер настройки запускает панель с самоподписанным сертификатом, который обычный curl на узле отвергает. Панель знает об этом, и тогда её команда проверяет панель по ключу её сертификата:
curl -fsSLk --pinnedpubkey 'sha256//KEY' https://PANEL/install-node.sh | bash -s -- --panel PANEL --token TOKEN --port 62050 --pin 'sha256//KEY'-k здесь не отключает проверку: --pinnedpubkey по-прежнему отвергает любой сервер, чей ключ не совпадает с ключом вашей панели, а --pin делает то же для загрузок самого установщика с панели. Копируйте команду в том виде, в каком её показывает панель. Когда у панели появится сертификат от Let's Encrypt или другого ACME-центра (Сертификаты), команда снова станет обычной.
Панель на простом HTTP показывает команду с явно написанным http://. На таком соединении ничего не проверяется, поэтому, если вы не доверяете сети между серверами, лучше используйте автоматическую установку по SSH:
curl -fsSL http://PANEL/install-node.sh | bash -s -- --panel http://PANEL --token TOKEN --port 62050Панели v0.0.3 и более ранних версий
Эти панели показывают обычную команду при любом сертификате. На панели с самоподписанным сертификатом добавьте -k к curl и --insecure к скрипту:
curl -fsSLk https://PANEL/install-node.sh | bash -s -- --panel PANEL --token TOKEN --insecureТак отключается проверка того, что загрузка действительно идёт с вашей панели. Панель на простом HTTP вообще не может использовать эту команду; используйте автоматическую установку по SSH.
Меньше чем за минуту она:
- скачивает бинарный файл узла с вашей панели, а не из интернета;
- обменивает токен на сертификат панели. Токен работает один раз и имеет срок действия;
- создаёт собственный сертификат узла;
- записывает
/opt/nx-node/config.jsonи службу и запускает её.
Затем подключается панель. При первом подключении она запоминает сертификат узла и дальше принимает только его, а узел принимает только панель. Никто другой не может пользоваться портом 62050.
На странице узлов у узла появляется статус connected. Пока у него нет шаблона, он ничего не обслуживает: откройте узел и выберите шаблон в поле шаблона. Первый шаблон создаётся на странице Первый пользователь за десять минут.
Автоматическая установка по SSH
Панель может сделать всё это сама. В окне Установка узла перейдите на Автоматически (SSH):
- Укажите SSH-хост, SSH-порт, Пользователь и Пароль или Приватный ключ. Пользователю, отличному от root, нужен sudo.
- Нажмите Определить. Панель сообщит систему сервера, архитектуру, есть ли там systemd или Docker и что уже установлено, а затем покажет свой план.
- Нажмите Установить. Вывод приходит в реальном времени.
Этот способ загружает всё по SSH-соединению: установщик, сертификат панели и бинарный файл узла. Серверу не нужен ни маршрут до панели, ни токен.
Учётные данные используются только для этого соединения и не сохраняются. Отметьте Разрешить ключ панели на этом сервере, чтобы панель потом входила своим ключом и обновлениям не нужен был пароль. Этот доступ убирается пунктом Отозвать ключ панели в меню узла.
При первом подключении панель запоминает SSH-ключ хоста. Если позже сервер покажет другой ключ, панель откажется подключаться и сообщит об этом. Если вы действительно заменили машину, используйте Перенести на другой сервер в меню узла.
Файрвол
Порт 62050 принимает только панель, но держать его открытым для всех нет причин:
ufw allow from 203.0.113.10 to any port 62050 proto tcpЕсли панель достаёт до узла по IPv6, правило должно называть IPv6-адрес панели: правило для IPv4 не покрывает соединение по IPv6.
Порты для пользователей открывайте после того, как дали узлу шаблон и знаете, какие порты он использует.
Параметры установки
Добавьте их в конец команды:
| Параметр | Действие |
|---|---|
--port PORT | управляющий порт; уже установленный узел сохраняет свой адрес и меняет только порт (по умолчанию — оставить как есть, иначе [::]:62050) |
--listen ADDR | весь управляющий адрес, хост и порт; важнее --port и того, что установлено |
--method script|docker | установить как службу systemd или как контейнер (по умолчанию — оставить как есть) |
--source panel|github | брать бинарный файл с панели или из публичного выпуска |
--version TAG | установить конкретный выпуск узла (берётся с GitHub) |
--image REF | образ контейнера для --method docker |
--binary-url URL | скачать бинарный файл с другого адреса |
--binary-file PATH | использовать бинарный файл, который уже есть на сервере |
--ca-file PATH | использовать уже лежащий на сервере сертификат панели вместо токена |
--pin sha256//KEY | принимать сертификат панели по его ключу (панель добавляет его сама, когда он нужен) |
--insecure | не проверять TLS-сертификат панели при скачивании |
--detect | показать, что есть на сервере, ничего не меняя |
--uninstall | остановить и удалить узел |
Панель держит бинарные файлы для amd64 и arm64. На других архитектурах установщик берёт узел с GitHub. Если установка останавливается с node binary not provisioned, см. Решение проблем.
Docker
Вкладка Вручную показывает и команду для Docker: ту же команду с --method docker. Установщик сам пишет файл compose и запускает контейнер.
Чтобы вместо этого запустить файл compose узла вручную, сохраните сертификат из поля Сертификат mTLS на той же вкладке как certs/panel_ca.pem, затем:
git clone https://github.com/nx-panel/node
cd node
mkdir -p certs
cp /path/to/panel_ca.pem certs/
docker compose up -dКонтейнер узла использует сеть хоста, поэтому порты его инбаундов работают без правки файла compose.
IPv6
Ничего дополнительно не нужно. Узел слушает IPv4 и IPv6 одновременно, а на сервере с выключенным IPv6 переходит на IPv4. Узел только с IPv6-адресом добавляйте с адресом как есть (2001:db8::1); где нужно, панель сама добавит скобки в ссылках.
Дальше
- Первый пользователь за десять минут даёт узлу то, что обслуживать.
- Узлы описывает всё остальное на странице узлов.
- Панель и узел на одном сервере — если узел делит сервер с панелью.
