Coffre cryptomator archlinux

Coffre cryptomator archlinux

Notes

Cryptomator est un logiciel libre à code source ouvert de chiffrement à la volée multi-plateformes développé par la société allemande Skymatic GmbH depuis 2016, et publié selon les termes de la licence publique générale GNU (Source wikipédia FR)

Cryptomator GUI

Installer l’application cryptomator

1
yay -S cryptomator-bin

Dans Cryptomator Desktop :

  • cliquez sur Ajouter un coffre ;
  • choisissez Créer un nouveau coffre ;
  • placez-le dans le dossier synchronisé, par exemple :
1
$HOME/.coffre-cryptomator/Prive.cryptomator
  • définissez une phrase de passe longue, unique et différente de votre mot de passe Nextcloud ;
  • choisissez le mécanisme de montage recommandé par Cryptomator pour votre système ;
  • déverrouillez le coffre : il apparaîtra comme un disque ou un dossier virtuel.

Création volume chiffré yann-crypto

Le disque virtuel contient la version déchiffrée. C’est uniquement là que vous devez créer, lire et modifier vos documents. Cryptomator chiffre les opérations à la volée avant que Nextcloud les synchronise.

Déverrouillage coffre

Ouvir le coffre avec l’application Cryptomator, en cliquant sur Déverrouiller

Mot de passe de 20 caractères

Emplacement coffre déverrouillé

Créer un emplacement pour le coffre déverrouillé /home/yann/.local/share/Cryptomator/mnt/yann-crypto/

Cryptomator CLI

Coffre, déverrouillage et verrouillage automatiques avec la session KDE

Contexte : Arch Linux, KDE Plasma, cryptomator-cli 0.6.2, mot de passe dans KWallet, service systemd utilisateur, Linger=yes.

1. Prérequis

1
sudo pacman -S fuse3 libsecret

Vérification de KWallet (Secret Service) :

1
2
busctl --user status org.freedesktop.secrets | grep Comm   # doit afficher ksecretd (ou kwalletd6)
grep -r kwallet /etc/pam.d/                                 # ouverture auto à la connexion (kwallet-pam)

Le mot de passe du portefeuille doit être identique à celui de la session.

2. Installer cryptomator-cli (sans Maven)

Télécharger l’archive Linux x64 de la dernière release (0.6.2) sur https://github.com/cryptomator/cli/releases, la décompresser, puis rendre le binaire accessible en ~/.local/bin/cryptomator-cli. Contrôles :

1
2
~/.local/bin/cryptomator-cli --help
~/.local/bin/cryptomator-cli list-mounters   # doit lister LinuxFuseMountProvider

3. Enregistrer le mot de passe du coffre dans KWallet

1
2
3
secret-tool store --label="Cryptomator Coffre yann" application cryptomator vault monCoffre
# saisir le mot de passe du coffre (invite « Password: »)
secret-tool lookup application cryptomator vault monCoffre | wc -c   # contrôle de la longueur (20 dnas mon cas)

Les attributs application cryptomator vault monCoffre doivent être identiques dans le script de déverrouillage.

4. Script déverrouillage cryptomator-unlock.sh

Les dossiers

  • Le dossier du coffre: $HOME/.coffre-cryptomator/
    • Coffre chiffrée: yann-crypto
  • Point de montage coffre déchiffrée: $HOME/.local/share/Cryptomator/mnt/yann-crypto

Script de déverrouillage ~/.local/bin/cryptomator-unlock.sh (chmod +x)

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
set -e
VAULT="$HOME/.coffre-cryptomator/yann-crypto"                # dossier contenant vault.cryptomator
MNT="$HOME/.local/share/Cryptomator/mnt/yann-crypto"         # point de montage
mkdir -p "$MNT"
pw=$(secret-tool lookup application cryptomator vault monCoffre)
exec "$HOME/.local/bin/cryptomator-cli" unlock \
  --password:stdin \
  --mounter=org.cryptomator.frontend.fuse.mount.LinuxFuseMountProvider \
  --mountPoint="$MNT" \
  "$VAULT" <<<"$pw"

