rClone, GDrive et PlexDrive : exemples de configuration

Salut, voici ma configuration de rClone pour GoogleDrive avec PlexDrive. Y’a plusieurs solutions, y’a sans doute mieux mais c’est 100% fonctionnel. Cet article fait suite à la création de ce sujet sur MDD.

Je ne rentre pas dans les détails, je pars du principe que vous avez les bases Linux, que vous avez lu au sujet de/utilisez rClone/PlexDrive etc. Je me contente de partager mon setup (complet).

  • OS : Debian/Ubuntu
  • rClone permet d’envoyer/lire des fichiers sur GoogleDrive, tout en chiffrant. Google scanne ses stockages à la recherche de pédopornographie notamment. De mon point de vue “c’est bien” mais Google scanne, c’est ce qu’il faut retenir.
  • PlexDrive : permet de générer un cache de son espace de stockage pour ne pas se faire bannir 24 par Google avec trop de requêtes
  • Il faut installer rClone & le configurer comme je l’avais fait avec Amazon (là il faut prendre GDrive). Vous pouvez aussi utiliser votre rclone.conf
  • Il faut installer PlexDrive et le configurer. Ensuite il va indexer le contenu de votre GDrive (s’il est vide c’est pas grave, vous gagnez du temps)
  • Il faut installer fuse (sudo apt install fuse -y) et décommenter “user_allow_other” dans /etc/fuse.conf

Ça fonctionne avec un GDrive déjà rempli mais s’il n’est pas chiffré et que vous voulez le faire il faudra tout télécharger, configurer rClone avec un GDrive chiffré et renvoyer votre contenu.

Arborescence des dossiers (là encore c’est mon setup, vous pouvez faire autrement) :

  • Tout se passe dans /home/aerya (par simplicité pour mes sauvegardes)
  • Dossier /scripts : les scripts
  • Dossier /System : les services, qui sont à mettre dans /etc/systemd/system
  • Dossier /mnt : les montages

