[NOOB] rClone & Workspace (ex GSuite) : créer et monter un Shared Drive (aka Team Drive) chiffré

gdrive 15 oct. 2020

Ce tutoriel est compatible avec un serveur dédié/virtuel “vierge” ou déjà installé “à la main” ou en Docker (ou via un script). Même avec un rClone déjà installé & configuré puisque nous allons simplement créer de nouveaux remotes.

Google vient tout récemment de faire évoluer son offre GSuite vers Workspace. Ceux ayant un abonnement GSuite ont pu/peuvent le faire évoluer pour continuer à disposer d’un espace de stockage illimité GDrive. Pour les nouveaux clients cette option, disponible via un compte Entreprise, n’est plus directement accessible. Reste donc la solution de passer par un compte Business Standard. En effet, si cet abonnement n’inclut qu’un GDrive de 2To/utilisateur, il permet en revanche la création d’un Drive partagé. C’est ce que nous allons créer et mettre en œuvre.

Je vais aborder dans ce tutoriel la souscription d’un compte Workspace, la création d’un Drive partagé et son montage chiffré via rClone. De cette manière vous pouvez vous en servir sur un serveur qui serait déjà installé ou comme base pour une nouvelle infra. C’est tout nouveau pour moi, je recommence à 0 en passant par ce nouveau service et un Drive partagé.

  1. Souscrire une offre (14 jours d’essais)
  2. Créer un Drive partagé
  3. Créer le client_id pour rClone
  4. Installer et configurer rClone (et le chiffrement du team drive)
  5. Monter le Drive chiffré avec rClone cache
  6. Suggestion de script pour déplacer/copier vos données sur votre Drive partagé (article suivant)

Souscrire à l’offre

Il faut un e-mail, un nom de domaine et une carte bancaire ou un compte bancaire ou PayPal. Souscrire à l’offre Business Standard à 10.40€ (comme les anciennes offres GSuite). Pour “fêter” le passage à Workspace l’offre est à 9.36€/mois/utilisateur (dans la limite de 20/groupe) pendant 1 an : La remise de 10 % s’applique chaque mois sur les 20 premiers comptes utilisateur, et ce jusqu’au 28 octobre 2021.

Je souscris pour moi seul et je suis sur VPN comme ça se voit…

Je suis du genre à utiliser un faux nom. En revanche il faut un e-mail valide évidemment.

Et je possède déjà un nom de domaine que je vais utiliser.

J’utilise une autre adresse e-mail comme demandée.

Non. Merci.

Il faut définir son login:pwd. Pour le login il faut que ce soit @votredomaineutilisé.com. Bien entendu je n’ai pas créé d’adresse [email protected], c’est juste un login pour Workspace.

On peut maintenant se connecter à son espace de gestion.

Évidemment…

On peut vérifier qu’on ne s’est trompé d’offre.

Je vais utiliser un de mes comptes PayPal.

Et voilou :)

Reste à terminer la configuration du compte Workspace.

Je continue avec la validation TXT. Ouvrez un onglet de votre navigateur et allez chez votre registrar, là où vous gérez votre nom de domaine (Cloudflare dans le cas upandclear.org).

Normalement y’a qu’à suivre ce que Google indique.

Voici ce que ça donne chez Cloudflare.

Ensuite de retour chez Google vous validez et laissez couler…

Et au bout de quelques minutes c’est validé. Je ne compte pas m’intéresser au reste vu que je veux utiliser ce compte seul. Pour rappel, chaque utilisateur est payant.

En cliquant en haut à gauche on a le menu de votre Workspace.

Je recommande de valider les conditions d’utilisation. Pour ça on va dans le menu puis @ compte et Paramètres du compte. Là on voit que nous avons 3 conditions d’utilisation en attente. Sur le screen il n’y en a que 2, j’ai déjà testé ^^

Logiquement on répond Non à la dernière, qui reste donc “refusée” et en attente.

Toujours dans ce menu, on peut jeter un œil à l’abonnement en cours via Facturation / Abonnements.

Pour ceux qui avaient déjà une offre GSuite, comme moi, c’est là qu’il fallait/faut aller pour upgrader son offre vers une nouvelle. Bien que ce ne soit pas le en rapport avec cet article, j’ai fait le choix de l’upgrade Entreprise Standard qui offre un GDrive illimité de base et pour un seul utilisateur (à ce qu’il semble pour l’instant). Bref.

Créer un Drive partagé

On s’intéresse maintenant au menu en haut à droite.

