Guía completa: Configurar Jellyfin para acceso por internet con https usando Caddy, para Windows e IP dinámica.
Objetivo: que puedas entrar a tu Jellyfin desde internet por HTTPS con certificado válido (Let’s Encrypt) en https://sampledomain.ddns.net, terminando TLS en Caddy y sin tocar el TLS interno de Jellyfin.
0) Requisitos previos (resumen)
-
Windows 10/11 con permisos de administrador.
-
Jellyfin Server instalado y escuchando en
http://127.0.0.1:8096. jellyfin.org+1 -
Una cuenta No-IP con el hostname
sampledomain.ddns.net, más su Dynamic Update Client (DUC) instalado para mantener la IP actualizada. noip.com+1 -
Reenvío de puertos en tu router:
-
TCP 443 (WAN) → PC:443 (obligatorio para HTTPS y validación TLS-ALPN-01).
-
-
443 libre en Windows (que no esté ocupado por IIS/Apache/etc.).
1) Instalar Jellyfin (si aún no lo tienes)
-
Descarga el instalador para Windows desde la web oficial. jellyfin.org
-
Ejecuta el instalador y completa el asistente. Guía oficial de Windows aquí. jellyfin.org
-
Abre Jellyfin (normalmente en
http://localhost:8096) y completa el asistente inicial. -
No actives HTTPS en Jellyfin (lo hará Caddy).
-
En Dashboard → Networking → Known proxies añade
127.0.0.1(y::1).
2) Crear y mantener el DDNS sampledomain.ddns.net (No-IP)
-
Crea el hostname
sampledomain.ddns.neten tu cuenta No-IP. -
Instala el Dynamic Update Client (DUC) para Windows y entra con tu usuario. Marca el hostname para que se actualice automáticamente cuando cambie tu IP. noip.com+1
- Otra opción es si tu router lo permite activar la opción de dns dinamico y así no es necesario instalar ningún programa.
-
Verificación rápida:
nslookup sampledomain.ddns.netDebe resolver a tu IP pública actual.
3) Instalar Caddy (elige A o B)
A) Con Chocolatey (rápido)
-
Instala Chocolatey (PowerShell como Administrador):
Set-ExecutionPolicy Bypass -Scope Process -Force; ` [System.Net.ServicePointManager]::SecurityProtocol = ` [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; ` iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))Instrucciones oficiales. Chocolatey Software -
Instala Caddy:
choco install caddy -y(También puedes consultar la página de instalación/descarga oficial de Caddy.) Caddy Web Server+1
B) Instalación manual
-
Descarga el binario de Caddy para Windows (amd64) desde la página oficial o desde Releases en GitHub.
-
Crea
C:\caddy\y coloca caddy.exe ahí. Caddy Web Server+1 - Si lo instalas con chocolatey a mi se me instalo en C:\ProgramData\chocolatey\lib\caddy\tools\caddy.exe
4) Configurar Caddyfile
Crea el archivo Caddyfile (en C:\caddy\Caddyfile si instalaste manual; con Chocolatey puedes usar la carpeta donde esté caddy.exe, p. ej. C:\ProgramData\chocolatey\lib\caddy\tools\Caddyfile) con este contenido mínimo:
{
email [email protected]
# guarda los certificados en una ruta conocida (ajusta si quieres)
storage file_system {
root C:\caddy\data
}
}
sampledomain.ddns.net {
# si NO vas a abrir el puerto 80 externo, desactiva el desafío HTTP-01
tls {
issuer acme {
disable_http_challenge
}
}
reverse_proxy 127.0.0.1:8096
}
Notas:
-
Si sí abres el puerto 80 → puedes quitar el bloque
tls { ... }y dejar que Caddy use tanto HTTP-01 como TLS-ALPN-01 automáticamente. -
Caddy gestiona Let’s Encrypt automáticamente (emisión y renovación). Caddy Web Server
5) Abrir Windows Firewall (solo 443)
Permite la entrada al 443 para caddy.exe (ajusta la ruta si usaste Chocolatey):
netsh advfirewall firewall add rule name="Caddy IN 443" dir=in action=allow protocol=TCP localport=443 program="C:\caddy\caddy.exe"
C:\caddy\caddy.exe por la ruta real, p. ej. C:\ProgramData\chocolatey\lib\caddy\tools\caddy.exe.)6) Reenvío de puertos en el router
-
TCP 443 (WAN) → IP_del_PC:443 (obligatorio).
-
(Opcional) TCP 80 (WAN) → IP_del_PC:80.
Si estás detrás de CGNAT (la IP WAN de tu router no coincide con tu IP pública), las conexiones entrantes no funcionarán; en ese caso necesitarías un servidor intermedio o un cambio de plan/ISP.
7) Arrancar Caddy y emitir el certificado
Prueba en primer plano
cd C:\caddy
caddy run --config Caddyfile
Prueba desde fuera
-
Navegador en 4G (o desde otra red):
https://sampledomain.ddns.net/ -
También puedes forzar hacia tu IP pública:
curl -vk https://sampledomain.ddns.net/ --resolve sampledomain.ddns.net:443:TU_IP_PUBLICA
8) Ejecutar Caddy como servicio (opcional, recomendado)
En Windows, Caddy no trae “service manager” propio. Usa NSSM:
-
Descarga NSSM. nssm.cc
-
Instala el servicio (ajusta rutas si usaste Chocolatey):
nssm install Caddy "C:\caddy\caddy.exe" run --config Caddyfile
nssm set Caddy AppDirectory "C:\caddy"
nssm set Caddy Start SERVICE_AUTO_START
nssm start Caddy
Página oficial de NSSM y alternativa de releases por si la principal te descarga más lento. nssm.cc+1
9) Ajustes útiles de Jellyfin
-
Known proxies:
127.0.0.1y/o::1. -
Base URL vacía si sirves en raíz (
/). Si algún día quiereshttps://sampledomain.ddns.net/jellyfin, pon Base URL =/jellyfiny cambia elreverse_proxyo usahandle_path/routeen Caddy. -
Prioriza Direct Play en los clientes para evitar transcodificar; si tienes que transcodificar, habilita aceleración por hardware (Quick Sync / NVENC).
10) Problemas comunes (y cómo reconocerlos)
-
El navegador avisa “sitio no seguro”:
-
Usaste staging de ACME (cert de pruebas) o la validación falló y Caddy sirvió autofirmado. Revisa logs y abre 443→PC:443 correctamente. Caddy Web Server
-
-
Caddy no arranca en 443:
-
netstat -ano | findstr :443otro proceso ocupa el puerto (Apache/IIS). Muévelo o para ese servicio.
-
-
Let’s Encrypt no puede validar:
-
Timeout al conectar a 443/80 → falla de router/ISP/firewall. El log de Caddy lo indicará. Caddy Web Server
-
-
El hostname no resuelve a tu IP:
-
Revisa el DUC de No-IP o configura DDNS en tu router. noip.com+1
-
11) Resumen de comandos clave
:: Jellyfin: (instalador desde web oficial) ── ver paso 1
:: Chocolatey (opción A)
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"Set-ExecutionPolicy Bypass -Scope Process -Force; ^
[System.Net.ServicePointManager]::SecurityProtocol = ^
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; ^
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))"
choco install caddy -y
:: Firewall (entrada 443 para Caddy)
netsh advfirewall firewall add rule name="Caddy IN 443" dir=in action=allow protocol=TCP localport=443 program="C:\caddy\caddy.exe"
:: Arrancar en primer plano
cd C:\caddy
caddy run --config Caddyfile
Enlaces oficiales que usarás
-
Jellyfin Server para Windows (descarga + docs). jellyfin.org+1
-
Caddy (descarga e instalación). Caddy Web Server+1
-
No-IP — Dynamic Update Client (DUC) Windows. noip.com
-
NSSM (servicio en Windows). nssm.cc