{"id":401,"date":"2021-05-10T10:42:00","date_gmt":"2021-05-10T08:42:00","guid":{"rendered":"https:\/\/www.webdot.fr\/blog\/?p=401"},"modified":"2021-05-10T11:24:37","modified_gmt":"2021-05-10T09:24:37","slug":"installation-de-bitwarden-sur-mon-nas-asustor","status":"publish","type":"post","link":"https:\/\/www.webdot.fr\/blog\/2021\/05\/installation-de-bitwarden-sur-mon-nas-asustor\/","title":{"rendered":"Installation de Vaultwarden sur NAS Asustor"},"content":{"rendered":"\n<p><strong>Edit<\/strong> &#8211; Bitwarden_rs est mort, vive Vaultwarden !<\/p>\n\n\n\n<p>Le talentueux concepteur de bitwarden_rs a d\u00e9cid\u00e9 de renommer son logiciel Rust. Ce qui me conduit \u00e0 r\u00e9\u00e9diter ce post pour le mettre \u00e0 jour en cons\u00e9quence. En m\u00eame temps il n&rsquo;y a pas grand chose \u00e0 faire \ud83d\ude42 .<\/p>\n\n\n\n<p>Encore une fois, c&rsquo;est souvent compliqu\u00e9 d&rsquo;utiliser les packages d&rsquo;Asustor. Pour le cas pr\u00e9sent, si on installe la version \u00ab\u00a0MariaDB\u00a0\u00bb de Bitwarden, le package installe en fait deux containers, le premier pour Bitwarden, et le deuxi\u00e8me pour le serveur MariaDB que le container pr\u00e9c\u00e9dent va utiliser. Pourquoi n&rsquo;avoir pas utilis\u00e9 MariaDB qu&rsquo;on peut installer avec un package ind\u00e9pendant sur le NAS ? Bon, effectivement, si on ne veut pas utiliser MariaDB pour autre chose sur le NAS, cela se con\u00e7oit. Cependant :<\/p>\n\n\n\n<ol><li>Il ne doit pas y avoir beaucoup de NAS sur lesquels les utilisateurs n&rsquo;utilisent pas MariaDB pour autre chose que pour Bitwarden.<\/li><li>Ils pourraient au moins laisser le choix du serveur de base de donn\u00e9es.<\/li><li>Le logiciel au mois de mai 2021 a chang\u00e9 de nom ==&gt; Vaultwarden.<\/li><\/ol>\n\n\n\n<p>Bref, comme pour Nextcloud, j&rsquo;ai abandonn\u00e9 la version Asustor pour utiliser le container officiel sur Docker Hub de Bitwarden, version MySQL\/MariaDB. Cette version, comme la grande majorit\u00e9 de ce que vous pourrez trouvez sur internet, que ce soit sous la forme Docker ou autre, est la version <a href=\"https:\/\/github.com\/dani-garcia\/bitwarden_rs\/wiki\">RUST<\/a> de Bitwarden, commun\u00e9ment nomm\u00e9e <em>bitwarden_rs.<\/em> Elle est immens\u00e9ment plus simple \u00e0 installer via Docker qu&rsquo;\u00e0 compiler soi-m\u00eame, je l&rsquo;ai fait une fois sur un Odroid N2, c&rsquo;est un enfer : complexe et tr\u00e8s long \u00e0 la compilation. Alors quand il faut upgrader de la version 1.16 \u00e0 la version 1.17, arghh&#8230;. D&rsquo;un autre c\u00f4t\u00e9, heureusement que ce portage Rust existe, car la version \u00ab\u00a0classique\u00a0\u00bb de Bitwarden n\u00e9cessite 4 ou 5 docker pour fonctionner&#8230; et bien plus de ressources mat\u00e9rielles.<\/p>\n\n\n\n<p>De plus, Bitwarden_rs s&rsquo;appelle maintenant Vaultwarden.<\/p>\n\n\n\n<p>J&rsquo;ai tout d&rsquo;abord cr\u00e9\u00e9 une base \u00ab\u00a0bitwarden\u00a0\u00bb sur le serveur MariaDB du NAS (le principal, qui n&rsquo;est pas en docker). J&rsquo;ai ensuite cr\u00e9\u00e9 un r\u00e9pertoire \/volume1\/Docker\/Vaultwarden dans lequel j&rsquo;ai install\u00e9 le fichier suivant : run_vw, et qui contient le code suivant (r\u00e9cup\u00e9r\u00e9 sur Docker Hub) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d --name Vaultwarden --net bridge \\\n  -v \/volume1\/Docker\/Vaultwarden\/bw-data\/:\/data \\\n  -p 32301:80 \\\n  -e RUST_BACKTRACE=1 -e DATABASE_URL='mysql:\/\/adm_bw:passwd@&lt;ip_du_serveur_mysql&gt;\/bitwarden' \\\n  -e ADMIN_TOKEN=&lt;some_random_token_as_per_above_explanation&gt; \\\n  -e ENABLE_DB_WAL='false' vaultwarden\/server<\/code><\/pre>\n\n\n\n<p>Le token est une longue chaine de caract\u00e8re permettant d&rsquo;acc\u00e9der au mode admin. Voir la doc de Vaultwarden pour plus d&rsquo;explications \ud83d\ude42 . On atteint Bitwarden, qui tourne sur le port 80 dans le container, par le port 32301 du NAS. Notez la quatri\u00e8me ligne qui permet d&rsquo;acc\u00e9der \u00e0 la base bitwarden sur le serveur MySQL du NAS. <\/p>\n\n\n\n<p>Au niveau du serveur MySQL, il faut donner les \u00ab\u00a0GRANTS\u00a0\u00bb \u00e0 l&rsquo;utilisateur adm_bw pour l&rsquo;adresse IP correspondant \u00e0 celle du container de Bitwarden (qu&rsquo;on trouve dans Portainer par exemple comme ci-dessous). <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"992\" height=\"544\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/05\/image-4.png\" alt=\"\" class=\"wp-image-531\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/05\/image-4.png 992w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/05\/image-4-300x165.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/05\/image-4-768x421.png 768w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/05\/image-4-547x300.png 547w\" sizes=\"(max-width: 992px) 100vw, 992px\" \/><\/figure>\n\n\n\n<p>Personnellement je le fais \u00e0 partir de mon installation phpmyadmin, mais vous pouvez aussi utiliser les indications sur ce <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/dani-garcia\/bitwarden_rs\/wiki\/Using-the-MariaDB-%28MySQL%29-Backend\" target=\"_blank\">lien<\/a>.<\/p>\n\n\n\n<p>Un petit :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@astorus:\/volume1\/Bitwarden # chmod 755 run_vw<\/code><\/pre>\n\n\n\n<p>et en tapant <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@astorus:\/volume1\/Bitwarden # .\/run_vw<\/code><\/pre>\n\n\n\n<p>On cr\u00e9e une image et un container de nom Vaultwarden qui se connecte \u00e0 la base bitwarden d\u00e9clar\u00e9e sur le serveur MySQL, et qui g\u00e9n\u00e8re automatiquement toutes les tables n\u00e9cessaires, il n&rsquo;y a rien \u00e0 faire de ce c\u00f4t\u00e9.<\/p>\n\n\n\n<p>Et finalement, une fois que Vaultwarden est lanc\u00e9 (http:\/\/astorus:32301), on aboutit \u00e0 la page d&rsquo;accueil.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"685\" height=\"576\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/03\/bitw.png\" alt=\"\" class=\"wp-image-364\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/03\/bitw.png 685w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/03\/bitw-300x252.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/03\/bitw-357x300.png 357w\" sizes=\"(max-width: 685px) 100vw, 685px\" \/><\/figure><\/div>\n\n\n\n<p>\u00c9videmment, j&rsquo;ai ajout\u00e9 \u00e0 Traefik le code qu&rsquo;il fallait pour faire du reverse proxy sur cette page et l&rsquo;atteindre en https avec un lien standard (https:\/\/myvault.webdot.fr par exemple). Voir mon post relatif \u00e0 l&rsquo;installation de Traefik pour cette partie (indispensable).<\/p>\n\n\n\n<p>Apr\u00e8s avoir utilis\u00e9 plusieurs ann\u00e9es Keepass, je suis pass\u00e9 depuis 1 an et quelques mois \u00e0 Bit\/Vaultwarden et je ne le regrette pas. J&rsquo;y ai acc\u00e8s depuis n&rsquo;importe quelle application Linux, Windows, Android, ou Web.<\/p>\n\n\n\n<p>Il semblerait que par d\u00e9faut apr\u00e8s installation, tout le monde puisse s&rsquo;enregistrer, ce qui n&rsquo;est pas n\u00e9cessairement ce que vous souhaitez. Pour corriger ceci, juste apr\u00e8s l&rsquo;installation, il faut aller dans la partie \u00ab\u00a0Admin\u00a0\u00bb de Vaultwarden : https:\/\/vault.monsite.com\/admin. Dans cette zone, vous pouvez configurer pas mal de choses, et en particulier la configuration qui permet \u00e0 Vaultwarden d&rsquo;envoyer des emails pour les inscriptions par exemple, ou pour r\u00e9cup\u00e9rer un mot de passe \u00e9gar\u00e9 (le comble pour une telle application vous en conviendrez \ud83d\ude42 ) : <em>SMTP Email Settings<\/em>.<\/p>\n\n\n\n<p>Revenons \u00e0 nos moutons. Le token demand\u00e9 \u00e0 cet endroit, que vous avez configur\u00e9 dans le fichier de d\u00e9marrage du docker (cf. ci-dessus), vous pouvez le retrouver dans l&rsquo;interface Portainer, au niveau des \u00ab\u00a0Portainer details\u00a0\u00bb, dans la variable d&rsquo;environnement ADMIN_TOKEN :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"392\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1-1024x392.png\" alt=\"\" class=\"wp-image-446\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1-1024x392.png 1024w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1-300x115.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1-768x294.png 768w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1-590x226.png 590w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/04\/image-1.png 1101w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Une fois que vous \u00eates arriv\u00e9s dans cette partie Admin de Vaultwarden, il faut v\u00e9rifier la partie \u00ab\u00a0General Settings\u00a0\u00bb, l&rsquo;option \u00ab\u00a0Allow new signups\u00a0\u00bb doit \u00eatre fix\u00e9e \u00e0 \u00ab\u00a0True\u00a0\u00bb par d\u00e9faut. <strong>Il faut d\u00e9sactiver cette option si elle la case est activ\u00e9e !<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Edit &#8211; Bitwarden_rs est mort, vive Vaultwarden ! Le talentueux concepteur de bitwarden_rs a d\u00e9cid\u00e9 de renommer son logiciel Rust. Ce qui me conduit \u00e0 r\u00e9\u00e9diter ce post pour le mettre \u00e0 jour en cons\u00e9quence. &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/401"}],"collection":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/comments?post=401"}],"version-history":[{"count":19,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/401\/revisions"}],"predecessor-version":[{"id":534,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/401\/revisions\/534"}],"wp:attachment":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/media?parent=401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/categories?post=401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/tags?post=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}