Ici on se moque du Drive, qui est officiellement limité à 2To/utilisateur. Et j’ai pas encore parcouru les forums (rClone, Reddit) pour savoir si comme sur GSuite on peut outre-passer cette limite. On va plutôt créer un Drive partagé.

J’ai créé un Drive partagé que je nomme SDrive0.

Il n’est accessible que par moi-même mais on peut y ajouter des membres via des e-mails. Soit des utilisateurs, payants, de mon Workspace soit des amis. On peut aussi ajouter des Service Accounts (SA) pour passer outre la limite de 750G B d’upload/utilisateur/24h sur Google. Mais je n’aborderai pas ça dans cet article.

Créer le client_id pour rClone

On va en avoir besoin juste après :)

Le client_id est ce que Google verra dans ses logs de connexion concernant notre outil rClone. Il est donc fortement recommandé d’en créer un personnel et unique afin d’éviter le ban généralisé pour abus de requêtes si on utilisait tous le même code.

Pour ça il suffit de suivre les indications.

Quand on arrive sur notre console Google il faut accepter les conditions puis se créer un nouveau projet. Pour faire simple je le nomme SDrive0.

Une fois le projet créé Google nous dit qu’il n’y a aucune API d’activée. Ça tombe, il faut qu’on aille activer celle de GDrive.

Google nous dit que nous n’avons pas d’identifiant. Pour en créer : Identifiants puis créer puis ID client

Sélectionner Application de bureau et lui donner un nom

On a tout ce qu’il faut pour aller jouer avec rClone :)

Installer et configurer rClone

Pour ce tutoriel je monte un CT sur mon Proxmox sous Ubuntu 20.04. Ça devrait être compatible Synology, soit via Docker si votre modèle le supporte, soit en dur. Lolvince avait testé avec succès la dernière fois. Je n’ai pas le temps de tester sur un de mes NAS pour l’instant.

Pour voir une version de rClone avec ses dernières options de gestion du cache je prends toujours la version BETA. Et donc je me contente de suivre les instructions :

curl https://rclone.org/install.sh | sudo bash -s beta

Ce qui donne sur mon serveur

root@sdrive:~# curl https://rclone.org/install.sh | bash -s beta
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4436  100  4436    0     0  14127      0 --:--:-- --:--:-- --:--:-- 14127
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    35  100    35    0     0    126      0 --:--:-- --:--:-- --:--:--   126
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12.3M  100 12.3M    0     0  4481k      0  0:00:02  0:00:02 --:--:-- 4480k
Archive:  rclone-beta-latest-linux-amd64.zip
   creating: rclone-v1.54.0-beta.4825.5b09599a2-linux-amd64/
...
...
rclone v1.54.0-beta.4825.5b09599a2 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.

On passe donc maintenant à la configuration de rClone avec notre Drive partagé, chiffré.

Comme c’est noté à la fin de l’installation de rClone, il faut faire

rclone config

Et on veut créer un remote : choix n. Et je vais très originalement l’appeler SDrive0

root@sdrive:~# rclone config
2020/10/14 21:56:31 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> SDrive0

Ensuite il faut indiquer le type de stockage. On se dirige vers le choix 13 -au moment de cet article- soit Google Drive que nous pourrons “convertir” en Team Drive ensuite.

Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
...
...
Storage> 13
** See help for drive backend at: https://rclone.org/drive/ **

Le client_id est celui qu’on vient de créer.

Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> monclient_idpersonnelrienquàmoi

Et le secret également.

OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> monsecretpersonnelrienquàmoi

On passe maintenant aux droits d’accès du drive. je fais simple, full ! Le 1er choix.

Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1

Voulons-nous créer un dossier racine ? Concrètement, si le Drive doit servir pour rClone mais aussi un backup de documents personnels ça peut être intéressant de faire travailler rClone dans un dossier du genre “rclone” (ahaha ah. ah.) ou “cloud”. Comme ça on pourra se faire à côté, à la racine du Drive, des dossiers type “PC perso”, “Documents Madame”, “Documents papa” etc. Moi, je veux juste stocker des fichiers depuis mes serveurs, donc pas de dossier root, je ne mets rien.

ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Enter a string value. Press Enter for the default ("").
root_folder_id>

Je ne remplie pas non plus cette partie concernant les Service Accounts (SA) dont j’ai parlé brièvement plus haut. Je n’en ai pas besoin, pour l’instant, et il semble qu’un tutoriel se prépare sur Mondedie à ce sujet (faut harceler Mattprod :P).

Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.

Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.

Enter a string value. Press Enter for the default ("").
service_account_file>

On arrête là : choix n.

Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n

