← Todas las plantillas · Multimedia
Despliega Jellyfin en un clic
Un servidor multimedia que transmite tus películas, series y música a cualquier dispositivo
Una alternativa autoalojada a Plex y Emby.
¿Qué es Jellyfin?
Jellyfin es un servidor multimedia gratuito y de código abierto que la gente usa en lugar de Plex o Emby. Ordena en bibliotecas las películas, las series y la música que tienes, con pósteres, descripciones y reparto tomados de metadatos en línea, y los transmite a un navegador, a teléfonos, a tabletas y a televisores. Hay apps oficiales para Android, iOS, Android TV y Fire TV, Roku, televisores LG y Samsung, Xbox y Kodi, y Jellyfin Media Player funciona en equipos de escritorio. Cada persona tiene su propia cuenta, con su propio progreso de reproducción y su control parental.
Quienes autoalojan Jellyfin lo hacen para ver sus propios archivos multimedia desde cualquier lugar, sin una cuenta en ninguna empresa y sin suscripción: no tiene versión premium, ni rastreo, ni servidores centrales. Esta plantilla lo configura con el administrador que indicas en los campos y tres bibliotecas, Movies, Shows y Music, sobre las carpetas del volumen media. El inconveniente es la transcodificación. Cuando un dispositivo no puede reproducir un archivo tal cual, Jellyfin lo convierte sobre la marcha, aquí en la CPU, lo que resulta pesado; por eso los archivos que tus dispositivos reproducen directamente, como el video H.264 en MP4, son los ligeros.
Hosting de Jellyfin en Pethost
- Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
- Nuevo proyecto se abre en Jellyfin. Rellenas lo que pide y haces clic en Crear proyecto: Nombre de usuario, Contraseña de administrador.
- En un par de minutos Jellyfin está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
- Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.
Preguntas sobre Jellyfin
¿Jellyfin es realmente gratis?
Sí. Jellyfin es software libre bajo la licencia GNU GPL, y su servidor y sus apps oficiales no cuestan nada, sin versión premium ni funciones de pago. Lo desarrollan voluntarios.
Jellyfin frente a Plex: ¿cuál es la diferencia?
Los dos transmiten tus propios archivos multimedia a tus dispositivos. El servidor de Plex es de código cerrado, sus cuentas pasan por plex.tv y, desde abril de 2025, ver tus archivos fuera de casa requiere un Plex Pass o un Remote Watch Pass. Jellyfin es de código abierto, no necesita ninguna cuenta externa y no cobra por nada.
¿En qué dispositivos se puede ver Jellyfin?
Jellyfin se puede ver en cualquier navegador moderno y en las apps oficiales para Android, iOS, Android TV y Fire TV, Roku, LG webOS, Samsung Tizen y Xbox. Jellyfin Media Player funciona en Windows, macOS y Linux, y el add-on JellyCon lleva Jellyfin a Kodi.
¿Cómo debo nombrar mis películas y series para Jellyfin?
Dale a cada película una carpeta con su título y su año por nombre, por ejemplo Big Buck Bunny (2008), y dentro, el video con ese mismo nombre. Cada serie lleva su propia carpeta, con las carpetas Season 01, Season 02 y así sucesivamente dentro, y los episodios llevan nombres como Show Name S01E01.mkv. Así Jellyfin encuentra los pósteres y las descripciones correctos.
¿Jellyfin necesita una GPU?
No. Una GPU solo acelera la transcodificación, la conversión que necesita un dispositivo cuando no puede reproducir un archivo tal cual; sin ella, Jellyfin transcodifica en la CPU. El video HDR es el caso difícil: según la documentación de Jellyfin, ninguna CPU de consumo moderna hace su mapeo de tonos en tiempo real. Los archivos que tus dispositivos reproducen tal cual no necesitan ninguna transcodificación.
¿Cuánta memoria y disco necesita Jellyfin?
Jellyfin usa unos 250 MB de memoria en reposo, y el disco es tu biblioteca; la transcodificación de un video se ejecuta en la CPU y es pesada. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.
El archivo Docker Compose de Jellyfin
La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.
Contenedores: jellyfin (jellyfin/jellyfin:12).
Volúmenes, en el backup de cada noche: config, cache, media.
services:
jellyfin:
image: jellyfin/jellyfin:12
restart: unless-stopped
environment:
ADMIN_USERNAME: ${ADMIN_USERNAME}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# A new server's startup wizard is open to whoever comes first. So until the wizard is done,
# Jellyfin runs on port 8097, which nobody reaches: there it is given the administrator from
# the fields and a library for each folder of /media, and only then answers on 8096.
entrypoint: ["/bin/sh", "-c"]
command:
- |
set -e
config=/config/config
if ! grep -qs '<IsStartupWizardCompleted>true<' "$$config/system.xml"; then
mkdir -p "$$config" /media/movies /media/shows /media/music
if [ -f "$$config/network.xml" ]; then
sed -i 's|<InternalHttpPort>[0-9]*<|<InternalHttpPort>8097<|' "$$config/network.xml"
else
printf '<?xml version="1.0" encoding="utf-8"?>\n<NetworkConfiguration>\n <InternalHttpPort>8097</InternalHttpPort>\n</NetworkConfiguration>\n' > "$$config/network.xml"
fi
/jellyfin/jellyfin &
setup=$$!
api() { curl -fsS -H 'Content-Type: application/json' "$$@"; }
# 401: an administrator with a password exists already, from a first start cut short,
# and Jellyfin has marked its wizard done by itself.
until wizard=$$(curl -sS -o /dev/null -w '%{http_code}' http://127.0.0.1:8097/Startup/Configuration) &&
{ [ "$$wizard" = 200 ] || [ "$$wizard" = 401 ]; }; do sleep 2; done
if [ "$$wizard" = 200 ]; then
api -d '{"ServerName":"Jellyfin","UICulture":"en-US","MetadataCountryCode":"US","PreferredMetadataLanguage":"en"}' http://127.0.0.1:8097/Startup/Configuration
library() {
api http://127.0.0.1:8097/Library/VirtualFolders | grep -q "\"Name\":\"$$1\"" ||
api -d '{"LibraryOptions":{"EnableRealtimeMonitor":true}}' "http://127.0.0.1:8097/Library/VirtualFolders?name=$$1&collectionType=$$2&paths=/media/$$3"
}
library Movies movies movies
library Shows tvshows shows
library Music music music
api -o /dev/null http://127.0.0.1:8097/Startup/User
json() { printf '%s' "$$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }
api -d "{\"Name\":\"$$(json "$$ADMIN_USERNAME")\",\"Password\":\"$$(json "$$ADMIN_PASSWORD")\"}" http://127.0.0.1:8097/Startup/User
api -d '{"EnableRemoteAccess":true,"EnableAutomaticPortMapping":false}' http://127.0.0.1:8097/Startup/RemoteAccess
api -X POST http://127.0.0.1:8097/Startup/Complete
fi
kill $$setup
wait $$setup || true
sed -i 's|<InternalHttpPort>8097<|<InternalHttpPort>8096<|' "$$config/network.xml"
fi
exec /jellyfin/jellyfin
volumes:
- config:/config
- cache:/cache
# Writable, so that films, shows and music can be copied in over SFTP.
- media:/media
volumes:
config:
cache:
media:
Más en Multimedia
- OwncastVideo en tiempo real y chat en tu propia página
- NavidromeUn servidor de música que transmite tu propia colección
- RomMUna biblioteca y un reproductor en el navegador para tus juegos retro
- KomgaUn servidor y lector web para tus cómics, manga y libros electrónicos
- LycheeUna galería para subir, ordenar y compartir tus fotos
- AudiobookshelfTu propio servidor de audiolibros y podcasts: escucha en el navegador o en las apps, con el progreso guardado entre dispositivos