Migrer Vaultwarden d’un NAS Synology vers un Raspberry Pi avec Docker Compose : Le Guide Complet

Vous hébergez votre gestionnaire de mots de passe auto-hébergé Vaultwarden sur votre NAS Synology et souhaitez le transférer sur un Raspberry Pi ? Que ce soit pour optimiser les ressources, la consommation énergétique, ou simplement pour réorganiser vos services, ce guide est fait pour vous. Nous allons détailler pas à pas comment migrer votre instance Vaultwarden complète – y compris votre base de données, les pièces jointes, et les configurations essentielles – en utilisant Docker Compose et une simple archive.

Prérequis

  1. Vaultwarden fonctionnel sur votre Synology via docker-compose.yml (ou compose.yaml).

  2. Les données persistantes de Vaultwarden stockées dans un sous-dossier (par exemple, data/) à l’intérieur du répertoire principal de votre compose.yaml sur le Synology.

  3. Un accès SSH fonctionnel aux deux machines (Synology et Raspberry Pi), utilisant le port SSH standard (22).

  4. Docker et Docker Compose (ou docker compose v2) installés et fonctionnels sur les deux machines. Sur le Raspberry Pi, une version compatible ARM est nécessaire.

  5. Une connaissance basique de la ligne de commande Linux.

