К содержимому

Remnawave на VPS: установка панели и ноды

Панель Xray с нодами

Категория
VPN / Прокси
Хостинг
VPN-сервер
Автор
Remnawave
Лицензия
AGPL-3.0
Версия
3.4.4
Обновлено

Скрипт бесплатный · VPS от $10.20 в месяц · установка около 7 минут

Установка по SSH

root@vps:~# command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh; mkdir -p /opt/remnawave && cd /opt/remnawave && curl -o docker-compose.yml https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml && curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample && sed -i "s/^APP_SECRET=.*/APP_SECRET=$(openssl rand -hex 64)/" .env && sed -i "s/^METRICS_PASS=.*/METRICS_PASS=$(openssl rand -hex 64)/" .env && sed -i "s/^WEBHOOK_SECRET_HEADER=.*/WEBHOOK_SECRET_HEADER=$(openssl rand -hex 64)/" .env && pw=$(openssl rand -hex 24) && sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$pw/" .env && sed -i "s|^\(DATABASE_URL=\"postgresql://postgres:\)[^\@]*\(@.*\)|\1$pw\2|" .env && docker compose up -d

  • SystemUbuntu 24.04 · x86_64ok
  • Sourcegithub.com/remnawave/panelok
  • Version3.4.4ok
  • Port3000/tcplisten
  • Port3001/tcplisten
  • Port443/tcplisten

✓ Remnawave 3.4.4 установлен · около 3 минут

root@vps:~#

Команда установки из библиотеки. Вывод сокращён: на вашем сервере он может отличаться.

Что это

  • Xray
  • VLESS
  • Подписки
  • Мультисервер
  • API

Remnawave — панель управления прокси на Xray-core для тех, кто продаёт доступ или обслуживает много серверов. Панель и ноды разделены: в панели пользователи, подписки и статистика, на нодах — Xray.

Панель работает в Docker вместе с PostgreSQL и Valkey и слушает только 127.0.0.1, поэтому снаружи её открывают через обратный прокси с HTTPS. Ноды Remnawave Node ставятся на отдельные серверы и подключаются из интерфейса.

Проект активно развивается, есть API и SDK для интеграции с Telegram-ботами и биллингом.

  • Разделение на панель и ноды с Xray-core
  • Подписки с отдельной страницей для клиентов
  • Лимиты по трафику, сроку и устройствам (HWID)
  • REST API и SDK для ботов и биллинга
  • Профили конфигурации для групп нод
  • Статистика и метрики пользователей и нод

Кому подойдёт

  • Продаёте доступ к VPN или обслуживаете много серверов: пользователи и подписки живут в панели, Xray — на нодах.
  • Нужны лимиты по трафику, сроку и устройствам (HWID), REST API и SDK для своего бота и биллинга.

Рекомендуемый тариф

Для Remnawave — не меньше 4 vCPU, 4 ГБ RAM и 100 ГБ NVMe.

Минимум для запуска
2 vCPU · 2 ГБ RAM · 20 ГБ диска
Системы
Ubuntu 22.04 · Ubuntu 24.04 · Debian 12
Виртуализация
KVM — на всех наших VPS

Установка в 1 клик через Telegram-бот

Три шага в боте, командная строка не нужна. Бот показывает прогресс, установка обычно занимает около 7 минут.

  1. 01

    Откройте бота по кнопке

    Кнопка установки на этой странице откроет @ExpressHost_bot — скрипт Remnawave бот подставит сам.

  2. 02

    Выберите тариф и ОС

    Скрипт появится на шаге «Скрипты» автоматически, останется оплатить сервер.

  3. 03

    Получите данные для входа

    Когда установка закончится, бот пришлёт данные для входа в чат.

Что настроит бот

  • Ставит панель в Docker в /opt/remnawave на Ubuntu 22.04 или 24.04 и генерирует секреты и пароль базы.
  • Ставит перед панелью nginx на порту 443 с сертификатом Let’s Encrypt на домен сервера имя-сервера.expresshost.cloud и его поддомены.
  • Поднимает страницу подписки на subs.имя-сервера.expresshost.cloud.
  • Регистрирует администратора SuperAdmin со случайным паролем — адрес панели, логин и пароль бот пришлёт в чат.
  • Ставит ноду node-01 на этот же сервер (/opt/remnanode, порт 2222) и подключает её к профилю конфигурации панели. Порт 443 здесь занят nginx панели, поэтому inbound’ы этой ноды должны слушать другие порты.

Установка панели Remnawave вручную

Панель работает в Docker вместе с PostgreSQL и Valkey. Минимум по документации — 2 ядра и 2 ГБ RAM, рекомендуется 4 ядра и 4 ГБ, диск 20 ГБ.

