Vaultwarden est un fork de Bitwarden plus léger écrit en Rust. C’est un clone qui lui aussi utilise Docker. Il est aussi créé presque à l’identique pour pouvoir utiliser toutes les applications officielles de Bitwarden, donc le client lourd est compatible, idem pour les extensions de navigateurs.
Je comprends la motivation derrière Docker: c’est une façon très intelligente d’éviter les problèmes de dépendances et de faire fonctionner des applicatifs sur une multitude de distributions Linux différentes.
Je l’utilise aussi de temps à autre et je le trouve très bien mais étant administrateur de la vieille école, même si il peut être très pratique, ça me semble être un système terriblement inutile car chaque application utilisant Docker doit regrouper toutes ses dépendances, à la fois les bibliothèques et les problèmes d’applications associés dans chaque image Docker.
J’ajoute aussi à cela qu’il rajoute une dose de complexité pour les non initiés. Des fois, Docker à l’effet inverse que désiré…
On va donc auto-hébergé Vaulwarden sans Docker en utilisant l’outil script docker-image-extract
pour extraire le contenu de l’image docker.
Je pars du principe que vos DNS sont correctement configurés pour un sous domaine (ou domaine) dédié, que vous savez utiliser Let’s Encrypt ou mkcert pour votre certificat SSL et que votre SMTP est configuré (Facultatif mais fortement recommandé)
En effet, il faut absolument créer un certificat Let’s Encrypt ou SAN avec plusieurs entrées de nom alternatif du sujet (Subject Alternative Name - SAN) sinon l’aplication Desktop ne fonctionnera pas.
Toutes ces commandes de ce tutoriel doivent être effectuées en tant que root ou préfixées avec sudo.
cd /tmp
mkdir vw-image
cd vw-image
docker-image-extract
pour extraire les pièces nécessaires de l’image Docker :wget https://raw.githubusercontent.com/jjlin/docker-image-extract/main/docker-image-extract
chmod +x docker-image-extract
– Extraire l’image Docker de Vaultwarden:
./docker-image-extract vaultwarden/server:alpine
mkdir /opt/vaultwarden
mkdir /var/lib/vaultwarden
mkdir /var/lib/vaultwarden/data
useradd vaultwarden
chown -R vaultwarden:vaultwarden /var/lib/vaultwarden
mv output/vaultwarden /opt/vaultwarden
mv output/web-vault /var/lib/vaultwarden
Si tout est OK, supprimer les traces :
rm -Rf output
rm -Rf docker-image-extract
rm -Rf /tmp/vw-image
/opt/vaultwarden/vaultwarden hash
Vous serez invité à demander un mot de passe deux fois. Enregistrez la sortie résultante quelque part.
sudo /opt/vaultwarden/vaultwarden hash
Generate an Argon2id PHC string using the 'bitwarden' preset:
Password:
Confirm Password:
ADMIN_TOKEN='$xxxxxxxxxxxxxxid$v=19$m=xxxxxx,t=3,p=xxxxxxxxxxxxxxxxx$Tlxxxxx+xxxxx++xxxxxxxx'
Generation of the Argon2id PHC string took: 282.900132ms
/var/lib/vaultwarden/.env
avec le contenu suivant, adaptez avec votre propre username, domaine (sous-domaine) et les détails SMTP:nano /var/lib/vaultwarden/.env
Attention ici, la variable SIGNUPS_ALLOWED=false n’autorise pas la création d’un nouveau compte, il faudra l’activer (True) pour créer son premier compte et la désactiver ensuite par sécurité. Cela pourra être fait via l’interface ou ici. SIGNUPS_VERIFY=false permet d’activer ou non la vérification d’un compte via email.
DOMAIN=https://warden.xxxxxxx.fr
[email protected]
ADMIN_TOKEN='<hash produced by vaultwarden hash earlier>'
SIGNUPS_ALLOWED=false
SIGNUPS_VERIFY=false
SMTP_HOST=xxx.xxxxxxx.fr
[email protected]
SMTP_FROM_NAME=Vaultwarden
SMTP_PORT=587 # Ports 587 (submission) and 25 (smtp) are standard without encryption and with encryption via STARTTLS (Explicit TLS). Port 465 is outdated and us>
SMTP_SSL=true # (Explicit) - This variable by default configures Explicit STARTTLS, it will upgrade an insecure connection to a secure one. Unless SMTP_EXPLICIT_>
SMTP_EXPLICIT_TLS=false # (Implicit) - N.B. This variable configures Implicit TLS. It's currently mislabelled (see bug #851) - SMTP_SSL Needs to be set to true for this o>
[email protected]
SMTP_PASSWORD=mysmtppassword
SMTP_TIMEOUT=15
/etc/systemd/system/vaultwarden.service
avec le contenu suivant :nano /etc/systemd/system/vaultwarden.service
[Unit]
Description=Bitwarden Server (Rust Edition)
Documentation=https://github.com/dani-garcia/vaultwarden
After=network.target
[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=/var/lib/vaultwarden/.env
ExecStart=/opt/vaultwarden/vaultwarden
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
WorkingDirectory=/var/lib/vaultwarden
ReadWriteDirectories=/var/lib/vaultwarden
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
systemctl enable vaultwarden
systemctl start vaultwarden
systemctl status vaultwarden
Le statut devrait dire que Vautwarden fonctionne et qu’il est à l’écoute sur l’URL
http://127.0.0.1:8000
Si besoin autoriser le service Vaultwarden ou le port 8000 dans votre firewall (inutile si vous paramétrez ensuite un reverse proxy)
Les configurations en reverse Proxy Apache ou Nginx avec certificat SSL n’étant pas le but de cette procédure, ce qui va suivre est à titre indicatif
http://127.0.0.1:8000
Configurez Apache comme proxy inverse, afin qu’il fournisse une protection SSL à Vaultwarden, dont le serveur Web interne, Rocket, ne prend pas en charge SSL par défaut.
Je suppose que SSL est déjà implémenté sur votre serveur Apache, peut-être en utilisant Let’s Encrypt ou Mkcert, et que l’URL de votre site Web de base est https://warden.xxxx.com/
Tout d’abord, activez le module reverse proxy :
a2enmod proxy_http
/etc/apache2/sites-available
appelé vaultwarden.conf
.nano /etc/apache2/sites-available/warden.conf
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName warden.example.com
ProxyPass /.well-known/acme-challenge !
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>
a2ensite bitwarden.conf
systemctl reload apache2
systemctl restart apache2
systemctl status apache2
Même principe pour Nginx.
server {
server_name warden.xxxxxxxx.fr;
index index.php index.htm index.html;
access_log /var/log/virtualmin/warden.xxxxxxxx.fr_access_log;
error_log /var/log/virtualmin/warden.xxxxxxxx.fr_error_log;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen xxx.xx.xxx.xx:443 ssl http2;
#listen [xxxx:xxx:xxx:xxxx::1]:443 ssl;
ssl_certificate /etc/letsencrypt/live/warden.xxxxxxxx.fr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/warden.xxxxxxxx.fr/privkey.pem;
# managed by Certbot
}
server {
if ($host = warden.xxxxxxxx.fr) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name warden.xxxxxxxx.fr;
listen xxx.xx.xxx.xx;
listen [xxxx:xxx:xxx:xxxx::1];
return 404; # managed by Certbot
}
Les certificat SSL n’étant pas le but de cette procédure, ce qui va suivre est à titre indicatif.
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-debian-10
Une fois certbot installé, en gros :
sudo certbot --nginx -v
Une fois certbot installé, en gros :
sudo certbot --apache -v
https://warden.example.com/admin
Vous serez invité à utiliser un mot de passe, alors entrez le mot de passe que vous avez utilisé plus tôt lors de la création du hash de votre password
Allow new signups
et sauvegarder les paramètresPar sécurité, n’oubliez pas de décocher cette case après la création de votre compte utilisateur !!!
Vous pouvez aussi activer la vérification du compte via email si votre SMTP fonctionne pour valider le compte via l’option
Require email verification on signups. This will prevent logins from succeeding until the address has been verified.
https://addons.mozilla.org/fr/firefox/addon/bitwarden-password-manager/
https://chromewebstore.google.com/detail/bitwarden-gestion-des-mot/nngceckbapebfimnlniiiahkandclblb
url du serveur : https://warden.example.com
Vous pouvez créer un compte de plusieurs manières :
– Cette méthode nécéssite obligatoirement un SMTP valide sur votre serveur pour envoyer une invitation par email à un futur utilisateur.
– Via l’interface web client, cliquer sur Créer un compte :
– Via l’extension de votre navigateur correctement configurée en mode auto-hébergé (1), cliquez sur Créer un compte (2):
– Via le client Desktop, cliquer sur Créer un compte :
Bonne installation