diff --git a/docs/configuration/env-vars.md b/docs/configuration/env-vars.md index cb29c66..b7dbdf7 100644 --- a/docs/configuration/env-vars.md +++ b/docs/configuration/env-vars.md @@ -117,6 +117,10 @@ | --- | --- | | `PANEL_API_URL` | URL API панели, например `https://panel.example.com/api`. | | `PANEL_API_KEY` | API-ключ панели. | +| `APP_RUNTIME_MODE` | Профиль запуска: `production`, `development`, `staging`, `test`. | +| `PANEL_WRITE_MODE` | `auto`, `live` или `dry_run`. В `dry_run` приложение читает живую Remnawave Panel, но мутации пользователей только валидируются и логируются. `auto` включает dry-run для `development`/`test`, а в production остается live. | +| `PANEL_DRY_RUN_VALIDATE_REMOTE` | При dry-run проверять ссылки на panel users/internal squads через live `GET`. | +| `PANEL_DRY_RUN_SYNTHETIC_CREATE` | При dry-run возвращать синтетического panel user на попытку `POST /users`, чтобы dev-цепочки могли завершиться в локальной БД. | | `PANEL_WEBHOOK_SECRET` | Секрет проверки Remnawave webhook. Задайте его в Remnawave Panel и вставьте то же значение сюда или в админку. | | `USER_SQUAD_UUIDS` | Internal Squads по умолчанию для legacy-режима без JSON-каталога. | | `USER_EXTERNAL_SQUAD_UUID` | Необязательный External Squad. | diff --git a/docs/getting-started/deployment.md b/docs/getting-started/deployment.md index 7d55e61..cee2da1 100644 --- a/docs/getting-started/deployment.md +++ b/docs/getting-started/deployment.md @@ -409,3 +409,37 @@ app.example.com { ```bash APP_ENV_FILE=.env.staging docker compose --env-file .env.staging up -d --build ``` + +## Dev dry-run рядом с production + +Для проверки фичей на той же Remnawave Panel поднимайте dev-стек с отдельным +env-файлом, отдельным Telegram-ботом и локальной БД. +В dev-режиме приложение продолжает читать пользователей, squads, devices и +статистику из живой панели, но записи в пользователей Remnawave не отправляет: +payload валидируется, а в логах появляется строка вида +`[PANEL DRY-RUN OK] would PATCH /users ...`. + +Минимальный фрагмент `.env.dev`: + +```env +APP_RUNTIME_MODE=development +PANEL_WRITE_MODE=dry_run +PANEL_DRY_RUN_VALIDATE_REMOTE=True +PANEL_DRY_RUN_SYNTHETIC_CREATE=True + +REDIS_KEY_PREFIX=remnawave-tg-shop-dev +BACKUP_ENABLED=False +``` + +Запуск: + +```bash +APP_ENV_FILE=.env.dev docker compose --env-file .env.dev up -d --build +``` + +`PANEL_WRITE_MODE=live` можно поставить только для отдельной тестовой Remnawave +Panel, потому что этот режим реально меняет пользователей панели. + +Если второй стек запускается на том же хосте, дополнительно разведите +`WEB_SERVER_PORT` и `FRONTEND_PORT`. Если production на другом сервере, локальные +порты можно оставить стандартными.