Порты Remnawave
ПортПротоколНазначение
3000tcpПанель и API (только 127.0.0.1, наружу через обратный прокси)
3001tcpМетрики (только 127.0.0.1)
443tcpHTTPS обратного прокси перед панелью
  1. 01

    Установите Docker

    Нужен Docker с плагином Compose.

    Код
    sudo curl -fsSL https://get.docker.com | sh
  2. 02

    Скачайте docker-compose.yml и .env

    Код
    mkdir /opt/remnawave && cd /opt/remnawave
    curl -o docker-compose.yml https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml && curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample
  3. 03

    Сгенерируйте секреты

    APP_SECRET, METRICS_PASS и WEBHOOK_SECRET_HEADER нужны для аутентификации. Пароль Postgres по умолчанию тоже стоит сменить — это вторая строка.

    Код
    sed -i "s/^APP_SECRET=.*/APP_SECRET=$(openssl rand -hex 64)/" .env && sed -i "s/^METRICS_PASS=.*/METRICS_PASS=$(openssl rand -hex 64)/" .env && sed -i "s/^WEBHOOK_SECRET_HEADER=.*/WEBHOOK_SECRET_HEADER=$(openssl rand -hex 64)/" .env
    pw=$(openssl rand -hex 24) && sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$pw/" .env && sed -i "s|^\(DATABASE_URL=\"postgresql://postgres:\)[^\@]*\(@.*\)|\1$pw\2|" .env
  4. 04

    Укажите домены

    В .env задайте FRONT_END_DOMAIN — домен панели, например panel.yourdomain.com, и SUB_PUBLIC_DOMAIN — тот же домен с /api/sub на конце.

    Код
    nano .env
  5. 05

    Запустите контейнеры

    Панель слушает только 127.0.0.1:3000 — наружу её открывает обратный прокси. Не публикуйте сервисы Remnawave в интернет напрямую.

    Код
    docker compose up -d && docker compose logs -f -t

Домен и HTTPS: Caddy перед панелью

Документация требует обратный прокси с HTTPS перед панелью. Нужен свой домен с A-записью на IP сервера, сертификат Caddy выпустит сам.

  1. 01

    Создайте Caddyfile

    Код
    mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy && nano Caddyfile
  2. 02

    Вставьте конфигурацию

    Вместо YOUR_DOMAIN укажите домен панели.

    Код
    https://YOUR_DOMAIN {
            encode
            reverse_proxy * http://remnawave:3000
    }
    :443 {
        tls internal
        respond 204
    }
  3. 03

    Создайте docker-compose.yml для Caddy

    Вставьте в файл конфигурацию ниже.

    Код
    cd /opt/remnawave/caddy && nano docker-compose.yml
  4. 04

    Конфигурация Caddy

    Код
    services:
      caddy:
        image: caddy:2.9
        container_name: 'caddy'
        hostname: caddy
        restart: always
        ports:
          - '0.0.0.0:443:443'
          - '0.0.0.0:80:80'
        networks:
          - remnawave-network
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - caddy-ssl-data:/data
    networks:
      remnawave-network:
        name: remnawave-network
        driver: bridge
        external: true
    volumes:
      caddy-ssl-data:
        driver: local
        external: false
        name: caddy-ssl-data
  5. 05

    Запустите Caddy и войдите

    Откройте домен в браузере. Первый зарегистрированный пользователь становится суперадмином.

    Код
    docker compose up -d && docker compose logs -f -t

Нода Remnawave и VLESS Reality

В самой панели Xray нет: подключения обслуживает Remnawave Node — лёгкий контейнер с Xray-core. Ноду рекомендуют ставить на отдельный сервер, ей нужно от 1 ядра и 1 ГБ RAM.

  1. 01

    Добавьте ноду в панели

    Nodes → Management → «+». Node Port — порт внутреннего API, по которому панель управляет нодой. Нажмите Copy docker-compose.yml.

  2. 02

    Подготовьте сервер ноды

    Вставьте скопированный конфиг в docker-compose.yml.

    Код
    sudo curl -fsSL https://get.docker.com | sh
    mkdir /opt/remnanode && cd /opt/remnanode && nano docker-compose.yml
  3. 03

    Запустите ноду

    Код
    docker compose up -d && docker compose logs -f -t
  4. 04

    Завершите в панели

    В карточке ноды нажмите Next, выберите Config Profile и Create. Порт NODE_PORT закройте файрволом для всех, кроме IP панели.

  5. 05

    Настройте inbound’ы

    VLESS Reality и другие inbound’ы задаются в Config Profiles. Чтобы пользователи их получили, привяжите inbound’ы к Hosts и включите в Internal Squads (Default-Squad). Для REALITY сертификат на ноде не нужен.

Обновление Remnawave

Сначала обновляйте панель, потом ноды, и перед этим читайте changelog.

  1. 01

    Панель

    Код
    cd /opt/remnawave && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f
  2. 02

    Нода

    Код
    cd /opt/remnanode && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f
  3. 03

    Страница подписки

    Если она стоит в /opt/remnawave/subscription, как при установке из бота.

    Код
    cd /opt/remnawave/subscription && docker compose pull && docker compose down && docker compose up -d && docker compose logs -f

Частые ошибки Remnawave

  • Панель не открывается по IP или HTTP

    Так задумано: панель слушает только 127.0.0.1, наружу её выводит обратный прокси с HTTPS на домене.

  • Нода пишет XML-RPC fault: SPAWN_ERROR: xray

    Xray не запустился из-за ошибки в конфиге. Причину покажет docker exec remnanode xlogs, исправьте профиль в панели и сохраните.

  • Пользователи не видят новые inbound’ы

    Inbound’ы нужно привязать к Hosts и включить в Internal Squads.

  • Забыли пароль суперадмина

    Rescue CLI позволяет пересоздать суперадмина: docker exec -it remnawave cli.

Источники

Команды и шаги сверены с официальной документацией 25 октября 2026. Что делает установка из бота — по её скрипту.

Вопросы о Remnawave

Не нашли ответ? Пишите @ExpressHost_SupportBot.

Какой сервер нужен под панель?

Документация требует минимум 2 ядра и 2 ГБ RAM, рекомендует 4 ядра и 4 ГБ. Ноде достаточно 1 ядра и 1 ГБ, но Xray под нагрузкой потребляет больше.

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

Можно, но разработчики рекомендуют ставить ноду на отдельный сервер: в самой панели Xray нет.

Как обновить Remnawave?

cd /opt/remnawave && docker compose pull && docker compose down && docker compose up -d. Сначала обновляйте панель, затем ноды.

Где лежат данные?

Настройки — в /opt/remnawave/.env, база PostgreSQL — в Docker-томе рядом с проектом. Перед обновлением делайте дамп базы.

Remnawave ставится при заказе — в боте.