Блог Clearway

Remnawave установка: панель и нода в Docker

Коротко

Установка Remnawave — это два Docker-стека: панель (backend + PostgreSQL + Redis + страница подписки за reverse-proxy с TLS) и нода (remnanode), через которую идёт трафик Xray. Порядок: VPS с Docker Engine и docker compose v2 → A-записи на домены панели и подписки → заполнить .env (секреты через openssl rand -hex 32) → docker compose up -d → создать первого админа в веб-админке → добавить ноду в панели, вставить выданный SSL_CERT в .env ноды и поднять её отдельным docker compose up -d. Панель и нода могут стоять на одном сервере, но в проде их разносят: панель прячут, ноду держат «наружу» как заменяемый слой.

Из чего состоит установка: панель, подписка, нода

Remnawave не заменяет Xray, а оркестрирует его. При установке Remnawave вы поднимаете три логические части, физически — набор Docker-контейнеров:

  • Панель (backend + админка) — API, база пользователей/хостов/конфигов, веб-интерфейс. Сюда вы заходите руками, здесь генерируются подписки.
  • Страница подписки — отдельный контейнер (remnawave/subscription-page), отдаёт клиенту ссылку vless:// / base64-конфиг по своему домену.
  • Нода (remnanode) — сам Xray, через который реально идёт трафик. Панель раздаёт ей конфигурацию и опрашивает по API.

Принцип, определяющий всю архитектуру: панель — «мозг», нода — «руки». Панель светить в интернет не обязательно (нестандартный домен + IP-фильтр на reverse-proxy), а нода по определению принимает соединения пользователей и потому первой попадает под блокировки. Отсюда и правило разносить их в проде — к нему вернёмся в конце.

Требования перед установкой Remnawave

Чек-лист, без которого установка Remnawave превращается в отладку в проде.

Сервер под панель:

  • Linux — Debian 12 или Ubuntu 22.04/24.04 (самые беспроблемные под Docker).
  • 2 GB RAM комфортно (1 GB — впритык: backend + Postgres + Redis), 1–2 vCPU, диск от 15–20 GB SSD. Нагрузка на CPU у панели низкая — она не гоняет трафик.
  • Docker Engine + плагин docker compose v2. Проверка: docker --version && docker compose version.

Сервер под ноду:

  • Отдельный VPS (или тот же — см. FAQ). Упор не в RAM, а в CPU и сетевой канал: ориентир — пара vCPU на несколько сотен активных пользователей, но бутылочное горлышко почти всегда аплинк и лимит трафика у хостера. Нужен «чистый» IP.

Домены и DNS (заранее):

  • Домен панели (admpanel.example.com) и домен подписки (sub.example.com).
  • A-записи на IP панели. На Cloudflare для ноды и прямых соединений Xray держите серое облако (DNS only) — оранжевый проксирующий режим ломает Reality/прямой TLS.

