Главная/Боты/Свой Bot API

Локальный Telegram Bot API server в Docker Compose

Telegram Bot API server в Docker Compose поднимает на вашем сервере тот же API, что работает на api.telegram.org, только без его ограничений: в режиме --local бот отправляет файлы до 2000 МБ и скачивает без лимита. Официального образа нет, сервер собирают из исходников tdlib/telegram-bot-api, а для запуска нужны свои api_id и api_hash.

4 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Свой Bot API нужен ботам, которые работают с большими файлами или держат тяжёлый вебхук. Соберите его из исходников в Docker, запустите с --local, не открывайте порт 8081 в интернет: сервер принимает только HTTP и сам не шифрует трафик.

VPS с NVMe-диском: бот и свой Bot API на одной машине, файлы читаются прямо с диска.

Как переключить бота на локальный Bot API

01 · 1 мин

Что даёт свой Telegram Bot API server#

Telegram Bot API server это открытый код того самого сервера, к которому обращается любой бот. Запущенный у себя с флагом --local, он снимает ограничения облачного API:

  • скачивание файлов без лимита вместо 20 МБ и загрузка до 2000 МБ вместо 50 МБ;
  • загрузка файлов по локальному пути, а getFile сразу отдаёт абсолютный путь к файлу на диске;
  • вебхук по HTTP, на любой локальный IP и любой порт;
  • max_webhook_connections до 100000 вместо 100.

Telegram сам пишет, что обычным ботам хватает облачного API. Переезжать стоит, если бот пересылает видео, архивы и большие документы, а общие вопросы размещения разобраны на странице телеграм-бот на хостинге. Код сервера открыт под Boost Software License.

02 · 1 мин

Где взять api_id и api_hash для Bot API server#

Это единственные обязательные параметры. Их получают на my.telegram.org в разделе API development tools под своим аккаунтом Telegram, порядок описан в документации Telegram «Obtaining api_id». Передаются они флагами --api-id и --api-hash или переменными окружения TELEGRAM_API_ID и TELEGRAM_API_HASH.

Пара привязана к вашему аккаунту, поэтому храните её как пароль: в файле .env с правами 600, вне репозитория.

03 · 1 мин

Telegram Bot API server в Docker Compose#

Зависимости по README: OpenSSL, zlib, компилятор с C++17, gperf и CMake 3.10 и новее. Двухэтапный Dockerfile собирает сервер и оставляет в образе только готовую программу:

FROM debian:12 AS build
RUN apt-get update && apt-get install -y git cmake g++ gperf make zlib1g-dev libssl-dev
RUN git clone --recursive https://github.com/tdlib/telegram-bot-api.git /src
WORKDIR /src/build
RUN cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build . --target install

FROM debian:12
RUN apt-get update && apt-get install -y libssl3 zlib1g && rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/bin/telegram-bot-api /usr/local/bin/
WORKDIR /data
ENTRYPOINT ["telegram-bot-api", "--local", "--dir=/data"]
services:
  bot-api:
    build: .
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8081:8081"

В .env лежат TELEGRAM_API_ID и TELEGRAM_API_HASH. Собирать образ при каждом обновлении не обязательно: соберите его один раз и храните в реестре контейнеров. Если бот тоже в контейнере, подключите к нему том ./data: в режиме --local он читает скачанные файлы прямо с диска.

Инструмент · 1 мин

Как переключить бота на локальный Bot API#

Запросы идут в том же формате, меняется только адрес: вместо https://api.telegram.org/bot<токен>/getMe бот обращается к http://127.0.0.1:8081/bot<токен>/getMe. В aiogram и python-telegram-bot для этого есть настройка своего сервера API.

Перед переключением вызовите logOut на облачном API: иначе Telegram не гарантирует, что все сообщения дойдут. После выхода вернуться в облако можно только через 10 минут. Для переезда между двумя своими серверами есть метод close: удалите вебхук, закройте экземпляр и перенесите подпапку бота из рабочей папки старого сервера.

Переезд бота на свой Bot API

Отмечайте шаги по порядку

05 · 1 мин

Вебхук через локальный Telegram Bot API#

Облачный API шлёт вебхук только по HTTPS и только на порты 443, 80, 88 и 8443. Локальный сервер отправляет его по обычному HTTP на любой порт и локальный адрес, например http://127.0.0.1:8080/ или имя контейнера бота в сети Compose. Домен и сертификат для вебхука больше не нужны.

Сам Bot API server понимает только HTTP. Если обращаться к нему нужно с другого сервера, ставьте перед ним прокси с TLS, например Nginx или Caddy, либо соединяйте серверы приватной сетью.

06 · 1 мин

Вопросы о своём Telegram Bot API server#

Есть ли официальный Docker-образ Telegram Bot API server?

В README tdlib описана только сборка из исходников через CMake и генератор инструкций для разных систем. Образы на Docker Hub собирает сообщество, проверяйте, из какого кода они сделаны.

Можно ли вернуть бота с локального Bot API обратно на api.telegram.org?

Да. Вызовите logOut на своём сервере и снова отправляйте запросы в облако. Если бот только что вышел из облачного API, войти туда снова получится через 10 минут.

На каком порту работает Telegram Bot API server?

По умолчанию на 8081, порт меняет флаг --http-port. Сервер принимает только HTTP, поэтому наружу его не открывают без прокси с TLS.

Почему этому можно верить

Как мы проверяли

Требования из документацииРесурсы, порты и команды сверены с официальной документацией, дата проверки указана.
Всё можно повторитьКоманды и расчёты описаны так, что их повторит любой читатель.
Независимый справочникНе связан с разработчиками приложений и провайдерами и пишет о минусах тоже.

Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Реестр контейнеров Таймвеб Клауд, timeweb.cloud/services/container-registry, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Telegram Bot API: получение обновлений, setWebhook, лимиты файлов, logOut, core.telegram.org/bots/api, проверено 14 октября 2026; tdlib/telegram-bot-api: README, сборка, флаги и переезд бота, github.com/tdlib/telegram-bot-api, проверено 14 октября 2026.

SBРедакция SelfBase · обновлено 16 октября 2026

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

  • NVMe-диски и гарантированная доля процессора
  • Root-доступ и любой софт, от Docker до игровых серверов
  • Маркетплейс: 91 приложение в один клик
  • Бесплатный перенос проекта силами специалистов
Переезд бота