From 604ba873dc67fe2ca8fd7b2f9c71b7104096d2dc Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Fri, 29 May 2026 23:54:35 +0300 Subject: [PATCH] docs: clarify remnawave panel webhook setup --- .env.example | 5 ++++- README.md | 2 ++ docs/configuration/env-vars.md | 4 +++- docs/configuration/security.md | 3 ++- docs/getting-started/configuration.md | 6 +++--- docs/getting-started/setup.md | 2 ++ 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 1a0be7b..a8adbbe 100644 --- a/.env.example +++ b/.env.example @@ -56,7 +56,10 @@ PANEL_API_URL=https://panel.yourdomain.tld/api PANEL_API_KEY= # Shared secret for validating incoming Remnawave webhooks. -# Use the same value when configuring the webhook in Remnawave panel. +# Create or set this secret in Remnawave Panel, then paste the same value here +# or into Admin -> System -> Settings -> Remnawave Panel. +# In Remnawave Panel, set WEBHOOK_URL to WEBHOOK_BASE_URL + /webhook/panel, +# for example: https://app.example.com/webhook/panel PANEL_WEBHOOK_SECRET= # Host port that publishes the backend webhook server from Docker Compose. diff --git a/README.md b/README.md index a016e92..d1c581f 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,8 @@ docker compose logs -f backend worker frontend - `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET` - доступ к Remnawave; - остальные настройки удобнее задать в Web App админке. +В Remnawave Panel укажите `WEBHOOK_URL` как публичный адрес Minishop с путем `/webhook/panel`, например `https://app.example.com/webhook/panel`. Секрет вебхука задается в самой Remnawave Panel; это же значение вставьте в `PANEL_WEBHOOK_SECRET` в `.env` или в **Система -> Настройки -> Remnawave Panel** в админке. + После первого входа в админку настройте тарифы, платежные провайдеры, внешний вид, поддержку, уведомления и инструкции подключения через UI. Инструкции установки включены по умолчанию, читают Subscription Page config из Remnawave Panel и при проблемах с конфигом откатываются к обычной ссылке подключения. Полный справочник env-переменных: [docs/configuration/env-vars.md](docs/configuration/env-vars.md). Для каталога тарифов используется `TARIFFS_CONFIG_PATH` со значением по умолчанию `data/tariffs.json`. Пример формата лежит в [data/tariffs.example.json](data/tariffs.example.json), подробности - в [docs/features/tariffs.md](docs/features/tariffs.md). diff --git a/docs/configuration/env-vars.md b/docs/configuration/env-vars.md index 75be38f..cb29c66 100644 --- a/docs/configuration/env-vars.md +++ b/docs/configuration/env-vars.md @@ -117,13 +117,15 @@ | --- | --- | | `PANEL_API_URL` | URL API панели, например `https://panel.example.com/api`. | | `PANEL_API_KEY` | API-ключ панели. | -| `PANEL_WEBHOOK_SECRET` | Секрет проверки Remnawave webhook. | +| `PANEL_WEBHOOK_SECRET` | Секрет проверки Remnawave webhook. Задайте его в Remnawave Panel и вставьте то же значение сюда или в админку. | | `USER_SQUAD_UUIDS` | Internal Squads по умолчанию для legacy-режима без JSON-каталога. | | `USER_EXTERNAL_SQUAD_UUID` | Необязательный External Squad. | | `USER_TRAFFIC_LIMIT_GB` | Legacy-лимит трафика пользователя. | | `USER_TRAFFIC_STRATEGY` | Legacy-стратегия лимита трафика. | | `USER_HWID_DEVICE_LIMIT` | Legacy-лимит HWID-устройств по умолчанию. | +В Remnawave Panel поле `WEBHOOK_URL` должно указывать на публичный Minishop webhook: `WEBHOOK_BASE_URL` + `/webhook/panel`. Если публичный домен приложения `https://app.example.com`, итоговый адрес будет `https://app.example.com/webhook/panel`. + ## Веб-приложение, внешний вид и Telegram Login Часть внешнего вида (`WEBAPP_PRIMARY_COLOR`, `WEBAPP_LOGO_*`, `WEBAPP_FAVICON_*`) сохранена для совместимости, но env-значения этих полей игнорируются при загрузке. Настраивайте их в **Админка -> Внешний вид**. diff --git a/docs/configuration/security.md b/docs/configuration/security.md index 77bb532..98d04c4 100644 --- a/docs/configuration/security.md +++ b/docs/configuration/security.md @@ -6,7 +6,7 @@ - `WEBAPP_SESSION_SECRET` должен быть постоянным между рестартами, иначе Web App-сессии станут невалидными. - `WEBHOOK_SECRET_TOKEN` защищает вебхук Telegram. -- `PANEL_WEBHOOK_SECRET` проверяет входящие события Remnawave Panel. +- `PANEL_WEBHOOK_SECRET` проверяет входящие события Remnawave Panel. Секрет задается в Remnawave Panel и вставляется в настройки бота. - Платежные токены и webhook-секреты храните в `.env` или настройках админки с учетом доступа к серверу. Сгенерировать секрет можно так: @@ -24,6 +24,7 @@ openssl rand -hex 32 ## Публичные URL - `WEBHOOK_BASE_URL` должен вести на backend-сервер вебхуков. +- В Remnawave Panel `WEBHOOK_URL` должен быть `WEBHOOK_BASE_URL` + `/webhook/panel`, например `https://app.example.com/webhook/panel`. - `SUBSCRIPTION_MINI_APP_URL` должен вести на frontend/Mini App-домен. - Не добавляйте `/api`, `/auth` или webhook-пути в `SUBSCRIPTION_MINI_APP_URL`. diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 7d9280a..7941128 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -24,14 +24,14 @@ nano .env | --- | --- | | `BOT_TOKEN` | Токен Telegram-бота. | | `ADMIN_IDS` | Telegram ID администраторов через запятую; без этого не попасть в Web App админку. | -| `WEBHOOK_BASE_URL` | Публичный URL webhook-домена backend. | +| `WEBHOOK_BASE_URL` | Публичный URL webhook-домена backend. Для Remnawave Panel `WEBHOOK_URL` будет `WEBHOOK_BASE_URL` + `/webhook/panel`, например `https://app.example.com/webhook/panel`. | | `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB` | Доступы PostgreSQL для Compose и backend. | | `WEBAPP_ENABLED` | Включает Web App и админку. Для первого запуска держите `True`. | | `WEBAPP_SESSION_SECRET` | Стабильный секрет сессий Web App. | | `WEBHOOK_SECRET_TOKEN` | Стабильный секретный токен вебхука Telegram. | | `SUBSCRIPTION_MINI_APP_URL` | Публичный HTTPS URL Mini App/frontend, например `https://app.domain.com/`. Это URL, который открывают кнопки Telegram и который указывается в BotFather; не добавляйте сюда `/api` или webhook-пути. | | `SUBSCRIPTION_GUIDES_ENABLED`, `SUBSCRIPTION_GUIDES_BOT_MENU_ENABLED` | Встроенные инструкции установки в Web App и кнопках бота. По умолчанию включены; обычно их достаточно менять в админке. | -| `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET` | Базовая интеграция с Remnawave. Эти значения стоит хранить в `.env`, но при необходимости их можно переопределить из админки. | +| `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET` | Базовая интеграция с Remnawave. Секрет вебхука задайте в Remnawave Panel и вставьте то же значение в настройки бота; эти значения стоит хранить в `.env`, но при необходимости их можно переопределить из админки. | `WEBAPP_SESSION_SECRET` и `WEBHOOK_SECRET_TOKEN` можно сгенерировать так: @@ -57,7 +57,7 @@ openssl rand -hex 32 Рекомендуемый порядок первичной настройки: -1. **Система -> Настройки -> Remnawave**: проверьте `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET`, базовые squads. +1. **Система -> Настройки -> Remnawave Panel**: проверьте `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET`, базовые squads. Рядом с настройками Remnawave админка показывает вычисленный адрес для `WEBHOOK_URL` в панели, например `https://app.example.com/webhook/panel`. 2. **Система -> Тарифы**: создайте JSON-каталог тарифов, выберите Internal Squads, настройте модели на срок/по трафику, premium-сквады и HWID-пакеты. 3. **Система -> Настройки -> Инструкции подключения**: проверьте, что Remnawave Panel отдает нужный конфиг Subscription Page. JSON-переопределение включайте только если нужно временно заменить конфиг панели. 4. **Система -> Настройки -> Платежи**: включите нужные провайдеры и заполните их ключи. diff --git a/docs/getting-started/setup.md b/docs/getting-started/setup.md index 55275a3..1bab25a 100644 --- a/docs/getting-started/setup.md +++ b/docs/getting-started/setup.md @@ -20,6 +20,8 @@ docker compose logs -f backend worker frontend - `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB`. - `WEBAPP_SESSION_SECRET`, `WEBHOOK_SECRET_TOKEN`, `PANEL_API_URL`, `PANEL_API_KEY`, `PANEL_WEBHOOK_SECRET`. +Для вебхуков Remnawave в панели укажите `WEBHOOK_URL` как `WEBHOOK_BASE_URL` + `/webhook/panel`, например `https://app.example.com/webhook/panel`. Секрет создается или задается в Remnawave Panel; тот же секрет вставьте в `PANEL_WEBHOOK_SECRET` в `.env` или позже в **Система -> Настройки -> Remnawave Panel**. + ## Как выбрать Compose-вариант Для продакшена по умолчанию берите [Caddy](deployment.md#caddy-рекомендуемый-вариант): это самый короткий путь к публичному HTTPS без ручной раскладки сертификатов.