Skip to main content

Шаг 1. Настройка backend бота

В .env файле бота добавьте:
Перезапустите бота:

Шаг 2. Получение frontend файлов

Вариант A: Docker образ (рекомендуется)

Вариант B: Сборка из исходников (через Docker)

Отредактируйте .env:
Соберите и извлеките:

Вариант C: Сборка без Docker (через npm)

Установите Node.js через NVM:
Соберите проект:
Собранные файлы будут в dist/. Скопируйте их на сервер:

Шаг 3. Размещение файлов на сервере

Шаг 4. Настройка обратного прокси

Подробная настройка — в разделе Настройка прокси.

Шаг 5. Запуск и проверка

Откройте https://cabinet.example.com в браузере. Вы должны увидеть экран авторизации через Telegram.

Альтернативная установка: Docker контейнер

Если не хотите раздавать статику напрямую, можно проксировать запросы на Docker контейнер cabinet.

docker-compose.yml

docker-compose.yml

Caddyfile

Caddyfile
В этом варианте кэшированием статики занимается nginx внутри контейнера.

Устранение проблем

CORS ошибка в консоли браузера

Домен кабинета не добавлен в CABINET_ALLOWED_ORIGINS в .env бота. Добавьте и перезапустите.

API возвращает HTML вместо JSON

Прокси настроен неправильно — запросы /api/* попадают на frontend вместо backend. Проверьте порядок блоков handle в Caddyfile (API должен быть первым).

502 Bad Gateway

  1. Backend бота не запущен — проверьте docker ps
  2. Контейнеры в разных Docker сетях:
  3. Неправильное имя сервиса:

Telegram авторизация не работает

  1. VITE_TELEGRAM_BOT_USERNAME должен быть без @
  2. Домен кабинета добавлен в BotFather → Bot Settings → Domain

Белый экран / SPA не работает

Прокси не настроен на fallback к index.html. Убедитесь что try_files {path} /index.html (Caddy) или try_files $uri /index.html (Nginx) присутствует.

Белый экран, ошибка входа или бесконечная загрузка

Если кабинет не загружается, показывает ошибку авторизации или зависает — скорее всего протухла сессия. Telegram запомнил старые данные входа и пытается их использовать. Нужно очистить кэш WebView. Android:
  1. Telegram → Настройки (меню слева)
  2. Пролистайте в самый низ до номера версии
  3. Зажмите палец на версии на пару секунд → отпустите (появится смайлик)
  4. Зажмите на версии ещё раз → откроется Debug Menu
  5. Нажмите «Clear WebView cache»
  6. Вернитесь в бот
iPhone / iPad:
  1. Telegram → вкладка «Настройки» (внизу справа)
  2. Быстро тапните по иконке настроек 10 раз подряд (за 2-3 секунды)
  3. Откроется Debug Menu
  4. Нажмите «Clear WebView cache»
  5. Вернитесь в бот
Telegram Desktop (Windows / Linux):
  1. Настройки → Продвинутые настройки
  2. Внизу нажмите «Experimental settings»
  3. Очистите данные WebView
  4. Перезапустите бот
Telegram для macOS (из App Store):
  1. Быстро кликните 5 раз по иконке «Настройки» внизу
  2. Откроется Debug Menu
  3. Нажмите «Clear WebView cache»
  4. Перезайдите в бот
«Telegram для macOS» из App Store и «Telegram Desktop» с сайта — разные приложения. Для версии с сайта используйте инструкцию для Desktop.
Если не помогло:
  1. Полностью закройте Telegram (не сверните, а именно закройте) и откройте заново
  2. Удалите чат с ботом и запустите заново через /start
  3. Если ничего не помогает — переустановите Telegram. Все чаты, подписки и контакты хранятся в облаке и никуда не денутся