Docker te permite usar un homelab como una plataforma de aplicaciones repetible definiendo cada servicio, puerto, red y ruta de datos persistentes antes del despliegue.
En un NAS o servidor doméstico, eso significa que puedes ejecutar filtrado DNS, monitoreo, medios, sincronización de archivos, paneles y otras aplicaciones autoalojadas sin instalar cada dependencia directamente en el host. El objetivo práctico no es simplemente iniciar un contenedor una vez. Es construir una pila que sobreviva a reinicios, mantenga sus datos durante actualizaciones, permanezca accesible solo donde se pretende y pueda restaurarse cuando algo salga mal.
Qué hace Docker en un homelab.
Docker empaqueta una aplicación y sus dependencias de ejecución en una imagen, luego inicia esa imagen como un contenedor. El host sigue proporcionando CPU, memoria, almacenamiento y red, pero cada servicio obtiene un entorno definido que es más fácil de reproducir que una larga lista de pasos de instalación manual.
Cinco conceptos explican la mayoría de la configuración Docker que usarás en un homelab:
| Concepto Docker. | Qué significa. | Por qué es importante en casa. |
|---|---|---|
| Imagen. | La plantilla empaquetada usada para crear un servicio. | Puedes descargar la misma versión de la aplicación nuevamente después de una reconstrucción. |
| Contenedor. | Una instancia en ejecución de una imagen. | Puedes detener, reemplazar o recrear la aplicación sin reinstalar el host. |
| Puerto. | Los puntos finales del host y del contenedor usados para acceder a un servicio. | Decides si una aplicación está disponible localmente, en toda la LAN o de forma remota. |
| Volumen o montaje enlazado. | Almacenamiento mantenido fuera de la capa desechable del contenedor. | Las configuraciones, bases de datos y datos de cuenta sobreviven a las actualizaciones. |
| Red. | Un límite de comunicación para contenedores relacionados. | Las aplicaciones pueden comunicarse entre sí por nombre de servicio sin publicar cada puerto. |
Un contenedor debe tratarse como reemplazable. Tu archivo Compose, configuraciones de entorno y datos persistentes son las partes que hacen que el servicio sea recuperable.
Lo que necesitas antes de instalar Docker.

