Веб-админка
Полный обзор панели: где что настраивать, зачем нужен каждый раздел и с чего начать после установки.
Вход и роли
Адрес панели: https://ваш-домен.ru/{admin_secret_path}/. Путь задаётся в Настройки → Основные → ⚙️ Системные → admin_secret_path.
| Параметр | Где | Зачем |
|---|---|---|
admin_web_password | Основные → Системные | Пароль входа. При смене сбрасываются все сессии. |
admin_ip_whitelist | Основные → 🔒 Безопасность | Доступ только с указанных IP/CIDR. Loopback всегда разрешён. |
moderator_sections | Основные → вкладка 👤 Модератор | JSON-список разделов для роли модератора. |
Администратор vs модератор
- Администратор — настройки, панели Remnawave, аналитика, бэкап, push, обновления.
- Модератор — только разделы из
moderator_sections: обычно клиенты, платежи, тарифы, инструменты (без/settings/,/analytics, Remnawave).
PWA и мобильный интерфейс
Админку можно установить как приложение (PWA) на iPhone и Android — откройте панель в браузере и добавьте на главный экран:
- iPhone (Safari) — «Поделиться» → «На экран „Домой“».
- Android (Chrome) — меню ⋮ → «Установить приложение» / «Добавить на главный экран» (формулировка зависит от версии Chrome).
На телефоне внизу — быстрые вкладки Главная / Клиенты / Платежи. Интерфейс учитывает safe-area (вырез, индикатор жестов). Push-уведомления — Настройки → Push (нужны HTTPS и разрешение уведомлений в браузере).
Карта бокового меню
Все пункты — в левом сайдбаре (на телефоне — гамбургер + нижняя панель для трёх главных разделов).
Рекомендуемый порядок первой настройки
- 1Основные —
bot_token, доменыconnect_page_url/sub_page_url. - 2Методы оплаты — ключи шлюзов и переключатели
show_payment_*. См. документацию. - 3Remnawave → Настройки → Подключение — URL, токен, сквад, трафик.
- 4Тарифы → Продление — линейка и активный набор тарифов.
- 5Subpage — ссылки приложений, тема, HWID (если нужен).
- 6Тексты / Стиль кнопок — тексты бота и подписи кнопок меню.
Главная
Оперативная сводка без углубления в карточки клиентов.
- Карточки клиентов — всего в базе, регистрации за сутки, активные подписки, заблокированные, «без пробного» (пустой UUID).
- Статистика сервера — CPU/RAM/диск хоста, где крутится админка (SSE в реальном времени).
- Аналитика пользователей — регистрации и источники за период (сегодня / 7 / 30 дней, UTC).
Финансовая аналитика и графики выручки — в отдельном разделе Аналитика.
Клиенты
Основной раздел поддержки. Поиск: Telegram ID, @username, email, UUID.
Список
- Фильтры: активная подписка, истекающие, заблокированные, теги.
- Ссылка на Заблокированные — отдельный список.
- Создать пользователя — ручной ID (до 19 цифр для SQLite), выдача подписки без Telegram.
Карточка клиента
| Действие | Назначение |
|---|---|
| Продление / дни / GB | Ручное изменение срока и трафика (Remnawave — сброс трафика при продлении дней, если включено в настройках RW). |
Лимит устройств (limit_ip) | Синхронизация с Remnawave. |
| Синхронизация с панелью | Подтянуть UUID, email, лимиты из Remnawave. |
| Отправить инструкцию | Сообщение в бот с фото и кнопками приложений (Happ / Android). |
| Блокировка / удаление | Блок — клиент не пользуется VPN; удаление — необратимо. |
| Онлайн, IP, трафик | Живые данные с панели Remnawave, история запросов подписки. |
| Партнёр / реферал | Привязка invited_by, партнёрский процент. |
Платежи
Журнал всех попыток оплаты: pending, succeeded, canceled. Фильтр по методу, периоду, пользователю.
- succeeded — учитываются в аналитике «Выручка».
- Отменённые по таймауту — см. логику бота (ожидание оплаты).
- Ручное подтверждение — если шлюз не прислал webhook (редкие кейсы).
Настройка шлюзов — Методы оплат, не в этом разделе.
Аналитика
Только для администратора. Период: 7 / 30 / 90 / 365 дней или всё время.
- Выручка — сумма платежей
status = succeeded. - ARPU, конверсия, средний чек — по платящим за период.
- Лимит устройств — распределение
limit_ipтолько у клиентов с активной подпиской (окончание > сейчас, UTC). - Графики: регистрации, оплаты, методы оплаты, трафик Remnawave.
Сотрудничество
Рефералы
Статистика программы «приведи друга». Параметры в Основные → 👥 Реферальная система: ref_bonus_on_join_days, ref_bonus_on_payment_days, переключатели показа кнопок.
Тексты сообщений — Настройки → Тексты → 👥 Реферальная программа.
Партнёры
Список партнёров с балансом, рефералами и оплатами. KPI на странице (оптимизированные SQL-агрегаты).
- Карточка партнёра — начисления, выплаты, индивидуальный
partner_percent_rub. - Экспорт CSV — выгрузка для бухгалтерии.
- Глобально:
partner_percent_rub,partner_min_withdraw_rub,show_partner_program_buttonв Основных.
Продвижение
Материалы и ссылки для партнёров (баннеры, тексты, UTM). Отдельные промо-кампании от реферальной механики.
Тарифы
Продление
Тарифы подписки в боте и на сайте. Рекомендуется линейка тарифов — именованный набор, один активный набор в момент времени.
| Поле тарифа | Назначение |
|---|---|
| Цена / дни | Стоимость и срок продления. |
limit_ip | Лимит устройств (0 = без лимита в панели). |
| Трафик GB | Для Remnawave. |
| Звёзды TG | Отдельная цена для Telegram Stars. |
| Методы оплаты | Какие шлюзы доступны для этого тарифа. |
Подробнее: Методы оплат → Тарифы.
Докупить GB
Тарифы докупки трафика (только Remnawave). Нужен traffic_renewal_enabled в Remnawave → Настройки.
Лимит устройств
Платный апгрейд limit_ip без сброса срока: клиент платит за оставшиеся дни. Настройка цен за слот, минимальный чек, вкл/выкл функции.
Формула в боте: пропорция оставшихся дней × цена слота; «Подписка далее» — из минимального месячного тарифа с включённым методом оплаты.
Настройки
Все подразделы сохраняют данные в таблицу settings (или отдельные таблицы для subpage/backup). После сохранения бот подхватывает изменения через перезагрузку конфига.
Основные
Вкладки на одной странице. Кнопка «Сохранить все настройки» внизу формы.
| Вкладка | Что настраивать |
|---|---|
| 🤖 Настройки бота | bot_token, project_name, trial_days / trial_limit_ip, show_* кнопок меню, show_website_button, канал, капча, подписка на канал. |
| 🔗 Ссылки | URL канала, поддержки, соглашения, политики, кастомная кнопка. Подписи кнопок — в «Стиль кнопок». |
| 💳 Методы оплаты | Порядок кнопок (payment_methods_order), переключатели show_payment_*, ключи YooKassa, Platega v2, CryptoBot, YooMoney, Wata, TG Stars. Карточки провайдеров с готовым webhook URL (connect_page_url + путь). |
| 👥 Реферальная система | Бонусы в днях, включение программы. |
| 💠 Партнёрская программа | Процент по умолчанию, мин. вывод, кнопка в боте. |
| ⚙️ Системные | connect_page_url (домен бота/API), sub_page_url, admin_secret_path, пароль админки, telegram_proxy_url, email домен. |
| 🔒 Безопасность | Rate limit бота, защита от ботов, whitelist IP админки. Тексты капчи — в «Тексты». |
| 📋 Задачи | cleanup_disabled_clients_*, server_health_check_* — фоновые проверки. |
| 👤 Модератор | Чекбоксы видимых разделов для роли модератора. |
remnawave_* перенесены в Remnawave → Настройки — не ищите их в Основных.Тексты
Все пользовательские сообщения бота по категориям:
- 👋 Приветствие и подписка
- 💳 Оплата и продление
- 🎟️ Промокоды
- 👥 Реферальная программа
- 💬 Поддержка
- 📘 О сервисе и инструкции
- 🤖 Защита от ботов
Поддерживаются плейсхолдеры ({username}, срок подписки и т.д.) — смотрите подсказки в форме.
Стиль кнопок
Подписи inline-кнопок главного меню и разделов (не путать с URL из «Ссылки»). Можно сбросить к значениям по умолчанию.
Subpage
Subpage — раздел веб-админки для управления страницей подписки клиентов через xuiweb. Раньше большая часть этих параметров лежала только в .env subpage, теперь админка сохраняет JSON-настройки в таблицу settings, а subpage может подтянуть их через endpoint /api/settings/info при старте.
- Основная информация — название проекта, тема, support/website URL, интервал автообновления, текст анонса, разрешение копирования ключей, заглушки «истекла», «заблокирован», «лимит устройств».
- HWID — тумблер лимита устройств (
hwid_limit_enabled, читает xuiweb сразу) и «Принудительно требовать X-HWID от приложений». Оба в Настройки → SUBPAGE, не в.env. - Ссылки приложений — отдельные ссылки Happ и INCY для iOS, Android, APK, Windows, macOS и Linux. Это именно ссылки, которые клиент видит на странице подписки.
- HTTP-заголовки — динамическая таблица заголовков
RESP_HEADER_*: напримерProfile-Title,Announceи другие данные для клиентских приложений.
API_CUSTOM_SETTINGS=true. Если API недоступен или поле пустое — остаётся fallback из .env.После изменения custom-настроек обычно нужен рестарт subpage, чтобы он заново подтянул JSON-конфиг. Заглушки блокировки и HWID-проверка работают через xuiweb и могут применяться без полного переноса настроек в .env. Подробнее: SUBPAGE, HWID.
Доп возможности
- Ссылки приложений в кабинете на сайте —
app_link_*для личного кабинета (WEBSITE), не для subpage. - Доп. ссылки в подписке —
sub_extra_links_active: vless/vmess/trojan в тело подписки активным клиентам. - VLESS backup — резервные ключи в подписке (если включено).
HWID-лимит на subpage — в разделе Subpage, не здесь.
Push-уведомления
Web Push для PWA админки: подписка администратора на уведомления. Требует HTTPS и разрешения браузера. Справка по содержимому — INFO у заголовка.
- О платежах — отдельный тумблер, устройства, VAPID.
- Недоступность нод — отдельная задача: интервал (10 мин), повтор (24 ч), журнал с пагинацией.
Бэкап
Авто- и ручной бэкап ZIP: vpn_bot.db, .env. При S3 — также devices.db; Telegram при включённом S3 не используется.
| Поле | Назначение |
|---|---|
admin_telegram_id | Куда слать ZIP в Telegram (если S3 выкл). |
| Интервал / вкл | Планировщик авто-бэкапа. |
| S3 | endpoint, bucket, keys, prefix — см. раздел ниже. |
Remnawave
Настройки
В меню админки это отдельный пункт Remnawave (не «Панели»). Подпункты: Дашборд (ноды, пользователи) и Настройки с вкладками Подключение / Вебхуки и NO LIMIT / JSON подписка.
| Блок настроек | Назначение |
|---|---|
| Подключение | remnawave_enabled, base URL, API token. Путь: Remnawave → Настройки → Подключение. |
| Новые пользователи | Сквад при продлении; сквад триала необязателен (пустое = как при продлении); лимит трафика GB (0 = безлимит; на триале; при тарифе с traffic_gb = 0 сбросится; для NO LIMIT+ обязательно заполнить). |
| Продление трафика | Отдельная опция докупки GB в боте. |
| Вебхуки и NO LIMIT | Секрет, squad при исчерпании трафика, приём вебхуков. |
| Балансировка ключей | Один текстовый ключ на имя хоста (sub_link_dedup_*) — для plain-подписки, не JSON. Подробнее. |
| JSON и умная балансировка | JSON-подписка для Happ/INCY, группы стран, AUTO. Подробнее. |
Полная инструкция: Remnawave.
Xray JSON
JSON-подписка для Happ, INCY и других клиентов. Хосты и группы берутся из Remnawave, плейсхолдеры подставляются при генерации. Умная балансировка.
Инструменты
| Раздел | Назначение |
|---|---|
| Миграция | Не обязательна. Перенос клиентов с 3XUI или на новую панель Remnawave. Использованный трафик не переносится. Остановите бота на время миграции. Инструкция. |
| Задачи | Очередь фоновых задач: массовые операции, статус выполнения. |
| Отчёты |
|
| Рассылка | Шаблоны новостей в бот + кнопка бесплатного продления (free_renewal_days в Основных). |
| Сервисы | systemd: vpn-bot, vpn-webadmin, xuiweb, website, subpage — start/stop/restart, журнал. |
| Обновления | Загрузка обновлений проекта с сервера обновлений (только для админов с правом updates). |
Промокоды
Создание кодов на дни / скидку — через раздел промокодов (доступ из меню или настроек, в зависимости от версии). Тексты — в Тексты → Промокоды.
Бэкап и S3 (подробно)
devices.db (HWID). Нужен pip install boto3 на сервере бота.- 1Заполните S3: endpoint, region, bucket, access key, secret (пустой secret при сохранении = не менять).
- 2Включите «Отправка в S3» и интервал авто-бэкапа.
- 3«Сделать бэкап сейчас» — проверка вручную.
last_backupобновится при успехе Telegram или S3.
Восстановление — Переезд проекта.