Si tienes un homelab con varios contenedores Docker, sabrás la pereza que da mantenerlos actualizados manualmente. Os presento PullPilot, la herramienta que soluciona esto de forma visual y sencilla.
La verdad es que este proyecto nace de la frustración. Como os he comentado antes estaba cansado de tener que acordarme de actualizar los contenedores y sobre todo de ver que las alternativas actuales eran demasiado complejas para algo TAN simple, entonces básicamente he creado una webapp con un dashboard súper limpio que escanea tus Dockers y te permite mantenerlos al día.
Lo único que hay que tener en cuenta (como con cualquier actualizador) son los "breaking changes" es decir, que si los desarrolladores de esas imagenes docker hacen cambios bruscos en sus proyectos (rara vez pasa en proyectos serios) puede que rompas el docker-compose.yml pero te pasaría igualmente si lo hicieras a mano.
Tenéis toda la información de su funcionamiento, instalación y configuración en el repo (Kernel-Nomad/PullPilot), pero os doy unas pinceladas de sus características principales:
- Control Total: Tú decides cuándo actualizar. Puedes darle al botón de "Actualizar Todo" o ir proyecto por proyecto.
- Modo "Full Stop": Si tienes servicios delicados (como bases de datos) que no se llevan bien con un reinicio en caliente. He añadido un interruptor para forzar una bajada completa (
docker compose down) antes de actualizar y volver a subir. - Lista de Excluidos: Puedes marcar proyectos específicos para que sean ignorados en las actualizaciones masivas.
- Programación (Cron): Puedes programar actualizaciones automáticas (diarias, semanales, etc.) directamente desde la interfaz.
Espero que os mole, salu2
Instalación rápida mediante docker compose
1) Crear y configurar el .env
DOCKER_ROOT_PATH= # /home/user/docker
TZ=Europe/Madrid
AUTH_USER=admin
AUTH_PASS=password
# PULLPILOT_PORT=8000
SESSION_SECRET= # 2gcs1br2kf8dasjk8
2) Crea el docker-compose.yml
services:
pullpilot:
container_name: pullpilot
image: ghcr.io/kernel-nomad/pullpilot
restart: unless-stopped
env_file:
- .env
ports:
- "${PULLPILOT_PORT:-8000}:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- pullpilot_data:/app/data
- ${DOCKER_ROOT_PATH}:${DOCKER_ROOT_PATH}
- ./sessions:/app/sessions
environment:
- TZ=${TZ}
- PROJECTS_ROOT=${DOCKER_ROOT_PATH}
volumes:
pullpilot_data:
Una vez iniciado, podrás acceder a la interfaz en http://localhost:8000 (o la IP de tu servidor) e iniciar sesión con el usuario y contraseña que definiste en el .env.