Mirror the French docs onto the English structure

This commit is contained in:
Djeex
2026-09-05 16:55:39 +02:00
parent 86f04ed794
commit 1894ac7ead
74 changed files with 6322 additions and 1588 deletions
+167 -75
View File
@@ -1,34 +1,36 @@
---
title: Vaultwarden
description: Installer Vaultwarden, un gestionnaire de mots de passe auto-hébergé compatible Bitwarden pour remplacer les gestionnaires Google ou Apple sur tous vos appareils.
description: Installer Vaultwarden, un gestionnaire de mots de passe auto-hébergé compatible Bitwarden, pour remplacer ceux de Google ou d'Apple sur tous vos appareils.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Vaultwarden
::note
🎯 __Objectifs :__ Installer [Vaultwarden](https://github.com/dani-garcia/vaultwarden) pour gérer vos mot de passe sur tout vos appareils (remplace la gestion de mot de passe Google ou Apple).
::
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
![Vaultwarden](/img/serveex/vaultwarden.png)
[Vaultwarden](https://github.com/dani-garcia/vaultwarden) est une solution de gestion de vos mot de passe (génération, saisie semi-automatique...) que vous pouvez installer directement sur votre serveur. Cette solution remplace les gestionnaires comme Google, Apple ou Keepass. Cette solution permet de synchroniser tout vos mots de passe sur vos différentes machines, avec un chiffrement de bout en bout.
[Vaultwarden](https://github.com/dani-garcia/vaultwarden) est une solution de gestion de mots de passe (génération, remplissage automatique...) que vous pouvez héberger directement sur votre serveur. Elle remplace les gestionnaires du type Google, Apple ou Keepass. Vaultwarden synchronise vos mots de passe sur tous vos appareils avec un chiffrement de bout en bout.
Vaultwarden est un fork de la solution [Bitwarden](https://bitwarden.com/fr-fr/help/).
Vaultwarden est un fork de [Bitwarden](https://bitwarden.com/fr-fr/help/).
## Installation
Structure des dossiers
```text [Arborescence]
root
└── docker
└── vaultwarden
├── data
├── compose.yaml
└── .env
```
::file-tree
---
tree:
/:
- srv:
- docker:
- vaultwarden:
- data/
- compose.yaml
- .env
---
::
Ouvrez Dockge, cliquez sur `compose`, appelez la stack `vaultwarden` puis copiez collez ceci :
::steps{level="3"}
### Déployer la stack
Ouvrez Dockge, cliquez sur `compose`, nommez la stack `vaultwarden`, et collez ce qui suit :
```yaml [compose.yaml]
---
@@ -57,94 +59,104 @@ services:
- SIGNUPS_VERIFY=true
- SIGNUPS_VERIFY_RESEND_TIME=3600
- SIGNUPS_VERIFY_RESEND_LIMIT=5
```
::tip{icon=""}
✨ __Astuce :__ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
✨ __Astuce :__ ajoutez le label Watchtower dans chaque conteneur pour automatiser les mises à jour
```yaml [compose.yaml]
services:
vaultwarden:
#...
labels:
- com.centurylinklabs.watchtower.enable=true
```
```yaml [compose.yaml]
---
services:
vaultwarden:
#...
labels:
- com.centurylinklabs.watchtower.enable=true
```
::
Nous allons maintenant générer un hash de mot de passe, qu'il faudra renseigner dans la variable `TOKEN` du `.env`
### Renseigner vos variables d'environnement
Générez ensuite un hash de mot de passe à mettre dans la variable `TOKEN` du `.env` :
```bash [Terminal]
echo -n 'votremotdepasse' | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
```
Copiez le résultat précieusement et gardez en tête le mot de passe que vous avez choisi.
Copiez le résultat en lieu sûr.
Dans le `.env`, renseignez les variables suivantes :
Dans le fichier `.env`, renseignez les variables suivantes :
```properties [.env]
URL=
TOKEN=
```
| Variable | Valeur | Exemple |
|-------------------------|---------------------------------------------------------|----------------------------|
| `URL`{lang=properties} | L'url de votre serveur vaultwarden | `https://vault.domaine.fr` |
| `TOKEN`{lang=properties} | Le token que vous avez précédemment copié précieusement | `'$argon2id$v=19$m=65540,t=3,p=4$bXBGME` |
| Variable | Valeur | Exemple |
|----------|-------|---------|
| `URL` | L'URL de votre serveur Vaultwarden | `https://vault.mondomaine.fr` |
| `TOKEN` | Le token copié précédemment | `'$argon2id$v=19$m=65540,t=3,p=4$bXBGME...` |
Puis déployez le conteneur.
Déployez ensuite le conteneur.
Depuis quelques temps, Vaultwarden ne permet pas d'etre accéder sans certificat SSL, ce qui empeche d'y accéder via son IP local. Nous y accèderons donc après l'avoir exposé avec SWAG, qui ajoute lui même un certificat SSL.
Depuis peu, Vaultwarden exige du SSL pour être accessible, ce qui empêche l'accès via une IP locale. Nous allons l'exposer avec SWAG, qui fournit un certificat SSL.
### Terminé !
::
::caution
__En cas d'échec :__ vérifiez les règles de votre pare-feu.
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
::
## Exposer Vaultwarden avec SWAG
Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance et sur tout vos appareils. Pour cela, nous allons exposer Vaultwarden via [SWAG](/fr/serveex/core/swag).
Le principal intérêt de Vaultwarden est de pouvoir y accéder à distance depuis n'importe quel appareil. Nous allons l'exposer à travers [SWAG](/serveex/core/swag).
::note
__Au préalable :__ nous partons du principe que vous avez créé dans votre [zone DNS](/fr/general/networking/dns) un sous domaine du type `vault.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et, [à moins que vous utilisiez Cloudflare Zero Trust](/fr/serveex/security/cloudflare), que que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/fr/general/networking/nat).
::note{icon="" to="/general/networking/nat"}
📋 __Au préalable :__ assurez-vous d'avoir créé un sous-domaine DNS du type `vault.mondomaine.fr` avec un `CNAME` pointant vers `mondomaine.fr` et (à moins d'utiliser Cloudflare Zero Trust) d'avoir redirigé le port `443` de votre box vers le `443` de votre serveur via les **règles NAT**.
::
Dans Dockge, rendez-vous dans la stack de SWAG et éditez le compose en ajoutant le réseau de vaultwarden :
::steps{level="3"}
### Ajouter le réseau de Vaultwarden à SWAG
Dans Dockge, allez sur la stack SWAG et modifiez le fichier compose pour y ajouter le réseau de Vaultwarden :
```yaml [compose.yaml]
---
services:
swag:
container_name: # ...
# ...
networks: # Relie le conteneur au réseau custom
# ...
- vaultwarden # Nom du réseau déclaré dans la stack
networks: # Définit le réseau custom
# ...
networks: # Rattache le conteneur au réseau personnalisé
# ...
- vaultwarden # Nom du réseau déclaré
networks: # Définit le réseau personnalisé
# ...
vaultwarden: # Nom du réseau déclaré dans la stack
name: vaultwarden_default # Nom véritable du réseau externe
external: true # Précise que c'est un réseau à rechercher en externe
vaultwarden: # Nom du réseau déclaré
name: vaultwarden_default # Nom réel du réseau externe
external: true
```
::note
Ici nous partons du principe que le nom du réseau de vaultwarden est `vaultwarden_default`. Vous pouvez vérifier que la connexion est opérationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81.
Nous partons du principe que le nom du réseau est `vaultwarden_default`. Vous pouvez vérifier la connectivité en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81.
::
Relancez la stack en cliquant sur "déployer" et patientez le temps que SWAG soit complètement opérationnel.
Redémarrez la stack en cliquant sur « Deploy » et attendez que SWAG soit pleinement opérationnel.
Dans les dossiers de Swag, créez le fichier `vault.subdomain.conf`.
### Créer le fichier subdomain.conf
::tip{icon=""}
✨ __Astuce :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
Dans le dossier de configuration de SWAG, créez le fichier `vault.subdomain.conf` :
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ __Astuce :__ utilisez **File Browser Quantum** pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal.
::
```bash [Terminal]
sudo nano /docker/swag/config/nginx/proxy-confs/vault.subdomain.conf
sudo nano /srv/docker/swag/config/nginx/proxy-confs/vault.subdomain.conf
```
Collez la configuration ci-dessous :
Et collez la configuration suivante :
```nginx [vault.subdomain.conf]
server {
@@ -171,13 +183,13 @@ server {
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable for ldap auth (requires ldap-server.conf in the server block)
# enable for ldap auth
#include /config/nginx/ldap-location.conf;
# enable for Authelia (requires authelia-server.conf in the server block)
# enable for Authelia
#include /config/nginx/authelia-location.conf;
# enable for Authentik (requires authentik-server.conf in the server block)
# enable for Authentik
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
@@ -186,7 +198,6 @@ server {
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
location ~ ^(/vaultwarden)?/admin {
@@ -194,13 +205,13 @@ server {
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable for ldap auth (requires ldap-server.conf in the server block)
# enable for ldap auth
#include /config/nginx/ldap-location.conf;
# enable for Authelia (requires authelia-server.conf in the server block)
# enable for Authelia
#include /config/nginx/authelia-location.conf;
# enable for Authentik (requires authentik-server.conf in the server block)
# enable for Authentik
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
@@ -209,7 +220,6 @@ server {
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
location ~ (/vaultwarden)?/api {
@@ -219,7 +229,6 @@ server {
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
location ~ (/vaultwarden)?/notifications/hub {
@@ -229,17 +238,100 @@ server {
set $upstream_port 80;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
```
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Ente"}, puis quittez avec :kbd{value="Ctrl+X"}.
Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter.
Et voilà, vous avez exposé Vaultwarden ! Accédez au panneau d'administration via `https://vault.mondomaine.fr/admin` et collez le mot de passe que vous avez choisi pour générer l'`ADMIN_TOKEN`. Plus d'info sur les fonctionnalités de [Bitwarden](https://bitwarden.com/help/).
N'oubliez pas d'installer les extensions Bitwarden (elles sont compatibles avec Vaultwarden) pour [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) ou pour [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/) ainsi que les applications [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) et [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) afin de synchroniser vos mot de passe.
::tip{icon=""}
✨ __Astuce :__ vous pouvez protéger cette app avec Authentik en ouvrant `tools.subodmain.conf` et en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un fournisseur dans Authentik](/fr/serveex/security/authentik#protéger-une-app-par-reverse-proxy).
### Terminé !
::
Et voilà ! Vaultwarden est maintenant exposé ! Rendez-vous sur `https://vault.mondomaine.fr/admin` pour accéder au panneau d'administration et collez le mot de passe que vous avez indiqué lors de la génération de l'`ADMIN_TOKEN`. Pour plus d'informations, voir la [documentation Bitwarden](https://bitwarden.com/help/).
N'oubliez pas d'installer les extensions navigateur Bitwarden (elles fonctionnent avec Vaultwarden) pour [Chrome](https://chromewebstore.google.com/detail/gestionnaire-de-mots-de-p/nngceckbapebfimnlniiiahkandclblb) et [Firefox](https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/), ainsi que les applications [iOS](https://apps.apple.com/fr/app/bitwarden/id1137397744) et [Android](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden&hl=fr) pour synchroniser vos mots de passe.
## Protéger Vaultwarden avec Pocket ID
Contrairement à la plupart des applications de ce site, Vaultwarden gère OIDC nativement, il n'y a donc pas besoin ici du proxy forward-auth de TinyAuth ni de l'astuce reverse-proxy d'Authentik : Vaultwarden lui-même peut exiger une connexion OIDC avant de laisser qui que ce soit entrer dans le coffre.
::steps{level="3"}
### Enregistrer Vaultwarden comme client OIDC
[Enregistrez un client OIDC dans Pocket ID](/serveex/security/pocket-id#registering-an-oidc-client) (ou dans Authentik, ou tout autre fournisseur OIDC) avec cette URL de callback :
```text
https://vault.mondomaine.fr/identity/connect/oidc-signin
```
### Ajouter les variables SSO
Modifiez le fichier `.env` de Vaultwarden :
```bash [Terminal]
sudo nano /srv/docker/vaultwarden/.env
```
Ajoutez ceci :
```properties [.env]
SSO_ENABLED=true
SSO_ONLY=true
SSO_AUTHORITY=https://id.mondomaine.fr
SSO_CLIENT_ID=
SSO_CLIENT_SECRET=
```
| Variable | Valeur |
|----------|-------|
| `SSO_AUTHORITY`{lang=properties} | L'URL publique de votre fournisseur OIDC (Pocket ID ici) |
| `SSO_CLIENT_ID`{lang=properties} | Le client ID copié depuis votre fournisseur |
| `SSO_CLIENT_SECRET`{lang=properties} | Le client secret copié depuis votre fournisseur |
::note
Mettez plutôt `SSO_ONLY=false` si vous préférez garder aussi la possibilité de vous connecter avec un mot de passe maître local.
::
Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter.
### Redéployer la stack
Redéployez Vaultwarden. Votre prochaine visite sur `https://vault.mondomaine.fr` demandera une connexion SSO plutôt que (ou en plus de) le mot de passe maître local.
### Terminé !
::
::note{to="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect"}
Voir le **wiki SSO de Vaultwarden** pour la liste complète des options, y compris l'application par organisation et les politiques de mot de passe maître.
::
::::tip{icon=""}
✨ Vous pouvez utiliser [Authentik](/serveex/advanced/authentik) plutôt que Pocket ID :
:::collapsible{name="les étapes de configuration Authentik"}
::steps{level="4"}
#### Créer un scope mapping pour le claim email
Dans Authentik, créez un scope mapping nommé `email` avec l'expression `return {"email": request.user.email, "email_verified": True}` (Vaultwarden exige ce claim).
#### Créer l'application et le provider
Créez une application et un provider OAuth2/OpenID Connect nommé `Vaultwarden`, avec une redirect URI (de type `Strict`) valant `https://vault.mondomaine.fr/identity/connect/oidc-signin`. Dans les Advanced protocol settings, réglez la validité du token d'accès à plus de 5 minutes, remplacez le scope email par défaut par votre mapping personnalisé, et ajoutez le scope mapping `offline_access`.
#### Renseigner les variables d'environnement de Vaultwarden
Notez les __Client ID__, __Client Secret__ et __Slug__ du provider, puis utilisez-les dans le `.env` de Vaultwarden :
```properties [.env]
SSO_AUTHORITY=https://authentik.mondomaine.fr/application/o/<slug>/
SSO_CLIENT_ID=
SSO_CLIENT_SECRET=
SSO_SCOPES=email profile offline_access
```
#### Terminé !
::
:::
::::