Instalación de Plex Media Server en Linux

Plex Media Server es una de las plataformas de streaming personal más populares, que permite organizar y transmitir tu biblioteca de películas, series y música desde tu servidor VPS o baremetal a cualquier dispositivo. Con soporte para transcodificación adaptativa, acceso remoto, Plex Pass con funciones avanzadas y aplicaciones nativas en todas las plataformas, Plex es una solución robusta para gestión de medios doméstica y semi-profesional.

Requisitos Previos

  • Ubuntu 20.04+, Debian 11+, CentOS 8+ o Rocky Linux 8+
  • Mínimo 2 GB de RAM (4 GB recomendados para múltiples streams)
  • CPU potente o GPU para transcodificación (Intel, NVIDIA o AMD)
  • Puerto 32400 disponible y accesible
  • Cuenta en plex.tv (gratuita disponible)

Instalación de Plex Media Server

Ubuntu/Debian

# Descargar el paquete más reciente de Plex
# Revisar https://www.plex.tv/media-server-downloads/ para la última versión
PLEX_VERSION="1.40.1.8227-c0dd5a73e"
wget "https://downloads.plex.tv/plex-media-server-new/${PLEX_VERSION}/debian/plexmediaserver_${PLEX_VERSION}_amd64.deb"

# Instalar el paquete
sudo dpkg -i plexmediaserver_${PLEX_VERSION}_amd64.deb

# Habilitar e iniciar el servicio
sudo systemctl enable --now plexmediaserver

# Verificar el estado
sudo systemctl status plexmediaserver

Alternativa: usar el repositorio oficial:

# Agregar la clave GPG y el repositorio
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -

# Instalar
sudo apt update
sudo apt install -y plexmediaserver

CentOS/Rocky Linux

# Descargar el paquete RPM
PLEX_VERSION="1.40.1.8227-c0dd5a73e"
wget "https://downloads.plex.tv/plex-media-server-new/${PLEX_VERSION}/redhat/plexmediaserver-${PLEX_VERSION}.x86_64.rpm"

# Instalar
sudo rpm -ivh plexmediaserver-${PLEX_VERSION}.x86_64.rpm

# Iniciar el servicio
sudo systemctl enable --now plexmediaserver

Instalación con Docker

# Crear directorios para datos y medios
mkdir -p ~/plex/{config,transcode,media/{peliculas,series,musica}}

# Ejecutar Plex con Docker (requiere PLEX_CLAIM para vincular la cuenta)
# Obtener el token en: https://www.plex.tv/claim/
docker run -d \
  --name plex \
  --restart unless-stopped \
  -e TZ=Europe/Madrid \
  -e PLEX_CLAIM="claim-XXXXXXXXX" \
  -e PUID=$(id -u) \
  -e PGID=$(id -g) \
  -p 32400:32400 \
  -v ~/plex/config:/config \
  -v ~/plex/transcode:/transcode \
  -v ~/plex/media:/data \
  plexinc/pms-docker:latest

Con Docker Compose:

cat > ~/plex/docker-compose.yml << 'EOF'
version: '3'

services:
  plex:
    image: plexinc/pms-docker:latest
    container_name: plex
    restart: unless-stopped
    environment:
      - TZ=Europe/Madrid
      - PLEX_CLAIM=claim-XXXXXXXXX
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config:/config
      - ./transcode:/transcode
      - ./media:/data
    ports:
      - 32400:32400
      - 1900:1900/udp
      - 5353:5353/udp
      - 8324:8324
      - 32469:32469
      - 32410:32410/udp
      - 32412:32412/udp
      - 32413:32413/udp
      - 32414:32414/udp
EOF

docker compose up -d

Configuración Inicial

Acceder a Plex para completar la configuración inicial. Para servidores remotos, usar un túnel SSH:

# Crear túnel SSH para acceder a la configuración inicial
ssh -L 8888:localhost:32400 usuario@IP-DEL-SERVIDOR

# Abrir en el navegador local:
# http://localhost:8888/web

Pasos de configuración:

  1. Iniciar sesión con tu cuenta Plex
  2. Nombrar el servidor
  3. Agregar bibliotecas de medios
  4. Completar el asistente

Organización de la Biblioteca

Plex utiliza convenciones de nombres para detectar metadatos automáticamente:

# Estructura para películas (formato: Título (Año))
~/plex/media/peliculas/
├── El Padrino (1972)/
│   └── El Padrino (1972).mkv
├── Blade Runner 2049 (2017)/
│   └── Blade Runner 2049 (2017).mkv

# Estructura para series (formato: Serie/Season XX/SerieS01E01)
~/plex/media/series/
├── Game of Thrones/
│   ├── Season 01/
│   │   ├── Game of Thrones - S01E01 - Winter Is Coming.mkv
│   │   └── Game of Thrones - S01E02.mkv

# Estructura para música (formato: Artista/Album/Canción)
~/plex/media/musica/
├── Pink Floyd/
│   ├── The Wall (1979)/
│   │   ├── 01 - In the Flesh.mp3
│   │   └── 02 - The Thin Ice.mp3
# Ajustar permisos para que Plex pueda leer los medios
sudo chown -R plex:plex /var/lib/plexmediaserver/  # Instalación nativa

