Шаг 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
- Backend бота не запущен — проверьте
docker ps - Контейнеры в разных Docker сетях:
- Неправильное имя сервиса:
Telegram авторизация не работает
VITE_TELEGRAM_BOT_USERNAMEдолжен быть без@- Домен кабинета добавлен в BotFather → Bot Settings → Domain
Белый экран / SPA не работает
Прокси не настроен на fallback кindex.html. Убедитесь что try_files {path} /index.html (Caddy) или try_files $uri /index.html (Nginx) присутствует.
Белый экран, ошибка входа или бесконечная загрузка
Если кабинет не загружается, показывает ошибку авторизации или зависает — скорее всего протухла сессия. Telegram запомнил старые данные входа и пытается их использовать. Нужно очистить кэш WebView. Android:- Telegram → Настройки (меню слева)
- Пролистайте в самый низ до номера версии
- Зажмите палец на версии на пару секунд → отпустите (появится смайлик)
- Зажмите на версии ещё раз → откроется Debug Menu
- Нажмите «Clear WebView cache»
- Вернитесь в бот
- Telegram → вкладка «Настройки» (внизу справа)
- Быстро тапните по иконке настроек 10 раз подряд (за 2-3 секунды)
- Откроется Debug Menu
- Нажмите «Clear WebView cache»
- Вернитесь в бот
- Настройки → Продвинутые настройки
- Внизу нажмите «Experimental settings»
- Очистите данные WebView
- Перезапустите бот
- Быстро кликните 5 раз по иконке «Настройки» внизу
- Откроется Debug Menu
- Нажмите «Clear WebView cache»
- Перезайдите в бот
- Полностью закройте Telegram (не сверните, а именно закройте) и откройте заново
- Удалите чат с ботом и запустите заново через
/start - Если ничего не помогает — переустановите Telegram. Все чаты, подписки и контакты хранятся в облаке и никуда не денутся