Comienza decidiendo dónde se ejecutará Docker. Un sistema operativo NAS puede ofrecer un gestor visual de aplicaciones, mientras que un servidor doméstico Linux estándar suele usar Docker Engine y el complemento Compose desde la línea de comandos. Una máquina virtual también puede funcionar cuando quieres que Docker esté separado del hipervisor base.
| Tipo de host. | Flujo de trabajo recomendado. | Lo principal a verificar. |
|---|---|---|
| NAS con un gestor de aplicaciones Docker. | Usa la interfaz gráfica, pero documenta los puertos, montajes y valores de entorno. | Puedes localizar y respaldar los datos de la aplicación fuera del contenedor. |
| Servidor doméstico Linux. | Docker Engine más Docker Compose. | El servicio Docker se inicia automáticamente después de un reinicio. |
| Máquina virtual. | Instala Docker dentro de una VM Linux dedicada. | La VM tiene almacenamiento estable, red y suficiente memoria reservada. |
- Confirma si el host usa amd64 o arm64 para que elijas imágenes compatibles.
- Reserva una dirección LAN estable mediante reserva DHCP o una IP estática.
- Crea una ubicación persistente para configuraciones de contenedores y bases de datos, separada de grandes comparticiones de medios.
- Elige proyectos Compose o un gestor visual como flujo de trabajo principal en lugar de mezclar métodos no documentados.
- Decide qué servicios permanecerán solo en LAN y cuáles eventualmente necesitarán acceso remoto.
- Elige un segundo destino de almacenamiento para copias de seguridad de archivos Compose y datos persistentes.
Cuando el host aún está en planificación, la guía sobre cómo construir un servidor doméstico puede ayudar a establecer la base de almacenamiento, red y sistema operativo antes de agregar Docker.
Instala Docker y Verifica el Host
El método de instalación depende del sistema operativo, pero la secuencia de validación debe mantenerse consistente. Algunas plataformas NAS incluyen Docker detrás de una interfaz de aplicación. Un host Linux normalmente requiere Docker Engine y el complemento Compose, mientras que Windows y macOS son más adecuados para aprender o probar que para un servicio NAS en ejecución permanente.
Una configuración de laboratorio doméstico Docker amigable para principiantes muestra la secuencia útil de instalar Docker, ejecutar un primer contenedor, organizar carpetas de proyectos y mover servicios repetibles a Compose. Usa esa secuencia como marco, luego sigue el método de instalación requerido por tu propio NAS o distribución Linux.
Verifica Docker y Compose
Después de la instalación, abre una terminal en el host y confirma que tanto Docker como Compose respondan:
docker --version
docker compose version
Si falta alguno de los comandos, detente aquí y corrige la instalación antes de crear carpetas de aplicaciones. En Linux, también confirma que el servicio Docker se inicie automáticamente y que la cuenta usada para la administración esté protegida. El acceso al demonio Docker es efectivamente acceso administrativo al host.
Ejecuta un Contenedor de Validación Desechable
Usa un contenedor temporal para confirmar que el demonio puede descargar una imagen y arrancarla:
docker run --rm hello-world
Un resultado exitoso confirma la ruta básica desde el cliente de línea de comandos hasta el demonio de Docker y el registro de imágenes. El --rm la opción elimina este contenedor de prueba después de que se detiene, para que no forme parte de tu pila permanente.
Confirma los Comandos Básicos de Administración
docker ps
docker ps -a
docker images
docker ps muestra contenedores en ejecución, docker ps -a incluye contenedores detenidos, y docker images muestra imágenes almacenadas en el host. Estas tres vistas suelen ser suficientes para determinar si un problema es causado por un contenedor que se detuvo, una imagen que nunca se descargó o un servicio que nunca se creó.
Despliega tu primera pila Docker Compose

