tgbotserver
Ready to use server for your telegram bot Supported scaling
Quick start
TGBS_TOKEN
requeired. APP_EMAIL
and TGBS_WEBHOOK
optional if not use webhook.
cat <<EOT >> env
export APP_EMAIL="myemail@mydomain.com"
export TGBS_TOKEN="123456789:ABCDEFG............................"
export TGBS_WEBHOOK="https://mydomain.com/"
export APP_LOGLEVEL="level"
EOT
source ./env
./gen_docker-compose.py
# Generation...
# Done for 'docker-compose.yml'.
# Done for 'apps/reverseproxy/config.toml'.
# OK.
# Next
# 1. if use pumper (suited for development and experimentation)
# 2. if use webhook (is better suited to production)
# ---------------------------------
# 1. If use pumper
# ---------------------------------
docker-compose up -d pumper database
# Creating network "tgbotserver_default" with the default driver
# Creating msgsys
# Creating database
# Creating telegramapi_pumper
# to wait for database startup
docker-compose up -d worker
# Creating telegramapi_worker_1
# Done. Bot ready
# ---------------------------------
# 2. If use webhook
# ---------------------------------
docker-compose up -d reverseproxy tuner database listener
# to wait for database startup
docker-compose up -d worker
Configuration
gen_docker-compose.py
- generator settings from theenv
env
- your settingsenv.example
- template settingsdocker-compose.yml.example
- template for docker-compose fileimages/reverseproxy/config.toml.example
- template for traefik settings
cp env.example env
Use the file to enter your settings.
- APP_EMAIL - email for feedback to generate ssl (letsencrypt.org)
- TGBS_TOKEN - telegram bot token (crate new bot)
- TGBS_WEBHOOK - your webhook url (set webhook,lo)
Update the environment variables and to generate a settings.
source ./env
./gen_docker-compose.py
Run
Services
- reverseproxy - reverse proxy
- database - database
- appconfig - customize application (only if use webhook)
- httplistener - query processor from telegram
- pump - loader updates (only if not use webhook)
- msgsys - service messages
- appworker - application logic
Request updates
If you do not have their own domain or for development on local machine should request updates.
##################
# run server
##################
docker-compose up -d pumper database
# to wait for database startup
docker-compose up -d worker
##################
# if required.
##################
# application scaling
# docker-compose scale worker=5
Receive updates
For production it is recommended to receive update via webhook.
##################
# run server
##################
docker-compose up -d reverseproxy listener tuner database
# to wait for database startup
docker-compose up -d worker
##################
# if required.
##################
# application scaling
# docker-compose scale worker=5
# scaling listener
# docker-compose scale listener=10
Libraries
...
Test
curl -XPOST -H Host:subdomain.domain.com http://127.0.0.1 -d "payload"
TODO
[ ] centralized logging [ ] run listener and workers for different needs (for different applications, dynamic name of channels, etc)