Dossier /mnt :

  • /completed : -accessoire- dossier des fichiers complétés des clients BitTorrent/Usenet
  • /encrypt : montage rClone déchiffré de GDrive (oui je sais, le nom veut dire exactement le contraire…)
  • /gdrive : montage rClone chiffré de GDrive
  • /incoming : -accessoire- dossier de DL en cours des client BT/NG
  • /move : dossier monté via fuse dans /unionfs/. rClone aura pour mission d’envoyer tout son contenu du GDrive
  • /plexdrive : dossier -cache- de Plexdrive
  • /unionfs : dossier des montages via fuse de GDrive/Plexdrive/move. Plex, Radarr, Medusa etc lisent tout là-dedans. Le montage global permet d’avoir accès aux fichiers qu’ils soient stockés localement ou sur GDrive (de manière chiffrée.
  • /watched : -accessoire- dossier des .torrent/.nzb qui sont chargés automatiquement dans les clients

rClone.conf

[gdrive]
type = drive
client_id = 
client_secret = 
token = {"access_token":"xxx"}

[gcrypt]
type = crypt
remote = gdrive:/Enc
filename_encryption = standard
password = aaa
password2 = bbb

[crypt]
type = crypt
remote = /home/aerya/mnt/plexdrive/
filename_encryption = standard
directory_name_encryption = true
password = ccc
password2 = ddd

Les scripts. A mettre dans /home/aerya/scripts & chmod a+x

rclone-encrypt.sh

#!/bin/bash
rclone --uid=1000 --gid=1000 --allow-non-empty --allow-other mount crypt: /home/aerya/mnt/encrypt --size-only

rclone-en.sh

#!/bin/bash
rclone --uid=1000 --gid=1000 --allow-non-empty --allow-other mount gcrypt: /home/aerya/mnt/.gcrypt --size-only

rclone.sh

#!/bin/bash
rclone --uid=1000 --gid=1000 --allow-non-empty --allow-other mount gdrive: /home/aerya/mnt/gdrive --size-only

move.sh

#!/bin/bash
LOG="/home/aerya/logs/rclone-en.log"
#EXC1="/SD/**"
EXC2="/Ratio/**"
EXC3="/PreSeries/**"
EXC4="/PreFilms/**"
EXC5="/Repost/**"
EXC6="/BACKUP/**"

sleep 30
while true
do
  echo "$(date "+%d.%m.%Y %T") RCLONE UPLOAD STARTED" | tee -a "$LOG"
rclone move -c -v --copy-links --exclude='**partial~' --exclude="**_HIDDEN~" --exclude=".unionfs/**" --exclude=".unionfs-fuse/**" --exclude="$EXC2" --exclude="$EXC3" --exclude="$EXC4" --exclude="$EXC5" --exclude="$EXC6" --min-age 5m --drive-chunk-size 2G --bwlimit 8M --delete-after --delete-empty-src-dirs --transfers=4 --stats 5s --log-file="$LOG" /home/aerya/mnt/move gcrypt:/
sleep 480
find "/home/aerya/mnt/move/" -mindepth 2 -type d -empty -delete
  echo "$(date "+%d.%m.%Y %T") RCLONE UPLOAD ENDED" | tee -a "$LOG"
done

Les services. A mettre dans /etc/systemd/system. Pour l’activer “sudo systemctl enable xxx” (sans le .service). Pour le lancer “sudo systemctl start xxx” (sans le .service)

move-en.service

[Unit]
Description=Move Service Daemon
After=multi-user.target

[Service]
Type=simple
User=0
Group=0
ExecStart=/bin/bash /home/aerya/scripts/move-en.sh
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

plexdrive.service

[Unit]
Description=PlexDrive5 Service
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/plexdrive mount --uid=1000 --gid=1000 -v 5 --fuse-options=allow_other,read_only,allow_non_empty_mount --config=/root/.plexdrive --cache-file=/root/.plexdrive/cache.bolt /home/aerya/mnt/plexdrive
ExecStop=/bin/fusermount -uz /home/aerya/mnt/plexdrive
RemainAfterExit=yes
Restart=always
RestartSec=5

[Install]
WantedBy=default.target

rclone-encrypt.service

[Unit]
Description=RClone Daemon
After=multi-user.target

[Service]
Type=simple
User=0
Group=0
ExecStart=/bin/bash /home/aerya/scripts/rclone-encrypt.sh
ExecStop=/bin/fusermount -uz /home/aerya/mnt/encrypt
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

rclone-en.service

[Unit]
Description=RClone Daemon
After=multi-user.target

[Service]
Type=simple
User=0
Group=0
ExecStart=/bin/bash /home/aerya/scripts/rclone-en.sh
ExecStop=/bin/fusermount -uz /home/aerya/mnt/.gcrypt
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

rclone.service

[Unit]
Description=RClone Daemon
After=multi-user.target

[Service]
Type=simple
User=0
Group=0
ExecStart=/bin/bash /home/aerya/scripts/rclone.sh
ExecStop=/bin/fusermount -uz /home/aerya/mnt/gdrive
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

unionfs-encrypt.service

[Unit]
Description=UnionFS Daemon
Requires=plexdrive.service
After=multi-user.target plexdrive.service

[Service]
Type=simple
User=0
Group=0
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/unionfs -o cow,allow_other,nonempty /home/aerya/mnt/move=RW:/home/aerya/mnt/encrypt=RO /home/aerya/mnt/unionfs
ExecStop=/bin/fusermount -uz /home/aerya/mnt/unionfs
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

unionfs.service

[Unit]
Description=UnionFS Daemon
Requires=plexdrive.service
After=multi-user.target plexdrive.service
RequiresMountsFor=/home/aerya/mnt/plexdrive

[Service]
Type=simple
User=0
Group=0
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/unionfs -o cow,allow_other,nonempty /home/aerya/mnt/move=RW:/home/aerya/mnt/plexdrive=RO /home/aerya/mnt/unionfs
ExecStop=/bin/fusermount -uz /home/aerya/mnt/unionfs
TimeoutStopSec=20
KillMode=process
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

Enjoy 🙂

21 Commentaires
Le plus ancien
Le plus récent Le plus populaire
NicoLeOca
NicoLeOca
Invité
17/05/2019 23h32

Salut!
Merci pour le partage, ça m’a incité à regarder tout ça de plus près.
A ce stade mes recherches m’amènent à tester Rclone Cache
https://bytesized-hosting.com/pages/rclone-gdrive
ça semble prometteur et plus simple à mettre en oeuvre

Kheiz
Kheiz
Invité
20/06/2019 13h35

Il semble manquer le contenu de move-en.sh, serait-il possible de l’ajouter ? Merci

Merrick
Merrick
Invité
Répondre à  Aerya
07/10/2019 15h28

Alors je suis peut être (certainement) un peu con, mais je ne vois toujours pas le move-en.sh ? J’ai raté un truc ?

Merrick
Merrick
Invité
Répondre à  Aerya
08/10/2019 11h32

Ok merci 🙂

Corentin
Corentin
Invité
17/10/2019 11h05

Bonjour,
ce billet est absolument génial et répond à toutes mes questions ! Sauf une … 😉
Je voulais qu’on puisse accéder au contenu de ma bibliothèque Plex en direct, par exemple directement via l’interface web de Google.
J’aimerais donc ne pas avoir à crypter le contenu de mon GDrive, est-ce possible ?
Merci !

Corentin

HpNoTiQ
HpNoTiQ
Invité
30/04/2020 22h47

Bonjour,
merci pour ce tuto même si j’ai galéré à l’installer (il faudrait préciser qu’il faut aussi installer le paquet unionfs).
Je ne comprend pas l’intéret des services unionfs-encrypt et unionfs. Les deux services ne peuvent pas être actifs en même temps et si on décide d’activer unionfs-encrypt (qui permet de voir des fichiers décryptés), on ne bénéficie plus de plexdrive?

HpNoTiQ
HpNoTiQ
Invité
Répondre à  Aerya
05/05/2020 23h36

Merci pour ta réponse. Dernière question, comment gères-tu les suppressions? Avec union-fs cleaner?

Bono2007
Bono2007
Invité
23/06/2020 14h55

Bonjour, bien complexe tout ça,
je ne comprends pas quels sont tous ces dossiers exclus de /move lors du rclone : partial / hidden / unionfs / Ratio / PreSerues Prefilms Repost et backup. Je croyais avoir lu sur un autre post que PreFilms et PreSeries étaient dans /home/aerya/mnt

Bono2007
Bono2007
Invité
Répondre à  Aerya
23/06/2020 18h16

J’essaie de raccorder un peu tout tes systèmes c’est pas évident.
J’ai viré mon installation Quickbox sur un « vieux » serveur qui tournait bien mais qui ramait un peu trop, chez Online.net (offre 10€)
J’ai repris à zéro et décidé de passer uniquement par docker mais je suis docker-néophyte.
Pour l’instant je me suis refait un conteneur ZNC+unrealIRC, un conteneur ruTorrent, et j’ai installé rClone + Google Drive encrypté.
Je ne suis pas sur que mon serveur encaisse beaucoup (4 Go de ram, un petit céléron mais 2.5 GB/s vérifiés).
Chez moi j’ai un pc avec Proxmox (+fibre 1GB/s et bientôt 8GB/s free si tout va bien lol) et quelques serveurs.

Je voudrais donc bien organiser le truc global, et par exemple tester Sonarr Sickrage sur un serveur chez moi, en liaison avec le serveur Online. Avec des montages et un google drive il me semble que cela doit être assez facile à faire.
Par contre je ne sais pas trop comment m’organiser, monter un dossier /move comme toi sur mon serveur Online et chez moi, avec un Plexdrive chez moi ? sur le distant ? les 2 ?

Bono2007
Bono2007
Invité
Répondre à  Aerya
23/06/2020 20h27

Oui, à voir aussi avec une utilisation raisonnée. J’ai déjà une dizaine de To de stockage sur un xpenology sous proxmox. Cela dit pas forcément assez de ressources supplémentaires pour un rClone s’il est aussi gourmand.
J’ai déconné, en fait j’ai craqué pour un serveur Ikoula Starter IKL 2.8 GHz, 8 Go DDR4, 2 To le pensant plus performant que mon ancien Dedibox Start-2-S-SATA (C2350 + 4 Go DDR3), mais j’ai une bp de 2.5 GBPS avec l’ancien, et j’ai peu d’intérêt finalement à garder l’IKL.

Ce qui m’intéressait là c’est d’externaliser mon serveur plex et les fichiers concernés par Plex, avec gdrive.

Donc j’imagine qu’avec l’un ou l’autre, c’est un peu léger ?

Bono2007
Bono2007
Invité
Répondre à  Aerya
23/06/2020 23h22

Mon parcours sur les sites (dont HETZNER), avec les histoires de peering est frustrant. Je vais reprendre fibre avec la fibre, en espérant avoir du 8GB/s et pas < 1 GB/s (ce que j’ai actuellement). J’ai prévu d’acheter du matériel 10GB, j’ai déjà un routeur Unifi Dream Machine.
Par contre mon PC.Proxmox date de 2018 avec un Celeron G4560 et 8 Go de ram, il fonctionne très pour mes 6 serveurs (Jeedom, Xpenology DSM918avec Plex, MotionEye, un Win7 et une debian pour du ftp).

Donc si je veux utiliser rClone et Plex un peu plus « efficacement », c’est soit un serveur à 40€ mini en ligne, soit un renouvellement de mon PC.Proxmox, peut être mieux comme idée, avec l’ajout d’un Ryzen 5 (TDP 65W) + carte réseau 10 GB, dans lequel je mettrai Proxmox, un NAS XPenology qui sera + performant, une Debian avec rClone, plexdrive, etc. Je ne sais plus trop. Matériel obsolète dans 4 ou 5 ans aussi.