Etape 14: Installation de Rclone
Source:
RClone est un utilitaire pour copier/synchroniser des répertoires avec des disques Cloud.
On va utiliser la version serveur RC pour être accessible via commandes HTTP/API
Créez ce stack Rclone :
services:
rclone:
image: rclone/rclone:latest
container_name: rclone
volumes:
- /opt/docker/rclone:/config/rclone
- /opt/docker/rclone/logs:/logs
- /opt/docker/rclone/cache:/root/.cache/rclone # This is for the WebUI, not VFS
- /home/user:/hostfs:rshared
- /var/cache/rclone:/vfsCache
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
- /etc/fuse.conf:/etc/fuse.conf:ro
- /etc/letsencrypt:/etc/letsencrypt:ro
- /opt/docker/ha/config:/opt/docker/ha/config # rend nos répertoire HA accessibles depuis Rclone RC
devices:
- /dev/fuse:/dev/fuse:rwm
cap_add:
- SYS_ADMIN
security_opt:
- apparmor:unconfined
command:
- rcd
- --rc-web-gui
- --rc-web-gui-no-open-browser
- --rc-addr=:5572
- --rc-user=rclone_user
- --rc-pass=rclone_pw
- --rc-cert=/etc/letsencrypt/live/toto.duckdns.org/fullchain.pem
- --rc-key=/etc/letsencrypt/live/toto.duckdns.org/privkey.pem
- --log-level=NOTICE
- --cache-dir=/vfsCache
network_mode: host
# networks:
# reseau_mqtt:
# ipv4_address: 172.20.0.4
ports:
- 5572:5572
environment:
- TZ=Europe/Paris
restart: unless-stopped
rclone_initializer:
#image: ghcr.io/coanghel/rclone-docker-automount/rclone-init:latest
image: ghcr.io/Gandalf77bo/rclone-docker-automount/rclone-init:latest
container_name: rclone_initializer
environment:
- RCLONE_USERNAME=rclone_user
- RCLONE_PASSWORD=rclone_pw
- RCLONE_PORT=5572
- RCLONE_CERT=/etc/letsencrypt/live/toto.duckdns.org/fullchain.pem
- RCLONE_KEY=/etc/letsencrypt/live/toto.duckdns.org/privkey.pem
volumes:
- /opt/docker/rclone/initializer:/app/
- /etc/letsencrypt:/etc/letsencrypt:ro
restart: unless-stopped
depends_on:
- rclone
networks:
reseau_mqtt:
ipv4_address: 172.20.0.14
networks:
reseau_mqtt:
external: true
Ce stack va déployer Rclone ainsi qu'un script qui permet de monter automatiquement le répertoire distant au démarrage.
Je du faire un branch du projet GitHub Coanghel afin d'ajouter le support du HTTPS.
Choisissez un couple identifiant /mdp pour Rclone qu'il faut renseigner à la fois à Rclone et au script.
Corriger également l'endroit de montage du répertoire Gdrive : /home/user:/hostfs:rshared, moi je le monte dans mon home.
On va lancer Rclone en 2 fois. 1er fois pour configurer les access puis une 2nd fois avec les réglages normaux.
Création des identifiants Google pour utilisation de Gdrive avec Rclone
Allez dans https://console.cloud.google.com
Allez dans API et Services et activer Google Drive API
Puis dans
Identifiants faire Créer des identifiants Oauth :Type d'application : Application de Bureau
Nom: Rclone ou autre
Normalement vos codes s'affichent. Conservez les précieusement! Vous pouvez les téléchager au format JSON depuis l'écran Oauth/Client pendant qq mois seulement.
Edit:
L'ajout de son compte comme utilisateur de test permet de tester l'API pendant pour pouvoir semaine, apres quoi le token est à regénérer. Ce n'est pas pérenne donc je déconseil cette méthode.
l'utiliser. Pour cela, allez dans Audience et ajoutez votre adresse email tout en bas :
Méthode pérenne :
Dans Acces aux Données faites Ajouter ou Supprimer des niveaux d'accés et cochez ces 3 services :
- https://www.googleapis.com/auth/docs
- https://www.googleapis.com/auth/drive
- https://www.googleapis.com/auth/drive.metadata.readonly
Puis dans Audience faites Publier l'application
Etant donné que l'on a pas renseigner tout les champs pour publier l'application, elle va rester indéfiniement au status de Vérification.
Fermez l'onglet.
Voila, normalement vos identifiants Google Auth sont OK.
Installation et configuration de Rclone :
Donc pour configurer Rclone, il faut le lancer une 1ere fois avec dans le stack le network_mode: host. Désactiver les 3 autres lignes networks.
Lancer le déploiement pout ouvrir un terminal et taper :
docker exec -it rclone rclone config
Cela va créer un fichier de configuration /opt/docker/rclone/rclone.conf
Taper n pour créer un nouveau remote et donnez lui un petit nom.
Storage: pour moi Gdrive = 22
Client_id: l'identifiant Oauth généré par google du style 1820098191102-135xxxx.apps.googleusercontent.com
Client_secret: le mot de passa associé genre GOCSPX-rxxxxxdpPM
Scope: 1
Service_account_file: rien
Edit Advance conf: n
Use Web browser: y
Faites un copier/coller du lien afficher dans une fenetre de votre navigateur.
Cela va ouvrir une fenetre de sélection de compte Google. Autorisez l'accés.
Si votre compte Google Auth est à l'état publier/vérification, dans la fenetre d'autorisation des accés il faut forcer la main en cliquant en bas l'option
"Go to Rclone (unsafe)"Si tout se passe bien, le terminal affichera "toker captured" ou qq chose comme ça.
Si qq tourne mal, faite Ctrl+c pour arreter et recommencez.
Lancement de Rclone en mode normal
Modifier le stack pour ajouter un # devant la ligne network_mode: host
et enlever les commentaire devant
networks:
reseau_mqtt:
ipv4_address: 172.20.0.4
Re-déployer le stack.
Utiliser rclone-docker-automount
Source:
Pour l'utiliser il faut créer le répertoire ou le point de montage doit se faire.
Ici ce sera /home/user/Gdrive/mount
Puis créer un répertoire initializer dans Rclone.
cd /opt/docker/rclone
sudo mkdir initializer
cd initializer
sudo wget https://raw.githubusercontent.com/gandalf77bo/rclone-docker-automount/master/mounts.json # pour telecharger le fichier mounts.json
sudo wget https://raw.githubusercontent.com/gandalf77bo/rclone-docker-automount/master/rclone_initializer.py # pour télécharger le script qui pour une raison inconnue ne se télécharge pas tout seul!
Editez le fichier mounts.json pour peaufiner les réglages (sudo nano mounts.json)
Le mien est ainsi :
[
{
"fs": "Gdrive:",
"mountPoint": "/hostfs/Gdrive/mount",
"mountOpt": {
"AllowOther": true,
"AllowNonEmpty": true
},
"vfsOpt": {
"CacheMode": "full",
"GID": 1000,
"UID": 1000
}
}
]
nb: /hostfs est un volume docker defini dans le stack. Pour moi il pointe vers /home/user. Donc le point de montage final est /home/user/Gdrive/mount
J'ai déjà rencontré l'erreur failed to mount FUSE fs: fusermount: exit status 1
Sur Internet ils recommandent de vérifier si fude3 est bien installé : sudo apt install fuse3
Dans mon cas, le répertoire mount était verrouillé mais sans lien vers Gdrive, j'ai du le supprimer en faisant : sudo umount /home/user/Gdrive/mount






