VPS с самостоятельным администрированием
Telegram-бот не отвечает: диагностика на VPS
Начните с последнего работающего этапа, а не с переустановки. Если бот отвечает на /id, связь с Telegram уже есть; ошибка AI-вопроса относится к следующему участку. Страница Mini App, которая загружается, но отвергает проверку, отличается от сервера без рабочего HTTPS. Ниже разбираем готовые примеры, в логах которых нет текстов переписки и ключей.
Первые проверки
Из правильного каталога Compose-проекта:
docker compose ps
docker compose logs --tail=50
df -h
Сохраните время и фиксированный код/HTTP-статус. Не публикуйте .env, развёрнутую конфигурацию Compose, request body и содержимое базы. Уточните сервис: у Python-примера это bot, у Mini App — app и caddy.
Процесс бота и Telegram
| Симптом | Где искать | Следующий шаг |
|---|---|---|
| Контейнер завершается при старте | Конфигурация, права или диск | Прочитайте ошибку, проверьте обязательные значения и volume /data |
Нет ответа на /id |
Токен, сеть или второй получатель | Проверьте Telegram-ошибки и другие запущенные копии |
| Telegram 401 | Токен бота | Исправьте или замените токен, пересоздайте контейнер |
| Telegram 409 / настроен webhook | Несколько способов получения | Найдите прежний worker/webhook, оставьте одного владельца |
/id работает, AI запрещён |
Allowlist | Замените 0 числовым ID и пересоздайте контейнер |
| Restart не применяет настройки | Окружение контейнера | Используйте up -d --force-recreate |
Username не заменяет ID, а сообщения групп пример намеренно не обслуживает. Команда просмотра webhook без вывода его URL находится в сравнении polling и webhooks. Не отбрасывайте pending updates как универсальный способ ремонта.
Ошибки inference и медленные ответы
При HTTP 401/403 проверьте соответствие ключа, base URL и доступа аккаунта. При 402 — доступный для расходов баланс. HTTP 422 или missing_text_response требуют проверки точного ID и совместимости модели с текстовым Chat Completions и max_tokens. У некоторых reasoning-моделей маленького бюджета может не хватить на видимый ответ. Смена модели или лимита — осознанное действие, не автоматический fallback в боте.
Для 429 проверьте квоты и rate limits. При 5xx или connection error возможна временная недоступность провайдера. Платная попытка автоматически не повторяется. Таймаут тоже может сопровождаться списанием; повтор сообщения — новый запрос. Увеличение дневного лимита не исправляет ключ или сеть.
Сообщения обрабатываются по одному. Если VPS почти не нагружен, пока люди ждут, сначала измерьте задержку модели. Общий дневной лимит обновляется в 00:00 UTC и учитывает неудачные AI-попытки. Подробности — в контроле расходов.
Пропал контекст после restart
Проверьте исходное имя Compose-проекта, подключение bot-data, наличие /data/bot.sqlite и ненулевой HISTORY_TURNS. То, что модель не вспомнила факт, само по себе не доказывает потерю базы. На историю влияют /reset, исключение ID из allowlist и восстановление старой копии. Не удаляйте volumes для исправления: см. постоянное состояние и восстановление.
Ошибки Mini App
| Симптом | Что проверить |
|---|---|
| Нет HTTPS / ошибка сертификата | A/AAAA DNS, доступность TCP 80/443, конфликт портов, логи Caddy |
| Caddy 502 | Работу app-контейнера, обязательный token/domain |
| Просьба открыть из Telegram | Запуск через меню; в обычном браузере нет initData |
| Проверка 401 | Токен того же бота, окно в пять минут, часы хоста |
| Проверка 403 | Точное совпадение MINI_APP_DOMAIN и Origin страницы |
| Проверка 413 | Слишком большой запрос; не передавайте лишний профиль или историю |
Успех /healthz не проверяет подпись Telegram. Mini App возвращает только подтверждённую личность и не умеет отвечать через LLM: клиента модели в нём нет. До изменения кода пройдите инструкцию запуска.
После исправления один раз проверьте именно сломавшийся этап. Сохраните работающую конфигурацию и запишите изменение; повторные полные пересборки мешают найти причину. Источник: Telegram Bot API.
Тарифы из текущего каталога
Сейчас не удалось загрузить планы. Смотрите актуальные тарифы на странице цен.