Cómo instalar Plex Media Server en CentOS 8

Plex es un servidor multimedia gratuito, de código abierto y con todas las funciones que te permite transmitir tus fotos, vídeos y archivos de audio en tu PC, tableta o teléfono desde cualquier lugar del mundo. Plex es compatible con la mayoría de los sistemas operativos, incluidos Linux, Windows, Mac y FreeBSD. Plex también admite varios plugins que te permiten ver contenidos de Comedy Central y MTV.

Plex es un sistema de reproducción multimedia cliente-servidor. Sólo tienes que instalar el servidor Plex en el servidor donde guardas tus archivos multimedia y luego instalar una aplicación Plex en tu teléfono, tableta u otros dispositivos para acceder a tus archivos multimedia a través de Internet.

Características Soporta múltiples usuarios. Mostrar recomendaciones de películas/programas de TV. Crea una lista de reproducción para tu música y películas favoritas. Sincroniza y accede a archivos multimedia para utilizarlos sin conexión. El control parental te permite instalar la aplicación Plex en el dispositivo de un niño y restringirle la visualización de contenidos específicos. Capacidad para transmitir tus canales de televisión locales a tu dispositivo y ver la televisión en directo.

En este tutorial, te mostraremos cómo instalar Plex Media Server en un sistema CentOS 8 con Nginx como proxy inverso.

Requisitos previos

  • Un servidor que ejecute CentOS 8 con un mínimo de 2 GB de RAM.
  • Un nombre de dominio válido está apuntado con la IP de tu servidor.
  • Una contraseña de root está configurada en tu servidor.

Actualizar el sistema

En primer lugar, se recomienda actualizar tu servidor con la última versión. Puedes actualizarlo utilizando el siguiente comando:

dnf update -y

Una vez actualizado tu servidor, reinícialo para aplicar los cambios.

Instalar el servidor multimedia Plex

Por defecto, el paquete del servidor multimedia Plex no está disponible en el repositorio por defecto de CentOS 8. Así que tendrás que crear un repositorio para el servidor multimedia Plex. Puedes crearlo con el siguiente comando:

nano /etc/yum.repos.d/plex.repo

Añade las siguientes líneas:

[Plex]
name=Plex
baseurl=https://downloads.plex.tv/repo/rpm/$basearch/
enabled=1
gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key
gpgcheck=1

Guarda y cierra el archivo cuando hayas terminado. A continuación, instala el servidor multimedia Plex con el siguiente comando:

dnf install plexmediaserver -y

Una vez finalizada la instalación, inicia el servicio multimedia Plex y habilítalo para que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl enable plexmediaserver
 systemctl start plexmediaserver

También puedes verificar el estado del servidor multimedia Plex con el siguiente comando:

systemctl status plexmediaserver

Deberías ver la siguiente salida:

