Ноды
Нода — это сервер с движком Xray и нашим агентом. Агент забирает профиль из панели, вписывает в него клиентов и отчитывается трафиком и нагрузкой.
Подключение
На странице Ноды нажмите «Подключить ноду» — панель соберёт команду с адресом и ключом. Она ставит движок, агент и systemd-службу:
PANEL_URL=https://панель.ваш-домен NODE_SECRET=... bash install-node.sh
Секрет показывается один раз: в базе хранится только его хэш. Потеряли — перевыпустите в меню ноды.
Скрипт берёт агента из релиза на GitHub, а если тот недоступен — с самой панели.
Свой адрес задаётся переменной AGENT_URL, конкретный выпуск —
AGENT_RELEASE.
Сертификат
Установщик сертификаты не выпускает: установка одинаковая для всех нод, без ветвлений. Reality — вариант по умолчанию — сертификата не требует вовсе, он прикрывается чужим сайтом.
Сертификат нужен только тому, что работает поверх TLS: Trojan, Hysteria2 и подобному. Там он завязан на домен конкретной ноды, поэтому выпускается на месте.
Заведите домен с A-записью на эту ноду, освободите порт 80 и выпустите:
apt-get install -y certbot
certbot certonly --standalone -d de1.ваш-домен
mkdir -p /etc/sn-node/tls
cp /etc/letsencrypt/live/de1.ваш-домен/fullchain.pem /etc/sn-node/tls/de1.ваш-домен.crt
cp /etc/letsencrypt/live/de1.ваш-домен/privkey.pem /etc/sn-node/tls/de1.ваш-домен.key
Дальше эти пути указываются в профиле, в
streamSettings.tlsSettings.certificates.
no such file or directory и не запустится — вместе с остальными
инбаундами профиля.--deploy-hook "systemctl restart sn-node".Обновление
Версию движка задаёт панель: на странице нод кнопка «Версия Xray». Агент сверяет свою при каждом опросе, скачивает релиз, убеждается, что бинарь запускается и называет нужную версию, и только потом подменяет рабочий. Отставшие ноды видно там же.
Сам агент обновляется кнопкой «Обновить агентов на всех нодах» в том же окне. Он подменяет себя и завершается — служба поднимает его заново.
curl -fsSL https://панель.ваш-домен/update-node.sh | PANEL_URL=https://панель.ваш-домен bash
Секрет ноды не нужен: он уже прописан в её systemd-юните. Движок скрипт не трогает —
его версию задаёт панель, и агент приведёт ноду к ней сам. Если версия нужна конкретная,
её можно назвать явно: XRAY_VERSION=v26.7.11.
Гео-базы
Правила вида geoip:ru и geosite:category-ads-all опираются
на файлы geoip.dat и geosite.dat. Из архива движка они ставятся
один раз и дальше устаревают, поэтому установщик заводит еженедельное обновление.
Заодно ставится zapret.dat — список заблокированных в России ресурсов.
Он нужен, только если в правилах есть zapret:*; без файла движок с таким
правилом не запустится.
Обновление подменяет файл, лишь когда он действительно изменился: движок читает базы при старте, а лишний перезапуск — это лишний обрыв всех соединений.
Состояния ноды
| Вид | Что означает |
|---|---|
| Зелёная | Агент на связи, движок работает, клиенты обслуживаются. |
| Красная | Либо агент не выходит на связь, либо движок не запустился — причина написана прямо в строке. Второе бывает при ошибке в конфиге или пропавшем сертификате. |
| Серая | Выключена администратором. Это не авария: она намеренно не обслуживает клиентов. |
Защита от битого конфига
Перед подменой рабочего конфига агент спрашивает движок, примет ли он новый. Если нет — остаётся на прежнем и сообщает причину в панель. Одна опечатка в новом протоколе не выключает ноду целиком вместе с работавшими локациями.
Трафик и онлайн
Счётчики движок ведёт по клиентам и инбаундам, агент забирает их раз в 15 секунд и присылает дельту. «В сети» означает «передавал трафик за последнее окно опроса»: перечень активных соединений Xray наружу не отдаёт, и это честное приближение.