Подключение ноды и выпуск первой подписки
Панель стоит, домен резолвится, суперадмин создан. Дальше цепляем первую ноду и выпускаем клиента, который реально подключится. Команды копируй по порядку, свои данные впиши в конструктор сверху. Механику всего этого разбирали в парной теории.
Читать теорию →Готовим сервер ноды
Нода — отдельный сервер, не тот, где панель. На нём нужен только Docker, всё остальное панель зальёт сама:
# ставим docker одной командой
curl -fsSL https://get.docker.com | shБазовую защиту хоста (SSH по ключу, файервол, fail2ban) на ноде повтори так же, как на панели — про это отдельный чеклист старта. Пока считаем, что сервер чистый и готов.
Регистрируем ноду в панели
Идём в панель, Nodes → Create new node. Заполняем:
- Имя — внутреннее, для тебя (например,
DE-01). - Страна — для отображения клиенту.
- Address — IP или домен сервера ноды.
- Port — порт агента ноды, по умолчанию
2222. - Config Profile — выбираешь профиль (можно загрузить готовый VLESS Reality через «Load from GitHub» и доработать).
- Инбаунды — галочками отмечаешь, какие включить на этой ноде.
Панель покажет блок «Important information» с секретным ключом — это SECRET_KEY, единственный пароль ноды к панели. И даст готовый docker-compose.yml с уже подставленными портом и ключом.
Ставим агент на ноду
Копируешь из карточки ноды готовый compose (кнопка Copy docker-compose.yml) — там уже подставлены NODE_PORT и SECRET_KEY. Кладёшь на сервер ноды:
services:
remnanode:
image: remnawave/node:latest
network_mode: host
cap_add: [NET_ADMIN]
restart: always
environment:
- NODE_PORT=2222
- SECRET_KEY=КЛЮЧ_ИЗ_ПАНЕЛИПоднимаем:
docker compose up -d
docker compose logs -fЧерез несколько секунд в панели нода станет online. Что произошло: агент законнектился к панели, авторизовался по ключу, панель запушила ему Xray-JSON профиля с включёнными инбаундами, агент поднял Xray. Для Reality сертификаты не нужны — маскировка работает без них.
Открываем порт ноды
Файервол должен пускать наружу рабочий порт транспорта (обычно 443), а порт агента — только с IP панели, чтобы никто чужой не стучался в управление:
ufw allow 443/tcp
ufw allow from PANEL_IP to any port 2222 proto tcp # агент ноды только с панелиСобираем видимость: хост и сквад
Нода online, но клиент её пока не увидит — надо достроить цепочку. Вспомни формулу: сервер виден, только если инбаунд включён на ноде, отдан хостом и входит в сквад пользователя.
- Hosts → Create host. Указываешь:
- Remark — имя, которое увидит клиент (например,🇩🇪 DE-01).
- Address — адрес ноды.
- Inbound — тот самый инбаунд, что включён на ноде. Порт подтянется из него.
- Fingerprint (в расширенных) — ставьfirefox, пустым оставлять нельзя. - Squads → создаёшь сквад (тариф) и добавляешь в него этот инбаунд. Без этого шага подписка будет пустой.
Создаём клиента и выпускаем подписку
Теперь пользователь. Users → Create:
- Username — логин клиента.
- Срок действия (
expireAt) — до какой даты активен. - Лимит трафика — сколько гигабайт (или безлимит).
- Сквады — добавляешь клиента в созданный сквад.
- Лимит устройств (
hwidDeviceLimit) — против шеринга.
Панель сгенерит клиенту CLIENT_UUID и ссылку-подписку. Эту ссылку клиент вставляет в приложение (Happ, v2rayTun, любой xray-клиент) — и получает список серверов. Всё, первый пользователь готов.
Проверяем руками
Не верь панели на слово. Бери подписку тестового клиента, вставляй в приложение, подключайся и смотри реальный выход:
# с устройства под VPN — должен показать IP ноды, а не твой домашний
curl -s https://api.ipify.orgВернулся IP ноды — цепочка собралась: клиент → нода → интернет. Если подписка пустая — почти наверняка забыл добавить инбаунд в сквад. Если соединение висит — смотри логи ноды и файервол:
# на ноде — жив ли контейнер и что в логах
docker compose logs --tail 50Бэкап — прямо сейчас
Как только появился первый живой клиент — сделай бэкап базы панели. Нет бэкапа = один сбой = потеря всех клиентов:
cd /opt/remnawave
docker compose exec -T remnawave-db pg_dump -U postgres postgres > backup-$(date +%F).sql
tar czf conf-$(date +%F).tgz .env docker-compose.ymlХрани его вне сервера. Про полноценную схему бэкапа и восстановления — отдельная практика в этом разделе.
Первая нода живёт, первый клиент подключается. Дальше по разделу — брендинг страницы подписки под свой сервис, тонкая настройка хостов и защита панели. А механику того, что ты сейчас собрал, разбирали в парной теории «Ноды и подписки».
Следующий гайд Брендинг страницы подписки под свой сервис → ↗ Не понравилась статья или что-то непонятно? Напишите мне — помогу или поправлю. @notrealvpn →