Como montar un servidor de PLEX con Google Drive y Plex Drive
La idea de esta guía es montar un servidor de Plex con Google Drive en un VPS con linux (ubuntu en mi caso). Lo acompañaré de algunos extras como: cliente de torrent (transmission), plexpy para monitorizar nuestro servidor plex y algunos scripts y consideraciones para mejorar la experiencia a la hora del visionado.
Ventajas Plex VPS vs Plex Cloud
- No necesitas Plex Pass.
- El escaneo de directorios es muuucho más rápido porque es como si tuvieras plex instalado en local.
- Posiblidad de instalar plexpy para monitorizar tu plex server, así como otros servicios.
VPS y SSH
En mi caso voy a utilizar un VPS pequeño y barato de DigitalOcean (https://digitalocean.com 5€) ya que voy a hacer direct play de todo el contenido, pero tened en cuenta que si alguno de vuestros users va a necesitar transcoding, este server no va a poder con ello. Necesitaréis mínimo 4 cores, se recomienda una puntuación de 2000 en passmark para un sólo transcoding a 1080p.
Otras opciones económicas: https://www.kimsufi.com/es/servidores.xml
Cuando tengamos el vps arrancado, tenemos que entrar por ssh. Seguramente en el panel nos indiquen cómo hacerlo pero lo normal es abrir un sesión en PuTTy (Windows) o Terminal (Mac OS).
Accederemos con:
Bash:
ssh root@ipvps
plexdrive (alternativa rclone)
Para liberías grandes es recomendable montar la unidad con plexdrive en lugar de rclone. Plexdrive cachea el contenido de tu unidad para no realizar un exceso de peticiones a la API de google drive y de esta forma evitar los baneos.
NOTA: tras probar la v4 y la v5, me quedo con la 4 ya que me ha dado un mejor rendimiento en general. No obstante, en su github tenéis las instrucciones para instalar la v5. Utiliza otro sistema de base de datos y el comando de montaje cambia ligeramente.
Instalamos la base de datos de MongoDB.
Bash:
apt-get install mongodb
Descargamos la versión más actual de su web: https://github.com/dweidenfeld/plexdrive/releases (versión amd64).
Bash:
mkdir /home/plexdrive
cd /home/plexdrive
(plexdrive4) wget https://github.com/dweidenfeld/plexdrive/releases/download/4.0.0/plexdrive-linux-amd64
o
(plexdrive5) wget https://github.com/plexdrive/plexdrive/releases/download/5.1.0/plexdrive-linux-amd64
mv plexdrive-linux-amd64 plexdrive
chown root:root /home/plexdrive/plexdrive
chmod 755 /home/plexdrive/plexdrive
Ahora vamos a obtener nuestro client id y client secret de la API de google. Para ello hacemos lo siguiente:
- Nos logueamos en Google API Console.
- Creamos un nuevo proyecto.
- Vamos a Overview -> Google APIs, Google Apps APIs, Drive API y Enable.
- Vamos a Credentials en el panel izquierdo y Create Credentials, OAuth client ID.
- En tipo de aplicación seleccionamos Other y Create.
- Nos dara un client id y client secret. Lo copiamos y guardamos.
Bash:
apt-get install screen
screen -S plexdrive
mkdir /home/plexcloud
cd /home/plexdrive
./plexdrive -o allow_other -v 3 -m localhost /home/plexcloud
Plexdrive empezará a cachear todo el contenido de vuestro plex y puede que tarde bastante, deberíamos dejarle hacer hasta que ponga que ha acabado o haya parado la actividad.
Para salir de la screen, simplemente hacemos Control + A + D. Si queremos volver a ella podemos hacerlo con: screen -r plexdrive.
rclone
Utilizaremos rclone para montar Google Drive como unidad de disco en nuestro sistemaRecomiendo usar plexdrive para enlazar con Plex y rclone para hacer tareas de copia, subida y demás. Aun así, rclone tiene ahora una nueva opción para cachear el contenido de una unidad que podéis probar.
Descargarmos rclone y lo configuramos ejecutando este script realizado por el propio developer.
Bash:
curl https://rclone.org/install.sh | sudo bash
Accedemos a la configuración.
Bash:
rclone config
N: creamos una nueva unidad.
Le damos un nombre, por ejemplo: plexcloud.
11: Google Drive (revisa el número, puede que haya cambiado con la versión de rclone)
Dejamos client id y client secret en blanco.
En el siguiente paso le damos a No (N) y nos dará una url que debemos pegar en nuestro navegador (en tu ordenador local), loguearnos con nuestra cuenta de Google Drive que vayamos a utilizar y copiar el token que nos da y pegarlo.
Nos preguntará si esta todo bien y le decimos que sí (Y).
Nos hará falta instalar fuse también, antes de montar la unidad.
Bash:
apt-get install fuse
Creamos una carpeta y montamos la unidad en ella.
Bash:
mkdir /home/plexcloud
rclone mount --allow-other --allow-non-empty -v plexcloud: /home/plexcloud &
Si todo ha ido bien, listando el directorio deberéis ver vuestro contenido del drive.
Bash:
ls /home/plexcloud
Para que se monte la unidad sola cuando reiniciamos el sistema tenemos que editar el crontab.
Bash:
export EDITOR=nano
crontab -e
Pegamos estas líneas y guardamos:
Bash:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@reboot sleep 30 && rclone mount --allow-other --allow-non-empty -v plexcloud: /home/plexcloud &
Servidor plex
Vamos a instalar el plex media server y configurarlo.
En la sección de Downloads de su web (https://www.plex.tv/es/downloads/), copiamos el enlace de la versión de linux, en mi caso Ubuntu 64 bits. Podéis mirar si hay una versión más moderna disponible o incluso instalar la versión de Plex Pass que siempre es algo más avanzada.
Ponemos a descargar y esperamos a que acabe.
Bash:
wget https://downloads.plex.tv/plex-media-server/1.5.6.3790-4613ce077/plexmediaserver_1.5.6.3790-4613ce077_amd64.deb
Instalamos
Bash:
dpkg -i plexmediaserver_1.5.6.3790-4613ce077_amd64.deb
Para acceder por primera vez, como estamos sin entorno gráfico en linux y por tanto no hay navegador, debemos hacer un tunneling por ssh para enlazar nuestro localhost con el VPS.
Aquí haremos dos distinciones dependiendo de si estamos en Windows o Linux/Mac OS.
- Windows
- Linux/Mac OS
Bash:
ssh root@ipvps -L 8888:localhost:32400
Ahora accedemos en nuestro navegador a http://localhost:8888/web y plex debería darnos la bienvenida para proceder a su configuración. Añadimos las bibliotecas que queramos apuntando al contenido del drive, que detecta como una carpeta más.
En principio Plex debería empezar a escanear todo el contenido de los directorios que le hayamos indicado y una vez acabe ya está disponible par utilizarlo en cualquier dispositivo.
A partir de ahora, podéis acceder a vuestro servidor plex mediante http://ipvps:32400