5. Service utilisateur cryptomator-vault

Créer le service utilisateur ~/.config/systemd/user/cryptomator-vault.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Coffre Cryptomator
After=graphical-session.target
PartOf=graphical-session.target

[Service]
ExecStart=%h/.local/bin/cryptomator-unlock.sh
ExecStopPost=-/usr/bin/fusermount3 -uz %h/.local/share/Cryptomator/mnt/yann-crypto
TimeoutStopSec=20

[Install]
WantedBy=graphical-session.target
1
2
systemctl --user daemon-reload
systemctl --user enable --now cryptomator-vault.service

PartOf=graphical-session.target est indispensable ici : avec Linger=yes (nécessaire pour d’autres services utilisateur), systemd n’arrête pas les services à la déconnexion. C’est cette cible, arrêtée avec la session graphique, qui verrouille le coffre.

6. Synchronisation avant verrouillage cryptomator-sync.sh

~/.local/bin/cryptomator-sync.sh (chmod +x) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
MNT="$HOME/.local/share/Cryptomator/mnt/yann-crypto"
DEST="$MNT/sauvegardes"
SOURCES=("$HOME/sharenfs/pc1/.borg" "$HOME/.keepassx"  "$HOME/.ssh")   # à adapter

mountpoint -q "$MNT" || exit 0

id=$(notify-send -p -a "Coffre" -i drive-harddisk \
  "Coffre Cryptomator" "Synchronisation en cours…" 2>/dev/null)

mkdir -p "$DEST"
if rsync -rt "${SOURCES[@]}" "$DEST/"; then
  msg="Synchronisation terminée"
else
  msg="Synchronisation en erreur (code $?)"
fi

notify-send ${id:+-r "$id"} -a "Coffre" -i drive-harddisk "Coffre Cryptomator" "$msg" 2>/dev/null
echo "$msg"

Quelques points sur le choix des options :

  • Les sources sans / final recopient les dossiers eux-mêmes (sauvegardes/Documents/...).
  • -rt plutôt que -a : évite les erreurs de droits et de propriétaire sur le système de fichiers FUSE du coffre.
  • Ajoute --delete si tu veux que les fichiers supprimés à la source le soient aussi dans le coffre. Je ne l’ai pas mis par défaut, car une suppression par erreur se propagerait.
  • Tu peux le tester à la main à tout moment : ~/.local/bin/cryptomator-sync.sh

7. Hook de fermeture de session Plasma

Hook ~/.config/plasma-workspace/shutdown/10-coffre.sh

1
2
3
4
5
6
7
mkdir -p ~/.config/plasma-workspace/shutdown
cat > ~/.config/plasma-workspace/shutdown/10-coffre.sh <<'EOF'
#!/bin/sh
"$HOME/.local/bin/cryptomator-sync.sh"
systemctl --user stop cryptomator-vault.service
EOF
chmod +x ~/.config/plasma-workspace/shutdown/10-coffre.sh

8. Vérifications

Étape Commande Résultat attendu
Après connexion systemctl --user is-active cryptomator-vault active
Contenu accessible ls ~/.local/share/Cryptomator/mnt/yann-crypto fichiers du coffre
Après fermeture de session (console Ctrl+Alt+F3) systemctl --user is-active cryptomator-vault inactive
Plus de montage mount \| grep yann-crypto et pgrep -a -f cryptomator-cli aucune sortie
Dépannage journalctl --user -u cryptomator-vault -b -n 30  

9. Problèmes rencontrés

  • NoSuchFileException … vault.cryptomator : VAULT doit pointer sur le dossier qui contient directement vault.cryptomator, ici ~/.coffre-cryptomator/yann-crypto.
  • fusermount3: entry for … not found in /etc/mtab : sans gravité, c’est le ExecStopPost qui tente de démonter un coffre qui n’a pas été monté.
  • Linger=yes : à conserver, voir le point 5.
  • Application graphique Cryptomator : ne pas y déverrouiller le même coffre (elle ne sait pas qu’il est déjà ouvert par le CLI) ; la retirer du démarrage automatique si elle est inutile.
  • Alternatives pour le mot de passe : --password:env (visible dans l’environnement du processus) ou --password:file (en clair sur disque). --password:stdin avec KWallet reste le choix le plus sûr.