On passe maintenant à la configuration du remote c’est-à-dire à la configuration de notre Drive partagé. Normalement on est tous sur serveur et donc en headless. Choix n.

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> n

On doit donner l’accès à rClone à notre compte Google Workspace. Pour ça il suffit de copier/coller dans un navigateur le lien donné par rClone, de suivre les instructions et de donner à rClone en retour le code que nous file Google.

Please go to the following link: https://accounts.google.com/o/oauth2/auth?...
Log in and authorize rclone for access
Enter verification code>

On confirme l’accès

Et on donne à rClone le code d’autorisation en retour

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> n
Please go to the following link: https://accounts.google.com/o/oauth2/auth?....
Log in and authorize rclone for access
Enter verification code> 4.....

Et nous arrivons enfin à la configuration de ce stockage en team drive : taper y

Configure this as a team drive?
y) Yes
n) No (default)
y/n> y

Comme on est noob, y’a qu’un seul team drive… Pas trop difficile de le choisir.

Fetching team drive list...
Choose a number from below, or type in your own value
 1 / SDrive0
   \ "xxxx"
Enter a Team Drive ID> 1

Et hop! la configuration du team drive dans rClone est terminée :)

[SDrive0]
type = drive
client_id = aaa
client_secret = bbb
scope = drive
token = {"access_token":ccc"}
team_drive = ddd
root_folder_id =

On valide et on quitte (pour l’instant).

y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
SDrive0              drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Le fichier de configuration se trouve dans /root/.config/rclone/rclone.conf. Et il est trèèèèèès trèèèèèèès très vivement conseiller de le copier, plusieurs fois, dans plein d’endroits (sûrs quand même). Parce que nous allons y ajouter une configuration de chiffrement et que si ce fichier est perdu alors nos données aussi ! Ce fichier contient les clés de chiffrement/déchiffrement.

Justement, chiffrons. J’en ai déjà parlé à l’époque de mon tutoriel sur rClone/Amazon Cloud mais pour moi il est impératif de chiffrer le contenu de ce que je mets sur Google pour le protéger. Et me protéger aussi accessoirement vu que comme Dropbox and co il scanne les contenus pour trouver les illégaux.

Donc on relance rClone avec rclone config. On voit notre remote tout récemment créé et on va pouvoir en ajouter un autre via la touche n. Histoire de faire simple je le nomme SDrive0Crypted. Comme ça si un jour je veux créer 15 Team Drives chiffrés, j’aurai SDrive0, SDrive0Crypted, SDrive1, SDrive1Crypted, SDrive2, SDrive2Crypted etc. Je sais. Je suis logique. Et surtout très créatif :)

root@sdrive:~# rclone config
Current remotes:

Name                 Type
====                 ====
SDrive0              drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> SDrive0Crypted

Cette fois-ci nous n’allons pas créer un lien avec Google ou Amazon ou autre mais chiffrer un remote, soit le choix 10.

Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value

10 / Encrypt/Decrypt a remote
   \ "crypt"

Storage> 10

Du coup on s’occupe de SDrive0: Avec les :

Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a string value. Press Enter for the default ("").
remote> SDrive0:

Je recommande là encore de chiffrer

How to encrypt the filenames.
Enter a string value. Press Enter for the default ("standard").
Choose a number from below, or type in your own value
 1 / Encrypt the filenames see the docs for the details.
   \ "standard"
 2 / Very simple filename obfuscation.
   \ "obfuscate"
 3 / Don't encrypt the file names.  Adds a ".bin" extension only.
   \ "off"
filename_encryption> 1

Tout comme les noms des dossiers

Option to either encrypt directory names or leave them intact.

NB If filename_encryption is "off" then this option will do nothing.
Enter a boolean value (true or false). Press Enter for the default ("true").
Choose a number from below, or type in your own value
 1 / Encrypt directory names.
   \ "true"
 2 / Don't encrypt directory names, leave them intact.
   \ "false"
directory_name_encryption> 1

On doit ensuite choisir un mot de passe pour le chiffrement (à retenir ou non, ça ne change pas grand chose si vous perdez le fichier de configuration de rClone…). Quand on tape on ne voit heureusement pas le mot de passe (y’a que sous Windows que ça arrive ce genre de truc :P Bam, gratos celle-ci !)

Password or pass phrase for encryption.
y) Yes type in my own password
g) Generate random password
y/g> y
Enter the password:
password:
Confirm the password:
password:

Et rebelote pour le salt (hachage).

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 (default)
y/g/n> y
Enter the password:
password:
Confirm the password:
password:

