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 :)

(2 385 vues)
0 0 vote
Note d'article
S’abonner
Notifier de
22 Commentaires
Inline Feedbacks
Voir tout

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

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

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

Ok merci :)

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

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… Lire la suite »

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

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

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,… Lire la suite »

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… Lire la suite »

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… Lire la suite »

Bonjour Aerya, quelques demandes de précisions – Quelle est la différence entre move.sh et move-en.sh (lancé dans move-en.service) ? – Dans move.sh : — pourquoi while true ? je ne vois pas quand la boucle s’arrête — à quoi sert find “/home/aerya/mnt/move/” -mindepth 2 -type d -empty -delete ? – Je vois ici https://forum.rclone.org/t/solved-rclone-move-script-leading-to-heavy-load/2347 et ici https://github.com/ajkis/scripts/blob/master/rclone/rclone-upload.sh une autre façon… Lire la suite »