Sauvegarde du coffre fermé

Sauvegarder le coffre fermé, c’est-à-dire le dossier chiffré ~/.coffre-cryptomator/yann-crypto, et jamais le point de montage ~/.local/share/Cryptomator/mnt/yann-crypto. Ce dernier montreles fichiers en clair : si Nextcloud ou un autre outil le synchronise, tes données se retrouvent non chiffrées sur le serveur, ce qui annule l’intérêt du coffre. Le dossier chiffré, lui, est conçu pour être copié ou synchronisé tel quel.

Ce qu’il faut sauvegarder

  • Tout le dossier yann-crypto, qui contient vault.cryptomator, masterkey.cryptomator et le dossier d/. Sans les fichiers de clé, le reste est inutilisable.
  • Le mot de passe et, mieux, la clé de récupération (Cryptomator → Options du coffre → Clé de récupération). Garde-la hors de l’ordinateur et hors du coffre lui-même, par exemple dans KeePassXC ou sur papier. Sans mot de passe ni clé de récupération, aucune sauvegarde ne sert à rien.

Clé de récupération

cryptomator-cli ne sait pas afficher la clé de récupération. Il ne propose que unlock et list-mounters (à ma connaissance pour la 0.6.2 ; cryptomator-cli --help te le confirmera). Cette clé se consulte uniquement dans l’application graphique.

Afficher la clé de récupération

  1. Arrête d’abord le service, pour que le CLI et l’appli graphique n’utilisent pas le coffre en même temps :

    1
    
     systemctl --user stop cryptomator-vault.service
    
  2. Ouvre l’application graphique cryptomator. Si le coffre yann-crypto n’y figure pas, ajoute-le via + → Ajouter un coffre existant, en choisissant le dossier ~/.coffre-cryptomator/yann-crypto (celui qui contient vault.cryptomator).
  3. Sélectionne le coffre (verrouillé), puis Options du coffre → Clé de récupération → Afficher la clé de récupération.
  4. Saisis le mot de passe du coffre : la clé s’affiche sous forme d’une suite de mots.
  5. Copie-la et range-la hors du coffre et hors de l’ordinateur : dans KeePassXC (dans une base distincte de celle qui dépend du coffre) et idéalement sur papier.
  6. Referme la fenêtre, quitte l’application, puis relance le service :

    1
    
     systemctl --user start cryptomator-vault.service
    

‼️IMPORTANT‼️

  • Cette clé de récupération donne un accès complet au coffre, y compris la possibilité de réinitialiser le mot de passe : traite-la comme le mot de passe lui-même, et ne la stocke pas en clair dans un dossier synchronisé avec Nextcloud ou sauvegardé avec le coffre.
  • Elle sert dans le cas où l’on perd le mot de passe ou que masterkey.cryptomator est endommagé : dans l’application, Ajouter un coffre existant puis Restaurer l’accès (ou « J’ai oublié mon mot de passe ») permet de définir un nouveau mot de passe. Tu n’en as donc besoin qu’en cas de souci, mais elle doit être notée dès maintenant.
  • Une fois le mot de passe réinitialisé par ce biais, pense à mettre à jour l’entrée KWallet : secret-tool store --label="Cryptomator Coffre yann" application cryptomator vault monCoffre.

Borg sauvegarde coffre chiffré

Place-la en dernier, après le verrouillage du coffre : tu sauvegardes ainsi le dossier chiffré dans un état stable, sans écriture en cours, et il contient déjà les données que la synchronisation rsync vient d’y déposer. L’ordre devient donc : rsync → arrêt du service (verrouillage) → Borg.

Script Borg ~/.local/bin/cryptomator-borg.sh (chmod +x)