Ejecutar una vez docker run los comandos son útiles para pruebas, pero Compose es más fácil de repetir, revisar, respaldar y migrar. Cada proyecto tiene su propio directorio y un compose.yaml archivo que registra la imagen, puertos, almacenamiento, comportamiento de reinicio y red.
Crear un directorio de proyecto
El siguiente ejemplo crea una pequeña página de inicio Nginx. Es intencionalmente simple, pero prueba el mismo flujo de trabajo que usarás para un panel, servidor multimedia, herramienta de monitoreo o nube personal:
mkdir -p ~/docker/start-page/site
cd ~/docker/start-page
printf '<h1>Docker homelab está en funcionamiento</h1>\n' > site/index.html
Mantener cada servicio en una carpeta separada facilita identificar su archivo Compose, valores de entorno y datos persistentes. Un NAS más grande puede usar una ruta como /docker/start-page o una carpeta compartida dedicada en lugar del directorio home.
Crear el archivo Compose
Crear un archivo llamado compose.yaml en el directorio del proyecto:
servicios:
start-page:
imagen: nginx:alpine
nombre_contenedor: homelab-start-page
puertos:
- "8080:80"
volúmenes:
- ./site:/usr/share/nginx/html:ro
reinicio: a menos que se detenga
redes:
- homelab
redes:
homelab:
driver: bridge
El mapeo de puertos envía solicitudes desde el puerto 8080 en el NAS al puerto 80 dentro del contenedor. El montaje enlazado hace que el local sitio directorio disponible dentro de Nginx como contenido de solo lectura. La política de reinicio devuelve el servicio después de un reinicio normal a menos que lo hayas detenido intencionalmente.
Este ejemplo publica el puerto 8080 en el host. Mantén el reenvío de puertos del router desactivado durante las pruebas. Cuando el servicio solo debe ser accesible desde el propio host Docker, enlázalo al loopback con 127.0.0.1:8080:80 en su lugar.
Iniciar y verificar el servicio
docker compose up -d
docker compose ps
docker compose logs --tail=100
Abrir http://NAS-IP:8080 desde un dispositivo en la misma red. La página debería mostrar “Docker homelab está en funcionamiento.” Luego reinicia el host una vez y confirma que el contenedor se inicie automáticamente.
Los comandos que usarás con más frecuencia son:
| Tarea | Comando |
|---|---|
| Crear o aplicar cambios | docker compose up -d |
| Verificar el estado del servicio | docker compose ps |
| Seguir los registros | docker compose logs -f |
| Reiniciar la pila | docker compose restart |
| Detener y eliminar contenedores | docker compose down |
| Descargar imágenes más recientes | docker compose pull |
Evita añadir -v a docker compose down a menos que intencionalmente quieras eliminar volúmenes gestionados por Compose. Eliminar el contenedor es rutinario; eliminar datos persistentes no lo es.
Si el sistema operativo de tu NAS ofrece un gestor visual de aplicaciones Docker, los mismos campos siguen siendo importantes. La interfaz debe mostrar la imagen, los puertos del host, los puertos del contenedor, las rutas montadas, las variables de entorno y el comportamiento de reinicio. Este flujo de trabajo del sistema operativo NAS es útil cuando prefieres una interfaz gráfica pero aún quieres rutas de aplicaciones predecibles.
Almacena los datos de Docker de forma segura en un NAS
Los contenedores son desechables, pero los datos del servicio no. La mayoría de las fallas en homelabs tras una actualización provienen de una base de datos, archivo de cuenta o configuración de aplicación que se guardó solo dentro de la capa del contenedor. Recrear ese contenedor produce una instalación limpia en lugar de restaurar el servicio original.
Un montaje por enlace (bind mount) asigna un archivo o directorio conocido del host dentro de un contenedor. Un volumen es gestionado por Docker bajo su área de almacenamiento. Ambos pueden preservar datos, pero difieren en visibilidad y flujo de trabajo de respaldo.
| Método de almacenamiento | Mejor ajuste en un NAS | Por qué funciona | Fallo común |
|---|---|---|---|
| Montaje por enlace (bind mount) | Configuraciones, cargas y datos de la aplicación que quieres visibles en carpetas del NAS | Fácil de inspeccionar e incluir en respaldos normales del NAS | Una ruta incorrecta o permiso del host impide que la aplicación inicie |
| Volumen nombrado | Bases de datos y estado interno del servicio | Menos rutas de host codificadas y mejor portabilidad de Compose | El volumen puede ser omitido por una copia de seguridad a nivel de archivo |
Separa los datos de la aplicación de los medios masivos
Mantén configuraciones, bases de datos, miniaturas, índices y otras cargas de archivos pequeños en un docker-data ubicación que se respalda con frecuencia. Películas grandes, fotos, grabaciones y descargas pueden permanecer en comparticiones de medios normales. Esta separación hace que el alcance del respaldo sea más claro y puede evitar que los metadatos de la aplicación compitan con cargas de trabajo de almacenamiento secuencial grandes.
Antes de desplegar una aplicación real, anota cada ruta del host usada en su archivo Compose. Un diseño simple podría verse así:
/docker
/nombre-de-la-aplicación
compose.yaml
.env
/config
/data
Respalda lo que recrea el servicio
Haz una copia de seguridad del archivo Compose, cualquier .env archivo, certificados, configuración personalizada y los datos persistentes del contenedor. Normalmente no es necesario respaldar las imágenes porque se pueden descargar nuevamente. Protege cuidadosamente los archivos de entorno porque pueden contener contraseñas, tokens o credenciales de bases de datos.
La regla de respaldo 3-2-1 ofrece un modelo útil para planificar, pero una copia de seguridad de Docker solo está completa cuando puedes recrear el stack y restaurar sus datos. Prueba una restauración no crítica antes de que tu homelab dependa del servicio.
Al usar una interfaz visual de NAS, confirma dónde se almacena su datos persistentes del contenedor en lugar de asumir que la interfaz los protege automáticamente.
Cómo funciona la red de Docker en un Homelab
La red de Docker controla dos caminos diferentes: la comunicación entre contenedores y el acceso desde dispositivos fuera de Docker. Mantener esos caminos separados reduce la publicación innecesaria de puertos y facilita la comprensión de pilas con múltiples servicios.
Lee los mapeos de puertos de izquierda a derecha
En 8080:80, el puerto 8080 pertenece al host Docker y el puerto 80 pertenece al contenedor. Los dispositivos en la LAN se conectan a la dirección NAS y al puerto del host. Docker luego reenvía la solicitud al puerto interno de la aplicación.
Solo publica un puerto del host cuando un navegador, teléfono, TV u otro dispositivo no Docker necesite acceso directo. Una base de datos usada solo por otro contenedor generalmente no necesita un puerto publicado.
Usa redes personalizadas para servicios relacionados
Compose puede crear una red puente definida por el usuario para cada pila. Los contenedores en esa red pueden comunicarse entre sí por nombre de servicio, lo que significa que una aplicación web puede conectarse a un servicio llamado base de datos sin depender de una dirección IP de contenedor cambiante.
Un ejemplo práctico de redes Docker personalizadas y aislamiento de contenedores demuestra cómo cambia la resolución de nombres y la conectividad cuando los contenedores se colocan en redes puente separadas o se conectan a más de una red.
Agrupa los servicios que realmente necesitan comunicarse. Mantén las pilas no relacionadas en redes separadas y no publiques una base de datos interna, caché o cola de mensajes solo para que los contenedores se vean entre sí.
Mantén el acceso LAN separado del acceso a internet
Un servicio accesible en NAS-IP:8080 en tu red doméstica no está automáticamente disponible desde internet. La exposición pública normalmente requiere una regla de reenvío en el router, un túnel, una VPN u otro camino de acceso remoto. Trata ese paso extra como una decisión de seguridad separada y no como parte de cada despliegue.
Expón los servicios de Docker de forma segura

