{"id":13808240,"url":"https://github.com/dgongut/docker-controller-bot","last_synced_at":"2026-02-04T17:10:31.226Z","repository":{"id":215334128,"uuid":"738253069","full_name":"dgongut/docker-controller-bot","owner":"dgongut","description":"Bot de telegram para controlar los contenedores docker de tu servidor","archived":false,"fork":false,"pushed_at":"2026-01-28T17:22:25.000Z","size":5953,"stargazers_count":235,"open_issues_count":10,"forks_count":31,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-29T08:33:10.410Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dgongut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-02T19:49:55.000Z","updated_at":"2026-01-14T16:05:55.000Z","dependencies_parsed_at":"2025-03-03T19:26:32.144Z","dependency_job_id":"daac5aa8-af59-4ff3-b95b-b2f52b835639","html_url":"https://github.com/dgongut/docker-controller-bot","commit_stats":null,"previous_names":["dgongut/docker-controller-bot"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/dgongut/docker-controller-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgongut%2Fdocker-controller-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgongut%2Fdocker-controller-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgongut%2Fdocker-controller-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgongut%2Fdocker-controller-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgongut","download_url":"https://codeload.github.com/dgongut/docker-controller-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgongut%2Fdocker-controller-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29091318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T01:01:38.145Z","updated_at":"2026-02-04T17:10:31.211Z","avatar_url":"https://github.com/dgongut.png","language":"Python","readme":"# Docker-Controller-Bot\n[![](https://badgen.net/badge/icon/github?icon=github\u0026label)](https://github.com/dgongut/docker-controller-bot)\n[![](https://badgen.net/badge/icon/docker?icon=docker\u0026label)](https://hub.docker.com/r/dgongut/docker-controller-bot)\n[![](https://badgen.net/badge/icon/telegram?icon=telegram\u0026label)](https://t.me/dockercontrollerbotnews)\n[![Docker Pulls](https://badgen.net/docker/pulls/dgongut/docker-controller-bot?icon=docker\u0026label=pulls)](https://hub.docker.com/r/dgongut/docker-controller-bot/)\n[![Docker Stars](https://badgen.net/docker/stars/dgongut/docker-controller-bot?icon=docker\u0026label=stars)](https://hub.docker.com/r/dgongut/docker-controller-bot/)\n[![Docker Image Size](https://badgen.net/docker/size/dgongut/docker-controller-bot?icon=docker\u0026label=image%20size)](https://hub.docker.com/r/dgongut/docker-controller-bot/)\n![Github stars](https://badgen.net/github/stars/dgongut/docker-controller-bot?icon=github\u0026label=stars)\n![Github forks](https://badgen.net/github/forks/dgongut/docker-controller-bot?icon=github\u0026label=forks)\n![Github last-commit](https://img.shields.io/github/last-commit/dgongut/docker-controller-bot)\n![Github last-commit](https://badgen.net/github/license/dgongut/docker-controller-bot)\n![alt text](https://github.com/dgongut/pictures/blob/main/Docker-Controller-Bot/mockup.png)\n\n\u003ch3 align=\"center\"\u003e\n  ReadMe en Español\n  \u003cspan\u003e | \u003c/span\u003e\n  \u003ca href=\"./README_EN.md\"\u003eReadMe in English\u003c/a\u003e\n  \u003cspan\u003e | \u003c/span\u003e\n  \u003ca href=\"https://t.me/dockercontrollerbotnews\"\u003eCanal de Noticias en Telegram\u003c/a\u003e\n\u003c/h3\u003e\n\nLleva el control de tus contenedores docker desde un único lugar.\n\n- ✅ Listar contenedores\n- ✅ Arrancar, parar y eliminar contenedores\n- ✅ Obtener los logs tanto de manera directa como a través de fichero\n- ✅ Extraer el docker-compose de tus contenedores\n- ✅ Notificaciones cuando un contenedor se cae o se inicia\n- ✅ Notificaciones cuando un contenedor tiene una actualización pendiente\n- ✅ Actualizaciones de los contenedores\n- ✅ Cambiar el tag (rollback o actualización)\n- ✅ Limpia el sistema, eliminado contenedores, imagenes y otros objetos no utilizados.\n- ✅ Ejecuta comandos dentro de contenedores\n- ✅ Soporte de idiomas (Spanish, English, Dutch, German, Russian, Galician, Italian, Catalan)\n\n¿Lo buscas en [![](https://badgen.net/badge/icon/docker?icon=docker\u0026label)](https://hub.docker.com/r/dgongut/docker-controller-bot)?\n\n**NUEVO** Canal de novedades en [![](https://badgen.net/badge/icon/telegram?icon=telegram\u0026label)](https://t.me/dockercontrollerbotnews)\n\n🖼️ Si deseas establecerle el icono al bot de telegram, te dejo [aquí](https://raw.githubusercontent.com/dgongut/pictures/main/Docker-Controller-Bot/Docker-Controller-Bot.png) el icono en alta resolución. Solo tienes que descargarlo y mandárselo al [BotFather](https://t.me/BotFather) en la opción de BotPic.\n\n## Configuración en las variables del Docker Compose\n\n| CLAVE  | OBLIGATORIO | VALOR |\n|:------------- |:---------------:| :-------------|\n|TELEGRAM_TOKEN |✅| Token del bot |\n|TELEGRAM_ADMIN |✅| ChatId del administrador (se puede obtener hablándole al bot [Rose](https://t.me/MissRose_bot) escribiendo /id). Admite múltiples administradores separados por comas. Por ejemplo 12345,54431,55944 |\n|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 |\n|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 |\n|TELEGRAM_NOTIFICATION_CHANNEL |❌| Canal donde se publicarán exclusivamente los cambios de estado de los contenedores |\n|CONTAINER_NAME |✅| Nombre del contenedor, lo que se le ponga en container_name en el docker-compose ha de ir aquí también |\n|TZ |✅| Timezone (Por ejemplo Europe/Madrid) |\n|CHECK_UPDATES |❌| Si se desea que compruebe actualizaciones. 0 no - 1 sí. Por defecto 1|\n|CHECK_UPDATE_EVERY_HOURS |❌| Tiempo de espera en horas entre chequeo de actualizaciones. Por defecto 4 |\n|CHECK_UPDATE_STOPPED_CONTAINERS |❌| Si se desea que compruebe las actualizaciones de los contenedores detenidos. 0 no - 1 sí. Por defecto 1 | \n|GROUPED_UPDATES |❌| Si se desea que agrupe los mensajes de las actualizaciones en uno solo. 0 no - 1 sí. Por defecto 1 | \n|BUTTON_COLUMNS |❌| Numero de columnas de botones en las listas de contenedores. Por defecto 2 | \n|LANGUAGE |❌| Idioma, puede ser ES / EN / NL / DE / RU / GL / IT / CAT. Por defecto ES (Spanish) | \n|EXTENDED_MESSAGES |❌| Si se desea que muestre más mensajes de información. 0 no - 1 sí. Por defecto 0 | \n\n## Anotaciones\n\u003e [!WARNING]\n\u003e Será necesario mapear un volumen para almacenar lo que el bot escribe en /app/schedule\n\n\u003e [!NOTE]\n\u003e Si se requiere tener la sesión iniciada en algún registro como DockerHub, GitHub Registry o alguno privado (docker login) es posible trasladar ese login al contenedor mapeando el `~/.docker/config.json` a `/root/.docker/config.json`\n\n## Ejemplo de Docker-Compose para su ejecución normal\n\n```yaml\nservices:\n    docker-controller-bot:\n        environment:\n            - TELEGRAM_TOKEN=\n            - TELEGRAM_ADMIN=\n            - CONTAINER_NAME=docker-controller-bot\n            - TZ=Europe/Madrid\n            #- TELEGRAM_GROUP=\n            #- TELEGRAM_THREAD=1\n            #- TELEGRAM_NOTIFICATION_CHANNEL=\n            #- CHECK_UPDATES=1\n            #- CHECK_UPDATE_EVERY_HOURS=4\n            #- CHECK_UPDATE_STOPPED_CONTAINERS=1\n            #- GROUPED_UPDATES=1\n            #- BUTTON_COLUMNS=2\n            #- LANGUAGE=ES\n            #- EXTENDED_MESSAGES=0\n        volumes:\n            - /var/run/docker.sock:/var/run/docker.sock # NO CAMBIAR\n            - /ruta/para/guardar/las/programaciones:/app/schedule # CAMBIAR LA PARTE IZQUIERDA\n            #- ~/.docker/config.json:/root/.docker/config.json # Solo si se requiere iniciar sesión en algún registro\n        image: dgongut/docker-controller-bot:latest\n        container_name: docker-controller-bot\n        restart: always\n        network_mode: host\n        tty: true\n```\n\n## Funciones Extra mediante Labels/Etiquetas en otros contenedores\n\n- Añadiendo la etiqueta `DCB-Ignore-Check-Updates` a un contenedor, no se comprobarán actualizaciones para él.\n- Añadiendo la etiqueta `DCB-Auto-Update` a un contenedor, se actualizará automáticamente sin preguntar.\n\n## Agradecimientos\n\n- Traducción al neerlandés: [ManCaveMedia](https://github.com/ManCaveMedia)\n- Traducción al alemán: [shedowe19](https://github.com/shedowe19)\n- Traducción al ruso: [leyalton](https://github.com/leyalton)\n- Traducción al gallego: [monfero](https://github.com/monfero)\n- Traducción al italiano: [zichichi](https://github.com/zichichi)\n- Traducción al catalán: [flancky](https://t.me/flancky)\n- Pruebas del Docker Login: [garanda](https://github.com/garanda21)\n- Readme en inglés: [phampyk](https://github.com/phampyk)\n\n## ❓ Preguntas Frecuentes (FAQ)\n\n\u003cdetails\u003e\n\u003csummary\u003e🧭 ¿Puede el programa decirme de qué versión a qué versión se actualizó una imagen?\u003c/summary\u003e\n\n**Respuesta corta:** No, eso no es posible de forma automática.\n\n**Respuesta explicada:**\n\nEl programa no se basa en \"versiones\", sino en comprobar si una imagen Docker ha cambiado.  \nEsto se hace comparando el **hash (identificador único)** de la imagen local con el hash remoto.\n\n- En Docker, el **tag** (como `latest`, `v1.2`, etc.) es solo una etiqueta.\n- Esa etiqueta **no siempre representa una versión real** del software dentro de la imagen.\n- Algunos desarrolladores usan etiquetas que coinciden con la versión (como `v1.2.3`), pero no es obligatorio ni automático.\n- Por ejemplo, el tag `latest` puede apuntar a una imagen completamente distinta en cualquier momento.\n\n🔍 Por eso, aunque sepamos que una imagen cambió, **no podemos decir automáticamente \"pasaste de la versión X a la Y\"**.\n\n**¿Por qué no se muestra el changelog o la lista de cambios?**\n\nMostrar un changelog requeriría:\n\n- Saber de qué versión venías y a cuál fuiste (lo cual no es posible automáticamente).\n- Que el desarrollador del contenedor publique esa información en un lugar conocido (como GitHub o Docker Hub).\n- Que haya una forma estándar de obtenerlo, cosa que no siempre ocurre.\n\n📦 Cada contenedor es diferente, y no todos publican cambios de forma clara o accesible.\n\n**Entonces, ¿cómo puedo saber qué cambió?**\n\nPuedes hacerlo manualmente:\n\n1. El programa puede mostrarte el **hash anterior** y el **nuevo hash** de la imagen.\n2. Con esos datos, puedes ir al repositorio del contenedor (GitHub, Docker Hub, etc.).\n3. Busca allí el historial de versiones, el changelog o las notas de lanzamiento si están disponibles.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🛠️ He visto que se pueden añadir labels para controlar ciertas cosas de los contenedores, ¿cómo lo hago?\u003c/summary\u003e\n\nEfectivamente, actualmente hay dos etiquetas (*labels*) que puedes añadir a los contenedores para controlarlos:  \n- `DCB-Ignore-Check-Updates`  \n- `DCB-Auto-Update`\n\nPara añadirlas a un contenedor, basta con editar el archivo `docker-compose.yml` y agregarlas bajo la clave `labels`.  \nA continuación se muestra un ejemplo con **Home Assistant**:\n\n```yaml\nservices:\n  homeassistant:\n    image: lscr.io/linuxserver/homeassistant:latest\n    container_name: homeassistant\n    network_mode: host\n    environment:\n      - PUID=1026\n      - PGID=100\n      - TZ=Etc/Madrid\n    volumes:\n      - /volume2/docker/homeassistant/config:/config\n      - /volume2/temp/ha:/tmp\n    labels:\n      - \"DCB-Auto-Update\"\n    restart: unless-stopped\n```\n\u003c/details\u003e \n\n---\n## Solo para desarrolladores\n\n### Ejecución con código local\n\nPara 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.\nEs necesario establecer un `TELEGRAM_TOKEN` y un `TELEGRAM_ADMIN` correctos y diferentes al de la ejecución normal.\n\nLa estructura de carpetas debe quedar:\n\n```\ndocker-controller-bot/\n    ├── .env\n    ├── .gitignore\n    ├── LICENSE\n    ├── requirements.txt\n    ├── README.md\n    ├── config.py\n    ├── docker-controller-bot.py\n    ├── Dockerfile_local\n    ├── docker-compose.yaml\n    └── locale\n        ├── en.json\n        ├── es.json\n        ├── de.json\n        ├── ru.json\n        ├── gl.json\n        ├── nl.json\n        ├── cat.json\n        └── it.json\n```\n\nPara levantarlo habría que ejecutar en esa ruta: `docker compose -f docker-compose.debug.yaml up  -d --build --force-recreate`\nPara detenerlo y eliminarlo: `docker compose down --rmi`\n\nPara probar nuevos cambios bastaría con guardar. Los cambios se refrescan en caliente.\n\n### Depuración con VS Code\n\nAbre la carpeta del repositorio en [Visual Studio Code](https://code.visualstudio.com/) necesitaras las siguientes extensiones instaladas en VS Code:\n\n- [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker)\n- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)\n\n#### Instalación de las extensiones\n\n1. Abre VS Code.\n2. Ve a la extensión de la barra lateral y busca \"Docker\" y \"Python\".\n3. Instala ambas extensiones desde el Marketplace.\n\n#### Establecer Puntos de Parada (Breakpoints)\n\n1. Abre el archivo de código que deseas depurar.\n2. Haz clic en el margen izquierdo junto a la línea de código donde quieras establecer un punto de parada. Aparecerá un punto rojo indicando el `breakpoint`.\n\n#### Iniciar la Depuración\n\n1. Ve al menú `Run` y selecciona `Start Debugging` o presiona `F5`.\n2. VS Code arrancará el `docker-compose.debug.yaml` y comenzará la depuración.\n3. La ventana de depuración se abrirá en la parte inferior, mostrando las variables, la pila de llamadas y la consola de depuración.\n\n![Depuracion](assets/debug.gif)\n\n#### Conclusión de la Depuración\n\n- Para detener la sesión de depuración, ve a `Run \u003e Stop Debugging` o presiona `Shift+F5`\n","funding_links":[],"categories":["Development with Docker"],"sub_categories":["API Client"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgongut%2Fdocker-controller-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdgongut%2Fdocker-controller-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgongut%2Fdocker-controller-bot/lists"}