remnawave_selfsteal/README.md

9.8 KiB
Raw Permalink Blame History

🚀 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