El acceso remoto es donde un homelab conveniente puede convertirse en una verdadera vulnerabilidad de seguridad. La opción más segura por defecto es mantener las interfaces de las aplicaciones privadas en la LAN y exponer solo una capa de acceso controlado cuando sea necesario el uso remoto.
Usa una VPN para acceso remoto privado
Una VPN privada o una red superpuesta permite que los dispositivos aprobados accedan a los servicios del hogar sin publicar cada aplicación directamente. Esta suele ser la ruta más sencilla para paneles personales, paneles de administración, acceso a archivos y servicios usados solo por unas pocas personas de confianza. La guía para acceso remoto seguro cubre la decisión más amplia entre el acceso basado en VPN y la exposición pública en la web para servidores domésticos.
Usa un proxy inverso como punto de entrada público
Cuando un servicio web debe ser público, un proxy inverso ofrece un lugar para nombres de host, certificados, reglas de enrutamiento y controles de acceso. Expón el proxy en lugar de reenviar un puerto separado del router a cada aplicación. Mantén bases de datos, interfaces administrativas y puertos de servicios internos en redes Docker privadas siempre que sea posible.
Usa HTTPS y reglas deliberadas de puertos
Cualquier inicio de sesión o sesión accesible fuera de la red doméstica debe usar HTTPS. Revisa periódicamente las reglas de reenvío del router y elimina las entradas que ya no se requieren. La automatización de certificados ayuda, pero no reemplaza la autenticación fuerte, actualizaciones oportunas ni el control cuidadoso sobre qué servicios son públicos.
Actualiza, monitorea y restaura la pila
Un homelab Docker se mantiene manejable cuando el mantenimiento sigue una secuencia repetible. No actualices todos los servicios a ciegas al mismo tiempo. Comienza con un respaldo, actualiza una pila y verifica las rutas importantes antes de pasar a la siguiente aplicación.
Usa una secuencia de actualización controlada
cd ~/docker/start-page
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100
Para un servicio importante, anota la etiqueta de la imagen funcional antes de una actualización para tener una referencia de reversión. Después del redepliegue, prueba el inicio de sesión, almacenamiento montado, conexión a la base de datos, acceso LAN y cualquier ruta de proxy inverso. Un estado “Up” del contenedor solo prueba que el proceso está corriendo; no prueba que la aplicación esté saludable.
Observa las señales que se desvanecen silenciosamente
- Uso del disco del sistema por imágenes antiguas, capas modificables, registros y datos abandonados.
- Conteo de reinicios del contenedor y errores repetidos en los registros de la aplicación.
- Reenvíos inesperados del router o puertos del host que ya no se requieren.
- Edad del respaldo, tamaño del respaldo y si el último archivo puede abrirse.
- Presión de memoria cuando se agregan servicios adicionales a un NAS pequeño.
Usa los comandos de limpieza solo después de revisar qué eliminarán. Las imágenes no usadas consumen espacio, pero una limpieza agresiva también puede borrar capas en caché o volúmenes no usados que aún son importantes para un plan de recuperación.
Practica una restauración
Elige un servicio no crítico, deténlo, mueve sus datos persistentes a un lado y reconstruyelo desde el archivo Compose. Luego restaura los datos y confirma que las cuentas, configuraciones y estado de la aplicación regresen. Una restauración exitosa es una evidencia más sólida que un trabajo de respaldo exitoso.
Problemas comunes y soluciones en Docker Homelab
| Síntoma | Verifica primero | Dirección probable |
|---|---|---|
| El navegador no puede acceder a la aplicación |
docker compose ps, asignación de puertos, firewall del host y IP del NAS |
Confirma que el contenedor está en ejecución y que el puerto del host no está bloqueado ni en uso |
| El contenedor sigue reiniciándose | docker compose logs --tail=100 |
Busca valores de entorno faltantes, rutas incorrectas, fallos de base de datos o errores de permisos |
| Permiso denegado en una carpeta montada | Propiedad del host, UID/GID y banderas de solo lectura | Haz coincidir el usuario de la aplicación con los permisos del directorio en lugar de otorgar acceso amplio |
| El puerto ya está asignado | Otros contenedores y procesos host que usan ese puerto | Elige un puerto host diferente o detén el servicio en conflicto |
| La imagen no se inicia | Arquitectura de CPU y soporte de plataforma de imagen | Usa una imagen que publique la compilación correcta amd64 o arm64 |
| Los datos desaparecieron después de una actualización | Definiciones de volúmenes y montajes | Restaura los datos persistentes y mueve el estado futuro fuera de la capa de contenedores |
| Dos contenedores no pueden comunicarse | Las redes conectadas a ambos servicios | Coloca servicios relacionados en la misma red definida por el usuario y conéctalos por nombre de servicio |
| El disco del sistema NAS se está llenando | Imágenes, registros, cachés y volúmenes no usados | Identifica la fuente antes de podar y mueve las cargas de trabajo persistentes a la ruta de datos planificada |
Elige el siguiente contenedor para tu homelab
Después de que la primera pila Compose sobreviva a un reinicio y una pequeña actualización, añade un servicio que resuelva una necesidad real del hogar. Cada categoría introduce una lección operativa diferente:
| Objetivo | Categoría de servicio | Lo que enseña |
|---|---|---|
| Ver si los servicios están disponibles | Monitoreo de tiempo de actividad | Comprobaciones de estado, notificaciones y configuración persistente |
| Reducir dominios no deseados en toda la red | Filtrado basado en DNS | Planificación de IP estable, fiabilidad DNS y administración solo en LAN |
| Transmitir una biblioteca multimedia local | Servidor multimedia | Montajes grandes, permisos, almacenamiento de metadatos y límites de hardware |
| Sincronizar archivos entre dispositivos | Nube personal o sincronización peer-to-peer | Persistencia de base de datos, acceso remoto y planificación de restauración |
Un filtro a nivel DNS es útil cuando toda la casa se beneficia de un servicio de red. Para flujos de trabajo de almacenamiento, la sincronización privada de archivos demuestra por qué las configuraciones y bases de datos deben permanecer fuera de la capa desechable de contenedores. Un servidor multimedia Plex añade permisos de medios, ubicación de metadatos y posibles requisitos de transcodificación.
No añadas varios servicios críticos a la vez. Una pequeña pila con rutas documentadas, exposición limitada y una copia de seguridad probada es más útil que un panel abarrotado que nadie puede reconstruir de forma fiable.
Preguntas frecuentes
¿Puedo usar Docker en un NAS basado en ARM?
A menudo, sí. La imagen debe publicar una versión para la arquitectura del NAS. Verifica la plataforma que ofrece la imagen antes de desplegar, especialmente para proyectos pequeños que pueden soportar amd64 pero no arm64. Una incompatibilidad de arquitectura puede impedir que el contenedor inicie incluso si el archivo Compose es correcto.
¿Cuánta RAM necesita un homelab Docker?
No hay un número universal porque un filtro DNS, servidor multimedia, base de datos y servicio de IA tienen perfiles de memoria muy diferentes. Enumera los servicios que planeas ejecutar, comienza con una pila pequeña, mide el uso máximo durante varios días y deja margen para el sistema operativo, caché del sistema de archivos, actualizaciones y picos temporales.
¿Necesito Docker Compose si mi NAS tiene una GUI?
No. Una GUI bien diseñada puede gestionar un homelab simple, especialmente cuando expone cada ruta, puerto, variable y configuración de reinicio. Compose se vuelve más valioso cuando quieres configuración versionada, migración más fácil, recuperación repetible o varios servicios relacionados en una pila.
¿Cada contenedor debería tener su propia red?
No necesariamente. Crea redes alrededor de los límites de la aplicación en lugar de asignar una red a cada contenedor individual. Una aplicación web y su base de datos pueden compartir una red privada, mientras que un servidor multimedia no relacionado usa otra. Publica solo los puertos que los dispositivos no Docker necesitan.
¿Cuál es la forma más segura de acceder a los servicios Docker de forma remota?
Para acceso personal, una VPN personal que ejecutes en casa puede reducir la necesidad de exponer varios puertos de aplicaciones públicamente. Los servicios públicos usualmente necesitan un proxy inverso, HTTPS, autenticación fuerte, actualizaciones oportunas y una decisión deliberada sobre qué permanece privado.
¿Cómo sé si una copia de seguridad de Docker está completa?
Deberías poder recrear los contenedores desde el archivo Compose y restaurar el estado de la aplicación desde los datos persistentes guardados. Una copia de seguridad que contenga solo imágenes o un archivo Compose sin las carpetas de base de datos y configuración no es suficiente para la mayoría de los servicios con estado.
Construye un Homelab que Puedas Recrear
Aprender a usar Docker en un homelab no se trata tanto de coleccionar contenedores como de hacer que cada servicio sea repetible. Verifica Docker primero, mantén un proyecto Compose por aplicación, almacena el estado fuera del contenedor, publica solo los puertos necesarios y prueba una restauración antes de que el servicio se vuelva importante.
Una vez que la primera pila sobrevive a un reinicio, una actualización y un simulacro de recuperación, añade la siguiente aplicación con la misma disciplina. Esa secuencia convierte un NAS de un lugar donde los contenedores simplemente se ejecutan en un servidor doméstico que puedes entender, mantener y reconstruir.
Centro de Campañas Zima
Más para leer

Cómo Rez Tech construye su propia nube personal con ZimaBoard 2
Rez Tech construye una nube personal con ZimaBoard 2, dos unidades locales, RAID 1 y ZimaOS; después prueba el acceso a los archivos, el...
Silicon Steak reduce su laboratorio doméstico con ZimaBoard 2
Silicon Steak explora si ZimaBoard 2 puede reemplazar una máquina de homelab mucho más grande, probando almacenamiento, reproducción multimedia, Minecraft, Pi-hole, aplicaciones autoalojadas y...

Cómo Smart Life crea una nube privada con ZimaBoard 2
Smart Life convierte ZimaBoard 2 en un destino doméstico para las fotos y los vídeos del teléfono, mostrando el montaje del hardware, la configuración...