? plexmediaserver.service - Plex Media Server
   Loaded: loaded (/usr/lib/systemd/system/plexmediaserver.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-01-06 02:45:40 EST; 41s ago
 Main PID: 1009 (Plex Media Serv)
    Tasks: 113 (limit: 12552)
   Memory: 268.1M
   CGroup: /system.slice/plexmediaserver.service
           ??1009 /usr/lib/plexmediaserver/Plex Media Server
           ??1033 Plex Plug-in [com.plexapp.system] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents/Resources/>
           ??1077 /usr/lib/plexmediaserver/Plex Tuner Service /usr/lib/plexmediaserver/Resources/Tuner/Private /usr/lib/plexmediaserver/Resour>
           ??1246 Plex Plug-in [org.musicbrainz.agents.music] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents/>
           ??1356 Plex Plug-in [com.plexapp.agents.plexthememusic] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Cont>
           ??1364 Plex Plug-in [com.plexapp.agents.themoviedb] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents>
           ??1365 Plex Plug-in [tv.plex.agents.music] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents/Resource>
           ??1389 Plex Plug-in [com.plexapp.agents.thetvdb] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents/Re>
           ??1450 Plex Plug-in [com.plexapp.agents.imdb] /usr/lib/plexmediaserver/Resources/Plug-ins-349e9837e/Framework.bundle/Contents/Resou>

Jan 06 02:45:40 plex systemd[1]: Starting Plex Media Server...
Jan 06 02:45:40 plex systemd[1]: Started Plex Media Server.

En este punto, el servidor multimedia Plex está instalado y en funcionamiento. Ya puedes pasar al siguiente paso.

Configurar el cortafuegos y SELinux para el servidor multimedia Plex

A continuación, tendrás que configurar firewalld para permitir puertos específicos del servidor multimedia Plex. Puedes hacerlo ejecutando los siguientes comandos:

firewall-cmd --zone=public --add-port=32400/tcp --permanent
 firewall-cmd --zone=public --add-port=32469/tcp --permanent
 firewall-cmd --zone=public --add-port=8324/tcp --permanent
 firewall-cmd --zone=public --add-port=3005/tcp --permanent
 firewall-cmd --zone=public --add-port=32412/udp --permanent
 firewall-cmd --zone=public --add-port=32413/udp --permanent
 firewall-cmd --zone=public --add-port=32414/udp --permanent
 firewall-cmd --zone=public --add-port=32410/udp --permanent
 firewall-cmd --zone=public --add-port=1900/udp --permanent
 firewall-cmd --zone=public --add-port=5353/udp --permanent
 firewall-cmd --zone=public --add-port=80/tcp --permanent

A continuación, recarga el servicio firewalld para aplicar los cambios:

firewall-cmd --reload

Por defecto, SELinux está activado en el servidor CentOS 8. Por tanto, tendrás que configurar SELinux para acceder al Servidor Plex Media a través de Internet. Puedes configurar SELinux utilizando el siguiente comando:

setsebool httpd_can_network_connect on -P

Llegados a este punto, ya se puede acceder al servidor multimedia Plex a través de Internet. Ya puedes pasar al siguiente paso.

Acceder al servidor multimedia Plex

Ahora puedes acceder al servidor multimedia Plex utilizando la URL http://your-server-ip:32400. Deberías ver la siguiente página:

Inicio de sesión en Plex

A continuación, tendrás que registrarte con una dirección de correo electrónico válida para utilizar el servicio. Después de registrarte correctamente. Se te redirigirá al panel de control del servidor multimedia Plex, como se muestra a continuación:

Panel del Servidor Plex Media

Configurar Nginx como proxy inverso

A continuación, tendrás que configurar Nginx como proxy inverso para que puedas acceder a él con el nombre de dominio sin proporcionar la dirección IP y el número de puerto.

Para ello, instala primero el servidor web Nginx con el siguiente comando:

dnf install nginx

Una vez finalizada la instalación, inicia el servicio Nginx y habilítalo para que se inicie tras reiniciar el sistema con el siguiente comando:

systemctl start nginx
 systemctl enable nginx

A continuación, crea un archivo de configuración de host virtual Nginx para Plex con el siguiente comando:

nano /etc/nginx/conf.d/plex.conf

Añade las siguientes líneas:

upstream plex_backend {
        server 127.0.0.1:32400;
        keepalive 32;
}

server {
        listen 80;
        server_name plex.example.com;

        send_timeout 100m; #Some players don't reopen a socket and playback stops totally instead of resuming after an extended pause (e.g. Ch$

       	#Plex has A LOT of javascript, xml and html. This helps a lot, but if it causes playback issues with devices turn it off. (Haven't enc$
        gzip on;
        gzip_vary on;
        gzip_min_length 1000;
        gzip_proxied any;
        gzip_types text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
        gzip_disable "MSIE [1-6]\.";

       	#Nginx default client_max_body_size is 1MB, which breaks Camera Upload feature from the phones.
       	#Increasing the limit fixes the issue. Anyhow, if 4K videos are expected to be uploaded, the size might need to be increased even more
        client_max_body_size 100M;

       	#Forward real ip and host to Plex
        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 Sec-WebSocket-Extensions $http_sec_websocket_extensions;
        proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
        proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
       	#Websockets
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

       	#Buffering off send to the client as soon as the data is received from Plex.
        proxy_redirect off;
        proxy_buffering off;

        location / {
                proxy_pass http://plex_backend;
        }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, tendrás que definir el tamaño del hash bucket del servidor Nginx. Puedes hacerlo editando el archivo de configuración de Nginx:

nano /etc/nginx/nginx.conf

Añade la siguiente línea justo encima de la última línea:

server_names_hash_bucket_size 64;

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, reinicia el servicio Nginx para aplicar los cambios.

systemctl restart nginx

Para comprobar el estado del servicio Nginx ejecuta el siguiente comando:

systemctl status nginx

Si todo va bien deberías obtener la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Thu 2020-01-09 05:17:27 EST; 48s ago
  Process: 1230 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 1229 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 1227 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 1232 (nginx)
    Tasks: 2 (limit: 5060)
   Memory: 13.1M
   CGroup: /system.slice/nginx.service
           ??1232 nginx: master process /usr/sbin/nginx
           ??1233 nginx: worker process

Jan 09 05:17:25 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 09 05:17:27 centos8 nginx[1229]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 09 05:17:27 centos8 nginx[1229]: nginx: configuration file /etc/nginx/nginx.conf test is successful

Ahora puedes acceder a tu servidor multimedia Plex utilizando la URL http://plex.example.com.

Conclusión

Enhorabuena! has instalado correctamente el servidor multimedia Plex en CentOS 8 con Nginx como proxy inverso. Ahora puedes explorar el servidor multimedia Plex para obtener más opciones y configurar tu propia biblioteca multimedia. A continuación, puedes instalar la aplicación Plex desde la Play Store de tu teléfono y acceder a tus archivos multimedia. También puedes permitir que tus amigos y familiares accedan a tus fotos, música y películas desde un navegador web o una aplicación Plex. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...