Skip to content

aiogram/telegram-bot-api

Repository files navigation

Unofficial Docker image of Telegram Bot API

Here is Docker image for https://github.com/tdlib/telegram-bot-api

The Telegram Bot API provides an HTTP API for creating Telegram Bots.

If you've got any questions about bots or would like to report an issue with your bot, kindly contact us at @BotSupport in Telegram.

Quick reference

Before start, you will need to obtain api-id and api-hash as described in https://core.telegram.org/api/obtaining_api_id and specify them using the TELEGRAM_API_ID and TELEGRAM_API_HASH environment variables.

And then to start the Telegram Bot API all you need to do is docker run -d -p 8081:8081 --name=telegram-bot-api --restart=always -v telegram-bot-api-data:/var/lib/telegram-bot-api -e TELEGRAM_API_ID=<api_id> -e TELEGRAM_API_HASH=<api-hash> aiogram/telegram-bot-api:latest

Configuration

Container can be configured via environment variables

TELEGRAM_API_ID, TELEGRAM_API_HASH

Application identifiers for Telegram API access, which can be obtained at https://my.telegram.org as described in https://core.telegram.org/api/obtaining_api_id

TELEGRAM_STAT

Enable statistics HTTP endpoint.

Usage: -e TELEGRAM_STAT=1 -p 8082:8082 and then check that curl http://<host>:8082 returns server statistic

TELEGRAM_FILTER

"/". Allow only bots with 'bot_user_id % modulo == remainder'

TELEGRAM_MAX_WEBHOOK_CONNECTIONS

default value of the maximum webhook connections per bot

TELEGRAM_VERBOSITY

log verbosity level

TELEGRAM_LOG_FILE

Filename where logs will be redirected (By default logs will be written to stdout/stderr streams)

TELEGRAM_MAX_CONNECTIONS

maximum number of open file descriptors

TELEGRAM_PROXY

HTTP proxy server for outgoing webhook requests in the format http://host:port

TELEGRAM_LOCAL

allow the Bot API server to serve local requests

TELEGRAM_HTTP_IP_ADDRESS

Use the TELEGRAM_HTTP_IP_ADDRESS: "[::]" parameter to listen on the ipv6 intranet

TELEGRAM_HTTP_PORT

Set which port the api server should listen to if you want to run the image in network mode as host and want to change the port.

If not set then the api server will listen to port 8081.

Start with persistent storage

Server working directory is /var/lib/telegram-bot-api so if you want to persist the server data you can mount this folder as volume:

-v telegram-bot-api-data:/etc/telegram/bot/api

Note that all files in this directory will be owned by user telegram-bot-api and group telegram-bot-api (uid: 101, gid: 101, compatible with nginx image)

Usage via docker stack deploy or docker-compose

version: '3.7'

services:
  telegram-bot-api:
    image: aiogram/telegram-bot-api:latest
    environment:
      TELEGRAM_API_ID: "<api-id>"
      TELEGRAM_API_HASH: "<api-hash>"
    volumes:
      - telegram-bot-api-data:/var/lib/telegram-bot-api
    ports:
      - "8081:8081"

volumes:
  telegram-bot-api-data: