Montar bibliotecas cifradas para Jellyfin con Google Drive y Rclone
2019-07-30
Índice
- Instalación de rclone
- Configurando rclone
- Cifrando carpetas
- Montando almacenamiento remoto
- Copiando ficheros
- Desmontando almacenamiento remoto
- Montar de forma automática
- Bibliotecas en Jellyfin
En el artículo de hoy vamos a ver como utilizar Google Drive como almacenamiento para nuestra biblioteca de Jellyfin, si dispones de una cuenta ilimitada, imagina las posibilidades, además cifraremos el contenido de la biblioteca para evitar las “miradas de curiosos”".
Para ello vamos utilizar rclone para montar Google Drive en nuestro dispositivo como si fuese un sistema de ficheros local, aunque este articulo está realizado sobre OpenmediVault , lo puedes aplicar a cualquier otro sistema operativo o distribución linux o almacenamiento (hubic, yandex, etc).
Instalación de rclone
Tan facil como teclar el siguiente codigo:
sudo apt install rclone
Configurando rclone
Debemos de configurar rclone para que pueda crear una unidad local en nuestro dispositvo de nuestro espacio en la nube.
rclone config
Iniciara un pequeño wizard que nos ayudara en la configuración
Seleccionamos n puesto que vamos a crear una nueva unidad
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Nos pide que le pongamos un nombre a la unidad que vamos a crear, yo he elegido gdrivemd, pon el que mas te guste.
name> gdrive_md
Ahora seleccionaremos el tipo de nube con la vamos a trabajar, seleccionamos 7 (Google Drive), en mi version de rclone es la opción 7, puede variar según la versión de rclone que estós ejecutando
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Encrypt/Decrypt a remote
\ "crypt"
6 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
7 / Google Drive
\ "drive"
8 / Hubic
\ "hubic"
9 / Local Disk
\ "local"
10 / Microsoft OneDrive
\ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
12 / Yandex Disk
\ "yandex"
Storage> 7
A las siguientes dos preguntas las dejamos en blanco, pulsa Intro
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Ahora es importante que en la configuración del sitio remoto, a la segunda pregunta contestemos n, ya que en OpenmediVault no disponemos de un navegador web para poder validar el token de nuestra cuenta de Gmail.
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n
Como he dicho antes, al no disponer de navegador web, necesitamos copiar la dirección url que se muestra en la terminal, y la pegamos en un equipo que si disponga de navegador web, autorizamos a que rclone pueda acceder a nuestra cuenta de gmail, copiamos y pegamos el token en la terminal
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?client_id=234235345.apps.googleusercontent.com&redirect_urisdfgsdgeroergnnvdvaeei.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=75ca33981d0d73ffaad73242c2911572
Log in and authorize rclone for access
Enter verification code> 4/hsddowerubnolaleob74jhg34fmh977
2019/07/14 22:19:48 Failed to save new token in config file: section 'gdrive_md' not found
--------------------
[gdrive_md]
client_id =
client_secret =
token = {"access_token":"yaewre.t8-86685784w4w-aeter034ewYu-awfa1EJOXhXDnNoQCKkV_i9Rts4qsgzyS4JKryBxWb2vkQofN42eqTdiwusCEKP","token_type":"Bearer","refresh_token":"1/zmRrq6F3_XkSyls0k4np3D3ONTdunw0xW0XImMSh5iE","expiry":"2019-07-14T23:19:48.689022+02:00"}
--------------------
Por ultimo, si todo esta correcto, pulsamos en y
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
gdrive_md drive
Y terminamos, q
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q
Con esta primera parte ya tendremos creado nuestra unidad para poder ser montada como un sistema de ficheros local en nuestro sistema.
Cifrando carpetas
Como dije al principio, podemos cifrar carpetas y su contenido para evitar “miradas indiscretas”".
Para ello debemos de volver a lanzar el asistente de configuración de rclone
carlos@rockpro64:~$ rclone config
Current remotes:
Name Type
==== ====
gdrive_md drive
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> n
Vemos que ya tenemos configurada una nube (remote) de Google Drive (drive), debemos de seleccionar n y darle un nombre al nuevo sitio, yo he elegido como nombre jellyfin, pon el que mas te guste.
name> jellyfin
En el tipo de almacenamiento seleccionamos 5 (crypt), en mi versión de rclone es la opción 5, puede varios según la versión de rclone que estós ejecutando.
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Encrypt/Decrypt a remote
\ "crypt"
6 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
7 / Google Drive
\ "drive"
8 / Hubic
\ "hubic"
9 / Local Disk
\ "local"
10 / Microsoft OneDrive
\ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
12 / Yandex Disk
\ "yandex"
Storage> 5
Ahora debemos de seleccionar la ubicación dentro del Google Drive (gdrivemd) de la carpeta a cifrar, yo he elegido Media, si no existe la crea.
Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir", "myremote:bucket" or maybe "myremote:" (not recommended).
remote> gdrive_md:Media
Seleccionamos como queremos que se realice el cifrado, 1 par que no cifre el nombre de los ficheros y 2 para que cifre los nombres, seleccionamos 2
How to encrypt the filenames.
Choose a number from below, or type in your own value
1 / Don't encrypt the file names. Adds a ".bin" extension only.
\ "off"
2 / Encrypt the filenames see the docs for the details.
\ "standard"
filename_encryption> 2
Para el cifrado se necesitan un par de claves, puedes dárselas tu o elegir que sea rclone el que lass genere de forma aleatorio, yo he seleccionado que las genere de forma aleatoria, g y la fortaleza de la clave 128, por último pulso y si todo esta correcto.
Password or pass phrase for encryption.
y) Yes type in my own password
g) Generate random password
y/g> g
Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 128
Your password is: Z_19asdfsdffyiuuirew
Use this password?
y) Yes
n) No
y/n> y
Password or pass phrase for salt. Optional but recommended.
Should be different to the previous password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> g
Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 128
Your password is: 640jkq-kbGWzkzjnVdQPFA
Use this password?
y) Yes
n) No
y/n> y
Remote config
--------------------
[gdrive_md_cifrado]
remote = gdrive_md:Media
filename_encryption = standard
password = *** ENCRYPTED ***
password2 = *** ENCRYPTED ***
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
gdrive_md drive
jellyfin crypt
Como se ve, ahora tenemos dos puntos de montaje para nuestra cuenta de Gmail Drive, gdrivemd y jellfin, como veremos mas adelante, si monto gdrivemd y exploro su contenido veremos que el contenido de la carpeta Media está cifrado, en cambio si montamos jellyfin, podemos ver el contenido sin cifrar.
Para finalizar pulsamos la tecla q
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q
Montando almacenamiento remoto
Una vez creados las unidades toca montarlas, el procedimiento es el mismo tanto para la carpeta sin cifrar como la cifrada, dependerá de en cual de ellas quieras trabajar. Puesto que lo que quiero es tener mi biblioteca de medios de Jellyfin cifrada, voy a montar la unidad que he llamado Jellyfin, en la carpeta */sharefolders/Rclone/Media/ desde la terminal escribimos:
sudo rclone mount --config "/home/carlos/.rclone.conf" --allow-non-empty --dir-cache-time 15m --allow-other jellyfin: /sharedfolders/Rclone/ &
Copiando ficheros
Podemos copiar ficheros con el comando rclone copy
, en el ejemplo copio mi biblioteca de series que tengo en la carpeta sharedfolders/Media/Series a la carpeta remota cifrada jellyfin:/Series
rclone copy --verbose --transfers 50 --checkers 20 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s /sharedfolders/Media/Series/ jellyfin:/Series
Desmontando almacenamiento remoto
Para desmonqtar las unidades montadas:
fusermount -u -z /sharedfolders/Rclone
Montar de forma automática
Podemos añadir laq orden de montaje como una tarea programada para que se monte en cada vez que se inicie el servidor
Si oo usas OpenmediVault lo puedes añadir como una tarea del contrab
@reboot sudo rclone mount -v --config "/home/carlos/rclone.conf" --allow-non-empty --dir-cache-time 15m --allow-other jellyfin: /sharedfolders/Rclone/Media/ &
Bibliotecas en Jellyfin
Una vez tengamos la unidad montada, solo queda configurar las bibliotecas dentro de Jellyfin con la nueva ubicación.
Espero que te haya gustado, pasa un buen día. 🐧