Порты: на панели свободны 80 и 443 (reverse-proxy выпускает Let's Encrypt). Заранее уберите системный nginx/apache с этих портов.

Честная оговорка: точный состав .env и имена переменных меняются между версиями (в проде сейчас ветка 2.x). Перед боевым запуском сверяйтесь с актуальной документацией Remnawave, а не с копипастой из старых гайдов.

Установка панели Remnawave через Docker

Штатный и единственный способ — Remnawave Docker: нативной сборки под систему нет, и это плюс — обновление и откат сводятся к смене тега образа.

1. Каталог и окружение.

mkdir -p /opt/remnawave && cd /opt/remnawave
# docker-compose.yml и.env.sample берём из официального репозитория Remnawave
cp.env.sample.env

2. Заполните .env. Ключевое (имена сверяйте с версией):

  • секреты JWT и токен API — сгенерируйте случайные строки: openssl rand -hex 32;
  • креды PostgreSQL: POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB;
  • домены панели и подписки;
  • параметры Redis.

Дефолтные секреты — причина №1 сообщений «кто-то зашёл в мою панель». Не оставляйте их.

3. Запуск.

docker compose up -d
docker compose ps # все сервисы должны быть healthy
docker compose logs -f remnawave # проверяем, прошли ли миграции БД

В типовом стеке поднимаются backend, postgres, redis, контейнер страницы подписки и reverse-proxy (часто Caddy — он сам выпускает Let's Encrypt по домену из конфига). Если фронт на nginx — TLS настраиваете руками (certbot).

Обновление позже: docker compose pull && docker compose up -d — образы подтягиваются по тегу, тома с данными не трогаются.

4. Проверка. Панель открывается по https://admpanel.example.com. 502 или таймаут вместо неё — это почти всегда reverse-proxy или TLS, а не сам Remnawave (разбор ниже).

Первый вход и базовая настройка

После того как контейнеры healthy и домен резолвится:

  1. Создание админа. На чистой установке страница входа предложит зарегистрировать первого администратора — эндпоинт регистрации в норме доступен, только пока админа нет. Сделайте это сразу, пароль длинный, менеджер паролей обязателен.
  2. Config profile / inbound. Чтобы клиенты получали рабочие конфиги, заведите профиль Xray (inbound VLESS: Reality/XTLS или XHTTP — по вашей стратегии; сравнение протоколов — в отдельном материале) и хост, который панель отдаёт в подписке.
  3. Домен подписки. Убедитесь, что страница подписки открывается по своему домену и клиент (Happ, v2rayN, Streisand) успешно импортирует ссылку.
  4. Тестовый пользователь. Создайте юзера, откройте его подписку в клиенте. Соединения пока не будет — ноды нет, это ожидаемо. Её подключаем следующим шагом.

Установка и подключение ноды

Нода — отдельный контейнер remnanode, привязывается к панели не логином-паролем, а сертификатом, который генерирует сама панель.

1. В панели добавьте ноду: укажите её адрес (IP/домен) и порт. Панель выдаст строку SSL_CERT — это и есть привязка к вашей панели, скопируйте её целиком.

2. На сервере ноды поднимите её стек:

mkdir -p /opt/remnanode && cd /opt/remnanode
# docker-compose.yml с образом remnawave/node
# в.env вставьте SSL_CERT из панели и APP_PORT (порт, на который панель стучится к ноде)
docker compose up -d
docker compose logs -f

3. Откройте порты. Два вида: порт API ноды, к которому подключается панель (задан в APP_PORT), и порты inbound-ов Xray из вашего профиля. Закрытый порт в firewall/security group провайдера — самая частая причина «нода не поднимается»; сам ufw/облачный SG проверяйте отдельно от Docker.

4. Проверка связи. В панели статус ноды меняется на online, в логах ноды видно успешное рукопожатие. После этого тестовый пользователь получает рабочее соединение.

Совмещение: панель и нода спокойно живут на одном VPS для теста, но в проде разносятся — если заблокируют IP ноды, панель с базой пользователей и конфигов должна остаться нетронутой.

Типичные ошибки установки Remnawave

По убыванию частоты:

  • Панель не открывается (502 / таймаут / нет HTTPS). В большинстве случаев виноват не Remnawave, а reverse-proxy: не резолвится домен, закрыты 80/443, Let's Encrypt не выпустил сертификат (порт 80 занят nginx/apache). Смотрите логи контейнера Caddy/nginx, а не backend.
  • Нода в статусе offline. SSL_CERT скопирован не целиком или от другой панели; закрыт APP_PORT в SG провайдера; неверный адрес ноды; оранжевое облако Cloudflare. docker compose logs на ноде показывает, доходит ли до рукопожатия.
  • Ошибки миграций БД при старте. Обычно старый том Postgres от другой версии. Не удаляйте прод-данные вслепую: сначала бэкап тома (docker run --rm -v remnawave_pg:/data... tar), потом разбор несовместимости.
  • Порты 80/443 заняты. ss -tlnp | grep -E ':80|:443', затем systemctl stop nginx apache2 до запуска стека.
  • JWT/сессии слетают. Рассинхрон системного времени — включите NTP: timedatectl set-ntp true.

Правило отладки: разделяйте слои. «Панель не работает», «нода не подключается» и «клиент не коннектится» — три разные проблемы, лечатся в разных местах.

После установки: заменяемость ноды

Всё online — но устойчивость это ещё не гарантирует, и риск не в самой Remnawave, а в IP ноды. Нода в ДЦ — это статичный адрес из хостинг-диапазона, и под моделью белых списков (пропускается трафик только к «разрешённым» подсетям) такие IP отваливаются целыми /24. Поэтому на этапе установки заложите:

  • вторую ноду наготове — переключение хоста в панели делается в пару кликов;
  • не завязывать всё на один IP/одну подсеть одного ДЦ;
  • разнесённые панель и нода (см. выше), чтобы блок ноды не ронял управление.

Архитектурно устойчивость под белыми списками даёт не ДЦ-IP, а фронт через whitelisted-CDN: клиент ходит на адрес CDN из «белых» подсетей, а тот проксирует до ноды, и блок конкретного IP не убивает подключения. Как поставить Remnawave за CDN и почему для этого нужен XHTTP — отдельные материалы; здесь достаточно спроектировать так, чтобы «наружу» смотрел заменяемый слой, а не единственный сервер.

Частые вопросы

Сколько ресурсов нужно для установки Remnawave?

Панели комфортно на 2 GB RAM и 1–2 vCPU, диск 15–20 GB SSD — на ней крутятся backend, PostgreSQL и Redis, трафик она не гоняет, поэтому CPU нагружен слабо. Нода к RAM нетребовательна, но упирается в CPU и сетевой канал: ориентир — пара vCPU на несколько сотен активных пользователей, а реальный потолок задаёт аплинк и лимит трафика хостера.

Можно ли поставить панель и ноду на один сервер?

Да, для теста или небольшого проекта — это просто два разных Docker-контейнера на одном VPS. Но в проде их разносят: если IP ноды заблокируют или её придётся срочно менять, панель с базой пользователей и конфигов должна остаться живой на отдельной машине.

Обязательно ли ставить Remnawave именно в Docker?

Да, штатный способ установки Remnawave — Docker и docker compose, отдельной нативной сборки под систему не предполагается. Это удобно: обновление и откат сводятся к docker compose pull && docker compose up -d, а зависимости (Postgres, Redis) изолированы в контейнерах и не конфликтуют с системными пакетами.

Remnawave платный?

Ядро Remnawave — open-source и ставится через Docker бесплатно. Платите вы за инфраструктуру: VPS под панель и ноды, домены, трафик, при необходимости CDN-фронт. Перед установкой сверяйтесь с актуальной лицензией конкретной версии — условия могут уточняться.

Нода в статусе offline сразу после установки — что делать?

Проверьте по порядку: целиком ли скопирован SSL_CERT из панели, открыт ли APP_PORT ноды в firewall и security group провайдера (это проверяется отдельно от Docker), верен ли адрес ноды. Смотрите docker compose logs на сервере ноды — там видно, доходит ли дело до рукопожатия. Cloudflare для ноды держите в режиме DNS only (серое облако).

Чем Remnawave отличается от Marzban при установке?

Обе панели управляют Xray/VLESS через Docker, но Remnawave изначально спроектирована вокруг схемы «панель + отдельные ноды» с подключением ноды по сертификату. Для оператора это удобнее в проде: ноды выносятся, масштабируются и заменяются независимо от панели, а сама панель может быть спрятана. Выбор — вопрос требований к масштабированию и привычек, а не «лучше/хуже».

Whitelisted-вход для вашего VPN-сервиса

Clearway даёт «белый» CDN-вход перед вашей нодой — устойчивый к троттлингу операторов. Первые 10 ГБ бесплатно, без карты.

Попробовать →