Le script, avec quelques ajustements : verrou contre les exécutions simultanées, notifications, --progress retiré (inutile hors terminal) et code retour traité.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
export BORG_PASSPHRASE="$(cat /home/yann/.borg/yann-crypto.passphrase)"
export BORG_RSH='ssh -i /home/yann/.ssh/bx11-yann-02'
BORG_PATH="/home/yann/.coffre-cryptomator/yann-crypto"
BORG_EXCLUSION="/home/yann/.borg/yann-crypto.exclusions"
BORG_REPOSITORY=ssh://u694796@u694796.your-storagebox.de:23/./yann-crypto
BACKUP_DATE=$(date +%Y-%m-%d-%Hh%M)

# Une seule sauvegarde à la fois
exec 9>"/run/user/$UID/cryptomator-borg.lock"
flock -n 9 || exit 0

notify-send -a "Coffre" -i drive-harddisk "Sauvegarde Borg" "Sauvegarde du coffre en cours…" 2>/dev/null

borg create -v --stats --exclude-from "$BORG_EXCLUSION" \
  "${BORG_REPOSITORY}::${BACKUP_DATE}" "$BORG_PATH"
rc=$?

if [ $rc -le 1 ]; then
  borg prune -v --stats --keep-daily=7 --keep-weekly=1 --keep-monthly=1 "$BORG_REPOSITORY"
  borg compact "$BORG_REPOSITORY"
  msg="Sauvegarde Borg terminée"
  [ $rc -eq 1 ] && msg="Sauvegarde Borg terminée avec avertissements"
else
  msg="Sauvegarde Borg en ERREUR (code $rc)"
fi

notify-send -a "Coffre" -i drive-harddisk "Sauvegarde Borg" "$msg" 2>/dev/null
echo "$msg"
exit $rc

2. Hook de fermeture de session (deux choix)

Choix A (ACTIF) : en séquence, la session attend la fin de la sauvegarde ~/.config/plasma-workspace/shutdown/10-coffre.sh

1
2
3
4
#!/bin/sh
"$HOME/.local/bin/cryptomator-sync.sh"
systemctl --user stop cryptomator-vault.service
"$HOME/.local/bin/cryptomator-borg.sh"

Simple et garanti terminé avant l’extinction. Inconvénient : si le réseau est lent (première sauvegarde, gros volume), la déconnexion ou l’arrêt est retardé.

Choix B : en tâche détachée, ce qui évite d’attendre

1
2
3
4
#!/bin/sh
"$HOME/.local/bin/cryptomator-sync.sh"
systemctl --user stop cryptomator-vault.service
systemd-run --user --unit=cryptomator-borg --collect "$HOME/.local/bin/cryptomator-borg.sh"

Comme Linger=yes, le gestionnaire utilisateur reste actif après la déconnexion et la sauvegarde continue en arrière-plan, mais un arrêt ou un redémarrage de la machine la coupe en cours de route. Les notifications ne seront de toute façon plus visibles. Pour suivre le résultat : journalctl --user -u cryptomator-borg.

Je te conseille le choix A si tu éteins la machine à la fermeture de session, et le B si tu te reconnectes souvent (mais l’unité utilise le même fichier de verrou : si le coffre redémarre pendant la sauvegarde, Borg lit un dossier qui se met à changer, ce qui n’est pas grave en soi, mais peut produire un avertissement).

3. Points d’attention

  • Ne sauvegarde que le dossier chiffré ~/.coffre-cryptomator/yann-crypto, comme tu le fais déjà, jamais le point de montage.
  • Si la machine n’est pas connectée au réseau à la fermeture de session, borg create échoue : c’est le message « ERREUR » qui te le signalera. Pour du matériel nomade, un timer systemd quotidien, qui se déclenche quand le réseau est là, est un bon complément.
  • Les fichiers .passphrase et la clé SSH doivent rester en chmod 600.
  • N’oublie pas le test de restauration (borg extract dans un dossier temporaire, puis ouverture avec l’application Cryptomator) : c’est le seul moyen de s’assurer que la sauvegarde est exploitable.

Tags tendance