Puis on peut quitter et valider ce remote. Et quitter ensuite rClone (avec q).

Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
Remote config
--------------------
[SDrive0Crypted]
type = crypt
remote = SDrive0:
filename_encryption = standard
directory_name_encryption = true
password = *** ENCRYPTED ***
password2 = *** ENCRYPTED ***
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Monter le Drive chiffré avec rClone cache

Commencer par installer FUSE qui servira à monter un remote.

sudo apt-get install unionfs-fuse

Si, comme moi pour ce tutoriel, vous êtes sous Proxmox y’a une petite manip’ à faire pour Proxmox 5 ou Proxmox 6.

Bon. Monter son remote c’est bien mais faut savoir où le monter. Et là c’est du choix de chacun. Certains le montent dans /mnt/dossier moi j’ai toujours préféré monter ça dans mon /home. Je vais donc créer un dossier pour monter mon remote chiffré avec rClone.

mkdir /home/SDrive0Crypted

On va aussi se faire un fichier pour les logs de rClone

touch /home/rclonecache.log

Et on ajoute un service systemd de montage du remote chiffré via rClone. Avec son cache en options. Le cache de rClone peut remplacer Plexdrive. L’utilisation d’un cache est recommandée pour éviter de se faire bannir 24h par Google en faisant trop de requêtes (scans de Plex etc).

J’utilise le cache intégré à rClone depuis plusieurs mois, sans pépin, et certains disent que c’est mieux que Plexdrive pour Plex, notamment dans les avance rapides.

Voici le service à mettre dans /etc/systemd/system avec nano /etc/systemd/system/mount.service

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

[Service]
Type=notify
Environment=RCLONE_CONFIG=/root/.config/rclone/rclone.conf
KillMode=none
RestartSec=5
ExecStart=/usr/bin/rclone mount SDrive0Crypted: /home/SDrive0Crypted --allow-other --allow-non-empty --dir-cache-time 240h --log-level INFO --log-file /home/rclonecache.log --poll-interval 15s --umask 002 --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" --cache-dir=/cache --vfs-cache-mode full --vfs-cache-max-size 250G --vfs-cache-max-age 240h --bwlimit-file 16M --fast-list --drive-stop-on-upload-limit
ExecStop=/bin/fusermount -uz /home/SDrive0Crypted
Restart=on-failure

[Install]
WantedBy=multi-user.target

On lance ce service

systemctl start mount.service

Et on le rend exécutable à chaque lancement de la machine

systemctl enable mount.service

Puis on peut vérifier que notre remote est bien monté avec un df -H

root@sdrive:/home# df -H
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/pve-vm--100--disk--0   43G  872M   39G   3% /
none                              504k     0  504k   0% /dev
udev                              4.1G     0  4.1G   0% /dev/tty
tmpfs                             4.1G     0  4.1G   0% /dev/shm
tmpfs                             820M   91k  819M   1% /run
tmpfs                             5.3M     0  5.3M   0% /run/lock
tmpfs                             4.1G     0  4.1G   0% /sys/fs/cgroup
SDrive0Crypted:                   1.2P     0  1.2P   0% /home/SDrive0Crypted

Wow, 1.2Peta Octets de disponibles dans /home/SDrive0Crypted :)

Et si on testait ? On va créer un fichier bateau dans le montage et voir ce que ça donne.

touch /home/SDrive0Crypted/testfile.coucou

Je le vois bien dans mon dossier

root@sdrive:/home/SDrive0Crypted# ls
testfile.coucou

On regarde le log de rClone : cat /home/rclonecache.log

root@sdrive:/home# cat rclonecache.log
2020/10/15 00:45:38 INFO  : vfs cache: cleaned: objects 0 (was 0) in use 0, to upload 0, uploading 0, total size 0 (was 0)
2020/10/15 00:46:38 INFO  : vfs cache: cleaned: objects 0 (was 0) in use 0, to upload 0, uploading 0, total size 0 (was 0)
2020/10/15 00:46:49 INFO  : testfile.coucou: vfs cache: queuing for upload in 5s
2020/10/15 00:46:56 INFO  : testfile.coucou: Copied (new)
2020/10/15 00:46:56 INFO  : testfile.coucou: vfs cache: upload succeeded try #1
2020/10/15 00:47:38 INFO  : vfs cache: cleaned: objects 1 (was 1) in use 0, to upload 0, uploading 0, total size 0 (was 0)

On voit que notre fichier a été uploadé sur le team drive. Vérifions…

Le fichier est bien là, chiffré :)

Voilou !

Mots clés