Pourquoi migrer maintenant
Depuis le 27 mars 2026, l'abonnement individuel 1Password facturé annuellement est passé de {{35,88 $/an}} à {{47,88 $/an}}, soit une hausse de 33 %. En janvier 2026, Bitwarden.com avait déjà relevé son plan Premium de 9,99 $ à 19,80 $ par an — près du double. Ces deux hausses simultanées ont rendu le self-hosting économiquement évident pour les développeurs qui disposent déjà d'un VPS : Vaultwarden y tourne avec moins de 50 Mo de RAM, sans surcoût logiciel, pour un coût fixe mensuel correspondant à celui d'un VPS d'entrée de gamme.
L'objection la plus courante — « administrer soi-même son gestionnaire de mots de passe, c'est risqué » — ne tient pas face à l'architecture de Vaultwarden. Le chiffrement se fait entièrement côté client, en AES-256-CBC avec dérivation de clé PBKDF2 ou Argon2id : le serveur ne voit jamais vos mots de passe en clair, même en cas de compromission complète de la machine.
Ce que Vaultwarden apporte à un développeur
- Chiffrement client-side AES-256-CBC — vos mots de passe ne quittent jamais votre appareil en clair, quelle que soit la configuration serveur.
- Compatibilité totale avec tous les clients officiels Bitwarden : extensions navigateur, apps iOS, Android, desktop et CLI, sans modification.
- Empreinte mémoire légère — le processus Vaultwarden seul consomme 10 à 30 Mo de RAM ; moins de 100 Mo avec le conteneur Docker.
- Coût fixe — un VPS 1 vCPU / 512 Mo suffit pour un usage personnel ou une petite équipe, sans abonnement SaaS variable.
- Contrôle total des données — sauvegarde, restauration, choix du datacenter et durée de rétention restent entre vos mains.
- Accès multi-profils et organisations — Vaultwarden supporte la gestion d'organisations et le partage de coffres comme Bitwarden.com.
- Mises à jour découplées — vous choisissez quand mettre à jour le serveur ; les clients officiels Bitwarden gèrent leur propre cycle de vie.
Prérequis avant de commencer
Avant de lancer la migration, vérifiez que vous disposez de l'ensemble des éléments suivants.
Côté serveur : un VPS avec au moins 1 vCPU et 512 Mo de RAM, Docker et Docker Compose installés, un nom de domaine pointant sur l'IP du serveur, et un reverse proxy (Caddy ou Nginx) configuré pour terminer TLS. Le déploiement de Vaultwarden lui-même est couvert dans l'article Déployer Vaultwarden sur VPS — ce guide part du principe que votre instance est déjà en ligne et accessible en HTTPS.
Côté poste local : 1Password v8 ou supérieur installé (nécessaire pour exporter en .1pux), Bitwarden CLI (bw) installé via npm (npm install -g @bitwarden/cli) ou le binaire officiel, et Node.js ≥ 18 si vous installez via npm.
Étape 1 — Exporter votre coffre 1Password
Ouvrir le dialogue d'export
Sur macOS, ouvrez 1Password et allez dans Fichier → Exporter. Sur Windows, cliquez sur l'ellipse (…) en haut de la barre latérale, puis sur Exporter. Sélectionnez le compte à exporter — si vous avez plusieurs coffres, vous pouvez exporter l'intégralité du compte en une seule opération.
Choisir le format 1PUX
Dans la boîte de dialogue, saisissez votre mot de passe de compte 1Password pour confirmer l'opération. Sélectionnez ensuite le format 1Password Unencrypted Export (.1pux). Ce format JSON préserve l'intégralité de la structure — champs personnalisés, notes sécurisées, identités, mots de passe d'application — contrairement au CSV qui tronque les métadonnées.
Enregistrer le fichier en lieu sûr
Choisissez un dossier local chiffré (FileVault ou BitLocker activé) pour stocker le fichier .1pux. Ce fichier contient tous vos secrets en clair structuré — ne le laissez pas traîner dans un dossier de téléchargements ni ne l'envoyez par e-mail. Une fois la migration terminée, supprimez-le de façon sécurisée.
Étape 2 — Importer via Bitwarden CLI
Pointer le CLI vers votre instance Vaultwarden
Par défaut, bw pointe vers bitwarden.com. Redirigez-le vers votre instance avant toute autre opération :
bw config server https://vault.votre-domaine.comVérifiez la réponse : le CLI doit confirmer Saved setting 'serverUrl'.
Se connecter et déverrouiller le coffre
Authentifiez-vous avec vos identifiants Vaultwarden (email + mot de passe maître créés à la configuration initiale) :
bw login [email protected]Le CLI vous demandera votre mot de passe maître de façon interactive. Une fois connecté, déverrouillez le coffre et exportez la clé de session :
export BW_SESSION=$(bw unlock --raw)Toutes les commandes suivantes utilisent implicitement cette variable pour accéder au coffre déchiffré.
Lancer l'import du fichier .1pux
Importez votre export 1Password avec le format 1password1pux :
bw import 1password1pux /chemin/vers/export.1puxLe CLI affiche la progression et un résumé du nombre d'éléments importés par type (logins, notes, identités, cartes). Si votre coffre 1Password contenait plusieurs coffres (vaults), tous sont importés dans un seul coffre Bitwarden — les dossiers sont recréés pour préserver la structure.
En cas d'erreur Invalid format, vérifiez que le fichier porte bien l'extension .1pux et que vous utilisez une version récente du CLI (bw --version).
Vérifier l'import dans un client Bitwarden
Ouvrez l'extension Bitwarden de votre navigateur ou l'app desktop, pointez le serveur vers votre instance Vaultwarden, puis connectez-vous. Parcourez vos coffres et vérifiez un échantillon de mots de passe — en particulier les entrées avec des champs personnalisés, les notes sécurisées et les identités, qui sont les plus susceptibles de varier selon les gestionnaires.
Étape 3 — Vaultwarden sur votre VPS
Si votre instance Vaultwarden n'est pas encore déployée, suivez le guide Déployer Vaultwarden sur VPS qui couvre l'intégralité de la configuration Docker. En résumé, trois points sont non-négociables avant d'importer quoi que ce soit :
HTTPS obligatoire. Les clients Bitwarden refusent de se connecter à un serveur sans TLS valide. Caddy ou Nginx avec Let's Encrypt (certbot) suffisent ; vérifiez que votre domaine est accessible en https:// avant de configurer le CLI.
Variable DOMAIN correcte. Dans votre docker-compose.yml, la variable DOMAIN=https://vault.votre-domaine.com doit correspondre exactement à l'URL que vous avez déclarée dans bw config server — sans slash final.
Sauvegarde du volume avant import. L'import écrit dans la base SQLite de Vaultwarden (/data/db.sqlite3). Faites un snapshot de votre volume Docker avant de lancer bw import, pour pouvoir revenir en arrière si l'import se passe mal.
1Password vs Bitwarden.com vs Vaultwarden
| Critère | 1Password | Bitwarden.com | Vaultwarden (self-hosted) |
|---|---|---|---|
| Coût annuel (individuel) | {{47,88 $/an}} depuis mars 2026 | {{19,80 $/an}} depuis janv. 2026 (Premium) | Coût du VPS uniquement |
| Contrôle des données | Serveurs 1Password | Serveurs Bitwarden | Votre VPS, votre datacenter |
| Chiffrement | AES-256-CBC côté client | AES-256-CBC côté client | AES-256-CBC côté client (identique) |
| Clients mobiles officiels | Apps dédiées 1Password | iOS, Android, desktop, extension | Clients Bitwarden officiels, sans modification |
| Extension navigateur | 1Password X | Extension Bitwarden | Extension Bitwarden (même binaire) |
| Mises à jour | Automatiques (SaaS) | Automatiques (SaaS) | Manuelles (vous choisissez le moment) |
| RAM serveur requise | N/A (SaaS) | N/A (SaaS) | 10–30 Mo (processus), < 100 Mo (Docker) |
Sauvegarder et tester la restauration
L'import terminé, mettez en place une sauvegarde automatisée du volume Vaultwarden avant de désactiver votre compte 1Password. Le guide Sauvegardes Restic sur VPS couvre une stratégie 3-2-1 adaptée à Docker : arrêt du conteneur, snapshot du volume, envoi chiffré vers un stockage distant, redémarrage. Testez la restauration sur une machine distincte — pas seulement la présence du fichier de sauvegarde — avant de considérer la migration terminée. Un coffre de mots de passe sans restauration testée n'est pas une sauvegarde.
Dépannage — erreurs fréquentes
Invalid format à l'import. Le format attendu par le CLI est exactement 1password1pux (tout attaché, en minuscules). Vérifiez que vous n'utilisez pas 1password seul ni 1pux — ces noms correspondent à d'autres formats (respectivement le format 1PIF de 1Password 6 et un alias non reconnu). Listez les formats disponibles avec bw import --formats | grep 1password.
ERR_CERT_AUTHORITY_INVALID dans les clients. Les clients Bitwarden exigent un certificat TLS signé par une autorité reconnue — un certificat auto-signé est refusé. Vérifiez que Let's Encrypt a bien émis un certificat pour votre domaine et qu'il n'est pas expiré (bw config server affiche un avertissement si le certificat est invalide).
Coffre bloqué en mode migration. Si vous importez depuis un compte Bitwarden.com existant avant de basculer vers Vaultwarden, vos éléments restent chiffrés avec la clé du compte cloud. Après bw config server vers votre instance, recréez un compte local : le CLI ne migre pas la clé de chiffrement entre instances, seules les données en clair transitent via l'import.
L'import s'arrête sur une entrée SSH. Une régression connue dans certaines versions du CLI bloquait l'import des clés SSH au format 1pux (issue bitwarden/clients #20432). La version CLI 2026.7.0 intègre un correctif. Mettez à jour avec npm install -g @bitwarden/cli@latest si vous rencontrez ce comportement.
Quitter 1Password en confiance
Une fois l'import vérifié côté Vaultwarden — ouvrez chaque type d'élément (logins, notes, identités, cartes) dans un client Bitwarden et contrôlez un échantillon représentatif — vous pouvez désactiver votre compte 1Password. N'attendez pas l'expiration de votre abonnement pour supprimer le fichier .1pux local : il contient tous vos secrets en clair structuré.
Pour aller plus loin dans la sécurisation de votre infrastructure, les articles Durcissement initial d'un serveur Linux et Passbolt pour une équipe couvrent les étapes suivantes : fermeture des ports, gestion des clés SSH et partage sécurisé en contexte d'équipe.