Notre Configuration de Référence

  • Sur le Synology (source) :

    • Utilisateur SSH : utilisateur_syno (adaptez avec votre nom d’utilisateur réel sur le Synology)

    • Répertoire de Vaultwarden : /volume1/docker/vaultwarden/

    • Structure des fichiers typique :

      /volume1/docker/vaultwarden/
      ├── compose.yaml         (ou docker-compose.yml)
      ├── .env                 (optionnel, pour ADMIN_TOKEN, etc.)
      ├── data/                <-- DONNÉES ACTIVES DE VAULTWARDEN
      └── (potentiellement d'autres dossiers de sauvegarde comme bak_*)
  • Sur le Raspberry Pi (destination) :

    • Utilisateur SSH : user

    • Répertoire cible : /home/user/docker/vaultwarden/ (L’UID/GID de user est typiquement 1000, à vérifier avec id user).

Étape 1 : Exportation depuis le Synology NAS

L’objectif est de créer une archive complète de votre installation Vaultwarden.

  1. Connectez-vous en SSH à votre Synology NAS :

    ssh utilisateur_syno@IP_DU_SYNO
  2. Naviguez jusqu’au répertoire de Vaultwarden et arrêtez les conteneurs :
    L’arrêt des conteneurs garantit la cohérence des données pendant la sauvegarde, en particulier pour la base de données SQLite.

    cd /volume1/docker/vaultwarden
    sudo docker-compose -f compose.yaml down # Utilisez docker compose si c'est la v2

    (Si votre fichier s’appelle docker-compose.yml, utilisez sudo docker-compose down)

  3. Créez une archive complète du répertoire Vaultwarden :
    Placez-vous dans le répertoire parent (/volume1/docker/) pour que l’archive contienne le dossier vaultwarden/ lui-même. L’utilisation de sudo est cruciale ici pour s’assurer que tous les fichiers soient inclus avec les bonnes permissions.

    cd /volume1/docker/
    sudo tar -cvzf vaultwarden_backup.tar.gz vaultwarden/

    Cette commande crée une archive compressée vaultwarden_backup.tar.gz dans /volume1/docker/. Elle inclura votre dossier data/ actif ainsi que tous les autres fichiers et dossiers présents dans /volume1/docker/vaultwarden/.

Étape 2 : Transfert de l’archive vers le Raspberry Pi

Maintenant, nous allons copier cette archive sur votre Raspberry Pi.

  1. Connectez-vous en SSH à votre Raspberry Pi :

    ssh user@IP_DU_RPI
  2. Créez le répertoire de destination sur le RPi (s’il n’existe pas) :

    mkdir -p /home/user/docker/
    cd /home/user/docker/
  3. Transférez l’archive depuis le Synology vers le Raspberry Pi :
    Depuis le Raspberry Pi, utilisez scp pour récupérer l’archive.

    scp utilisateur_syno@IP_DU_SYNO:/volume1/docker/vaultwarden_backup.tar.gz .

    Entrez le mot de passe de votre utilisateur_syno sur le Synology. Le . à la fin signifie « copier dans le répertoire courant » (/home/user/docker/).

  4. Extraire l’archive sur le Raspberry Pi :

    tar -xvzf vaultwarden_backup.tar.gz

    Cela devrait créer un dossier /home/user/docker/vaultwarden/ avec tout le contenu du Synology.

Étape 3 : Configuration et Démarrage sur le Raspberry Pi

C’est l’étape où nous adaptons la configuration pour le RPi.

  1. Naviguez dans le répertoire Vaultwarden extrait :

    cd /home/user/docker/vaultwarden

    Vous devriez y trouver votre compose.yaml (ou docker-compose.yml), le dossier data/, etc.

  2. Adaptez le fichier compose.yaml (ou docker-compose.yml) :
    Ouvrez-le avec un éditeur de texte (par exemple, nano) :

    nano compose.yaml

    Apportez les modifications suivantes si nécessaire :

    • Image : vaultwarden/server:latest est multi-architecture, donc aucun changement n’est normalement requis.

    • Volumes : Si votre compose.yaml utilise un chemin relatif comme ./data/:/data/ pour le volume des données, aucune modification de chemin n’est nécessaire. Il pointera correctement vers /home/user/docker/vaultwarden/data/.

    • Ports : Vérifiez si les ports publiés (ex: 8085:80) sont disponibles sur votre RPi ou s’ils entrent en conflit avec d’autres services. Adaptez-les si besoin.

    • Variables d’Environnement (vérifiez dans compose.yaml et/ou .env s’il existe) :

      • DOMAIN: C’est la variable la plus critique à vérifier. Si l’URL d’accès à votre Vaultwarden va changer (par exemple, si vous passez d’une IP/domaine du Synology à une IP/domaine du RPi), vous DEVEZ mettre à jour la variable DOMAIN pour refléter la nouvelle URL complète (ex: https://vaultwarden.monrpi.local ou https://IP_DU_RPI:PORT_EXTERNE). Une mauvaise configuration ici peut empêcher les clients de se synchroniser.

      • ADMIN_TOKEN (souvent dans un .env): S’il était défini, assurez-vous que le fichier .env a bien été transféré et est lu par Docker Compose (via env_file: .env).

      • Autres variables : (WEBSOCKET_ENABLED, SIGNUPS_ALLOWED, etc.) devraient pouvoir rester telles quelles.

    Sauvegardez les modifications (Ctrl+O, Entrée, puis Ctrl+X dans nano).

  3. Ajustez les permissions des fichiers (TRÈS IMPORTANT) :
    Le conteneur Vaultwarden s’exécute en interne avec un utilisateur spécifique. Le dossier de données (./data/ et son contenu) sur le RPi doit être accessible en lecture/écriture par cet utilisateur.
    Vérifiez l’UID/GID de votre utilisateur user sur le RPi avec la commande id user (souvent 1000:1000).
    Exécutez cette commande depuis /home/user/docker/vaultwarden/ :

    # Remplacez 1000:1000 par l'UID:GID réel de votre utilisateur 'user' si différent
    sudo chown -R 1000:1000 .

    Cela rendra user (ou l’UID/GID spécifié) propriétaire de tous les fichiers dans le répertoire courant, y compris data/. Le conteneur Vaultwarden devrait alors pouvoir lire/écrire dans ./data/.

  4. Téléchargez l’image Docker pour ARM (si nécessaire) :
    Si votre utilisateur user n’est pas dans le groupe docker, vous devrez utiliser sudo.

    docker-compose -f compose.yaml pull
  5. Démarrez les conteneurs Vaultwarden :
    Si votre utilisateur user n’est pas dans le groupe docker, vous devrez utiliser sudo.

    docker-compose -f compose.yaml up -d

    L’option -d lance les conteneurs en arrière-plan.

Étape 4 : Vérification

Il est temps de vérifier si tout fonctionne comme prévu !

  1. Consultez les logs du conteneur :

    docker-compose -f compose.yaml logs -f

    (Ou sudo docker-compose …). Vous devriez voir des messages indiquant que Vaultwarden (Rocket) démarre et se met en écoute sur les ports configurés. Il ne devrait pas y avoir d’erreurs liées à l’accès à la base de données ou aux fichiers de clés.

  2. Accédez à l’interface Web de Vaultwarden :
    Ouvrez votre navigateur et allez à l’URL que vous avez configurée dans la variable DOMAIN (ou http://IP_DU_RPI:PORT_INTERNE_MAPPE si vous testez localement sans reverse proxy).
    Connectez-vous avec vos identifiants. Tous vos éléments devraient être présents.

  3. Testez la synchronisation des clients :
    Ouvrez vos extensions de navigateur et applications mobiles Vaultwarden. Assurez-vous qu’elles peuvent se synchroniser avec la nouvelle instance sur le RPi. Si vous avez changé la variable DOMAIN, vous devrez peut-être mettre à jour l’URL du serveur dans les paramètres de vos clients.

Points Cruciaux pour Vaultwarden :

  • Les clés RSA (rsa_key.pem, rsa_key.pub.pem) dans ./data/ sont VITALES. Cette méthode les préserve.

  • La variable d’environnement DOMAIN doit être correcte pour la nouvelle URL d’accès.

  • Reverse Proxy : Si vous utilisiez un reverse proxy sur le Synology, vous devrez configurer un reverse proxy pour pointer vers votre RPi (soit sur le RPi lui-même, soit sur une autre machine).

Conclusion

Félicitations ! Vous devriez avoir migré avec succès votre instance Vaultwarden de votre Synology NAS vers votre Raspberry Pi. N’oubliez pas de mettre en place une stratégie de sauvegarde régulière pour votre instance Vaultwarden sur le RPi !