Projet

Général

Profil

Vaultwarden(bitwarden) » Historique » Révision 18

Révision 17 (johan.le.baut, 13/10/2022 13:50) → Révision 18/31 (johan.le.baut, 13/10/2022 14:00)

# Vaultwarden (bitwarden) 

 {{toc}} 


 Bitwarden est un gestionnaire de mot de passes. 

 Vaultwarden est la version Rust de Biwarden: https://github.com/dani-garcia/vaultwarden 

 Il est disponible sur: https://coffre.aquilenet.fr/ 

 Pour l'admin: https://coffre.aquilenet.fr/admin 

 Server: harpocrates 





 ## Configuration 

 ### Accès utilisateurs 

 On autorise l'inscription à tous les utilisateurs ayant un mail en **@aquilenet.fr** 

 Pour valider son inscription un utilisateur doit comfirmer via l'email reçu de vaultwarden. 
 Il est possible d'inviter des gens extérieurs via la page d'admin uniquement. 

 ### Accès admin 

 On accède à la page d'admin via https://coffre.aquilenet.fr/admin 

 Un token est demandé, il est visible sur Harpocrates dans /var/www/bitwarden/docker-compose.yaml 

 On ajoute en sécurité supplémentaire une Basic Auth dans Nginx, le fichier de conf est: `/var/www/bitwarden/.htpasswd` 
 Il contient les admins de Harpocrates avec le même hash password du /etc/shadow 

 ## Installation 


 Sur le serveur Harpocrates, on installe le service vaultwarden, avec un reverse proxy nginx. 

 ### installation du service 

 On peut le lancer via docker ou builder manuellement le service. 

 En ce moment la méthode manuelle est utilisée. 

 #### via docker et docker compose 

 1. Créer le dossier pour la data du service: 
 ``` 
 mkdir -p /srv/vw-data 
 chown -R bitwarden:bitwarden /srv/vw-data 
 ``` 

 2. On décrit le container docker à lancer via docker compose 


 `cat /var/www/bitwarden/docker-compose.yaml` 
 ```yaml 
 version: '3' 

 services: 
   vaultwarden: 
     image: vaultwarden/server:1.25.2 
     container_name: vaultwarden 
     restart: always 
     user: 1000:1000 # bitwarden user 
     ports: 
       - "127.0.0.1:8080:80"     # port app 
       - "127.0.0.1:3012:3012" # port web socket 
     environment: 
       ADMIN_TOKEN: <Admin token> # token to connect to admin 
       WEBSOCKET_ENABLED: "true"    # Enable WebSocket notifications. 
       SIGNUPS_DOMAINS_WHITELIST: aquilenet.fr # on autorise seulement le @aquilenet.fr 
       SIGNUPS_VERIFY: true 
       INVITATIONS_ALLOWED: false    # Les utilisateurs ne peuvent pas inviter des non inscrits (seulement admin) 
     volumes: 
       - /srv/vw-data:/data 

 ``` 
 Il est possible de configurer d'autre choses via la page admin 

 3. Une fois docker installé, pour démarrer en background: 
 `cd /var/www/bitwarden/ && docker compose up -d` 

 (4. Mise à jour) 

 Ouvrir `/var/www/bitwarden/docker-compose.yaml` 

 changer `image: vaultwarden/server:<nouvelle version>` 


 Restart: 
 ``` 
 cd /var/www/bitwarden/ 
 docker compose down # Service sera étteint 
 docker compose up -d --force-recreate 
 ``` 

 #### Sans docker (actuel): 

 Il faut compiler le service et le lancer dans un systemd: 

 Suivre: https://gist.github.com/heinoldenhuis/f8164f73e5bff048e76fb4fff2e824e1 

 Pour le build du 'web-vault', on peut utiliser dans bw_web_builds la cmd `make docker-extract`, il créera le dossier `docker_builds/web-vault` (pas besoin d'installer NodeJs de cette manière). 

 Install actuelle: 
 - systemd file: `/etc/systemd/system/vaultwarden.service` 
 - vaultwarden: 
   - sources dir: /var/www/bitwarden/vaultwarden 
   - binaire: /var/www/bitwarden/vaultwarden/target/release/vaultwarden 
   - data dir: /var/www/bitwarden/vaultwarden/target/release/data 
   - env file (config): /var/www/bitwarden/vaultwarden/target/release/.env 
     - config:  

 ``` 
 WEB_VAULT_FOLDER=/var/www/bitwarden/bw_web_builds/docker_builds/web-vault 
 WEBSOCKET_ENABLED=true 
 SIGNUPS_VERIFY=true 
 SIGNUPS_DOMAINS_WHITELIST=aquilenet.fr 
 ADMIN_TOKEN=<admin token> 
 INVITATIONS_ALLOWED=false 
 ROCKET_ADDRESS=127.0.0.1 
 ``` 
 - web-vault 
   - sources dir: /var/www/bitwarden/bw_web_builds/ 
   - build dir: /var/www/bitwarden/bw_web_builds/docker_builds/web-vault 

 ### Reverse proxy Nginx 

 Le site est configuré dans `/etc/nginx/sites-available/coffre.aquilenet.fr.conf` 

 Les certificats sont géré par certbot (cf `sudo certbot certificates`) 

 ### Config SMTP 

 Il faut configurer une connexion SMTP pour que vaultwarden puisse envoyer des mails. 

 Sur une VM vierge:  
 - enlever exim4 
 - installer postfix 
 - enlever params d'authent pour envoyer sur localhost:25 

 Conf vaultwarden SMTP: 
 ``` 
   "smtp_host": "127.0.0.1", 
   "smtp_security": "off", 
   "smtp_port": 25, 
   "smtp_from": "vaultwarden@aquilenet.fr", 
   "smtp_from_name": "Vaultwarden (Ne pas répondre)", 
   "smtp_timeout": 15, 
   "helo_name": "coffre.aquilenet.fr", 
   "smtp_accept_invalid_certs": false, 
   "smtp_accept_invalid_hostnames": false, 
 ```