Nginx/controller for running multiple stateful Telegram bots on a single host
1.8K
tgbot-swarm sets up a container running nginx and nodejs controller that generates reverse proxy configs for nginx and reloads nginx when containers with corresponding ENV variables are started and stopped. It also creates self-signed certificate and exposes it through docker shared volume, making it easy to start multiple containers serving independent Telegram bots on a single host.
# Create a named volume for certificates
mkdir -p "/opt/swarm-certificate" \
docker volume create --driver local \
--opt type=none \
--opt device=/opt/swarm-certificate \
--opt o=bind tgbot-swarm-certificates
# Ensure a named network exists
docker network inspect tgbot-swarm >/dev/null 2>&1 || \\
docker network create --driver bridge tgbot-swarm
# Spin up tgbot-swarm nginx + controller
docker run -d --name tgbot-swarm-controller \
--restart unless-stopped \
--network tgbot-swarm \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
-v tgbot-swarm-certificates:/etc/nginx/certs \
-e HOSTNAME=foo.bar.com \
-p 443:443/tcp \
xyhtac/tgbot-swarm:latest
# Spin up an example Telegram bot
docker run -d --name tgbot-swarm-samplebot \
--restart unless-stopped \
--network tgbot-swarm \
-e BOT_TOKEN=[SECRET_BOT_TOKEN] \
-e SWARM_DB_PASS=[SECRET_DB_PASSWORD] \
-e SWARM_DB_HOST=tgbot-swarm-datastore \
-e SWARM_DB_STORE=samplebot \
-e SWARM_PATH=samplebot \
-e SWARM_PORT=3300 \
-v tgbot-swarm-certificates:/app/certs:ro \
-p 3300:3300/tcp \
xyhtac/tgbot-swarm-samplebot:latest
Content type
Image
Digest
sha256:dbe87fd9a…
Size
30.8 MB
Last updated
9 months ago
docker pull xyhtac/tgbot-swarm