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 !

10 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 😀

  1. amonbophis

    Bonjour

    article intéressant.
    je voudrais installer vault warden sur mon n’as pour ne plus dépendre de 1password.
    mais quelle version installer : vaultwarden ou la version mariaDB?

    1. Désolé de répondre aussi tardivement, j’ai eu quelques priorités ces deux derniers mois. Si tu n’as pas trouvé de réponse à ta question, voilà quelques éléments.
      En fait Vaultwarden peut fonctionner sur une base de données SQLite3. Cependant le package d’AppCentral (en tous cas à l’époque) proposait de le faire tourner sur une instance de MariaDB ou MYSQL en docker, donc en gros on faisait tourner un docker « juste » pour Bit/Vaultwarden. Ce que j’ai proposé dans ce post c’est d’utiliser l’instance de MariaDB native du NAS pour que le docker Vaultwarden se connecte dessus pour éviter ce docker supplémentaire inutile.
      Donc en conclusion :
      1) tu peux faire tourner juste Vaultwarden sur SQLite3, là c’est le plus simple (mais dans ce cas il faut installer toi-même le docker et ne pas passer par AppCentral)
      2) Installer le package d’AppCentral et perdre un peu de RAM pour l’instance de MySQL qui ne tournera QUE pour Vaultwarden
      3) Utiliser le post ci-dessus pour installer Vaultwarden qui se connectera à l’instance native MariaDB du NAS.

Laisser un commentaire

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