Панель за 15 минут: Remnawave и первая подписка
Я поднимал эту панель десятки раз — на проде, на тесте, на чужих серверах в четыре руки. Ниже маршрут, по которому у тебя за один вечер будет работающая панель и первая живая подписка. Команды копируй по порядку, свои данные впиши в конструктор сверху — он сам подставит их во все блоки.
Читать теорию →Что понадобится
Ничего экзотического. Минимальный набор, на котором панель живёт без нытья:
- VPS с белым IP, 1–2 vCPU / 2 ГБ RAM, Ubuntu 22.04 или 24.04. Локация — вне зоны, где твой трафик будут разглядывать под лупой.
- Домен (или субдомен), у которого A-запись смотрит на IP этого сервера.
- Доступ по SSH и пять свободных минут не отвлекаться.
Первое, что делает 90% новичков не так, — берут «дешёвый» IP из грязной подсети, который уже полгода в чёрных списках. На него потом можно навесить сколько угодно Reality — работать он будет через раз. Про белизну IP есть отдельный разбор, а пока просто возьми адрес у нормального провайдера.
Готовим сервер
Заходим по SSH и приводим систему в порядок. Docker — это весь наш рантайм, панель живёт в контейнерах, так что ставим его сразу:
# обновляем систему
apt update && apt -y upgrade
# docker одной командой (официальный скрипт)
curl -fsSL https://get.docker.com | sh
# папка под панель
mkdir -p /opt/remnawave && cd /opt/remnawaveПока качается — открой у регистратора DNS и убедись, что your-domain.com реально резолвится в IP сервера. Проверить можно прямо с него:
# должен вернуть IP твоего сервера
dig +short your-domain.comЕсли тут пусто или чужой адрес — дальше идти бессмысленно, TLS не выпустится. Сначала DNS, потом всё остальное.
Ставим панель
Забираем официальный docker-compose.yml и шаблон .env из репозитория Remnawave — без compose-файла docker compose up просто не стартует:
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В скачанном .env задай своё: домен панели, почту для Let’s Encrypt и обязательно сгенерируй секреты вместо заглушек — по openssl rand -hex 64 на каждый JWT_*-секрет и надёжный POSTGRES_PASSWORD. Оставить дефолтные секреты — прямая дыра в панель.
Дальше поднимаем стек. Compose сам вытянет образы, выпустит сертификат и разведёт сервисы:
# поднимаем панель в фоне
docker compose up -d
# смотрим, что все контейнеры взлетели
docker compose psЧерез минуту-две панель будет на https://your-domain.com. Первый вход создаёт супер-админа — задай длинный пароль, это ключ от всего сервиса, не «admin123».
Первая нода и подписка
Панель — это мозг, но трафик ходит через ноды. Даже если сервер один, ты всё равно регистрируешь его как ноду: панель отдаёт ей конфиг, нода поднимает xray.
- Nodes → Add node: имя, IP сервера, порт демона. Панель выдаст
SECRET_KEY— это токен, по которому нода авторизуется. - Ставишь на сервер агент ноды с этим ключом — он коннектится к панели и ждёт конфиг.
- Users → Create: создаёшь клиента, панель генерит ему
CLIENT_UUIDи ссылку-подписку.
Ссылку-подписку клиент вставляет в приложение (Happ, v2rayTun, любой xray-клиент) — и получает список серверов. Всё, у тебя есть первый пользователь.
Проверка
Не верь панели на слово — проверь руками. Бери подписку тестового юзера, кидай в клиент, подключайся и смотри реальный выход:
# с устройства под VPN — должен показать IP ноды, а не твой домашний
curl -s https://api.ipify.orgЕсли вернулся IP ноды — цепочка собралась: клиент → нода → интернет. Если соединение висит, первым делом гляди логи ноды (docker logs) и фаервол: 443 наружу должен быть открыт.
Дальше — навешиваем на эту ноду нормальный протокол, чтобы её не срубили на первом же вздохе DPI. Про это — в разборе VLESS + Reality.
Следующий гайд Что такое Remnawave и зачем вообще панель → ↗ Не понравилась статья или что-то непонятно? Напишите мне — помогу или поправлю. @notrealvpn →