información y artículos tecnológicos

Guía completa: Configurar Jellyfin para acceso por internet con https usando Caddy, para Windows e IP dinámica.

October 29, 2025, 37 minutos

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)

  1. Descarga el instalador para Windows desde la web oficial. jellyfin.org

  2. Ejecuta el instalador y completa el asistente. Guía oficial de Windows aquí. jellyfin.org

  3. Abre Jellyfin (normalmente en http://localhost:8096) y completa el asistente inicial.

  4. No actives HTTPS en Jellyfin (lo hará Caddy).

  5. En Dashboard → Networking → Known proxies añade 127.0.0.1 (y ::1).


2) Crear y mantener el DDNS sampledomain.ddns.net (No-IP)

  1. Crea el hostname sampledomain.ddns.net en tu cuenta No-IP.

  2. 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

  3. 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.
  4. Verificación rápida:

    nslookup sampledomain.ddns.net

    Debe resolver a tu IP pública actual.


3) Instalar Caddy (elige A o B)

A) Con Chocolatey (rápido)

  1. 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
  2. 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

  1. Descarga el binario de Caddy para Windows (amd64) desde la página oficial o desde Releases en GitHub.

  2. Crea C:\caddy\ y coloca caddy.exe ahí. Caddy Web Server+1

  3. 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"
(Si usaste Chocolatey y ejecutas desde su ruta: cambia 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
Verás en el log mensajes tipo “enabling automatic TLS certificate management” y la obtención del certificado. (Si algo falla, Caddy lo dirá claro: puertos ocupados, validación ACME, etc.). Caddy Web Server

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:

  1. Descarga NSSM. nssm.cc

  2. 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.1 y/o ::1.

  • Base URL vacía si sirves en raíz (/). Si algún día quieres https://sampledomain.ddns.net/jellyfin, pon Base URL = /jellyfin y cambia el reverse_proxy o usa handle_path/route en 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 :443

       otro 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

Acerca de

Este es el blog donde poner guías para ciertas cosas así como contar novedades sobre webtool.es
Powered by BS5 Simply Blog and Bludit
Navigation