VaultWarden est le serveur non officiel compatible avec Bitwarden écrit en Rust à héberger soit même. Il est entièrement compatible avec toutes les applications de Bitwarden. Pour installer, vous devez au préalable vous créer un compte Hetzner et posséder un nom de domaine. Ceci fait, allons-y.
Votre compte Hetzner créé, connectez-vous au service cloud.
Créer votre projet si ce n'est déjà fait. Un projet regroupe un ensemble de serveurs.
Si vous éprouvez des difficultés avec les clés SSH sur Hetzner, peut-être bien que cet article pourrait vous aider : Se connecter en SSH sur un server cloud Hetzner.
Sélectionner le type de serveur que vous désirez en fonction de votre budget et de la puissance que vous désirez.
La clé SSH que vous avez renseigné précédemment devrait être sélectionné par défaut.
Nommer votre nouveau serveur.
adduser master
usermod -aG sudo master
su - master
mkdir vaultwarden
cd vaultwarden
mkdir vw-data
En externalisant ce dossier de votre docker, vous pourrez très facilement sauvegarder / migrer les données (par accès SFTP par exemple).
sudo apt update
sudo apt upgrade
sudo apt install docker-compose
Installer Caddy en suivant les instructions sur le site : https://caddyserver.com/docs/install#debian-ubuntu-raspbian
Créer le fichier docker-compose.yml
sudo nano docker-compose.yml
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
DOMAIN: "https://vault.example.com" # Your domain; vaultwarden needs to know it's https to work properly with attachments
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- 8080:80 # Needed for the ACME HTTP-01 challenge.
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-config:/config
- ./caddy-data:/data
environment:
DOMAIN: "https://vault.example.com" # votre nom de domaine
EMAIL: "[email protected]" # L'adresse électronique à utiliser pour l'inscription à l'ACME.
LOG_FILE: "/data/access.log"
sudo nano Caddyfile
# Uncomment this in addition with the import admin_redir statement allow access to the admin interface only from local networks
# (admin_redir) {
# @admin {
# path /admin*
# not remote_ip private_ranges
# }
# redir @admin /
# }
{$DOMAIN}:443 {
log {
level INFO
output file {$LOG_FILE} {
roll_size 10MB
roll_keep 10
}
}
# Uncomment this if you want to get a cert via ACME (Let's Encrypt or ZeroSSL).
tls {$EMAIL}
# Or uncomment this if you're providing your own cert. You would also use this option
# if you're running behind Cloudflare.
# tls {$SSL_CERT_PATH} {$SSL_KEY_PATH}
# This setting may have compatibility issues with some browsers
# (e.g., attachment downloading on Firefox). Try disabling this
# if you encounter issues.
encode gzip
# Uncomment to improve security (WARNING: only use if you understand the implications!)
# If you want to use FIDO2 WebAuthn, set X-Frame-Options to "SAMEORIGIN" or the Browser will block those requests
# header / {
# # Enable HTTP Strict Transport Security (HSTS)
# Strict-Transport-Security "max-age=31536000;"
# # Disable cross-site filter (XSS)
# X-XSS-Protection "0"
# # Disallow the site to be rendered within a frame (clickjacking protection)
# X-Frame-Options "DENY"
# # Prevent search engines from indexing (optional)
# X-Robots-Tag "noindex, nofollow"
# # Disallow sniffing of X-Content-Type-Options
# X-Content-Type-Options "nosniff"
# # Server name removing
# -Server
# # Remove X-Powered-By though this shouldn't be an issue, better opsec to remove
# -X-Powered-By
# # Remove Last-Modified because etag is the same and is as effective
# -Last-Modified
# }
# Uncomment to allow access to the admin interface only from local networks
# import admin_redir
# Proxy everything to Rocket
# if located at a sub-path the reverse_proxy line will look like:
# reverse_proxy /subpath/* <SERVER>:80
reverse_proxy vaultwarden:80 {
# Send the true remote IP to Rocket, so that Vaultwarden can put this in the
# log, so that fail2ban can ban the correct IP.
header_up X-Real-IP {remote_host}
# If you use Cloudflare proxying, replace remote_host with http.request.header.Cf-Connecting-Ip
# See https://developers.cloudflare.com/support/troubleshooting/restoring-visitor-ips/restoring-original-visitor-ips/
# and https://caddy.community/t/forward-auth-copy-headers-value-not-replaced/16998/4
}
}
Source : https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples
sudo docker compose up -d
Votre gestionnaire de mot de passe devrait être actif.
su - master
cd vaultwarden
sudo docker compose down
sudo nano Caddyfile
/!\ A noter, j'ai mis à jour la configuration pour la version 1.3.0 et plus. Le reverse proxy a été simplifié :
https://github.com/dani-garcia/vaultwarden/issues/4024
sudo docker compose pull
sudo apt update
sudo apt upgrade
sudo docker compose up -d
Enjoy ^^