Instalar Caddy en un NAS para acceder a Jellyfin desde Internet

Actualizado:
Instalar caddy para jellyfin

¿Tienes Jellyfin en tu NAS y quieres ver tus películas y series desde fuera de casa, con tu propio dominio y conexión segura HTTPS? Para eso necesitas un proxy inverso, y el más sencillo que conozco es Caddy: consigue y renueva el certificado HTTPS él solo y se configura con dos líneas. En esta guía te enseño cómo lo instalo con Docker Compose en mi NAS, paso a paso y con todos los comandos listos para copiar.

Instalar Caddy para Jellyfin
Instalar Caddy para Jellyfin

¿Por qué necesitamos Caddy?

Jellyfin funciona dentro de tu red en un puerto como el 8096, sin HTTPS. Caddy se pone delante: recibe las conexiones que llegan desde Internet a tu dominio (por ejemplo, jellyfin.tudominio.com), las protege con HTTPS y las reenvía a Jellyfin. Así no expones Jellyfin directamente y todo viaja cifrado.

En este artículo me centro únicamente en instalar y configurar Caddy en el NAS. El resto del proceso (dominio, DNS, DDNS, apertura y redirección de puertos en el router y Jellyfin) lo explico paso a paso en el vídeo de arriba y en la lección 18 del curso NAS UGREEN.

Qué necesitas antes de empezar

  • Un NAS con Docker y Docker Compose (yo uso un UGREEN DXP4800 Plus).
  • Acceso al NAS por SSH. Todos los pasos se hacen desde la terminal.
  • Jellyfin funcionando en tu red (necesitarás su IP y su puerto).
  • Un dominio o subdominio que apunte a la IP pública de tu casa, y el puerto redirigido en el router hacia el NAS.

Muy importante: los dominios, IPs y rutas de los ejemplos son de mi instalación. Sustitúyelos por los tuyos: tu dominio, la IP y el puerto de tu Jellyfin, y la ruta donde instales Caddy en tu NAS (ojo con /volume2: en tu NAS puede ser /volume1 u otro).

Paso 1: Crea la carpeta de Caddy

CÓDIGO
sudo mkdir -p /volume2/docker/caddy

Y entra en ella:

CÓDIGO
cd /volume2/docker/caddy

Paso 2: Crea el archivo docker-compose.yaml

CÓDIGO
sudo nano docker-compose.yaml

Pega dentro este contenido. Respeta los espacios del principio de cada línea: en los archivos YAML la sangría es obligatoria y, si la cambias, no funcionará.

CÓDIGO
services:
  caddy:
    image: caddy:2
    container_name: caddy-jellyfin
    restart: unless-stopped
    ports:
      - "8443:8443"
    volumes:
      - /volume2/docker/caddy/Caddyfile:/etc/caddy/Caddyfile
      - /volume2/docker/caddy/data:/data
      - /volume2/docker/caddy/config:/config

Guarda con Ctrl + O y Intro, y sal con Ctrl + X.

Paso 3: Crea el Caddyfile

CÓDIGO
sudo nano Caddyfile

Pega esto, cambiando el dominio por el tuyo y la IP y el puerto por los de tu Jellyfin:

CÓDIGO
jellyfin.tudominio.com:8443 {
    reverse_proxy 192.168.x.xxx:8096
}

Guarda (Ctrl + O, Intro) y sal (Ctrl + X). Esas dos líneas le dicen a Caddy: “todo lo que llegue a este dominio por el puerto 8443, mándalo a Jellyfin”.

Paso 4: Crea las carpetas de datos

Aquí guardará Caddy los certificados y su configuración, para que no se pierdan al reiniciar el contenedor:

CÓDIGO
sudo mkdir -p /volume2/docker/caddy/data /volume2/docker/caddy/config

Paso 5: Comprueba que el Caddyfile es correcto

Antes de ponerlo en marcha, valida la configuración:

CÓDIGO
sudo docker run --rm -v /volume2/docker/caddy/Caddyfile:/etc/caddy/Caddyfile caddy:2 caddy validate --config /etc/caddy/Caddyfile

Si todo está bien, verás Valid configuration.

Paso 6: Pon Caddy en marcha

Desde la carpeta de Caddy:

CÓDIGO
cd /volume2/docker/caddy
CÓDIGO
sudo docker compose up -d

Paso 7: Comprueba que el contenedor funciona

CÓDIGO
sudo docker ps

En la lista tiene que aparecer el contenedor caddy-jellyfin.

Paso 8: Consulta los logs

Para ver qué está haciendo Caddy (por ejemplo, si ha conseguido el certificado HTTPS):

CÓDIGO
sudo docker logs caddy-jellyfin

¡Y listo! Ya tienes Caddy instalado y funcionando con Docker Compose.

Preguntas frecuentes

¿Qué es un proxy inverso?

Es un intermediario: recibe las visitas que llegan desde Internet y las reenvía al servicio que corresponde dentro de tu red. Así puedes tener varios servicios detrás de un solo punto de entrada, con HTTPS.

¿Por qué Caddy y no Nginx Proxy Manager?

Los dos sirven. Caddy me gusta porque se configura con un archivo de texto muy corto y gestiona los certificados HTTPS de forma automática, sin pasos extra.

Caddy no consigue el certificado HTTPS

Revisa los logs (paso 8). Casi siempre es porque el dominio no apunta todavía a tu IP pública (los cambios de DNS pueden tardar) o porque el puerto no está bien redirigido en el router hacia el NAS.

Si cambio el Caddyfile, ¿cómo aplico los cambios?

Reinicia el contenedor con sudo docker restart caddy-jellyfin.

¿Sirve para otros servicios además de Jellyfin?

Sí. Puedes añadir más bloques al Caddyfile, uno por dominio o subdominio, cada uno con su reverse_proxy hacia el servicio que quieras.

Si estás montando tu NAS, te interesará mi curso del UGREEN DXP4800 Plus en YouTube. ¿Te ha funcionado? Cuéntamelo en los comentarios.

¿Te ha sido útil? Compártelo

Deja un comentario

Artículos relacionados

Carrito de compra
Scroll al inicio