Installation de Vaultwarden sur NAS Asustor

Installation de Vaultwarden sur NAS Asustor

Edit – Bitwarden_rs est mort, vive Vaultwarden !

Le talentueux concepteur de bitwarden_rs a décidé de renommer son logiciel Rust. Ce qui me conduit à rééditer ce post pour le mettre à jour en conséquence. En même temps il n’y a pas grand chose à faire 🙂 .

Encore une fois, c’est souvent compliqué d’utiliser les packages d’Asustor. Pour le cas présent, si on installe la version « MariaDB » de Bitwarden, le package installe en fait deux containers, le premier pour Bitwarden, et le deuxième pour le serveur MariaDB que le container précédent va utiliser. Pourquoi n’avoir pas utilisé MariaDB qu’on peut installer avec un package indépendant sur le NAS ? Bon, effectivement, si on ne veut pas utiliser MariaDB pour autre chose sur le NAS, cela se conçoit. Cependant :

  1. Il ne doit pas y avoir beaucoup de NAS sur lesquels les utilisateurs n’utilisent pas MariaDB pour autre chose que pour Bitwarden.
  2. Ils pourraient au moins laisser le choix du serveur de base de données.
  3. Le logiciel au mois de mai 2021 a changé de nom ==> Vaultwarden.

Bref, comme pour Nextcloud, j’ai abandonné la version Asustor pour utiliser le container officiel sur Docker Hub de Bitwarden, version MySQL/MariaDB. Cette version, comme la grande majorité de ce que vous pourrez trouvez sur internet, que ce soit sous la forme Docker ou autre, est la version RUST de Bitwarden, communément nommée bitwarden_rs. Elle est immensément plus simple à installer via Docker qu’à compiler soi-même, je l’ai fait une fois sur un Odroid N2, c’est un enfer : complexe et très long à la compilation. Alors quand il faut upgrader de la version 1.16 à la version 1.17, arghh…. D’un autre côté, heureusement que ce portage Rust existe, car la version « classique » de Bitwarden nécessite 4 ou 5 docker pour fonctionner… et bien plus de ressources matérielles.

De plus, Bitwarden_rs s’appelle maintenant Vaultwarden.

J’ai tout d’abord créé une base « bitwarden » sur le serveur MariaDB du NAS (le principal, qui n’est pas en docker). J’ai ensuite créé un répertoire /volume1/Docker/Vaultwarden dans lequel j’ai installé le fichier suivant : run_vw, et qui contient le code suivant (récupéré sur Docker Hub) :

docker run -d --name Vaultwarden --net bridge \
  -v /volume1/Docker/Vaultwarden/bw-data/:/data \
  -p 32301:80 \
  -e RUST_BACKTRACE=1 -e DATABASE_URL='mysql://adm_bw:passwd@<ip_du_serveur_mysql>/bitwarden' \
  -e ADMIN_TOKEN=<some_random_token_as_per_above_explanation> \
  -e ENABLE_DB_WAL='false' vaultwarden/server

Le token est une longue chaine de caractère permettant d’accéder au mode admin. Voir la doc de Vaultwarden pour plus d’explications 🙂 . On atteint Bitwarden, qui tourne sur le port 80 dans le container, par le port 32301 du NAS. Notez la quatrième ligne qui permet d’accéder à la base bitwarden sur le serveur MySQL du NAS.

Au niveau du serveur MySQL, il faut donner les « GRANTS » à l’utilisateur adm_bw pour l’adresse IP correspondant à celle du container de Bitwarden (qu’on trouve dans Portainer par exemple comme ci-dessous).

Personnellement je le fais à partir de mon installation phpmyadmin, mais vous pouvez aussi utiliser les indications sur ce lien.

Un petit :

root@astorus:/volume1/Bitwarden # chmod 755 run_vw

et en tapant

root@astorus:/volume1/Bitwarden # ./run_vw

On crée une image et un container de nom Vaultwarden qui se connecte à la base bitwarden déclarée sur le serveur MySQL, et qui génère automatiquement toutes les tables nécessaires, il n’y a rien à faire de ce côté.

Et finalement, une fois que Vaultwarden est lancé (http://astorus:32301), on aboutit à la page d’accueil.

Évidemment, j’ai ajouté à Traefik le code qu’il fallait pour faire du reverse proxy sur cette page et l’atteindre en https avec un lien standard (https://myvault.webdot.fr par exemple). Voir mon post relatif à l’installation de Traefik pour cette partie (indispensable).

Après avoir utilisé plusieurs années Keepass, je suis passé depuis 1 an et quelques mois à Bit/Vaultwarden et je ne le regrette pas. J’y ai accès depuis n’importe quelle application Linux, Windows, Android, ou Web.

Il semblerait que par défaut après installation, tout le monde puisse s’enregistrer, ce qui n’est pas nécessairement ce que vous souhaitez. Pour corriger ceci, juste après l’installation, il faut aller dans la partie « Admin » de Vaultwarden : https://vault.monsite.com/admin. Dans cette zone, vous pouvez configurer pas mal de choses, et en particulier la configuration qui permet à Vaultwarden d’envoyer des emails pour les inscriptions par exemple, ou pour récupérer un mot de passe égaré (le comble pour une telle application vous en conviendrez 🙂 ) : SMTP Email Settings.

Revenons à nos moutons. Le token demandé à cet endroit, que vous avez configuré dans le fichier de démarrage du docker (cf. ci-dessus), vous pouvez le retrouver dans l’interface Portainer, au niveau des « Portainer details », dans la variable d’environnement ADMIN_TOKEN :

Une fois que vous êtes arrivés dans cette partie Admin de Vaultwarden, il faut vérifier la partie « General Settings », l’option « Allow new signups » doit être fixée à « True » par défaut. Il faut désactiver cette option si elle la case est activée !

8 Comments

    1. Oops ! Merci ! J’avoue n’avoir pas regardé ça. L’option « Allow new signups » dans « General Settings » (dans la zone Bitwarden Admin) est à « True » par défaut, ça me paraît un peu limite que cela soit ainsi. C’est corrigé, merci encore. Du coup je vais ajouter un mot à ce sujet sur l’article, histoire que d’autres personnes ne se fassent pas piéger.

    1. Effectivement c’est bien bitwarden_rs (‘l’image docker est bitwardenrs/server-mysql comme on peut le voir dans la ligne de commande pour démarrer le docker). Je vais modifier le texte pour préciser ça.

        1. Et oui mais maintenant faut que je remodifie mon post grrr…
          En même temps, c’est pas si pire, ça se limite (presque) à remplacer « bitwardenrs/server-mysql » par « vaultwarden/server » dans le script de lancement du docker 😀

Répondre à webmail Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *