Sign inSign up

xyhtac/tgbot-swarm

By xyhtac

•Updated 9 months ago

Nginx/controller for running multiple stateful Telegram bots on a single host

Image
Networking
1

1.8K

xyhtac/tgbot-swarm repository overview

⁠tgbot-swarm nginx/controller Docker image

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.

⁠Usage
# 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

Tag summary

Content type

Image

Digest

sha256:dbe87fd9a…

Size

30.8 MB

Last updated

9 months ago

docker pull xyhtac/tgbot-swarm