Configurations
Pour la partie suivante, nous allons nous baser sur cette configuration :
- rutorrent : télécharge dans /home/seed/torrents. Une fois terminé, déplace avec les autotools dans /home/seed/complete/<label> (par exemple, films ou series)
- plexdrive : Le répertoire plexdrive est monté dans /home/seed/mnt/plexdrive. Il comprend un répertoire "crypt" qui est chiffré, qui comprend lui même deux sous répertoires : films et series
- rclone : le répertoire /home/seed/mnt/plexdrive/crypt est déchiffré par rclone, et monté dans /home/seed/mnt/uncrypt
- unionfs : le répertoire /home/seed/mnt/unionfs est une fusion de /home/seed/mnt/plexdrive/crypt (répertoire de déchiffrement de rclone) en lecture seule, et de /home/seed/data (lecture écriture)
Tous ces répertoires appartiennent à l'utilisateur seed.
PLEXDRIVE[modifier]
Fichier de service pour monter automatiquement plexdrive : /etc/systemd/system/plexdrive.service
[Unit] Description=Plexdrive AssertPathIsDirectory=/home/seed/mnt/plexdrive After=network-online.target [Service] Type=simple User=seed Group=seed ExecStart=/usr/bin/plexdrive -c /home/seed/.plexdrive mount -v 2 /home/seed/mnt/plexdrive ExecStop=/bin/fusermount -uz /home/seed/mnt/plexdrive Restart=on-abort [Install] WantedBy=default.target
RCLONE[modifier]
Fichier de service pour déchiffrer automatiquement les données qui sont dans /home/seed/mnt/plexdrive/crypt Il faut avoir créé la conf plexdrive-uncrypt dans rclone
/etc/systemd/system/plexdrive-uncrypt.service
[Unit] Description=Google Drive (rclone) AssertPathIsDirectory=/home/seed/mnt/uncrypt After=multi-user.target plexdrive.service [Service] Type=simple User=seed Group=seed ExecStart=/usr/bin/rclone mount \ --config=/home/seed/.config/rclone/rclone.conf \ --allow-other \ --no-modtime \ --drive-use-trash \ --stats=0 \ --checkers=16 \ plexdrive-uncrypt:/ /home/seed/mnt/uncrypt ExecStop=/bin/fusermount -uz /home/seed/mnt/uncrypt Restart=always RestartSec=10 [Install] WantedBy=default.target
UNIONFS[modifier]
/etc/systemd/system/unionfs.service
[Unit] Description=UnionFS Daemon Requires=plexdrive.service After=multi-user.target plexdrive-uncrypt.service [Service] Type=simple User=seed Group=seed ExecStartPre=/bin/sleep 10 ExecStart=/usr/bin/unionfs -o cow,allow_other,nonempty /home/seed/data=RW:/home/seed/mnt/uncrypt=RO /home/seed/mnt/unionfs ExecStop=/bin/fusermount -uz /home/seed/mnt/unionfs TimeoutStopSec=20 KillMode=process RemainAfterExit=yes Restart=always [Install] WantedBy=multi-user.target
CLOUDPLOW[modifier]
On veut copier ce qui se trouve dans /home/seed/data vers le remote "stockage-crypt:" (c'est une conf qui doit être créée dans rclone), entre 4h et 8h du matin Pour cela, on créé dans cloudplow un remote qui s'appelle google, qui utilisera la commande move de rclone. Puis on créé une section "uploader" qui reprend le nom du remote (google), avec un scheduler.
/opt/cloudplow/config.json
{ "core": { "dry_run": false, "rclone_binary_path": "/usr/bin/rclone", "rclone_config_path": "/home/seed/.config/rclone/rclone.conf" }, "hidden": { "/home/seed/mnt/unionfs/.unionfs-fuse": { "hidden_remotes": [ "google" ] } }, "nzbget": { "enabled": false, "url": "https://user:[email protected]" }, "plex": { "enabled": false, "max_streams_before_throttle": 1, "notifications": false, "poll_interval": 60, "rclone": { "throttle_speeds": { "1": "50M", "2": "40M", "3": "30M", "4": "20M", "5": "10M" }, "url": "http://localhost:7949" }, "token": "", "url": "https://plex.domain.com" }, "remotes": { "google": { "hidden_remote": "stockage-crypt:", "rclone_command": "move", "rclone_excludes": [ "**partial~", "**_HIDDEN~", ".unionfs/**", ".unionfs-fuse/**" ], "rclone_extras": { "--checkers": 16, "--drive-chunk-size": "64M", "--skip-links": null, "--stats": "60s", "--transfers": 8, "--user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36", "--verbose": 1 }, "rclone_sleeps": { "Failed to copy: googleapi: Error 403: User rate limit exceeded": { "count": 5, "sleep": 25, "timeout": 3600 } }, "remove_empty_dir_depth": 2, "sync_remote": "stockage-crypt:", "upload_folder": "/home/seed/data", "upload_remote": "stockage-crypt:" } }, "syncer": {}, "uploader": { "google": { "check_interval": 30, "exclude_open_files": false, "max_size_gb": 2, "opened_excludes": [ "/downloads/" ], "schedule": { "allowed_from": "04:00", "allowed_until": "08:00", "enabled": true }, "size_excludes": [ "downloads/*" ] } } }