docs: refactor docs structure

This commit is contained in:
3252a8
2026-05-26 23:31:04 +03:00
parent c3381bdd31
commit 11048a6ed8
26 changed files with 203 additions and 192 deletions
-59
View File
@@ -1,59 +0,0 @@
# Обслуживание
Плановое обслуживание обычно сводится к обновлению образов, проверке миграций, логов и резервных копий PostgreSQL.
## Обновление
```bash
docker compose pull
docker compose up -d
docker compose logs -f migrate backend worker
```
## Резервная копия PostgreSQL
```bash
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB"' > backup.sql
```
## Проверки после работ
- `docker compose ps`
- `docker compose logs -f backend worker frontend`
- `/healthz` на backend-домене
- вход в Mini App и админку
- тестовый платеж или тестовая активация
## Синхронизация GitLab-зеркала
Основное место работы - GitHub remote `origin`. GitLab remote `gitlab` используется как запасное зеркало.
После пуша в GitHub синхронизируйте зеркало:
```bash
bash scripts/sync-gitlab-mirror.sh
```
PowerShell-вариант:
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\sync-gitlab-mirror.ps1
```
По умолчанию скрипт делает `git fetch origin --prune --tags`, пушит все ветки из `origin/*` в `gitlab` и пушит теги. Он не удаляет ветки в GitLab и не делает force-push. Для строгого зеркалирования доступны флаги:
```bash
bash scripts/sync-gitlab-mirror.sh --force --prune
```
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\sync-gitlab-mirror.ps1 -Force -Prune
```
Перед опасными режимами можно посмотреть команды без выполнения:
```bash
bash scripts/sync-gitlab-mirror.sh --force --prune --dry-run
```
Подробности: [развертывание](../deployment.md) и [логи](../troubleshooting/logs.md).
-19
View File
@@ -1,19 +0,0 @@
# Пользователи
Пользовательские операции выполняются в Web App админке. Доступ получают только Telegram-пользователи из `ADMIN_IDS`.
## Что доступно администратору
- список пользователей с поиском и фильтрами;
- просмотр подписки, статуса, трафика и premium-лимитов;
- блокировка пользователя;
- ручная синхронизация с Remnawave Panel;
- тикеты поддержки и ответы пользователю;
- просмотр платежей и служебных событий.
## Связанные разделы
- [Админ-панель](../features/admin-panel.md)
- [Поддержка пользователей / тикеты](../features/support.md)
- [Тарифы](../features/tariffs.md)
- [Mini App](../features/web-app.md)
+1 -1
View File
@@ -34,4 +34,4 @@ openssl rand -hex 32
- Следите за логами платежных вебхуков и вебхуков панели.
- После ротации секретов перезапускайте соответствующие сервисы и проверяйте вебхуки.
См. также [переменные окружения](env-vars.md) и [развертывание](../deployment.md).
См. также [переменные окружения](env-vars.md) и [развертывание](../getting-started/deployment.md).
+8 -1
View File
@@ -18,6 +18,13 @@
Раздел **Пользователи** — таблица с **пагинацией по 25 записей**. Строка поиска ищет по внутреннему числовому ID, Telegram ID, фрагменту `@username`, имени или email; применение — кнопка «Найти» или клавиша Enter в поле поиска.
Из этого же раздела администратор управляет основными пользовательскими операциями:
- просматривает подписку, статус, трафик, premium-лимиты, платежи и служебные события;
- блокирует пользователя;
- запускает ручную синхронизацию с Remnawave Panel;
- открывает тикеты поддержки и отвечает пользователю.
**Фильтры:**
- состояние аккаунта: все / не забанены / забанены;
@@ -72,7 +79,7 @@
}
```
### Инструкции подключения
## Инструкции подключения
Секция **Система -> Настройки -> Инструкции подключения** управляет встроенным экраном установки. `SUBSCRIPTION_GUIDES_ENABLED` включает `/install` в личном кабинете, а `SUBSCRIPTION_GUIDES_BOT_MENU_ENABLED` заставляет кнопки подключения в Telegram-боте открывать Mini App вместо финальной Remnawave Subscription Page. Оба переключателя включены по умолчанию.
+6 -6
View File
@@ -118,7 +118,7 @@ https://app.domain.com/auth/telegram/callback
Для Brevo обычно подходит порт `587` с STARTTLS. Если основной порт недоступен, приложение пробует порты из `SMTP_FALLBACK_PORTS`; порт `465` используется через SSL.
Полный список переменных, обязательные поля для включения входа по email и типичные ошибки подключения описаны в разделе **SMTP и вход по email** в [configuration.md](../configuration.md).
Полный список переменных, обязательные поля для включения входа по email и типичные ошибки подключения описаны в разделе **SMTP и вход по email** в [configuration.md](../getting-started/configuration.md).
## Проксирование
@@ -131,12 +131,12 @@ https://app.domain.com/auth/telegram/callback
WebApp API на `backend:8081`, поэтому внешний обратный прокси обычно не должен отправлять эти пути в
`backend:8081` напрямую.
Готовые варианты описаны в разделе [Развертывание](../deployment.md#готовые-папки-запуска):
Готовые варианты описаны в разделе [Развертывание](../getting-started/deployment.md#готовые-папки-запуска):
- [Caddy](../deployment.md#caddy-рекомендуемый-вариант) - автоматический HTTPS;
- [Nginx](../deployment.md#nginx) - сертификаты в соседней папке `ssl/`;
- [Pangolin/Newt](../deployment.md#pangolin--newt) - публикация без входящих портов на сервере приложения;
- [без обратного прокси](../deployment.md#без-обратного-прокси) - прямая публикация портов для проверки или внешней TLS-платформы.
- [Caddy](../getting-started/deployment.md#caddy-рекомендуемый-вариант) - автоматический HTTPS;
- [Nginx](../getting-started/deployment.md#nginx) - сертификаты в соседней папке `ssl/`;
- [Pangolin/Newt](../getting-started/deployment.md#pangolin--newt) - публикация без входящих портов на сервере приложения;
- [без обратного прокси](../getting-started/deployment.md#без-обратного-прокси) - прямая публикация портов для проверки или внешней TLS-платформы.
В default `docker-compose.yml` наружу публикуются `frontend` и webhook/backend port, а внутри Docker
network сервисы доступны друг другу по service DNS names:
@@ -7,7 +7,7 @@
Админка сохраняет overrides в базе данных и применяет их поверх `.env`. Это удобно для платежей, внешнего вида, поддержки, уведомлений, legacy-цен и большинства пользовательских параметров. Тарифы редактируются отдельно в разделе **Система -> Тарифы** и сохраняются в JSON-файл `TARIFFS_CONFIG_PATH`.
Полный справочник всех переменных вынесен в [configuration/env-vars.md](configuration/env-vars.md).
Полный справочник всех переменных вынесен в [configuration/env-vars.md](../configuration/env-vars.md).
## Минимальный `.env`
@@ -102,9 +102,9 @@ docker compose exec backend sh -lc 'id; touch /app/data/themes/test && rm /app/d
## Дополнительные разделы
- [configuration/env-vars.md](configuration/env-vars.md) - полный справочник переменных `.env`.
- [features/admin-panel.md](features/admin-panel.md) - как устроены overrides и allowlist настроек.
- [features/tariffs.md](features/tariffs.md) - JSON-каталог тарифов и редактор тарифов.
- [Веб-приложение / Mini App](features/web-app.md) - домен Mini App, Telegram OAuth и вход по email.
- [Поддержка пользователей / тикеты](features/support.md) - тикеты поддержки и уведомления.
- [configuration/env-vars.md](../configuration/env-vars.md) - полный справочник переменных `.env`.
- [features/admin-panel.md](../features/admin-panel.md) - как устроены overrides и allowlist настроек.
- [features/tariffs.md](../features/tariffs.md) - JSON-каталог тарифов и редактор тарифов.
- [Веб-приложение / Mini App](../features/web-app.md) - домен Mini App, Telegram OAuth и вход по email.
- [Поддержка пользователей / тикеты](../features/support.md) - тикеты поддержки и уведомления.
- [Развертывание](deployment.md) - Docker Compose, обратный прокси, Caddy/Nginx и обновления.
@@ -1,7 +1,7 @@
# Развертывание
Документ описывает продакшен-запуск после разделения проекта на `backend`, `frontend` и `worker`.
Перед стартом заполните минимальный `.env` по [configuration.md](configuration.md). Полный справочник переменных лежит в [configuration/env-vars.md](configuration/env-vars.md); после первого входа большинство продуктовых настроек удобнее менять через Web App админку.
Перед стартом заполните минимальный `.env` по [configuration.md](configuration.md). Полный справочник переменных лежит в [configuration/env-vars.md](../configuration/env-vars.md); после первого входа большинство продуктовых настроек удобнее менять через Web App админку.
## Быстрый старт
+1 -9
View File
@@ -10,17 +10,9 @@ Remnawave Minishop состоит из Telegram-бота, backend API, worker-п
- **PostgreSQL** - пользователи, платежи, настройки, поддержка, промокоды и служебные данные.
- **Redis** - FSM, кеши, rate limit, очередь вебхуков и distributed locks.
## Сценарии
- пользователь открывает Mini App, видит подписку и оплачивает тариф;
- платежный провайдер отправляет webhook в backend;
- worker применяет фоновые задачи и синхронизацию;
- Remnawave Panel хранит пользователя, подписку и ссылку подключения;
- администратор управляет тарифами, поддержкой, пользователями и настройками через админку.
## Куда идти дальше
- [Установка](setup.md) - базовый запуск через Compose.
- [Развертывание](../deployment.md) - Docker Compose, Caddy, Nginx, Pangolin/Newt и запуск без обратного прокси.
- [Развертывание](deployment.md) - Docker Compose, Caddy, Nginx, Pangolin/Newt и запуск без обратного прокси.
- [Архитектура](../architecture.md) - структура каталогов и сервисов.
- [Mini App](../features/web-app.md) - публичный frontend, Telegram OAuth и инструкции установки.
+6 -6
View File
@@ -22,7 +22,7 @@ docker compose logs -f backend worker frontend
## Как выбрать Compose-вариант
Для продакшена по умолчанию берите [Caddy](../deployment.md#caddy-рекомендуемый-вариант): это самый короткий путь к публичному HTTPS без ручной раскладки сертификатов.
Для продакшена по умолчанию берите [Caddy](deployment.md#caddy-рекомендуемый-вариант): это самый короткий путь к публичному HTTPS без ручной раскладки сертификатов.
```bash
cd deploy/examples/caddy
@@ -31,11 +31,11 @@ nano .env
docker compose up -d
```
Остальные варианты описаны в [разделе развертывания](../deployment.md#готовые-папки-запуска):
Остальные варианты описаны в [разделе развертывания](deployment.md#готовые-папки-запуска):
- [Nginx](../deployment.md#nginx) - если у вас уже есть TLS-сертификаты и нужен Nginx в Docker-сети;
- [Pangolin/Newt](../deployment.md#pangolin--newt) - если нельзя открывать входящие порты на сервере приложения;
- [без обратного прокси](../deployment.md#без-обратного-прокси) - для локальной проверки или внешнего TLS-терминатора.
- [Nginx](deployment.md#nginx) - если у вас уже есть TLS-сертификаты и нужен Nginx в Docker-сети;
- [Pangolin/Newt](deployment.md#pangolin--newt) - если нельзя открывать входящие порты на сервере приложения;
- [без обратного прокси](deployment.md#без-обратного-прокси) - для локальной проверки или внешнего TLS-терминатора.
## После первого входа
@@ -45,4 +45,4 @@ docker compose up -d
4. Проверьте инструкции подключения.
5. Сделайте тестовую покупку или пробную активацию.
Подробности: [настройка окружения](../configuration.md) и [развертывание](../deployment.md).
Подробности: [настройка окружения](configuration.md) и [развертывание](deployment.md).
+1 -21
View File
@@ -4,29 +4,9 @@ Remnawave Minishop - Telegram-бот и Mini App для продажи и упр
> Проект работает вместе с Remnawave Panel: панель хранит пользователей и подписки, а Minishop отвечает за Telegram, платежи, Mini App, тарифы и операционную админку.
## Быстрый старт
- [Обзор](getting-started/overview.md) - архитектура, сервисы и основные сценарии.
- [Установка](getting-started/setup.md) - путь от `.env` до первого запуска.
- [Развертывание](deployment.md) - Docker Compose, Caddy, Nginx, Pangolin/Newt и запуск без обратного прокси.
- [Настройка платежей](features/payments.md) - включение провайдеров и проверка вебхуков.
- [Безопасность](configuration/security.md) - секреты, доступы и публичные URL.
- [Админ-панель](features/admin-panel.md) - пользователи, настройки, рассылки, поддержка и тарифы.
- [Миграции](migrations/index.md) - готовые сценарии переноса с других ботов.
- [Устранение неполадок](troubleshooting/issues.md) - быстрые проверки для частых проблем.
## Ключевые возможности
- **Продажа подписок** - тарифы на срок и по трафику, докупки трафика, HWID-устройства, premium-сквады и Telegram Stars.
- **Продажа подписок** - тарифы на срок и по трафику, докупки трафика, HWID-устройства, [premium-сквады](features/tariffs.md#premium-сквады-и-отдельный-лимит)
- **Жизненный цикл пользователей** - регистрация, пробный период, продление, синхронизация с панелью и предупреждения по трафику.
- **Mini App** - личный кабинет, инструкции установки, Telegram OAuth, вход по email и публичные реферальные ссылки.
- **Операционные инструменты** - админка, тикеты поддержки, промокоды, рассылки, логи и настройки поверх `.env`.
## Справочник
- [Переменные окружения](configuration/env-vars.md)
- [Развертывание](deployment.md)
- [Тарифы](features/tariffs.md)
- [Темы Web App](features/webapp-themes.md)
- [Миграции](migrations/index.md)
- [Миграция с remnawave-tg-shop](migrations/remnawave-tg-shop.md)
+2 -22
View File
@@ -2,26 +2,6 @@
Этот раздел содержит готовые инструкции миграции в Remnawave Minishop из уже описанных источников. Каждая поддерживаемая миграция должна быть отдельным Markdown-файлом с конкретными шагами, ограничениями, командами и проверками.
Сейчас в документации есть только один готовый сценарий:
| Источник | Поддерживаемый случай | Инструкция |
| Источник | Поддерживаемый случай | Документы |
| --- | --- | --- |
| `remnawave-tg-shop` `v2.7.0` и близкие версии | Переезд старого stack/volume PostgreSQL на split-архитектуру Minishop `v3.4+`, обновление `.env`, запуск `migrate`, проверка обратного прокси | [Миграция с remnawave-tg-shop](remnawave-tg-shop.md) |
## Что покрывает текущая миграция
Инструкция для `remnawave-tg-shop` рассчитана на родственный стек, где заранее известны Docker volumes, контейнеры, схема БД и путь обновления:
- перенос PostgreSQL volume `remnawave-tg-shop-db-data` в новый volume Minishop;
- создание новых пустых volumes `redis-data` и `shop-data`;
- перенос Caddy volumes при использовании Caddy-варианта;
- обновление переменных окружения, которые изменились после `v2.7.0`;
- запуск one-shot сервиса `migrate`;
- переход с одного upstream `remnawave-tg-shop:8000` на `backend:8080` и `frontend:80`;
- запуск через корневой compose или готовые примеры Docker Compose.
## Что пока не описано
Для других Telegram-ботов, самописных панелей и ручных таблиц готовой инструкции пока нет. Такие источники нельзя переносить по инструкции `remnawave-tg-shop`: у них могут отличаться таблицы пользователей, модель тарифов, статусы платежей, связь с Remnawave Panel, формат промокодов, рефералы и правила отката.
Когда для конкретного источника появится проверенный сценарий, он должен быть добавлен в этот раздел отдельным файлом и отдельной строкой в таблице выше.
| [remnawave-tg-shop](https://github.com/kavore/remnawave-tg-shop/) | Полный перенос всех данных | [Инструкция](remnawave-tg-shop.md) |
+2 -2
View File
@@ -131,7 +131,7 @@ docker compose \
| — | `REDIS_URL=redis://redis:6379/0` | Обязательна для воркера, очередей и rate-limit. По умолчанию в compose-файлах уже задана. |
| — | `WEBAPP_SESSION_SECRET`, `WEBAPP_ENABLED`, `WEBAPP_SERVER_PORT`, `WEBAPP_THEMES_DIR`, `TARIFFS_CONFIG_PATH` | Новые настройки Web App / тарифного каталога. Безопасные дефолты есть в `.env.example`. |
Полный референс — [docs/configuration.md](../configuration.md). Скрипт миграции
Полный референс — [docs/getting-started/configuration.md](../getting-started/configuration.md). Скрипт миграции
эти переменные **не правит** автоматически (только `POSTGRES_HOST`), потому
что у каждой инсталляции свой шаблон `.env` с кастомными значениями. Лучше
сравнить свой `.env` с `.env.example` глазами один раз, чем получить
@@ -361,7 +361,7 @@ server {
```
Полные примеры (Caddy, Nginx, Newt/Pangolin и запуск без обратного прокси) — в
[docs/deployment.md](../deployment.md) и [docs/features/web-app.md](../features/web-app.md). Если раньше прокси указывал на
[docs/getting-started/deployment.md](../getting-started/deployment.md) и [docs/features/web-app.md](../features/web-app.md). Если раньше прокси указывал на
`remnawave-tg-shop:8000` напрямую, после миграции нужно либо переключиться на
`backend:8080` / `frontend:80`, либо использовать готовый Caddy/Nginx/Newt
пример, который уже знает правильную маршрутизацию.
+1 -1
View File
@@ -30,4 +30,4 @@
- Посмотрите backend-логи.
- Сверьте статус платежа в админке и кабинете провайдера.
Подробности: [логи](logs.md) и [развертывание](../deployment.md).
Подробности: [логи](logs.md) и [развертывание](../getting-started/deployment.md).
+1 -1
View File
@@ -101,4 +101,4 @@ docker compose up -d
docker compose logs -f backend worker frontend
```
См. также [проблемы](issues.md) и [развертывание](../deployment.md).
См. также [проблемы](issues.md) и [развертывание](../getting-started/deployment.md).
+25
View File
@@ -0,0 +1,25 @@
# Обслуживание
Плановое обслуживание обычно сводится к обновлению образов, проверке миграций, логов и резервных копий PostgreSQL.
## Обновление
```bash
docker compose pull
docker compose up -d
docker compose logs -f migrate backend worker
```
## Резервная копия PostgreSQL
```bash
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB"' > backup.sql
```
## Проверки после работ
- `docker compose ps`
- `docker compose logs -f backend worker frontend`
- `/healthz` на backend-домене
- вход в Mini App и админку
- тестовый платеж или тестовая активация