Recién instalado, Jellyfin responde en http://tu-ip:8096: está bien desde el sillón, no sirve fuera de casa y las apps de iPhone, iPad y Apple TV lo rechazan de plano. Darle una dirección HTTPS real resuelve las tres cosas. Esta es la configuración confiable más sencilla, más dos alternativas.
La configuración recomendada: Caddy como proxy inverso
- Consigue un dominio que apunte a tu casaUsa un dominio propio y agrega un registro A (por ejemplo media.example.com) que apunte a la IP pública de tu casa. Si tu IP cambia, usa un servicio de DNS dinámico para mantener el registro al día.
- Redirige los puertos 80 y 443 a la máquina del proxyEn tu router, redirige los puertos TCP 80 y 443 a la computadora donde va a correr el proxy inverso. No redirijas el puerto 8096 de Jellyfin: el proxy es lo único que debe ser accesible desde internet.
- Instala Caddy y apúntalo a JellyfinInstala Caddy en la misma máquina que Jellyfin y usa un Caddyfile de dos líneas que haga de proxy inverso de tu dominio hacia localhost:8096. Caddy obtiene y renueva un certificado de Let's Encrypt automáticamente.
- Avísale a Jellyfin que hay un proxyEn Jellyfin, abre Panel de control → Redes (Dashboard → Networking), agrega la IP del proxy en Proxies conocidos (Known proxies) y reinicia Jellyfin. Así Jellyfin ve la dirección real de cada espectador.
- Pruébalo desde fuera de tu redEn tu teléfono, apaga el Wi-Fi y abre https://media.example.com. Si la página de inicio de sesión de Jellyfin carga con el candado, el servidor está listo para las apps de iPhone, iPad y Apple TV.
Tu Caddyfile completo:
media.example.com {
reverse_proxy localhost:8096
}Recarga Caddy (sudo systemctl reload caddy en Linux) y obtendrá el certificado con la primera solicitud. El dominio ya debe resolver a tu IP y los puertos 80 y 443 deben estar redirigidos; si no, la solicitud del certificado falla.
Alternativa: nginx con Let's Encrypt
Si ya usas nginx, solicita un certificado con Certbot (sudo certbot certonly --nginx -d media.example.com) y agrega un bloque server como este. La ubicación /socket mantiene funcionando las actualizaciones en tiempo real de Jellyfin a través del proxy.
server {
listen 443 ssl;
http2 on;
server_name media.example.com;
ssl_certificate /etc/letsencrypt/live/media.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_buffering off;
}
location /socket {
proxy_pass http://127.0.0.1:8096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}Alternativa: Tailscale, sin abrir puertos
Tailscale Serve le da a Jellyfin una dirección HTTPS de confianza como https://jellyfin.your-tailnet.ts.net, accesible solo para los dispositivos que iniciaron sesión en tu red de Tailscale. Activa los certificados HTTPS en la consola de administración de Tailscale y luego ejecuta tailscale serve --bg 8096 en la máquina de Jellyfin. Es privado y fácil, pero cada dispositivo que reproduce —incluido cada Apple TV— debe tener Tailscale y ser parte de tu red.
Tailscale Funnel (tailscale funnel --bg 8096) publica la misma dirección para todo internet sin redirigir puertos, así que los dispositivos de tu hogar no necesitan nada más. Revisa los límites actuales de Funnel en Tailscale antes de depender de él para video.
Cómo mantenerlo seguro
- Dale a cada cuenta de Jellyfin una contraseña fuerte y única, y desactiva las que no uses.
- Mantén Jellyfin y tu proxy actualizados.
- Comparte el servidor con una app que no necesite la contraseña de Jellyfin de cada persona. Con Media Center conectas Jellyfin una vez e invitas a tu hogar por correo; mira cómo compartir tu servidor con tu familia (guía en inglés).
Cuando tu dirección HTTPS funcione, conéctala a Apple TV o a Android TV.
