No description
| LICENSE | ||
| README.md | ||
🚀 remnawave_selfsteal_guide
Подробное пошаговое руководство по развёртыванию SelfSteal-ноды на базе Remnawave, включая полную настройку панели управления, ноды и SelfSteal-конфигурации.
📋 Требования
Перед началом убедитесь, что у вас есть:
- 2 VPS-сервера
- Первый — для панели Remnawave
- Второй — для ноды
- Привязанные домены
- Root-доступ
- Ubuntu/Debian
📖 Официальные системные требования:
https://remna.st/docs/install/requirements
🛠 Установка панели Remnawave
🔹 Шаг 0 — Обновление системы
Обновление пакетов и установка curl
apt update && apt upgrade -y
apt install curl -y
🔹 Шаг 1 — Установка Docker
Установка Docker через официальный скрипт
curl -fsSL https://get.docker.com | sh
🔹 Шаг 2 — Загрузка файлов Remnawave
Создание рабочей директории
mkdir -p /opt/remnawave
cd /opt/remnawave
Загрузка docker-compose.yml
curl -o docker-compose.yml \
https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml
Загрузка .env
curl -o .env \
https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample
🔹 Шаг 3 — Настройка .env
🔐 Генерация JWT-секретов
sed -i "s/^JWT_AUTH_SECRET=.*/JWT_AUTH_SECRET=$(openssl rand -hex 64)/" .env
sed -i "s/^JWT_API_TOKENS_SECRET=.*/JWT_API_TOKENS_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
🔐 Генерация пароля PostgreSQL
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
🌐 Настройка доменов
Откройте .env
nano .env
Найдите строки
FRONT_END_DOMAIN="panel.yourdomain.com"
SUB_PUBLIC_DOMAIN="sub.yourdomain.com"
Замените:
| Значение | Описание |
|---|---|
panel.yourdomain.com |
Домен панели |
sub.yourdomain.com |
Домен страницы подписки |
🔹 Шаг 4 — Запуск панели
Запуск контейнеров
docker compose up -d
Просмотр логов
docker compose logs -f -t
🔹 Шаг 5 — Настройка DNS
Укажите IP VPS-сервера в DNS-записях вашего домена.
🌍 Настройка Caddy
🔹 Шаг 6 — Конфигурация Caddy
Создание директории
mkdir -p /opt/remnawave/caddy
cd /opt/remnawave/caddy
Создание Caddyfile
nano Caddyfile
Содержимое Caddyfile
https://REPLACE_WITH_YOUR_DOMAIN {
reverse_proxy * http://remnawave:3000
}
:443 {
tls internal
respond 204
}
https://SUBSCRIPTION_PAGE_DOMAIN {
reverse_proxy * http://remnawave-subscription-page:3010
}
📦 Docker Compose для Caddy
Создание docker-compose.yml
nano docker-compose.yml
Содержимое docker-compose.yml
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
▶️ Запуск Caddy
docker compose up -d
docker compose logs -f -t
📄 Настройка страницы подписки
Создание директории
mkdir -p /opt/remnawave/subscription
cd /opt/remnawave/subscription
Создание docker-compose.yml
nano docker-compose.yml
Содержимое файла
services:
remnawave-subscription-page:
image: remnawave/subscription-page:latest
container_name: remnawave-subscription-page
hostname: remnawave-subscription-page
restart: always
environment:
- REMNAWAVE_PANEL_URL=https://panel.com
- APP_PORT=3010
- META_TITLE="Subscription Page Title"
- META_DESCRIPTION="Subscription Page Description"
ports:
- "127.0.0.1:3010:3010"
networks:
- remnawave-network
networks:
remnawave-network:
driver: bridge
external: true
▶️ Запуск страницы подписки
docker compose up -d
docker compose logs -f
🖥 Настройка Remnawave Node
🔹 Шаг 7 — Установка ноды
Подключитесь ко второму VPS
🔄 Обновление системы
apt update && apt upgrade -y
apt install curl -y
🐳 Установка Docker
curl -fsSL https://get.docker.com | sh
📁 Создание директории
mkdir -p /opt/remnanode
cd /opt/remnanode
⚙️ Создание .env
nano .env
Содержимое .env
NODE_PORT=2222
SECRET_KEY=CERT_FROM_MAIN_PANEL
📦 Создание docker-compose.yml
nano docker-compose.yml
Содержимое docker-compose.yml
services:
remnanode:
container_name: remnanode
hostname: remnanode
image: remnawave/node:latest
restart: always
network_mode: host
env_file:
- .env
▶️ Запуск ноды
docker compose up -d
docker compose logs -f
🕵️ Настройка SelfSteal (SNI)
🔹 Шаг 8 — SelfSteal Setup
Создание директории
mkdir -p /opt/selfsteel
cd /opt/selfsteel
📄 Создание Caddyfile
nano Caddyfile
Содержимое Caddyfile
{
https_port {$SELF_STEAL_PORT}
default_bind 127.0.0.1
servers {
listener_wrappers {
proxy_protocol {
allow 127.0.0.1/32
}
tls
}
}
auto_https disable_redirects
}
http://{$SELF_STEAL_DOMAIN} {
bind 0.0.0.0
redir https://{$SELF_STEAL_DOMAIN}{uri} permanent
}
https://{$SELF_STEAL_DOMAIN} {
root * /var/www/html
try_files {path} /index.html
file_server
}
:{$SELF_STEAL_PORT} {
tls internal
respond 204
}
:80 {
bind 0.0.0.0
respond 204
}
⚙️ Создание .env
nano .env
Содержимое .env
SELF_STEAL_DOMAIN=steel.domain.com
SELF_STEAL_PORT=9443
❗ Важно
| Переменная | Должна совпадать |
|---|---|
SELF_STEAL_DOMAIN |
realitySettings.serverNames |
SELF_STEAL_PORT |
realitySettings.dest |
📦 Создание docker-compose.yml
nano docker-compose.yml
Содержимое docker-compose.yml
services:
caddy:
image: caddy:latest
container_name: caddy-remnawave
restart: unless-stopped
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ../html:/var/www/html
- ./logs:/var/log/caddy
- caddy_data_selfsteal:/data
- caddy_config_selfsteal:/config
env_file:
- .env
network_mode: "host"
volumes:
caddy_data_selfsteal:
caddy_config_selfsteal:
▶️ Запуск SelfSteal
docker compose up -d
docker compose logs -f -t
🌐 Создание заглушки сайта
mkdir -p /opt/html
printf '%s\n' \
'<!doctype html><meta charset="utf-8"><title>Selfsteal</title><h1>It works.</h1>' \
> /opt/html/index.html
🔹 Шаг 9 — Настройка Xray Reality
Обновите конфигурацию через панель Remnawave
Shadowsocks inbound является необязательным и может быть удалён.
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"tag": "Shadowsocks",
"port": 1234,
"protocol": "shadowsocks",
"settings": {
"clients": [],
"network": "tcp,udp"
}
},
{
"tag": "VLESS",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "9443",
"show": false,
"xver": 0,
"spiderX": "/",
"shortIds": [
"CHANGE_ME_SHORTID"
],
"publicKey": "CHANGE_ME_PUBLIC_KEY",
"privateKey": "CHANGE_ME_PRIVATE_KEY",
"fingerprint": "chrome",
"serverNames": [
"steel.domain.com"
]
}
}
}
]
}
✅ Готово
После завершения всех шагов:
- Панель Remnawave будет доступна по вашему домену
- Нода подключится к панели
- SelfSteal будет настроен
- Reality/VLESS начнёт работать через SNI