Docker en Synology para principiantes (sin romper DSM)
Container Manager, volúmenes y redes con cabeza: qué no hacer, Portainer opcional y cómo montar tus primeros contenedores sin cargar DSM.
Docker en un Synology asusta la primera vez: Container Manager, imágenes, puertos, «¿y si rompo DSM?». Tranquilo. Usado con cabeza, Docker es la forma limpia de correr Immich, Jellyfin, Vaultwarden o Uptime Kuma sin ensuciar el sistema. Esta guía es para principiantes que ya tienen el NAS estable y quieren el siguiente nivel — nivel intermedio, sin heroicas.
Si aún estás colocando la caja, pasa por NAS en casa y el error del primer NAS. Si vas a actualizar DSM a menudo, combina esto con actualizar el NAS sin sustos.
DSM es la casa. Los contenedores son trasteros con llave. No guardes las llaves del trastero dentro del trastero — y no reformes los cimientos desde un contenedor.
Qué es Docker aquí (y qué no)
Un contenedor empaqueta una app con sus dependencias. En Synology, Container Manager (antes Docker) te deja bajar imágenes, crear contenedores, ver logs y mapear carpetas del NAS como volúmenes.
Docker no sustituye backups, no es una VM completa y no perdona mapear mal un volumen encima de /volume1/ entero. Tampoco es obligatorio Portainer el día 1 — aunque ayuda cuando creces.
Container Manager sin miedo
docker/immich/library, docker/immich/postgres, docker/jellyfin/config. Nunca dejes datos «dentro» del contenedor sin volumen: al recrearlo, adiós.Volúmenes: donde viven tus datos
Regla de oro: config y datos en carpetas compartidas del NAS, contenedor desechable. Así actualizas imagen sin drama.
- Separa config de media (Jellyfin/Immich lo agradecen).
- No pongas la librería Immich dentro de la carpeta que Hyper Backup está a medio cifrar sin plan.
- Permisos: el UID/GID del contenedor debe poder escribir. Si ves errores de permission denied, no des 777 a todo el volumen1; ajusta carpeta del stack.
# Idea — adapta a la doc oficial de cada app
services:
app:
image: ejemplo/app:release
volumes:
- /volume1/docker/app/config:/config
- /volume1/docker/app/data:/data
ports:
- "8080:8080"
restart: unless-stopped
# Guarda el compose en /volume1/docker/app/compose.yaml
# Backup: la carpeta docker/app + lo que diga la app (DB)
Redes y puertos
Por defecto, publicar 8080:8080 en la interfaz principal basta en LAN. Para stacks con varios servicios (Immich), usa la red interna de compose y publica solo el puerto del proxy/frontend.
- No abras al router (NAT) puertos de bases de datos.
- Acceso remoto: Tailscale / reverse proxy con autenticación — no «puerto abierto y ya».
- Evita chocar con puertos de DSM (5000/5001, etc.). Si hay conflicto, cambia el puerto host.
Qué NO hacer
| Tentación | Riesgo | Mejor |
|---|---|---|
| privileged: true por defecto | Superficie de ataque absurda | Solo si la doc lo exige y entiendes por qué |
| Datos solo en el contenedor | Los pierdes al recrear | Volúmenes en /volume1/docker/… |
| latest sin leer changelog | Breaking changes (Immich…) | Pin de versión + notas |
| Llenar el disco al 99 % | DSM y Docker sufren | Alertas de espacio + limpieza imágenes |
| Exponer admin a internet | Te encuentran | VPN / auth / no NAT |
Primeros contenedores con sentido
Orden sugerido Privutx:
- Algo ligero de monitorización (Uptime Kuma) — aprendes UI y alertas.
- Immich — el premio gordo de fotos; sigue la doc de tu versión.
- Jellyfin — si hay media; respeta transcoding y CPU.
- Vaultwarden — cuando ya backups y HTTPS/Tailscale estén claros (no el día 1 si vas perdido).
Portainer (opcional): panel bonito para stacks. Útil si Container Manager se te queda corto. No es obligatorio; añade otra superficie a actualizar. Si lo montas, trátalo como app admin: no expuesto, con contraseña seria.
Backups y actualizaciones
Antes de pulsar Update:
- Para el stack (Container Manager / compose down mental).
- Copia la carpeta de config + dump de DB si aplica.
- Lee el breaking change (Immich especialmente).
- Actualiza, mira logs, smoke-test.
Incluye /volume1/docker en tu plan de copias — mejor: enlaza la disciplina con Hyper Backup/rsync del volumen. Y no actualices DSM y diez contenedores el mismo domingo sin red de seguridad.
RAM, CPU y convivencia con DSM
Container Manager no vive en el vacío. DSM, Indexer, Hyper Backup y el antivirus (si lo usas) ya comen RAM. Antes de apilar Immich + Jellyfin + IA:
- Mira Monitor de recursos una semana en uso normal.
- Deja al menos un colchón (no diseñes a «RAM al 95 % continuo»).
- Programa tareas pesadas (indexado, transcode) de madrugada.
Si el modelo no da, prioriza: fotos (Immich) suelen ganar a Jellyfin en una casa que aún no tiene biblioteca media. O mueve el media a un mini-PC y deja el NAS como disco. La soberanía no obliga a un solo aparato heroico.
Cuando algo falle, logs del contenedor primero, foro después. Pega el error concreto — «no va» no diagnostica. Y si actualizaste DSM el mismo día, mira la guía de actualizaciones antes de culpar a Immich.
¿GUI de Container Manager o docker-compose?
La interfaz de Synology vale para un contenedor suelto. Cuando Immich te pide media docena de servicios, compose (o el editor de proyectos de Container Manager) evita clics inconsistentes. Guarda el YAML en la carpeta del stack; es documentación ejecutable.
Versiona ese YAML (copia fechada o repo git privado). El día que el contenedor no arranque, comparar con la semana pasada ahorra foros. No hace falta CI/CD en casa; hace falta no perder el archivo.
Limpieza de imágenes y logs
Cada update deja capas viejas. De vez en cuando limpia imágenes huérfanas desde Container Manager (con stacks parados si no estás seguro). Los logs de contenedores verbosos pueden llenar discos: rota o limita. Un volumen al 100 % pone a DSM nervioso — peor que un contenedor caído.
Seguridad mínima razonable
Usuarios no admin para apps, passwords distintas, sin SSH root expuesto, sin NAT a Postgres. Si publicas vía reverse proxy, autenticación y HTTPS de verdad. Tailscale elimina el 80 % de las ganas de abrir puertos «un momentito». Combina con buen sentido al actualizar y con no instalar stacks pirata de foros dudosos.
Container Manager es potente; no es un patio de recreo para imágenes random de registries opacos. Quédate con proyectos conocidos (Immich, Jellyfin, Vaultwarden, Uptime Kuma) y lee la doc oficial.
Flujo de update que no te deja tirado
- Lee changelog del proyecto (Immich, Jellyfin…).
- Hyper Backup / copia de la carpeta del stack.
- Dump de base de datos si aplica.
- Cambia tag de versión en el compose (no latest).
- Recrea el stack; mira logs 2–3 minutos.
- Entra en la UI; sube/ Reproduce una foto o un vídeo de prueba.
- Si falla: vuelve al tag anterior y restaura config.
Ese ritual parece lento la primera vez y te salva la tercera. Combínalo con no actualizar DSM, Router y diez contenedores el mismo domingo lluvioso. Una variable por ventana de mantenimiento.
Cuando el stack Immich esté estable, el siguiente valor suele ser media (Jellyfin) o identidad (Vaultwarden). No los montes todos el mismo día que aprendes qué es un volumen. La paciencia es la única licencia de Container Manager que no se compra en el Centro de paquetes.
Si aún dudas de si el NAS aguanta Docker «de verdad», revisa el dimensionado en error del primer NAS y la colocación física/red en NAS en casa. Docker no arregla una caja corta de RAM ni un Wi‑Fi de invitados que aísla el NAS del móvil.
Cuándo parar de añadir contenedores
Señal de alarma: abres Monitor de recursos y la RAM está flatline arriba, o tienes doce stacks y no recuerdas para qué era la mitad. Para. Consolida. Documenta. El homelab feliz es aburrido: pocos servicios críticos (fotos, contraseñas, backup) y el resto en lista de espera.
Privutx no gana si montas treinta demos. Gana si Immich responde, el backup corre y DSM sigue sano. Docker es una herramienta; no un juego de colección de imágenes.
Glosario mínimo para no ahogarte
- Imagen: plantilla de la app (inmutable).
- Contenedor: instancia en marcha de esa imagen.
- Volumen / bind mount: carpeta del NAS donde viven datos reales.
- Puerto host:contenedor: cómo entras desde la LAN.
- Compose / proyecto: varios contenedores definidos juntos.
- Restart policy: que vuelva tras reiniciar el NAS.
Con esas seis palabras ya puedes seguir tutoriales sin sudar. Cuando un guía diga «persiste /config», traduces: carpeta en /volume1/docker/.... Cuando diga «publica 8080», traduces: abre en el navegador http://IP-NAS:8080 en la LAN.
Si te atascas, no abras el firewall del router «para probar». Abre los logs. El 90 % de los fallos primerizos son volumen mal mapeado, permiso de escritura o puerto ocupado por otro paquete DSM. Aburrido, sí. Solucionable, también.
Siguiente lectura natural tras esta guía: o montas Immich, o consolidas la base física/red con NAS en casa. Docker sin destino claro es coleccionismo; Docker con Immich y backup es independencia.
Checklist antes de dar por cerrado el aprendizaje
- Sabes dónde está el YAML o el proyecto en Container Manager.
- Sabes qué carpetas del NAS son datos reales (no solo el contenedor).
- Has recreado un contenedor sin perder config.
- Has leído un changelog antes de subir de versión.
- No tienes bases de datos publicadas a internet.
/volume1/dockerentra en tu backup.- Monitor de recursos en verde con el stack típico encendido.
Si marcas todo, ya no eres principiante absoluto: eres alguien que puede montar Immich sin sudar. Si fallan dos o más, repite con un contenedor tonto antes del stack crítico. El orgullo no restaura Postgres.
Último consejo de supervivencia: cuando un contenedor «no arranca», copia el error de log completo antes de reiniciar a lo loco. Busca ese string en la doc o issues del proyecto. Reiniciar en bucle sin leer es cómo conviertes un fallo de permiso en un misterio de tres horas.
Con Immich estable y un backup de la carpeta docker, ya tienes el 80 % del valor de Docker en casa. El otro 20 % es no aburrirte inventando stacks. Menos contenedores, mejor cuidados: esa es la estética Privutx.
Resumen operativo: datos en volúmenes del NAS, versiones pineadas, sin puertos sensibles a internet, backup de docker/ y un solo stack crítico bien cuidado antes del siguiente juguete.
Si DSM se siente lento tras añadir stacks, revisa RAM antes de culpar al sistema de archivos.
Para llevar
- Container Manager = puerta de entrada; datos siempre en volúmenes del NAS.
- No privileged, no latest ciego, no puertos de DB a internet.
- Empieza ligero; Immich/Jellyfin/Vaultwarden cuando ya entiendes logs y restart.
- Portainer opcional, no mágico.
- Backup de carpetas docker + disciplina de updates.