
Por qué un stack pequeño de contenedores vence a uno grande
Leer “5 just-enough Docker containers I use on every PC” en XDA nos hizo hacer inventario de nuestros propios stacks y eliminar dos tercios de lo que estábamos ejecutando. Un laboratorio casero que nunca se toca porque requiere una hora para comprender es un laboratorio muerto. Un conjunto pequeño y deliberado de contenedores que cubra interfaz de administración, uptime, secretos, bloqueo de anuncios y actualizaciones es la versión a la que seguimos volviendo años después, en Windows con Docker Desktop, en macOS con OrbStack y en Linux con Docker Engine plano.
Probamos ocho contenedores a través de un ciclo de instalación limpia en cada uno de esos hosts, luego ejecutamos el stack durante una semana laboral para verificar el uso de RAM, CPU en reposo y cuántos errores encontramos. Todo aquí se puede iniciar con docker compose up -d y funciona bien detrás de un firewall de red doméstica.
Qué buscar en un stack minimalista de contenedores
- Se ejecuta desde un archivo compose. Todo el conjunto debe iniciarse junto en un comando, no dieciséis paneles para hacer clic.
- Huella de reposo baja. Un stack que dejas en una mini PC debe estar en reposo en un porcentaje bajo de RAM de dos dígitos, no más.
- Interfaz web o nada. Las herramientas de solo línea de comandos pertenecen al host, no a Docker. Cada contenedor aquí tiene una interfaz de navegador.
- Historia de copia de seguridad. Cualquier cosa que almacene estado debe ser trivialmente respaldable (un volumen montado único o bind mount).
- Consciente de actualizaciones. Los contenedores que nunca se actualizan son contenedores comprometidos. El stack debe incluir una manera de mantenerlos frescos.
- Patrón de proxy inverso documentado. Los despliegues reales terminan detrás de Traefik, Caddy o nginx, y la documentación de contenedores debe mostrarte cómo.
Comparación rápida
| Aplicación | Mejor para | Huella en reposo | Interfaz web | Licencia |
|---|---|---|---|---|
| Portainer | Gestionar contenedores visualmente | Baja | Sí | Community edition free |
| Uptime Kuma | Vigilar servicios y obtener alertas | Muy baja | Sí | MIT |
| Vaultwarden | Gestor de contraseñas auto-hospedado | Muy baja | Sí | GPLv3 |
| Pi-hole | Bloqueo de anuncios y rastreadores a nivel DNS | Muy baja | Sí | EUPL |
| Watchtower | Actualización automática de contenedores | Muy baja | Sin interfaz web | Apache 2.0 |
| Homepage | Panel de control personal para el stack | Muy baja | Sí | GPLv3 |
| Traefik | Proxy inverso para el resto del stack | Baja | Sí (panel) | MIT |
| Duplicati | Copia de seguridad para host y volúmenes de contenedores | Baja | Sí | LGPLv2.1 |
Los ocho contenedores que ejecutamos en cada host
1. Portainer, la interfaz de administración que hace Docker legible
Portainer es el panel del navegador que convierte la línea de comandos de Docker en un conjunto de pantallas. Iniciar y detener contenedores, extraer imágenes, inspeccionar volúmenes, registros finales, exec en un contenedor, diagramas de red, todo. Para cualquiera que no quiera mantener los últimos treinta comandos docker en su cabeza, Portainer es por donde empieza el día.
Donde se queda corto: La edición Business está detrás de una licencia; la edición Community cubre todo lo que necesita un laboratorio casero de un solo nodo, pero algunas características empresariales (RBAC más allá de un par de cuentas, almacén de secretos cifrados) son de pago.
Precio:
- Gratis: Community edition para uso personal y de pequeños equipos
- Pagado: Business edition con precios por nodo
- vs docker CLI sin procesar: Más rápido para navegar, más lento para scripting
Se ejecuta en: Windows Docker Desktop, macOS OrbStack, Docker Engine en Linux.
Descargar: portainer.io
Conclusión: El primer contenedor para instalar en un host nuevo, antes de instalar cualquier otra cosa.
2. Uptime Kuma, el monitor que te avisa antes que tu familia
Uptime Kuma es una página de estado auto-hospedada y motor de alertas. Hace ping a una URL, puerto TCP, base de datos o verificación de salud de contenedor en un horario, luego pinta un tablero de estado y activa alertas (Discord, Telegram, correo electrónico, ntfy) cuando algo se rompe. Agregar un nuevo servicio es un formulario de dos minutos.
Donde se queda corto: No está construido para cientos de servicios (es una herramienta de laboratorio casero, no Datadog). Sus propios reinicios dejan una brecha en la línea de tiempo.
Precio:
- Gratis: Producto completo
- Pagado: Ninguno
- vs monitoreo comercial: Más simple, privado, sin facturación por verificación
Se ejecuta en: Docker en Windows, macOS, Linux.
Descargar: Uptime Kuma on GitHub
Conclusión: El contenedor que hace observable el resto del stack. Agrégalo segundo.
3. Vaultwarden, el Bitwarden auto-hospedado compacto
Vaultwarden es una reimplementación en Rust de la API del servidor Bitwarden. Se ejecuta en una fracción de la RAM que consume el contenedor oficial, habla el mismo protocolo que las aplicaciones oficiales de Bitwarden y almacena todo en un único archivo SQLite que es trivial de respaldar.
Donde se queda corto: Proyecto comunitario, no respaldado por Bitwarden. Algunas características empresariales (proveedores SSO, sincronización de directorios) están limitadas a niveles pagos en Bitwarden hospedado.
Precio:
- Gratis: El contenedor es gratuito; los costos de almacenamiento sean lo que sea que cueste tu disco
- Pagado: Ninguno
- vs Bitwarden hospedado: Control total, tus propias copias de seguridad, tiempo de actividad autoadministrado
Se ejecuta en: Cualquier host Docker.
Descargar: Vaultwarden on GitHub
Conclusión: El contenedor que finalmente te permite abandonar un gestor de contraseñas hospedado sin perder la sincronización entre dispositivos.
4. Pi-hole, el bloqueador de anuncios para cada dispositivo en la red
Pi-hole ejecuta un servidor DNS que no devuelve nada para dominios en sus listas de bloqueo. Apunta el DNS de tu router al contenedor Pi-hole y cada dispositivo en la red (teléfonos, televisores, impresoras) de repente pierde sus conexiones de anuncios y rastreadores a nivel DNS, sin necesidad de instalación por dispositivo.
Donde se queda corto: Algunos servicios se basan en dominios de rastreadores para que los enlaces funcionen; la memoria muscular de la lista blanca lleva una semana construir. Las listas de bloqueo solo HTTPS aún pierden anuncios servidos desde el mismo dominio que el sitio.
Precio:
- Gratis: Producto completo
- Pagado: Ninguno
- vs bloqueador de anuncios del navegador: Cubre teléfonos, televisores e IoT; no oculta anuncios a nivel de elemento en la página
Se ejecuta en: Docker en cualquier host; más feliz en una máquina siempre encendida.
Descargar: pi-hole.net
Conclusión: El único contenedor que cambia lo que ve todo el hogar, que es un buen retorno por diez minutos de compose.
5. Watchtower, el conserje que mantiene los contenedores frescos
Watchtower observa tus otros contenedores, verifica imágenes más nuevas y extrae más reinicia en un horario que estableces. Envíalo con una notificación de Discord o Slack y cada mañana obtienes un resumen de lo que se actualizó durante la noche.
Donde se queda corto: Las actualizaciones automáticas pueden romper servicios en ejecución si una imagen envía una mala versión. Fijar versiones a etiquetas específicas o usar filtros de etiquetas es la mitigación.
Precio:
- Gratis: Producto completo
- Pagado: Ninguno
- vs actualizaciones manuales: Automatización con pequeño riesgo vs obsolescencia consistente sin riesgo de sorpresas
Se ejecuta en: Cualquier host Docker.
Descargar: containrrr.dev/watchtower
Conclusión: El contenedor que evita que el resto del stack se pudra.
6. Homepage, el panel que hace el stack encontrable
Homepage es un panel ligero que enumera tus servicios con iconos, verificaciones de salud e integraciones que muestran datos en vivo (estado de Uptime Kuma, conteos de Portainer, colas de Sonarr si ejecutas uno). Márcalo en cada navegador y nunca perderás la URL de un contenedor nuevamente.
Donde se queda corto: La configuración es YAML en disco; la parte buena es que vive en git, la parte mala es que no es una interfaz click-to-add.
Precio:
- Gratis: Completamente de código abierto
- Pagado: Ninguno
- vs barra de marcadores del navegador: Datos en vivo, un lugar para el hogar
Se ejecuta en: Docker en cualquier host.
Descargar: Homepage on GitHub
Conclusión: El contenedor que convierte el resto del stack de “URLs que recuerdo” en una verdadera puerta de entrada.
7. Traefik, el proxy inverso que habla a través del resto del stack
Traefik es el proxy inverso que permite que cada otro contenedor responda en su propio subdominio (portainer.home, kuma.home, vault.home) en lugar de memorizar números de puerto. Observa etiquetas de Docker y actualiza el enrutamiento automáticamente, por lo que agregar un nuevo contenedor que obtiene una URL pública requiere tres líneas de etiqueta y una aplicación de compose.
Donde se queda corto: El primer despliegue de Traefik tiene más perillas que los demás; las etiquetas del enrutador y la configuración del resolvedor TLS requieren una lectura cuidadosa de la documentación.
Precio:
- Gratis: Traefik Proxy es completamente de código abierto
- Pagado: Traefik Enterprise es un producto separado
- vs nginx: Configuración nativa de contenedor, menos clásica
Se ejecuta en: Cualquier host Docker.
Descargar: traefik.io
Conclusión: El único contenedor que cambia todo el stack de “IPs y puertos” a “URLs legibles para humanos.”
8. Duplicati, la copia de seguridad que mantiene seguros los volúmenes de contenedores
Duplicati es el cliente de copia de seguridad para el resto del stack. Apúntalo a tus volúmenes de Docker y bind mounts, elige un destino (local, SSH, S3, B2, WebDAV), establece un horario, y cada noche los datos importantes obtienen una copia de seguridad cifrada y deduplicada fuera del host.
Donde se queda corto: La interfaz web es funcional más que pulida. Los flujos de trabajo de restauración requieren un recorrido la primera vez.
Precio:
- Gratis: Producto completo
- Pagado: Ninguno
- vs scripts manuales
docker run --rm -v: Realmente se ejecuta en horario, captura nuevos volúmenes
Se ejecuta en: Docker en cualquier host.
Descargar: duplicati.com
Conclusión: El único contenedor que la gente omite y luego se arrepiente cuando muere un disco. Agrega temprano.
Cómo elegir el stack minimalista correcto
- Si este es tu primer host Docker: Portainer, Uptime Kuma y Vaultwarden son los tres que se pagan en la primera semana.
- Si tu red doméstica está llena de anuncios: agrega Pi-hole y redirige el DNS de tu router.
- Si ya tienes un stack en crecimiento: agrega Watchtower y Homepage a continuación; ambos hacen el resto más manejable.
- Si planeas exponer cualquier servicio en un subdominio: Traefik entra antes de la exposición, no después.
- Si te importa no perder lo que construyes: Duplicati es el contenedor que convierte tu stack compose en algo que realmente puedes recuperar.
Preguntas frecuentes
¿Estos contenedores se ejecutan en una PC Windows con Docker Desktop?
Sí. Cada uno de los ocho envía una imagen multi-arch oficial (linux/amd64 y linux/arm64) que se ejecuta idénticamente en Docker Desktop para Windows, OrbStack en macOS y Docker Engine en Linux.
¿Cuánta RAM usa este stack en reposo?
En una Raspberry Pi 5 con 4GB y en una mini PC pequeña con 8GB, los ocho contenedores juntos quedan en reposo en cientos bajos de megabytes de RAM. Vaultwarden y Pi-hole son los más ligeros; Traefik y Duplicati crecen brevemente durante el trabajo activo.
¿Es seguro dejar Watchtower en actualizaciones automáticas?
Principalmente. El patrón más seguro es ejecutar Watchtower con filtros de etiquetas para que solo actualice contenedores que has etiquetado como “seguro para auto-actualización” y dejar el resto en actualizaciones manuales. Fijar versiones a etiquetas principales es otra mitigación común.
¿Necesito Portainer si ya estoy cómodo en la CLI de Docker?
Portainer es una capa de conveniencia. Si estás bien con la CLI y lees registros con docker compose logs -f, puedes omitirlo. La mayoría de las personas que lo agregan dejan de desinstalarlo después de una semana.
¿Puedo ejecutar este stack en un NAS Synology o QNAP?
Sí. Ambos proveedores envían interfaces de Container Manager que leen archivos de compose estándar, y cada contenedor aquí es compatible. En Synology DSM 7, Container Manager puede importar el archivo compose directamente.