{"id":519,"date":"2021-06-17T13:18:52","date_gmt":"2021-06-17T11:18:52","guid":{"rendered":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/?p=519"},"modified":"2021-09-29T08:05:01","modified_gmt":"2021-09-29T06:05:01","slug":"bitwarden-coffre-fort-numerique-auto-heberge","status":"publish","type":"post","link":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/bitwarden-coffre-fort-numerique-auto-heberge\/","title":{"rendered":"bitwarden &#8211; coffre fort num\u00e9rique auto h\u00e9berg\u00e9"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2021\/08\/bitwarden.png\" alt=\"bitwarden\" \/><\/p>\n<p>Bitwarden est un gestionnaire de mots de passe freemium et open source sous licence AGPL. Il permet de g\u00e9n\u00e9rer et de conserver des mots de passe de mani\u00e8re s\u00e9curis\u00e9e. Ces \u00e9l\u00e9ments sont prot\u00e9g\u00e9s par un seul et unique mot de passe appel\u00e9 \u00ab mot de passe ma\u00eetre \u00bb. Il existe une alternative auto h\u00e9bergeable c&rsquo;est vaultwarden, une instance non officielle de Bitwarden. Ce tutoriel vous pr\u00e9sente l&rsquo;installation compl\u00e8te sur Debian 10.<\/p>\n<p><!--more--><\/p>\n<h2>Pr\u00e9-requis<\/h2>\n<pre><code>apt update\napt upgrade\napt install git nano curl wget htop pkg-config openssl libssl1.1 libssl-dev\napt install build-essential\n<\/code><\/pre>\n<h2>Installer Rust<\/h2>\n<p>Executer<\/p>\n<pre><code>curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | sh\n<\/code><\/pre>\n<p>Choisir<\/p>\n<pre><code>1) Proceed with installation (default)\n<\/code><\/pre>\n<p>Activer l&rsquo;environnement cargo sur votre compte utilisateur<\/p>\n<pre><code>source $HOME\/.cargo\/env\n<\/code><\/pre>\n<h2>Installer Node<\/h2>\n<p>Choisir votre m\u00e9thode d&rsquo;installation<\/p>\n<p>Manuelle :<\/p>\n<pre><code># mkdir \/opt\/node\n# cd \/opt\/node\n# wget https:\/\/nodejs.org\/dist\/latest-v11.x\/node-v11.15.0-linux-x64.tar.xz\n# tar xJvf node-v11.15.0-linux-x64.tar.xz\n# ln -s \/opt\/node\/node-v11.15.0-linux-x64 \/opt\/node\/current\n<\/code><\/pre>\n<pre><code># echo 'export PATH=\/opt\/node\/bin:$PATH' &amp;gt;&amp;gt; ~\/.bashrc\n# export PATH=\/opt\/node\/bin:$PATH\n# which npm\n\/opt\/node\/current\/bin\/npm\n# npm i npm@latest -g\n<\/code><\/pre>\n<p>Automatique via package debian (<a href=\"\">https:\/\/github.com\/nodesource\/distributions#debinstall<\/a>)<\/p>\n<pre><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_12.x | bash -\napt-get install -y nodejs\n<\/code><\/pre>\n<h2>Compiler bitwarden<\/h2>\n<p>Pr\u00e9-requis si vous voulez utiliser un serveur mysql \u00e0 la place du fichier nosql<\/p>\n<pre><code># apt install mariadb-server mariadb-client default-libmysqlclient-dev\n# systemctl start mariadb\n# mysql_secure_installation\n\n# mysql -u root -p\n\nuse mysql;\nupdate user set plugin='' where User='root';\nflush privileges;\nquit\n<\/code><\/pre>\n<pre><code># mariadb -u root -p\nEnter password:\nERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)\n<\/code><\/pre>\n<p>Depuis le passage en Debian 10, le fichier \/etc\/mysql\/debian.cnf a bascul\u00e9 sur le compte root sans MDP. Des erreurs vont apparaitront durant les scripts de maintenance de MariaDB (\/var\/log\/syslog)<\/p>\n<pre><code># more \/etc\/mysql\/debian.cnf\n...\nuser     = root\npassword =\n...\n[mysql_upgrade]\n...\nuser     = root\npassword =\n...\n<\/code><\/pre>\n<p>Remplacement du compte <em>root<\/em> par <em>debian-sys-maint<\/em> et ajout d&rsquo;un mot de passe dans le fichier \/etc\/mysql\/debian.cnf<\/p>\n<pre><code>sed -i 's\/root\/debian-sys-maint\/g' \/etc\/mysql\/debian.cnf\nsed -i 's\/password =\/password = cBHWZQ8D9twjFwkHjcoVFC9cG\/g' \/etc\/mysql\/debian.cnf\n<\/code><\/pre>\n<p>Le compte et le mdp pr\u00e9c\u00e9demment renseign\u00e9 dans le fichier \/etc\/mysql\/debian.cnf vont vous permettre de cr\u00e9er le compte dans MariaDB.<\/p>\n<pre><code># mariadb -u root -p\nCREATE USER 'debian-sys-maint'@'localhost' IDENTIFIED BY 'cBHWZQ8D9twjFwkHjcoVFC9cG';\nGRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost'  WITH GRANT OPTION;\nflush privileges;\nquit\n<\/code><\/pre>\n<p>Vous pouvez profiter du param\u00e9trage de mysql pour cr\u00e9er la base et les identifiants n\u00e9cessaire \u00e0 Bitwarden<\/p>\n<pre><code>mariadb -u root -p\nCREATE DATABASE vaultwarden CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'vaultwarden'@'localhost' IDENTIFIED BY 'Bb8yDAvyKSCJ3CvdZAYAp9ZKp';\nGRANT ALL ON `vaultwarden`.* TO 'vaultwarden'@'localhost';\nFLUSH PRIVILEGES;\n<\/code><\/pre>\n<p>Afin de proc\u00e9der \u00e0 l&rsquo;installation, il est judicieux de v\u00e9rifier les derni\u00e8res versions disponible \u00e0 cette adresse : <a href=\"https:\/\/github.com\/dani-garcia\/vaultwarden\/releases\">https:\/\/github.com\/dani-garcia\/vaultwarden\/releases<\/a><\/p>\n<p>D\u00e9buter l&rsquo;installation de Bitwarden<\/p>\n<pre><code># mkdir \/opt\/bitwarden\n\n# cd \/opt\/bitwarden\n\n# wget https:\/\/github.com\/dani-garcia\/vaultwarden\/archive\/refs\/tags\/1.22.2.tar.gz\n\n# tar xvf 1.22.2.tar.gz\n\n# cd vaultwarden-1.22.2\n\n# echo \"Si vous souhaitez compiler pour SQLITE, MYSQL, POSTGRESQL\n# cargo build --features sqlite,mysql,postgresql --release\n\n# echo \"Si vous souhaitez compiler pour SQLITE et MYSQL\n# cargo build --features sqlite,mysql --release\n\n# file target\/release\/vaultwarden\ntarget\/release\/vaultwarden: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter \/lib64\/ld-linux-x86-64.so.2, for GNU\/Linux 3.2.0, BuildID[sha1]=ef7d7d94c7f0d950e8da317bf4f0c81762f7aaaa, with debug_info, not stripped\n\n# echo \"Le binaire est stock\u00e9 dans le dossier target\/release\/vaultwarden\"\n# cp target\/release\/vaultwarden \/usr\/local\/bin\/bitwarden\n\n# useradd -m -d \/var\/lib\/bitwarden bitwarden\n# chmod 750 \/usr\/local\/bin\/bitwarden\n# chown root:bitwarden \/usr\/local\/bin\/bitwarden\n# mkdir -p \/var\/lib\/bitwarden\/{data,log}\n# chown -R bitwarden:bitwarden \/var\/lib\/bitwarden\/\n# chmod -R 750 \/var\/lib\/bitwarden\/\n# chown -R root:bitwarden \/etc\/bitwarden\/\n# chmod 770 \/etc\/bitwarden\/\n\n<\/code><\/pre>\n<h2>Interface web vault<\/h2>\n<p>Afin de proc\u00e9der \u00e0 l&rsquo;installation, il est judicieux de v\u00e9rifier les derni\u00e8res versions disponible \u00e0 cette adresse : https:\/\/github.com\/dani-garcia\/bw_web_builds\/releases<\/p>\n<pre><code>apt install apache2 apache2-bin\na2enmod ssl http2 proxy proxy_http2 proxy_http rewrite headers\n<\/code><\/pre>\n<p>Exemple de virtualhost<br \/>\n<code><\/code><\/p>\n<pre><code>&lt;VirtualHost *:443&gt;\nDocumentRoot \/var\/www\/vault\nServerAdmin postma&#115;&#116;&#101;&#114;&#64;&#109;&#111;&#x6e;&#x64;&#x6f;&#x6d;&#x61;&#x69;&#x6e;&#x65;&#x2e;&#x66;&#x72;\nServerName vault.mondomaine.fr\nProtocols h2 h2c http\/1.1\n\n&lt;If \"%{HTTP_HOST} != 'vault.mondomaine.fr'\"&gt;\n    Redirect \"\/\" \"https:\/\/vault.mondomaine.fr\"\n&lt;\/If&gt;\n\nSSLEngine on\n\n &lt;Directory \/&gt;\n    Options FollowSymLinks\n    AllowOverride None\n &lt;\/Directory&gt;\n\nProxyRequests     Off\nProxyPreserveHost On\nRequestHeader set X-Real-IP %{REMOTE_ADDR}s\n\nRewriteEngine On\nRewriteCond %{HTTP:Upgrade} =websocket [NC]\nRewriteRule \/notifications\/hub(.*) ws:\/\/127.0.0.1:3012\/ [P,L]\nProxyPass \/ http:\/\/127.0.0.1:8000\/\n\nLogLevel warn\nErrorLog ${APACHE_LOG_DIR}\/error-vault.mondomaine.fr.log\nCustomLog ${APACHE_LOG_DIR}\/access-vault.mondomaine.fr.log combined\n&lt;\/VirtualHost&gt;\n<\/code><\/pre>\n<pre><code>cd \/var\/www\/\nmv vault vault.old\nwget https:\/\/github.com\/dani-garcia\/bw_web_builds\/releases\/download\/v2.21.1\/bw_web_v2.21.1.tar.gz\ntar xvfz bw_web_v2.21.1.tar.gz\nmv web-vault vault\nrm bw_web_v2.21.1.tar.gz\nchown -R www-data:www-data \/var\/www\/vault\/\n<\/code><\/pre>\n<h2>Configuration<\/h2>\n<p>La compilation maintenant termin\u00e9, il faut passer \u00e0 la configuration :<\/p>\n<pre><code>mkdir \/etc\/bitwarden\/\n\ncp \/opt\/bitwarden\/vaultwarden-1.22.2\/.env.template \/etc\/bitwarden\/bitwarden.conf\n\nsed -i 's\/'\"# ADMIN_TOKEN=.*\"'\/'\"ADMIN_TOKEN=$(tr -cd '[:alnum:]' &lt; \/dev\/urandom | fold -w 49 | head -n 1)\"'\/' \/etc\/bitwarden\/bitwarden.conf\n\ngrep ^ADMIN_TOKEN \/etc\/bitwarden\/bitwarden.conf\nADMIN_TOKEN=X3yWhAMJhPJu5ISijayKUNBHyNoWW7ZjISXTILtwjdIsVrXmI\n\nsed -i \"s\/# WEB_VAULT_FOLDER=web-vault\/WEB_VAULT_FOLDER=\\\/var\\\/www\\\/vault\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# ROCKET_ADDRESS=0\\.0\\.0\\.0.*\/ROCKET_ADDRESS=127.0.0.1\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# WEBSOCKET_ENABLED=false\/WEBSOCKET_ENABLED=true\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# WEBSOCKET_ADDRESS=0.0.0.0\/WEBSOCKET_ADDRESS=127.0.0.1\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# DOMAIN=.*\/DOMAIN=https:\\\/\\\/vault.mondomain.fr\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# LOG_FILE=.*\/LOG_FILE=\\\/var\\\/lib\\\/bitwarden\\\/log\\\/bitwarden.log\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# LOG_LEVEL=.*\/LOG_LEVEL=warn\/\" \/etc\/bitwarden\/bitwarden.conf\n\nsed -i \"s\/# DATA_FOLDER=data\/DATA_FOLDER=\\\/var\\\/lib\\\/bitwarden\\\/data\/\" \/etc\/bitwarden\/bitwarden.conf\n<\/code><\/pre>\n<p>Pour SQLITE<\/p>\n<pre><code>sed -i \"s\/# DATABASE_URL=data\\\/db.sqlite3\/DATABASE_URL=\\\/var\\\/lib\\\/bitwarden\\\/data\\\/db.sqlite3\/\" \/etc\/bitwarden\/bitwarden.conf\n<\/code><\/pre>\n<p>POUR MYSQL<\/p>\n<pre><code>sed -i \"s\/# DATABASE_URL=mysql:\\\/\\\/user:password@host[:port]\\\/database_name\\\/DATABASE_URL=mysql:\\\/\\\/vaultwarden:Bb8yDAvyKSCJ3CvdZAYAp9ZKp@localhost\\\/vaultwarden\" \/etc\/bitwarden\/bitwarden.conf\n<\/code><\/pre>\n<p>Cr\u00e9er le service bitwarden via systemd<\/p>\n<pre><code>vi \/etc\/systemd\/system\/bitwarden.service\n<\/code><\/pre>\n<pre><code>[Unit]\nDescription=Bitwarden RS server (Rust Edition)\nDocumentation=https:\/\/github.com\/dani-garcia\/vaultwarden\n\n# Only sqlite\nAfter=network.target\n\n# MariaDB\n# After=network.target mariadb.service\n# Requires=mariadb.service\n\n# Mysql\n# After=network.target mysqld.service\n# Requires=mysqld.service\n\n# PostgreSQL\n# After=network.target postgresql.service\n# Requires=postgresql.service\n\n[Service]\n# The user\/group bitwarden_rs is run under. \nUser=bitwarden\nGroup=bitwarden\n# The location of the .env file for configuration\nEnvironmentFile=\/etc\/bitwarden\/bitwarden.conf\n# The location of the compiled binary\nExecStart=\/usr\/local\/bin\/bitwarden\n# Set reasonable connection and process limits\nLimitNOFILE=65535\nLimitNPROC=64\n# Isolate bitwarden from the rest of the system\nPrivateTmp=true\nPrivateDevices=true\nProtectHome=true\nProtectSystem=strict\n# Only allow writes to the following directory and set it to the working directory (user and password data are stored here)\nWorkingDirectory=\/var\/lib\/bitwarden\nReadWriteDirectories=\/var\/lib\/bitwarden\n# Allow bitwarden to bind ports in the range of 0-1024\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nAmbientCapabilities=CAP_NET_BIND_SERVICE\n\n[Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n<p>Valider, v\u00e9rifier et lancer le daemon<\/p>\n<pre><code>systemctl daemon-reload\nsystemctl start bitwarden.service\nsystemctl enable bitwarden.service\nsystemctl status bitwarden.service\n<\/code><\/pre>\n<h1>Exemple pour connecter votre bitwarden en cli<\/h1>\n<p>Sur macOC installer le client bitwarden cli<\/p>\n<pre><code>brew install bitwarden-cli\n<\/code><\/pre>\n<p>Configurer votre site perso<\/p>\n<pre><code>$ bw config server https:\/\/vault.mondomaine.fr\nSaved setting `config`.\n<\/code><\/pre>\n<p>Il ne vous reste qu&rsquo;a vous logger<\/p>\n<pre><code>$ bw login\n? Email address: &#109;&#x6f;&#x69;&#64;&#x6d;&#x6f;n&#x64;&#x6f;m&#97;&#x69;n&#101;&#x2e;f&#114;\n? Master password: [hidden]\nYou are logged in!\n\nTo unlock your vault, set your session key to the `BW_SESSION` environment variable. ex:\n$ export BW_SESSION=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n&gt; $env:BW_SESSION=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n\nYou can also pass the session key to any command with the `--session` option. ex:\n$ bw list items --session xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n<\/code><\/pre>\n<h2>Peupler la base utilisateur Bitwarden via un Active Directory<\/h2>\n<p>J&rsquo;ai privil\u00e9gi\u00e9 de bloquer le domaine pour mon instance de Bitwarden, ainsi les utilisateurs cr\u00e9ent leur compte avec leur passphrase. Je n&rsquo;utilise donc pas cet ex\u00e9cutable mais j&rsquo;ai valid\u00e9 son fonctionnement.<\/p>\n<pre><code># cd \/opt\/bitwarden\n# git clone https:\/\/github.com\/ViViDboarder\/vaultwarden_ldap.git\n# cd vaultwarden_ldap\n# cp example.config.toml config.toml\n# cargo clean &amp;amp;&amp;amp; cargo build --release\n<\/code><\/pre>\n<h1>R\u00e9f\u00e9rences<\/h1>\n<ul>\n<li>\n<p><a href=\"https:\/\/illuad.fr\/2020\/06\/11\/install-a-bitwarden-rs-server.html\">https:\/\/illuad.fr\/2020\/06\/11\/install-a-bitwarden-rs-server.html<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitea.illuad.fr\/adrien\/vaultwarden-updater\">https:\/\/gitea.illuad.fr\/adrien\/vaultwarden-updater<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/leffler.tech\/2021\/02\/16\/bitwarden_rs-without-docker\/\">https:\/\/leffler.tech\/2021\/02\/16\/bitwarden_rs-without-docker\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gist.github.com\/tavinus\/59c314f4ccd70879db7f11074eacb6cc\">https:\/\/gist.github.com\/tavinus\/59c314f4ccd70879db7f11074eacb6cc<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/hub.docker.com\/r\/vividboarder\/bitwarden_rs_ldap\/dockerfile\">https:\/\/hub.docker.com\/r\/vividboarder\/bitwarden_rs_ldap\/dockerfile<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/forum.linuxos.ovh\/d\/47-ldap-pour-bitwarden-rs\">https:\/\/forum.linuxos.ovh\/d\/47-ldap-pour-bitwarden-rs<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/leffler.tech\/2021\/02\/16\/bitwarden_rs-without-docker\/\">https:\/\/leffler.tech\/2021\/02\/16\/bitwarden_rs-without-docker\/<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/fiat-tux.fr\/2019\/01\/14\/installer-un-serveur-bitwarden_rs\/\">https:\/\/fiat-tux.fr\/2019\/01\/14\/installer-un-serveur-bitwarden_rs\/<\/a><\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Bitwarden est un gestionnaire de mots de passe freemium et open source sous licence AGPL. Il permet de g\u00e9n\u00e9rer et de conserver des mots de passe de mani\u00e8re s\u00e9curis\u00e9e. Ces \u00e9l\u00e9ments sont prot\u00e9g\u00e9s par un seul et unique mot de passe appel\u00e9 \u00ab mot de passe ma\u00eetre \u00bb. Il existe une alternative auto h\u00e9bergeable c&rsquo;est [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[79,44],"tags":[9,73,70,72,74,71,36],"class_list":["post-519","post","type-post","status-publish","format-standard","hentry","category-bitwarden","category-web","tag-active-directory","tag-apache","tag-bitwarden","tag-coffre","tag-https","tag-mysql","tag-web"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paBEVZ-8n","jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/comments?post=519"}],"version-history":[{"count":14,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/519\/revisions"}],"predecessor-version":[{"id":533,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/519\/revisions\/533"}],"wp:attachment":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/media?parent=519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/categories?post=519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/tags?post=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}