Buenas gente, voy a intentar poco a poco explicar como te puedes montar tu propio “servidor” de contenido multimedia, intentaré que sea en la medida de lo posible ameno y dividirlo en secciones y también en “niveles”.
Esta en construcción ya que no dispongo de mucho tiempo libre y lo iré actualizando y aclarando conforme tenga tiempo, si creéis que no es el foro adecuado (quizás pegaría mas en tecnología en general como el hilo de Linux?), o que no pinta nada lo quito sin problemas. Tengo bastante que escribir, por eso lo publico tal como está ahora y lo iré actualizando con capturas, mas info, etc, segun veamos para donde deriva el hilo pues podemos poner pasos mas concretos o explicar más algunos conceptos.
Mi idea es compartir lo que actualmente estoy haciendo en mi casa para uso personal + mi familia + algún amigo, y si de paso alguien le sirve para inspirarse o entre todo podemos pulirlo o añadir sugerencias pues mejor que mejor.
Esto no pretende ser una guía paso a paso, comando por comando, para ello puedes buscar por internet cual guía en concreto, aunque si que se recalcaran pasos o se advertirá sobre ciertos momentos y por supuesto si alguien se atasca en un paso, aunque sea un comando o con un error completo, lo podemos revisar. La idea es no repetir como un mono una serie de pasos sin entender nada sino intentar comprender que se está haciendo, así si en un futuro algo te falla quizás sabes por donde van los tiros mientras que si sigues una guía como un loro te quedarás a dos velas.
Trabajo de IT aunque no soy sysadmin, así que si veis que escribo cualquier barbaridad lo podemos hablar para cambiarlo 😃
En primer lugar, vamos a intentar aclarar el ámbito, partimos del supuesto que quieres compartir tu contenido multimedia de tu pc a la TV por ejemplo y quieres ir mas allá de compartirlo “compartiendo” el contenido de la carpeta desde windows o semejante, es decir quieres tenerlo mas ordenado, clasificado, etc, es decir con un toque “Netflix”.
Existen varias opciones actualmente, por ejemplo plex y Jellyfin, en este post nos centraremos en Jellyfin (open source y 100% gratuita), ya que es el que actualmente estoy usando.
Jellyfin se compone de una parte “servidor” y otra cliente, la parte servidor es la que instalaremos en nuestra máquina para “dispensar las películas” y el cliente es donde veremos esas películas.Si bien la instalación de Jellyfin y ponerlo en funcionamiento en red local es bastante “sencillo” conforme se quiere “tunear” su funcionamiento o intentar compartirlo con el exterior (Desde internet) se pueden complicar las cosas.
Os animo desde aquí a que probéis, a mi me sorprendió gratamente. La tarea de la instalación sin mas se puede hacer sin ser un experto en informática ni mucho menos, aunque siempre vienen bien algunos conocimientos. Se puede lograr un resultado bastante vistoso (como el de las imágenes anteriores) pasando solo por unos pasos de configuración, te muestra actores de la película, un resumen, calificación de IMDb, rottentomatoes, películas relacionadas que tengas (recomendaciones) etc.
También aseguraros de que Jellyfin dispone de cliente donde lo vais a usar, android tv, android, IOS, etc, (para un sistema operativo de una TV en concreto, revisad la documentación).
https://jellyfin.org/clients/
La idea en general es reutilizar cualquier hardware que tengáis por casa o que no estéis usando, los requisitos mínimos para que funcione Jellyfin como tal , son realmente bajos, no hay definidos unos mínimos pero realmente casi funciona en cualquier cosa, aunque como veremos luego depende de cual sea nuestra intención podría demandar mas “potencia” o menos.
¿Porque reutilizar hardware que tengamos en casa? Porque primero le damos una nueva vida y segundo porque en un principio la idea es que esté encendido 24/7 por lo que tener el PC habitual en ello no es lo recomendable, aunque también se puede hacer para ver si os gusta y luego ya tomar decisiones.
Aqui viene una palabra que nos acompañara en el resto de la guía y es el transcoding, digamos, así de manera sencilla, consiste en convertir un archivo de video/audio de un formato a otro. Digamos, por ejemplo, que tienes una película en X formato de video/audio y donde quiere reproducirlo (TV, Android TV, Móvil, etc) no es compatible con este formato, ahí es donde se produce el transcoding para que el “cliente” pueda reproducir el archivo.
Este transcoding, se realiza en el servidor y normalmente es bastante costoso en términos de recursos, es decir, subirá el uso de la CPU incluso si es muy exigente puede que ni funcione o lo haga muy lento.
Lo ideal para un servidor sencillo y reutilizando hardware es que nos aseguremos que todos nuestros archivos son compatibles con el cliente (formato, codecs, etc) y de esta manera se reproduciría “directamente” lo cual es muy liviano para el sistema, aunque esto, en mi experiencia, es bastante difícil.
Yo recomendaría utilizar la distro de Linux que mas os guste, realizando una instalación limpia de por ejemplo Ubuntu 20.04 (también se puede en windows, aunque no he probado, pero parece bastante de "click y siguiente") y partir de ahi seguir, existen multitud de guías por internet de este paso, incluso documentación oficial:
https://jellyfin.org/docs/general/administration/installing.html
Si buscáis por google os saldrán bastantes tanto en español como en ingles, la mayoría son bastante parecidas.
Recomendaciones: no instaléis Jellyfin/Ubuntu en el mismo disco que vais a utilizar para almacenar los archivos que queréis compartir, si es para hacer una prueba rápida para ver como es OK, pero si es para largo termino penaliza bastante el rendimiento. Lo ideal seria instalar SO+Jellyfin en un SSD antiguo que tengáis aunque también vale un disco de toda la vida.
Por supuesto también existe la opción de contenedores si queréis darle un try rápido y sabéis manejaros en ese ámbito.
Completando la instalación ya podríais iniciar sesión en la ip de la maquina donde lo habéis instalado + el puerto, es decir, ip:8096
Ahí os pedirá que creéis un usuario (el admin) que indiquéis el idioma, y que añadáis una “librería” (se puede hacer después la librería), la librería es la carpeta donde están vuestros archivos multimedia, si los tenéis desperdigados podéis añadir varias librerías, pero lo mejor es juntarlos por ejemplo en películas y añadir una librería solo de películas.
IMPORTANTE, de momento NO permitir el acceso remoto, eso lo dejaremos para una configuración futura para realizarla con cierta seguridad.
Solo con estos pasos ya tendríamos el servidor funcionando en local con nuestro contenido disponible, sin embargo para que el propio jellyfin identifique la película esta debe de tener el título sin mucha florituras (esto es más sensible en series), si estáis acostumbrados a sonarr y a radarr estos funcionan muy bien con jellyfin (hablaremos más tarde de ellos)
Instalar el cliente por ejemplo en vuestro móvil, activar el wifi (recordar que de momento solo tenemos el servidor en local, por lo que deben de estar en la misma red servidor-cliente), añadirlo en ajustes (ip:puerto si recuerdo bien) os dará la pagina de login y ahí entráis con el usuario que habéis creado (simplemente es para probar en este momento, se recomienda no entrar con el usuario administrador), mas adelante crearemos usuarios etc.
Pantalla de login del cliente:
- Configuración post instalación Jellyfin
Accediendo con el cliente a Jellyfin en nuestro servidor con una cuenta administración tenemos acceso a muchas opciones de configuración. Si disponemos de permiso de administrador hacemos click en “panel de control”, ahi podemos ver muchas opciones, comentaremos las mas representativas e intentaremos ir ampliando conforme pase el tiempo.
Como vemos a primera vista, sale la version instalada del servidor, nos indica que si queremos reiniciar o apagar, los dispositivos activos en este momento (incluso se les puede mandar un mensaje) y al a derecha un pequeño extracto de la actividad reciente (si se quiere mas detalle puedes entrar en “actividad” y ahi se tienen mas detalles.
A continuacion vamos a ver las opciones mas "interesantes" con algo de detalle.
- General
Aqui podemos ver ajustes generales, el idioma preferido (lo elegimos al terminar la instalacion y entrar por primera vez a ip:8096) y las rutas.
En cuanto a las rutas yo os aconsejo por experiencia personal que la ruta del caché, la de las etiquetas y más adelante veremos en reproducción la de transcodes, la pongais en un SSD o dervidados, es decir, buscando rapidez, sino es posible al menos intentar que no esté en el mismo disco duro que los archivos que intentais reproducir, siempre que donde lo vayais a poner tenga un rendimiento aceptable,.
Por ejemplo, teniendo solo un HD, no instaleis jellyfin en vuestro PC en C en el HD mecanico de toda la vida y por no poner la cache en ese HD mecanico pongais la cache en un usb por no tenerlas en el mismo disco, en este caso compensaría dejarlo en el HD.
- Usuarios
Si echáis un ojo a las opciones se puede restringir numero de sesiones simultaneas y número de intentos fallidos de login, de momento y en local no es muy importante pero destacarlo. Si hemos añadido varias librerías (recordad, son las carpetas donde tenemos nuestro contenido y que hemos puesto en Jellyfin para que las encuentre) podemos restringir a cada usuario a que puede acceder.
Podemos restringir quien queremos que haga o tenga la opcion de hacer transcoding, permitirse conectarse desde fuera, si tiene privilegios de administrador etc,
En acceso, podemos indicar a que bibliotecas queremos que tenga acceso.
En control parental podemos filtrar si queremos que este usuario tenga acceso a X calificación parental y en el caso de que no estén disponibles bloquearlos por si acaso, poner un horario de acceso, etc…
En contraseña gestionar el cambio de contraseña, activar un modo pin, etc
- Bibliotecas
Aqui podemos añadir "carpetas" que tengan el contenido y nombrarlas a nuestro gusto, peliculas, series, anime, lo que queramos añadir, si hacemos click en los tres puntos de una biblioteca ya creada o si añadimos una nueva, nos pedirá el tipo de contenido, el nombre para mostrar, la carpeta que lo contiene (ruta absoluta), también se puede indicar que proveedores para las etiquetas se quiere, IMDB, TheMovieDB , etc, esto ya segun a gustos, entre muchas mas opciones, sobre todo de cara a que se reconozca el contenido que se añada se etiquete correctamente, se muestren las miniaturas, resumen, etc.
Cuando se añaden nuevos elementos a las bibliotecas ya creadas, podemos hacer manualmente un Escanear biblioteca haciendo click en los tres puntos de una biblioteca ya creada, o bien esperar a que la tarea programada de refresco lo haga por nosotros (lo veremos mas adelante en tareas programadas).
- Reproduccion
Aquí existen multitud de opciones, lo ideal es dejarlo todo como si estuviera en default, si tenemos algun hardware que permite aceleracion (grafica nvidia, un micro Intel relativamente nuevo con QSV, etc) es muy interesante si vamos a hacer transcoding intentar que funcione ya que la diferencia entre hacer transcoding a "fuerza bruta" con la CPU a pelo y con algo "dedicado" para ello es muy notable.
De las demás opciones, consideraría como hemos comentado antes cambiar la ruta de los transcodes a una unidad ssd o al menos, si es posible a un disco donde no estén los archivos multimedia.
- Actividad
En actividad vemos con mas entradas lo comentado en panel de control, es decir que usuario ha entrado a que hora, desde donde, desde que cliente, ip, etc.
- Registros
Aqui es donde podemos visualizar los logs desde la interfaz de jellyfin, muy util si veis que algo no funciona y quereis verlo in situ sin tener que entrar al "servidor" y buscar los logs.
- Tareas programadas
Revisar que el horario de las tareas programadas no impacte con alguna actividad más que esteis haciendo en ese PC o servidor, por ejemplo cuando ya se tiene una biblioteca "grande" de varios TB el escaneo puede durar unos minutos en los cuales se nota cierta ralentización en jellyfin (dependerá del hardware que se tenga claro).
Hasta hace poco por ejemplo tenia "television en vivo" que no es mas que una lista M3E con su epg y tal y esa actualización de medios tardaba muchisimo (tenian mas de 1000 canales xD).
- Configuración acceso desde fuera (internet)
Si cuando termine de ponerlo “decente” los puntos anteriores, veo algo de interés documentaré este paso (el mas complicado y largo) y que requiere un cierto grado de conocimientos, aunque yo creo que el mas interesante por que habre una multitud de opciones.
(En construcción)
De momento muy contento con el sistema en general, algún fallo en reproducción directa en la app de android TV pero mínima ( si lo haces con el móvil y lo mandas con Chromecast funciona correctamente, por lo que pinta a fallo en la app en si de android tv). He aplicado posibles soluciones y ninguna ha funcionado.
Lo tengo montado en un proliant micro server gen8, tiene ya sus años y ha pasado por muchos usos (web, dropbox personal, plex, etc) el año pasado decidí probar jellyfin y para mi todo un acierto.
La configuración del servidor es algo Frankenstein, ya que lo instalé para probar y conforme vi que funcionaba bien y podía mejorarlo en X lo fui incorporarlo sin empezar de 0 ( lo tengo pendiente).
Actualmente uso un ssd para la caché y archivos transcode, 12 GB de Ram y un Xeon 1260 V2, el SO está en una micro SD ( lo se lo se 🤣), en cuanto al almacenamiento varios discos de 4TB WB red plus CRM, sin raid (lo se lo se 🤣), con mergefs.
Utilizo para acceso remoto a jellyfin un reverse proxy apache, certificado renovado automáticamente let’s encrypt, para la ip dinámica ddclient y un largo etc de configuraciones/programas (sonarr,radarr, fail2ban, ..)
Lo utilizo también para tener mis libros por si quisiera o no pudiera leer un dia en el ebook, podría en el movil, tablet, pc, también lo uso de "mini" spotify con musica que no se encuentra en este con finamp (el tema de audio aun está por pulir), también le hice un intento para television en vivo con una lista m3u y solo me funcionaba cuando lo veia via web desde un PC, por lo que lo quité, espero que mejore en el futuro porque también me interesaría.