Ruta de aprendizaje Principiante
Self-hosting con Docker: de cero a producción
El camino guiado para montar tu propia infraestructura con Docker: instala el motor, domina redes, volúmenes, secretos, healthchecks y límites de recursos, y añade un panel, un proxy inverso, SSO y una capa de seguridad.
- 29 recursos
- 22 visitas
- ~219 min
- 19 guías + 10 labs
Esta ruta de aprendizaje enseña a levantar y mantener tu propia infraestructura de self-hosting con Docker, desde la instalación del motor hasta un stack en producción con proxy inverso, SSO y protección WAF. Está pensada para cualquiera que quiera dejar de depender de servicios de terceros y alojar sus propias aplicaciones en un servidor propio o VPS.
Qué vas a poder hacer
Al terminar sabrás desplegar y aislar servicios en contenedores, conectar varios contenedores mediante redes Docker, persistir datos con volúmenes, gestionar secretos sin exponerlos en el código y proteger tus stacks con healthchecks, límites de recursos y actualizaciones automáticas. El nivel es principiante: no hace falta experiencia previa con contenedores, aunque ayuda tener nociones básicas de la línea de comandos de Linux.
Cómo se construye la ruta
El recorrido empieza por la instalación de Docker en Ubuntu 24.04 y los fundamentos de redes bridge y personalizadas. A partir de ahí se suman volúmenes y bind mounts para no perder datos al reiniciar contenedores, variables de entorno y secretos en Docker Compose, y healthchecks con políticas de reinicio para servicios más fiables. Con esa base ya puedes instalar Portainer para gestionar contenedores desde un panel visual, montar un registro privado de imágenes y poner Traefik delante de tus servicios como proxy inverso con certificados automáticos. Los últimos pasos cierran el círculo con Coolify como plataforma de despliegue, Authentik para inicio de sesión único y CrowdSec como cortafuegos comunitario que bloquea IPs maliciosas en tiempo real.
Son 30 pasos que, seguidos en orden, llevan de un servidor recién instalado a una infraestructura con panel, proxy, SSO y seguridad activa: el stack típico que usan miles de homelabs y pequeños proyectos en producción.
Cómo instalar Docker en Ubuntu 24.04
Docker es la plataforma de contenedores más extendida. Esta guía explica cómo instalarlo en Ubuntu 24.04 LTS desde el repositorio oficial, con la clave GPG firmada en /etc/apt/keyrings y el plugin de Compose incluido.
Redes en Docker: bridge, host y redes personalizadas
Docker ofrece seis tipos de red: bridge, host, none, overlay, macvlan e ipvlan. La red bridge por defecto conecta contenedores por IP, pero sin resolución de nombres. Una red bridge personalizada añade un DNS interno para que los servicios se localicen por su nombre, y es la opción recomendada para casi cualquier despliegue.
Cómo funcionan las redes en Docker (bridge y personalizadas)
Docker conecta los contenedores a una red bridge por defecto, pero esa red no resuelve nombres: solo funciona por IP. Al crear una red personalizada con docker network create, Docker activa un DNS interno y cada contenedor puede localizar a los demás por su nombre, quedando aislado del resto de redes.
Volúmenes y bind mounts en Docker: persistencia de datos
Un contenedor pierde sus datos cuando lo borras, salvo que los guardes fuera. Docker ofrece dos vías: los volúmenes con nombre, que gestiona él mismo en /var/lib/docker/volumes, y los bind mounts, que enlazan una carpeta del host. Aquí verás cuándo usar cada uno, cómo montarlos en Compose y cómo hacer copias de seguridad.
Cómo persisten los datos en Docker con volúmenes y bind mounts
Un contenedor es efímero, pero sus datos no tienen por qué serlo. Un volumen de Docker vive fuera del contenedor, gestionado por Docker, mientras que un bind mount usa directamente una ruta del host. En este laboratorio creamos un volumen con nombre, escribimos datos desde un contenedor, lo eliminamos por completo y leemos esos mismos datos desde uno nuevo.
Copia de seguridad y restauración de volúmenes en Docker
Un volumen Docker guarda datos fuera del contenedor, en una ubicación que gestiona el propio Docker. Para respaldarlo, un contenedor alpine desechable monta el volumen y una carpeta del host, y empaqueta los datos con tar en un .tar.gz. Restaurar es el proceso inverso: extraer ese archivo dentro de un volumen nuevo y comprobar que los datos vuelven intactos.
Cómo montar una app multi-contenedor con Docker Compose
Docker Compose es la herramienta que describe una aplicación multi-contenedor en un único archivo YAML: qué servicios levantar, cómo se conectan en red y qué datos persisten en volúmenes con nombre. En este lab defines un servicio web con Nginx y una caché con Redis, los conectas por nombre de servicio y compruebas todo con curl.
Variables de entorno y secretos en Docker Compose
Docker Compose ofrece tres formas de pasar configuración a un contenedor: la clave environment, el atributo env_file y el archivo .env para interpolar valores. Para datos sensibles no uses variables de entorno; los secretos en Docker Compose se montan como ficheros de solo lectura en /run/secrets/, lejos de los logs y del entorno del proceso.
Gestión de secretos en Docker (sin dejarlos en la imagen)
La gestión de secretos en Docker significa nunca dejar tokens ni contraseñas en ARG, ENV o COPY del Dockerfile, porque quedan grabados en la imagen para siempre. Este lab demuestra la fuga real con docker history y la corrige con BuildKit --secret, un archivo de solo lectura, un env-file acotado y los secrets nativos de Compose.
Healthchecks y políticas de reinicio en Docker Compose
Un healthcheck es un comando que Docker ejecuta de forma periódica dentro del contenedor para decidir si el servicio está sano; su estado pasa de starting a healthy o unhealthy. Combinado con una política de reinicio (no, always, on-failure o unless-stopped) y con depends_on y la condición service_healthy, evita que una aplicación arranque antes que su base de datos.
Healthchecks y políticas de reinicio en Docker (en la práctica, con docker run y Compose)
Un HEALTHCHECK le dice a Docker cómo comprobar si un contenedor funciona de verdad, no solo si sigue en marcha; docker inspect y docker ps muestran ese estado como healthy o unhealthy. Las políticas de reinicio deciden qué pasa si el proceso falla: no, on-failure, always o unless-stopped, y Compose puede esperar a un servicio healthy antes de arrancar otro.
Perfiles (profiles) en Docker Compose
Los perfiles de Docker Compose etiquetan servicios para que solo arranquen cuando activas su perfil con --profile o COMPOSE_PROFILES. Los servicios sin perfil se ejecutan siempre; los marcados quedan en reposo hasta que los pides. Así conviven en un mismo archivo la base, las herramientas de depuración y los extras opcionales sin ficheros duplicados.
Límites de recursos (CPU y RAM) y logs en Docker
Docker no limita por defecto la CPU ni la RAM de un contenedor: uno solo puede agotar el servidor. En Compose se acotan con deploy.resources.limits (cpus, memory) o los atajos mem_limit y cpus, y los logs se controlan con el controlador local, que rota a 20 MB y 5 ficheros por defecto.
Cómo instalar Portainer con Docker Compose v2
Portainer es la UI web de referencia para gestionar contenedores Docker, stacks de Compose y clusters Swarm/Kubernetes. Guía paso a paso con compose.yaml moderno, HTTPS en el puerto 9443, volumen nombrado y configuración opcional con Traefik.
Instalar Portainer con Docker Compose v2
Instala Portainer en Docker paso a paso: volumen persistente, contenedor con la UI en el puerto 9443 y acceso web verificado. Cada paso se comprueba.
Portainer Agent: gestionar un segundo host Docker desde la misma consola
El agente de Portainer es un contenedor que se despliega en cada máquina remota y expone el puerto 9001 sobre TLS. El servidor de Portainer se conecta a él y gestiona ese host como un entorno más, sin abrir el socket de Docker a la red ni montar túneles SSH permanentes.
Cómo instalar Komodo con Docker y gestionar varios hosts
Komodo es una aplicación web en Rust que gestiona contenedores, stacks de compose y builds en tantos servidores como quieras. Se instala con un compose oficial que levanta MongoDB, el servidor Core en el puerto 9120 y el agente Periphery, y cada máquina adicional se añade con una clave de alta.
Komodo vs Portainer vs Dockge: qué gestor de Docker elegir en 2026
Dockge edita tus ficheros compose y los deja intactos en disco; Portainer es la consola generalista y madura, con roles y GitOps reservados a la edición Business, gratuita hasta tres nodos; Komodo despliega desde Git sobre varios servidores sin reservar nada de pago, a cambio de pedir una base de datos y un agente por máquina.
Multi-stage builds en Docker: imágenes más pequeñas y seguras
Un multi-stage build en Docker encadena varias etapas FROM en un mismo Dockerfile: una compila con el compilador completo y la etapa final, mínima (Alpine, scratch o distroless), solo copia el binario resultante con COPY --from=build. La imagen de producción queda mucho más pequeña y con menor superficie de ataque.
Cómo montar un registro privado de imágenes Docker
Un registro privado Docker es tu propio almacén de imágenes: la imagen oficial registry escucha en el puerto 5000, guarda las capas en un volumen y, con autenticación htpasswd en formato bcrypt y HTTPS tras un proxy inverso, te permite hacer push y pull de imágenes sin depender de Docker Hub ni de sus límites de descarga.
Cómo montar un registro Docker privado y autoalojado
Un registro Docker privado es el servidor que guarda y sirve tus propias imágenes de contenedor en vez de Docker Hub. En este laboratorio levantas la imagen oficial registry:3, etiquetas y subes una imagen alpine, la recuperas tras borrarla en local y la proteges con htpasswd y TLS.
Cómo instalar Traefik con Docker Compose
Traefik es un proxy inverso que descubre automáticamente los contenedores Docker mediante etiquetas y renueva sus certificados TLS con Let's Encrypt sin intervención manual. Para instalarlo con Docker Compose se define su configuración estática en traefik.yml, se generan credenciales de autenticación básica para el panel y se levanta el contenedor conectado a una red Docker dedicada.
Proxy inverso con Traefik y Docker (enrutado real por Host)
Traefik con Docker es un proxy inverso que lee el socket de Docker y convierte las etiquetas de cada contenedor en reglas de enrutado automáticas. En este laboratorio lo levantas junto a dos backends y compruebas con curl que cada nombre de host llega al contenedor correcto, sin tocar ningún fichero de rutas.
Watchtower: actualizar contenedores Docker automáticamente
Watchtower es un contenedor que vigila los registros Docker, detecta cuando hay una imagen más reciente, la descarga y recrea tu contenedor con las mismas opciones. Se configura con un pequeño docker-compose.yml, sondea cada 24 horas por defecto y puede limitarse por etiquetas o quedarse solo en modo aviso.
Cómo instalar Coolify en Docker (guía paso a paso 2026)
Coolify es una plataforma de despliegue autohospedada que funciona sobre Docker: gestiona aplicaciones Git, bases de datos y certificados SSL desde un panel web propio. Se instala con un script oficial que levanta Docker y los contenedores de Coolify en 2 a 5 minutos sobre Ubuntu 24.04 o Debian 13, sin pasos manuales adicionales.
Cómo instalar Authentik para SSO auto-alojado
Authentik es uno de los proyectos de identidad auto-alojada más sólidos del panorama open source. Guía práctica de instalación con Docker Compose, arquitectura sin Redis desde 2025.10 y los puntos de fricción reales en la primera instalación.
Cómo instalar Pocket ID para tener SSO con passkeys en el homelab
Pocket ID es un proveedor OpenID Connect que solo admite passkeys, así que no guarda contraseñas de nadie. Se despliega con un contenedor, un puerto y un fichero de entorno, exige HTTPS porque WebAuthn no funciona sin contexto seguro, y deja tus aplicaciones detrás de un inicio de sesión único.
Pocket ID vs Authelia vs Authentik: qué SSO elegir para tu homelab
Authelia protege aplicaciones desde el proxy inverso, Pocket ID es un proveedor OIDC certificado que solo admite passkeys y Authentik añade SAML, LDAP, SCIM y RADIUS a cambio de PostgreSQL, Redis y 2 GB de RAM. Elegir SSO para tu homelab consiste en decidir cuál de esos tres mecanismos necesitas.
Cómo instalar CrowdSec como WAF comunitario
CrowdSec sustituye a fail2ban separando la detección (agente + LAPI) del bloqueo (bouncers): instala el agente con el script oficial en Debian o Ubuntu, activa las collections adecuadas, añade un bouncer para Traefik o el firewall y, si quieres, la remediación con captcha de Cloudflare Turnstile y la blocklist comunitaria compartida entre miles de instalaciones.