# Para archivos externos, agregar plex al grupo correspondiente
sudo usermod -aG www-data plex
# O ajustar permisos del directorio de medios
chmod -R 755 ~/plex/media/

Configuración de Transcodificación

Plex puede transcodificar vídeo en tiempo real para adaptarlo al cliente:

# Directorio de transcodificación temporal (recomendado: RAM o SSD)
# Crear directorio en RAM para transcodificación temporal
sudo mkdir -p /tmp/plex-transcode
echo "tmpfs /tmp/plex-transcode tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
sudo mount -a

En el panel web: Configuración > Servidor > Transcodificador:

  • Ruta de transcodificación temporal: /tmp/plex-transcode
  • Calidad de transcodificación: Alta (más CPU) o Automática
  • Aceleración por hardware: Activar si tienes GPU (requiere Plex Pass)

Aceleración Hardware (requiere Plex Pass)

# Intel QuickSync - verificar disponibilidad
ls /dev/dri/

# Para Docker con soporte Intel
docker run -d \
  --name plex \
  --device /dev/dri:/dev/dri \
  -e PLEX_CLAIM="claim-XXXXX" \
  plexinc/pms-docker:latest

# NVIDIA - verificar
nvidia-smi

# Para Docker con NVIDIA
docker run -d \
  --name plex \
  --runtime=nvidia \
  -e NVIDIA_VISIBLE_DEVICES=all \
  plexinc/pms-docker:latest

Acceso Remoto

Plex incluye acceso remoto integrado a través de los servidores de Plex:

# Abrir el puerto de Plex en el firewall
# UFW
sudo ufw allow 32400/tcp comment "Plex Media Server"
sudo ufw reload

# firewalld
sudo firewall-cmd --permanent --add-port=32400/tcp
sudo firewall-cmd --reload

Para acceso remoto sin depender de los servidores Plex (Plex Relay), configurar un dominio propio:

# Nginx como proxy inverso con SSL
sudo tee /etc/nginx/sites-available/plex << 'EOF'
server {
    listen 443 ssl http2;
    server_name plex.tu-dominio.com;

    ssl_certificate /etc/letsencrypt/live/plex.tu-dominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/plex.tu-dominio.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:32400;
        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 https;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 36000s;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/plex /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Plex Pass y Funciones Avanzadas

Plex Pass desbloquea funciones premium:

  • Transcodificación con aceleración hardware
  • Sincronización offline en móviles
  • Transmisión en casa sin límites de calidad
  • Metadatos de música enriquecidos
  • Acceso a cámaras de seguridad
# Verificar si Plex Pass está activo desde la API
curl -s "http://localhost:32400/identity" \
  -H "X-Plex-Token: TU_TOKEN_PLEX" | python3 -m json.tool | grep -i "pass\|plan"

# Obtener el token de Plex (necesario para la API)
# Panel web: Configuración > (tu usuario) > Token de acceso

Backup y Mantenimiento

# El directorio de datos de Plex contiene la base de datos y metadatos
# Instalación nativa: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/
# Docker: ~/plex/config/Library/Application Support/Plex Media Server/

# Hacer backup de la base de datos y metadatos
PLEX_DATA="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server"
sudo tar -czf plex-backup-$(date +%Y%m%d).tar.gz "$PLEX_DATA/Plug-in Support/Databases/"

# Actualizar Plex
# Instalación nativa (Debian/Ubuntu)
wget https://downloads.plex.tv/plex-media-server-new/VERSION/debian/plexmediaserver_VERSION_amd64.deb
sudo dpkg -i plexmediaserver_VERSION_amd64.deb

# Docker
docker pull plexinc/pms-docker:latest
docker compose down && docker compose up -d

# Limpiar archivos de transcodificación temporales
sudo rm -rf /tmp/plex-transcode/*

Solución de Problemas

Plex no se inicia:

# Ver logs del servicio
sudo journalctl -u plexmediaserver -f
# Docker:
docker logs plex --tail 50 -f

# Verificar permisos
ls -la "/var/lib/plexmediaserver/Library/"
sudo chown -R plex:plex /var/lib/plexmediaserver/

Sin acceso remoto:

# Verificar que el puerto 32400 está accesible externamente
curl -I http://TU-IP-PUBLICA:32400/identity

# Comprobar estado del acceso remoto en el panel
# Configuración > Servidor > Acceso remoto

La transcodificación falla o es muy lenta:

# Ver el uso de CPU durante la transcodificación
top -u plex

# Verificar logs de transcodificación
tail -f "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Logs/Plex Transcoder.log"

# Comprobar el directorio temporal (debe tener espacio suficiente)
df -h /tmp/plex-transcode

Conclusión

Plex Media Server en Linux ofrece una experiencia de streaming de calidad profesional con soporte para transcodificación adaptativa y acceso desde cualquier dispositivo. Combinado con aceleración hardware y una buena organización de la biblioteca, tu servidor VPS o baremetal puede convertirse en el centro multimedia de tu hogar o empresa.