Skip to content

Bot de telegram para controlar los contenedores docker de tu servidor

License

Notifications You must be signed in to change notification settings

dgongut/docker-controller-bot

Repository files navigation

docker-controller-bot

Docker Pulls Docker Stars Docker Image Size Github stars Github forks Github last-commit Github last-commit alt text

Lleva el control de tus contenedores docker desde un único lugar.

  • ✅ Listar contenedores
  • ✅ Arrancar, parar y eliminar contenedores
  • ✅ Obtener los logs tanto de manera directa como a través de fichero
  • ✅ Extraer el docker-compose de tus contenedores
  • ✅ Notificaciones cuando un contenedor se cae o se inicia
  • ✅ Notificaciones cuando un contenedor tiene una actualización pendiente
  • ✅ Actualizaciones de los contenedores
  • ✅ Cambiar el tag (rollback o actualización)
  • ✅ Limpia el sistema, eliminado contenedores, imagenes y otros objetos no utilizados.
  • ✅ Soporte de idiomas (Spanish, English, Dutch, German, Russian)

¿Lo buscas en ?

NUEVO Canal de novedades en

🖼️ Si deseas establecerle el icono al bot de telegram, te dejo aquí el icono en alta resolución. Solo tienes que descargarlo y mandárselo al @BotFather en la opción de BotPic.

Configuración en config.py

CLAVE OBLIGATORIO VALOR
TELEGRAM_TOKEN Token del bot
TELEGRAM_ADMIN ChatId del administrador (se puede obtener hablándole al bot Rose escribiendo /id). Admite múltiples administradores separados por comas. Por ejemplo 12345,54431,55944
TELEGRAM_GROUP ChatId del grupo. Si este bot va a formar parte de un grupo, es necesario especificar el chatId de dicho grupo. Es necesario que el bot sea administrador del grupo
TELEGRAM_THREAD Thread del tema dentro de un supergrupo; valor numérico (2,3,4..). Por defecto 1. Se utiliza en conjunción con la variable TELEGRAM_GROUP
TELEGRAM_NOTIFICATION_CHANNEL Canal donde se publicarán exclusivamente los cambios de estado de los contenedores
CONTAINER_NAME Nombre del contenedor, lo que se le ponga en container_name en el docker-compose ha de ir aquí también
TZ Timezone (Por ejemplo Europe/Madrid)
CHECK_UPDATES Si se desea que compruebe actualizaciones. 0 no - 1 sí. Por defecto 1
CHECK_UPDATE_EVERY_HOURS Tiempo de espera en horas entre chequeo de actualizaciones (4 horas por defecto)
BUTTON_COLUMNS Numero de columnas de botones en las listas de contenedores (2 columnas por defecto)
LANGUAGE Idioma, puede ser ES / EN / NL / DE. Por defecto es ES (Spanish)
EXTENDED_MESSAGES Si se desea que muestre más mensajes de información. 0 no - 1 sí. Por defecto 0

Anotaciones

Será necesario mapear un volumen para almacenar lo que el bot escribe en /app/schedule

Ejemplo de Docker-Compose para su ejecución normal

version: '3.3'
services:
    docker-controller-bot:
        environment:
            - TELEGRAM_TOKEN=
            - TELEGRAM_ADMIN=
            - CONTAINER_NAME=docker-controller-bot
            - TZ=Europe/Madrid
            #- TELEGRAM_GROUP=
            #- TELEGRAM_THREAD=1
            #- TELEGRAM_NOTIFICATION_CHANNEL=
            #- CHECK_UPDATES=1
            #- CHECK_UPDATE_EVERY_HOURS=4
            #- BUTTON_COLUMNS=2
            #- LANGUAGE=ES
            #- EXTENDED_MESSAGES=0
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock # NO CAMBIAR
            - /ruta/para/guardar/las/programaciones:/app/schedule # CAMBIAR LA PARTE IZQUIERDA
        image: dgongut/docker-controller-bot:latest
        container_name: docker-controller-bot
        restart: always
        network_mode: host
        tty: true

Funciones Extra mediante Labels/Etiquetas en otros contenedores

  • Añadiendo la etiqueta DCB-Ignore-Check-Updates a un contenedor, no se comprobarán actualizaciones para él.
  • Añadiendo la etiqueta DCB-Auto-Update a un contenedor, se actualizará automáticamente sin preguntar.

Agradecimientos

Traducción al neerlandés: ManCaveMedia Traducción al alemán: shedowe19 Traducción al ruso: leyalton


Solo para desarrolladores - Ejecución con código local

Para su ejecución en local y probar nuevos cambios de código, se necesita renombrar el fichero .env-example a .env con los valores necesarios para su ejecución. Es necesario establecer un TELEGRAM_TOKEN y un TELEGRAM_ADMIN correctos y diferentes al de la ejecución normal.

La estructura de carpetas debe quedar:

docker-controller-bot/
    ├── .env
    ├── LICENSE
    ├── README.md
    ├── config.py
    ├── docker-controller-bot.py
    ├── Dockerfile_local
    ├── docker-compose.yaml
    └── locale
        ├── en.json
        ├── es.json
        ├── de.json
        ├── ru.json
        └── nl.json

Para levantarlo habría que ejecutar en esa ruta: docker compose up -d

Para detenerlo y probar nuevos cambios habría que ejecutar en esa ruta: docker compose down --rmi

About

Bot de telegram para controlar los contenedores docker de tu servidor

Resources

License

Stars

Watchers

Forks

Packages

No packages published