Installer un serveur Bitwarden_rs

Avoir des mots de passe solides, c’est bien (et même indispensable), mais s’en souvenir… c’est dur. On serait tenté de tout enregistré dans son navigateur, avec un mot de passe maître pour stocker les mots de passe de façon chiffrée mais… Firefox par exemple a un système de chiffrement par mot de passe maître tout pourri.

Il existe un paquet de gestionnaire de mot de passe libre. Évacuons tous ceux basé sur KeePass ou ses successeurs : pour utiliser ses mots de passe sur un autre PC ou sur son téléphone, il faut synchroniser le fichier contenant les mots de passe et s’il y a un souci de synchro et que le fichier se retrouve corrompu… paf, pastèque !.

J’ai essayé Passbolt ou encore l’application Passman de Nextcloud mais quand j’utilisais la sécurité maximale qu’ils proposent… mon Firefox plantait (oui, quand on me propose des réglages de parano, je les utilise). Sans compter qu’ils ne proposent pas d’appli Android.

Et puis, j’ai testé Bitwarden. Et c’est pas mal du tout, mais… c’est du C# et ça utilise une base de données SQL Server. Deux trucs Microsoft.

Bon, passant outre mon aversion, j’ai testé. Dans du Docker (quand je vous dis que je suis passé outre mon aversion !). C’était pas mal du tout.

Mais en voulant tester le partage de mot de passe (dans l’hypothèse d’une utilisation chez Framasoft), j’ai rencontré une limitation : pour créer une organisation (un groupe de personnes qui se partagent des mots de passe) de plus de deux personnes, il faut payer, même quand on héberge soi-même le serveur Bitwarden. Pourquoi pas. C’est un business model comme un autre (mais bon, grmpf).

Par contre, les tarifs, c’est un très gros grmpf : 3 dollars par utilisateur et par mois. Pour Framasoft, cela ferait 3$ * 35 personnes * 12 mois = 1 260$ par an. Y a un autre plan qui pourrait convenir, qui nous reviendrait à 780$ par an. C’est quand même pas négligeable (surtout pour une association qui ne vit quasiment que de vos dons) alors qu’on hébergerait nous-même le service.

J’avais laissé tombé quand ces derniers jours, une implémentation en Rust de Bitwarden est passée dans ma timeline Mastodon : https://github.com/dani-garcia/bitwarden_rs. Et celle-ci n’a pas la limitation sur les équipes (mais il encourage à donner des sous au projet upstream).

J’ai d’abord testé avec le container Docker fourni par le développeur puis j’ai tenté la compilation pour voir si ça passait, et ça passe crème !

La grosse différence, outre la non-limitation des organisations, c’est que la base de données est, pour l’instant, SQLite. Ce qui peut avoir des conséquences sur les performances lorsque la base est très sollicitée.

Ceci dit, Framadrop tourne toujours avec une base SQLite et ça fonctionne bien, et mon instance Lutim, ainsi que Framapic ont longtemps utilisé SQLite.

Bref, voyons comment compiler et installer cette version de Bitwarden en Rust.

ATTENTION : allez plutôt voir le tutoriel sur https://wiki.fiat-tux.fr/admin:logiciels:bitwarden_rs, c’est plus simple pour moi de le maintenir sur mon wiki.

Compilation

On va avoir besoin des backports Debian pour installer npm (pour compiler l’interface web) :

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update

Installation des dépendances :

sudo apt install pkg-config libssl-dev
sudo apt install -t stretch-backports npm

Installation de rustup, qui nous fournira le compilateur Rust :

curl https://sh.rustup.rs -sSf > rustup.sh

On n’exécute pas direct un script tiré du web ! On regarde d’abord s’il ne va pas faire de saloperies :

vi rustup.sh

On le rend exécutable :

chmod +x rustup.sh

On installe le compilateur Rust (il sera dans notre $HOME) :

./rustup.sh --default-host x86_64-unknown-linux-gnu --default-toolchain nightly

On source un fichier qui nous permet de l’appeler

source $HOME/.cargo/env

Gagnons du temps en clonant le projet bitwarden_rs et l’interface web (qu’il faut compiler aussi) en même temps .

git clone https://github.com/dani-garcia/bitwarden_rs
git clone https://github.com/bitwarden/web.git web-vault

Compilation de Bitwarden_rs :

cd bitwarden_rs
cargo build --release

Le résultat de la compilation est dans bitwarden_rs/target/release/.

Compilation de l’interface web :

cd ../web-vault
# On se positionne sur le dernier tag en date
git checkout "$(git tag | tail -n1)"
# Un petit patch pour que ça fonctionne avec notre installation
wget https://raw.githubusercontent.com/dani-garcia/bw_web_builds/master/patches/v2.8.0.patch
# On vérifie le patch
cat v2.8.0.patch
git apply v2.8.0.patch
npm run sub:init
npm install
npm run dist

ATTENTION : on m’a dit que la compilation de l’interface web prenait 1,5Gio de RAM, assurez-vous que vous en avez assez de libre.

Et on copie l’interface web dans le dossier où attend le résultat de la compilation de bitwarden_rs :

cp -a build/ ../bitwarden_rs/target/release/web-vault/

Installation

On va installer Bitwarden_rs dans /opt/bitwarden et on le fera tourner avec l’utilisateur www-data :

cd ..
sudo rsync -a --info=progress2 bitwarden_rs/target/release/ /opt/bitwarden/
chown -R www-data: /opt/bitwarden

Puis on va créer un service systemd, /etc/systemd/system/bitwarden.service :

[Unit]
Description=Bitwarden Server (Rust Edition)
Documentation=https://github.com/dani-garcia/bitwarden_rs
After=network.target

[Service]
# The user/group bitwarden_rs is run under. the working directory (see below) should allow write and read access to this user/group
User=www-data
Group=www-data
# The location of the .env file for configuration
EnvironmentFile=/etc/bitwarden_rs.env
# The location of the compiled binary
ExecStart=/opt/bitwarden/bitwarden_rs
# Set reasonable connection and process limits
LimitNOFILE=1048576
LimitNPROC=64
# Isolate bitwarden_rs from the rest of the system
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
# Only allow writes to the following directory and set it to the working directory (user and password data are stored here)
WorkingDirectory=/opt/bitwarden/
ReadWriteDirectories=/opt/bitwarden/

[Install]
WantedBy=multi-user.target

Pour l’interface d’administration, on va créer un token avec :

openssl rand -base64 48

La configuration se fait via des variables d’environnement qu’on va mettre dans /etc/bitwarden_rs.env :

SIGNUPS_ALLOWED=false
WEBSOCKET_ENABLED=true
ADMIN_TOKEN=Un token généré avec `openssl rand -base64 48`
ROCKET_ADDRESS=127.0.0.1
WEBSOCKET_ADDRESS=127.0.0.1
SMTP_HOST=127.0.0.1
SMTP_FROM=bitwarden@example.org
SMTP_PORT=25
SMTP_SSL=false

Vous remarquerez que je dis à Bitwarden d’envoyer les mails via le serveur SMTP local. À vous de faire en sorte qu'il fonctionne. Allez voir le wiki du projet pour voir quelles variables vous pourriez ajouter, enlever, modifier…

Puis :

sudo systemctl daemon-reload
sudo systemctl enable bitwarden
sudo systemctl start bitwarden
sudo systemctl status bitwarden

Nginx

On installe Nginx s’il n’est pas déjà installé :

sudo apt install nginx

Configuration du virtualhost :

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name bitwarden.example.org;

    access_log /var/log/nginx/bitwarden.access.log;
    error_log /var/log/nginx/bitwarden.error.log;

    ssl_certificate      /etc/letsencrypt/live/bitwarden.example.org/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/bitwarden.example.org/privkey.pem;

    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:5m;

    ssl_prefer_server_ciphers On;
    ssl_protocols TLSv1.2;
    ssl_ciphers 'EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA';

    ssl_dhparam /etc/ssl/private/dhparam4096.pem;
    add_header Strict-Transport-Security max-age=15768000; # six months
    gzip off;

    if ($https != 'on') {
        rewrite ^/(.*)$ https://bitwarden.example.org/$1 permanent;
    }

    root /var/www/html;

    # Allow large attachments
    client_max_body_size 128M;

    location ^~ '/.well-known/acme-challenge' {
        default_type "text/plain";
        root /var/www/certbot;
    }

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8000;
    }

    location /notifications/hub {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:3012;
    }

    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8000;
    }
}

Pour créer /etc/ssl/private/dhparam4096.pem :

sudo openssl dhparam -out /etc/ssl/private/dhparam4096.pem 4096

Pour le certificat Let’s Encrypt, on commente le brol relatif à ssl puis :

sudo nginx -t && sudo nginx -s reload
sudo apt install certbot
sudo mkdir /var/www/certbot/
certbot certonly --rsa-key-size 4096 --webroot -w /var/www/certbot/ --agree-tos --text --renew-hook "/usr/sbin/nginx -s reload" -d bitwarden.example.org

Une fois qu’on a le certificat, on décommente le brol ssl puis :

sudo nginx -t && sudo nginx -s reload

Sauvegarde

Créer le script de sauvegarde /opt/backup_bitwarden.sh :

#!/bin/bash
function bwbackup {
    DATE=$(date '+%a%H')

    # Database
    if [[ ! -d /opt/backup_bitwarden/sqlite-backup/ ]]
    then
        mkdir -p /opt/backup_bitwarden/sqlite-backup/
    fi
    echo ".backup /opt/backup_bitwarden/sqlite-backup/db.${DATE}.sqlite3" | sqlite3 /opt/bitwarden/data/db.sqlite3 2>> /opt/backup_bitwarden/backup.log
    if [[ "$?" -ne "0" ]]
    then
        echo "Something went wrong with bitwarden database backup, please see /opt/backup_bitwarden/backup.log on verity" | mail -s "Bitwarden database backup" youraddress@mail.example.org
        bwbackup
    fi

    # Files
    if [[ ! -d /opt/backup_bitwarden/files-backup/ ]]
    then
        mkdir -p /opt/backup_bitwarden/files-backup/
    fi
    rsync -a --delete --exclude db.sqlite3 /opt/bitwarden/data/ /opt/backup_bitwarden/files-backup/$DATE/ 2>> /opt/backup_bitwarden/backup.log
    if [[ "$?" -ne "0" ]]
    then
        echo "Something went wrong with bitwarden files backup, please see /opt/backup_bitwarden/backup.log on verity" | mail -s "Bitwarden files backup" youraddress@mail.example.org
        bwbackup
    fi
}
bwbackup

Puis :

sudo chmod +x /opt/backup_bitwarden.sh
sudo mkdir /opt/backup_bitwarden
sudo chown www-data: /opt/backup_bitwarden
sudo apt install sqlite3

Puis, dans le cron de l’utilisateur www-data :

42 4 * * * /opt/backup_bitwarden.sh

Logs

J’aime bien avoir mes logs dans un dossier dédié pour ce genre de service.

Dans /etc/rsyslog.d/bitwarden.conf :

if $programname == 'bitwarden_rs' then /var/log/bitwarden/bitwarden.log
if $programname == 'bitwarden_rs' then ~

Dans /etc/logrotate.d/bitwarden :

/var/log/bitwarden/bitwarden.log
{
        rotate 52
        dateext
        weekly
        missingok
        notifempty
        compress
        sharedscripts
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

Puis :

sudo mkdir /var/log/bitwarden
sudo chown root:adm /var/log/bitwarden
sudo service rsyslog restart

Fail2ban

Un fail2ban qui surveille les logs, ça permet de bloquer les petits malins qui font du bruteforce

Dans /etc/fail2ban/filter.d/bitwarden.conf :

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <HOST>\. Username:.*$
ignoreregex =

Dans /etc/fail2ban/jail.d/bitwarden.local :

[bitwarden]
enabled = true
port = 80,443
filter = bitwarden
action = iptables-allports[name=bitwarden]
logpath = /var/log/bitwarden/bitwarden.log
maxretry = 3
bantime = 14400
findtime = 14400

Pour la page d’admin, dans /etc/fail2ban/filter.d/bitwarden-admin.conf :

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Unauthorized Error: Invalid admin token\. IP: <HOST>.*$
ignoreregex =

Dans /etc/fail2ban/jail.d/bitwarden-admin.local :

[bitwarden-admin]
enabled = true
port = 80,443
filter = bitwarden-admin
action = iptables-allports[name=bitwarden]
logpath = /var/log/bitwarden/bitwarden.log
maxretry = 3
bantime = 14400
findtime = 14400

Finalement :

sudo service fail2ban restart

Conclusion

Voilà, vous devriez avoir un serveur Bitwarden_rs fonctionnel. Plus qu’à aller sur l’interface web que vous venez de mettre en place ou télécharger les clients et à les utiliser !

Pour importer vos mots de passe de Firefox, il faut passer par une application pour les exporter, puis aller dans les outils de votre client (ou de l’interface web).

EDIT 15/01/2019 Remplacement de la mention de l’application Nextcloud Passwords par l’application Passman (je me suis trompé).

EDIT 17/01/2019 Remplacement de npm run dist par npm run dist:selfhost dans la compilation de l'interface web. Cela désactive Google Analytics (voir https://github.com/bitwarden/web/issues/243#issuecomment-412852726)

EDIT 18/01/2019 Remplacement de npm run dist:selfhost par npm run dist dans la compilation de l'interface web. Google Analytics est déjà désactivé par le patch. Il semblerait que j’ai vu passer des requêtes vers Google Analytics à cause du cache de mon navigateur qui gardait une version non patchée.

EDIT 18/01/2019 Ajout d’un avertissement sur la consommation de RAM lors de la compilation de l’interface web.

Crédits : Photo par Matt Artz sur Unsplash

43 réflexions au sujet de “Installer un serveur Bitwarden_rs”

  1. Je viens de l’installer en suivant ces instructions sur une Ubuntu 18.04, ça semble marcher au poil. Merci.

    Je vais voir si la migration depuis KeepassXC se passe bien (a priori il semble que KeepassXC n’exporte pas les seeds TOTP, mais c’est pas une catastrophe).

  2. Merci beaucoup pour l’article, c’est très intéressant !
    J’avais aussi étudié Bitwarden il y a quelques mois, puis écarté cette solution en raison des technos Microsoft utilisées.
    Comme alternative possible j’avais noté Passbolt, sous AGPL et qui utilise GnuPG :
    https://www.passbolt.com/

  3. Salut, merci pour ce guide je vais tester très vite !
    Par contre est ce que tu peux te connecter à ton instance via l’appli Android et l’extension firefox ?

  4. Il est possible d’avoir un paragraphe upgrade depuis git?

    Je suis pas sur au niveau de la suppression du patch avant le git pull

    source $HOME/.cargo/env
    cd bitwarden_rs
    git pull
    cargo build --release

    cd ../web-vault
    git checkout -b "$(git tag | tail -n1)"
    git pull
    wget https://raw.githubusercontent.com/dani-garcia/bw_web_builds/master/patches/$(git tag | tail -n1).patch
    # On vérifie le patch
    cat $(git tag | tail -n1).patch
    git apply $(git tag | tail -n1).patch
    npm run sub:init
    npm install
    npm run dist

    cp -a build/ ../bitwarden_rs/target/release/web-vault/
    cd ..
    sudo rsync -a --info=progress2 bitwarden_rs/target/release/ /opt/bitwarden/
    chown -R www-data: /opt/bitwarden

    sudo systemctl restart bitwarden

  5. Bonjour,

    Encore merci pour le tuto, j’avais une question sur la sécurité de l’interface d’administration via le « token » comment tu gères le fait que par ce biais l’interface d’amin est disponible pour tout le monde durant les 20 minutes d’activation?

    Merci d’avance pour ton retour .

    badmaniak.

  6. Bonjour,
    Tout d’abord, merci beaucoup pour ce tuto très détaillé et vraiment bien réalisé.
    Je me retrouve avec une erreur au moment du démarrage du service bitwarden
    voici son status :
    bitwarden@bitwarden:~$ sudo systemctl status bitwarden
    ● bitwarden.service - Bitwarden Server (Rust Edition)
    Loaded: loaded (/etc/systemd/system/bitwarden.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2020-04-02 13:07:10 UTC; 23s ago
    Docs: https://github.com/dani-garcia/bitwarden_rs
    Process: 30570 ExecStart=/opt/bitwarden/bitwarden_rs (code=exited, status=203/EXEC)
    Main PID: 30570 (code=exited, status=203/EXEC)

    avril 02 13:07:10 bitwarden systemd[1]: Started Bitwarden Server (Rust Edition).
    avril 02 13:07:10 bitwarden systemd[30570]: bitwarden.service: Failed to execute command: No such file or directory
    avril 02 13:07:10 bitwarden systemd[30570]: bitwarden.service: Failed at step EXEC spawning /opt/bitwarden/bitwarden_rs: No such file or directory
    avril 02 13:07:10 bitwarden systemd[1]: bitwarden.service: Main process exited, code=exited, status=203/EXEC
    avril 02 13:07:10 bitwarden systemd[1]: bitwarden.service: Failed with result 'exit-code'.

    Aurais tu une solution ou une idée de la raison de ce soucis car je n’arrive pas du tout à comprendre

    • Pas compliqué : /opt/bitwarden/bitwarden_rs n’existe pas. Tu as peut-être sauté une étape dans le suivi du tutoriel.

      • c’est effectivement ce que je pensais au départ j’ai vérifier le fonctionnement de
        sudo rsync -a –info=progress2 bitwarden_rs/target/release/ /opt/bitwarden/
        mais cette dernière ne fonctionnait pas correctement sur la vm et ne faisait rien du tout
        J’ai donc utilisé cp en lieu et place. ça a fonctionné dans le sens ou le dossier à bien bougé mais j’ai toujours l’erreur.
        voici le résultat du ls du dossier /opt/bitwarden/bitwarden_rs
        bitwarden@bitwarden:/opt/bitwarden/bitwarden_rs$ ls
        azure-pipelines.yml build.rs Cargo.lock Cargo.toml diesel.toml docker Dockerfile LICENSE.txt migrations README.md Rocket.toml rustfmt.toml rust-toolchain src target

        et le message d’erreur :
        avril 02 13:21:52 bitwarden systemd[1]: Started Bitwarden Server (Rust Edition).
        avril 02 13:21:52 bitwarden systemd[30899]: bitwarden.service: Failed to execute command: Permission denied
        avril 02 13:21:52 bitwarden systemd[30899]: bitwarden.service: Failed at step EXEC spawning /opt/bitwarden/bitwarden_rs: Permission denied
        avril 02 13:21:52 bitwarden systemd[1]: bitwarden.service: Main process exited, code=exited, status=203/EXEC
        avril 02 13:21:52 bitwarden systemd[1]: bitwarden.service: Failed with result 'exit-code'.
        bitwarden@bitwarden:~$ sudo systemctl status bitwarden
        ● bitwarden.service - Bitwarden Server (Rust Edition)
        Loaded: loaded (/etc/systemd/system/bitwarden.service; enabled; vendor preset: enabled)
        Active: failed (Result: exit-code) since Thu 2020-04-02 13:21:52 UTC; 24min ago
        Docs: https://github.com/dani-garcia/bitwarden_rs
        Main PID: 30899 (code=exited, status=203/EXEC)

        avril 02 13:21:52 bitwarden systemd[1]: Started Bitwarden Server (Rust Edition).
        avril 02 13:21:52 bitwarden systemd[30899]: bitwarden.service: Failed to execute command: Permission denied
        avril 02 13:21:52 bitwarden systemd[30899]: bitwarden.service: Failed at step EXEC spawning /opt/bitwarden/bitwarden_rs: Permission denied
        avril 02 13:21:52 bitwarden systemd[1]: bitwarden.service: Main process exited, code=exited, status=203/EXEC
        avril 02 13:21:52 bitwarden systemd[1]: bitwarden.service: Failed with result 'exit-code'.

        • Supprime /opt/bitwarden et copie bitwarden_rs/target/release/ vers /opt/bitwarden/ (faut pas copier tout bitwarden_rs)

          • bitwarden@bitwarden:~$ sudo cp -au bitwarden_rs/target/release/ /opt/bitwarden/
            bitwarden@bitwarden:~$ sudo systemctl daemon-reload
            bitwarden@bitwarden:~$ sudo systemctl enable bitwarden
            bitwarden@bitwarden:~$ sudo systemctl start bitwarden
            bitwarden@bitwarden:~$ sudo systemctl status bitwarden
            ● bitwarden.service - Bitwarden Server (Rust Edition)
               Loaded: loaded (/etc/systemd/system/bitwarden.service; enabled; vendor preset: enabled)
               Active: failed (Result: exit-code) since Thu 2020-04-02 14:17:02 UTC; 3s ago
                 Docs: https://github.com/dani-garcia/bitwarden_rs
              Process: 1197 ExecStart=/opt/bitwarden/bitwarden_rs (code=exited, status=203/EXEC)
             Main PID: 1197 (code=exited, status=203/EXEC)
            
            avril 02 14:17:02 bitwarden systemd[1]: Started Bitwarden Server (Rust Edition).
            avril 02 14:17:02 bitwarden systemd[1197]: bitwarden.service: Failed to execute command: No such file or directory
            avril 02 14:17:02 bitwarden systemd[1197]: bitwarden.service: Failed at step EXEC spawning /opt/bitwarden/bitwarden_rs: No such file or directory
            avril 02 14:17:02 bitwarden systemd[1]: bitwarden.service: Main process exited, code=exited, status=203/EXEC
            avril 02 14:17:02 bitwarden systemd[1]: bitwarden.service: Failed with result 'exit-code'.
            bitwarden@bitwarden:~$ ls  /opt/bitwarden/
            build  deps  examples  incremental  web-vault

            C’est tout le temps la même chose je comprend pas cette erreur ou peut être cela provient du service en lui même ?

          • Il semblerait tout simplement que ça n’ait pas compilé. Normalement, dans bitwarden_rs/target/release/, il y a ça :

            
            ± ls target/release
            bitwarden_rs  bitwarden_rs.d  build  deps  examples  incremental  web-vault
  7. Bonjour Luc,
    Super tuto que je vais surement testé demain.
    As tu déjà testé sur le couple Mariadb/Apache ?
    Au vu de ton tuto, je ne pense pas que ça pose problème mais je voulais ton retour.

  8. Bonjour Luc,
    J’ai un petit soucis au moment de la création d’un compte avec un tilt qui apparait me disant :
    « Une erreur est survenue.
    Registration not allowed or user already exists »
    et en console :
    Failed to load resource: the server responded with a status of 400 ()
    zone.js:1152
    POST https://www.atlas-actif.fr/api/accounts/register 400
    aurais tu une piste sur laquelle je puisse m’orienter car je n’ai pas trop d’information à ce sujet sur google ?

    • Est-ce que SIGNUPS_ALLOWED est bien à true dans le fichier de configuration de Bitwarden ? (/etc/bitwarden_rs.env)

  9. Avoir une aversion pour SQL Server mais utiliser SQLite pour du lourd c’est très très très curieux 😀

    • Premièrement, Bitwarden_rs n’est pas nécessairement « pour du lourd », si on l’installe pour soi et sa famille (plus de 30 personnes dans Framasoft et ça tourne comme un charme). Ensuite, ça synchronise pas dans tous les sens tout le temps, donc ça bourrine pas trop la BDD. Et finalement, SQLite est plus costaud qu’on le croit. Framadrop fonctionne toujours sur une base SQLite et ça tient (bon, ok, ça allait plus avec l’afflux d’utilisateurs pendant le confinement, mais en temps normal, ça tient nickel).

  10. Bonjour,
    J’ai suivi le tuto (du Wiki) sur Ubuntu Server 20.04.1 jusqu’au paragraphe du Backup. A ce stade, je n’arrive pas à lancer Bitwarden, que ce soit en local ou à distance. J’ai toujours un message « Connexion refusée ».
    Le service Bitwarden est bien actif et fonctionnel, si vous avez des idées je suis preneur.
    Merci !

  11. Bonjour,
    Merci pour le tutoriel, ça fonctionne super bien ! Par contre est-ce qu’il serait possible d’avoir un paragraphe sur la mise à jour de l’ensemble des composants Bitwarden_rs et Web-vault ? La partie Rust semble traitée dans le Wiki.
    Merci par avance.
    Eric

  12. Bonjour,
    Merci pour ce tuto, je viens de le tester par contre je ne capte pas cette ligne :
    cp -a build/ ../bitwarden_rs/target/release/web-vault/

    D’où sort le dossier build ? via npm install ?
    Build équivaut au dossier web-vault qu’on a récupéré du git ?
    git clone https://github.com/bitwarden/web.git web-vault

    Merci d’avance pour ton retour.
    Mickaël

    • Bon en fait je crois que j’ai compris mais il faudra l’indiquer dans la procédure :
      On est dans le dossier Web_vault et je pense que le dossier build se trouve dans le dossier bitwarden_rs/target/releases.

      Par contre maintenant c’est avec le service que j’ai des soucis.
      Code : exited ; status : 12
      Il ne trouverait pas le fichier /etc/bitwarden_rs.env qui y est pourtant bien et dans le fichier de service c’est bien indiqué (copier coller quoi…). trop bizarre…

      • > On est dans le dossier Web_vault et je pense que le dossier build se trouve dans le dossier bitwarden_rs/target/releases.

        Non, il est créé par `npm run dist` dans le dossier de web-vault.

        Pour ton souci de service, il me faudrait un peu plus d’infos, genre les logs. Vérifie aussi que le fichier `/etc/bitwarden_rs.env` soit lisible par l’utilisateur spécifié dans le service.

      • Nous avons eu le même problème, résolu en créant un dossier /opt/bitwarden/data
        Il reste toujours une alerte [INFO] No .env file found. mais elle n’est pas bloquante.

        • J’ai eu le même soucis en effet. manifestement le dossier data n’est pas généré lors de la compilation

  13. Bonjour et un grand merci pour ton tutoriel.
    Tu n’as pas fait de section pour la mise à jour de bitwarden en question. C’est volontaire ? Comment tu t’y prends pour le faire toi ?

    • Je mets à jour les dépôts git puis je fais comme pour l’installation :

      • je recompile
      • je coupe le service
      • je sauvegarde les fichiers
      • je fais du rsync pour mettre à jour les fichiers
      • je mets à jour la configuration avec le fichier d’exemple
      • je lance le service
  14. Bonjour, savez vous comment passer cette etape svp ?

    Compiling devise_core v0.3.0 (https://github.com/SergioBenitez/Devise.git?rev=e58b3ac9a#e58b3ac9)
    error[E0554]: `#![feature]` may not be used on the stable release channel
    –> /home/lajull/.cargo/git/checkouts/devise-934be3a303f7c6d6/e58b3ac/core/src/lib.rs:1:1
    |
    1 | #![feature(proc_macro_diagnostic, proc_macro_span)]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    error[E0554]: `#![feature]` may not be used on the stable release channel
    –> /home/lajull/.cargo/git/checkouts/devise-934be3a303f7c6d6/e58b3ac/core/src/lib.rs:2:1
    |
    2 | #![feature(crate_visibility_modifier)]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    error[E0554]: `#![feature]` may not be used on the stable release channel
    –> /home/lajull/.cargo/git/checkouts/devise-934be3a303f7c6d6/e58b3ac/core/src/lib.rs:3:1
    |
    3 | #![feature(concat_idents)]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^

    error: aborting due to 3 previous errors

    For more information about this error, try `rustc –explain E0554`.
    error: could not compile `devise_core`.

    To learn more, run the command again with –verbose.
    warning: build failed, waiting for other jobs to finish…
    error: build failed

    • Je dirais qu’il faudrait mettre à jour Rust (./rustup.sh --default-host x86_64-unknown-linux-gnu --default-toolchain nightly).

      Et si ça ne fonctionne pas, demander sur le forum de Vaultwarden (le logiciel a changé de nom).

      • super merci, c’est le toolchain qui me manquait, super tuto en tout cas et merci pour votre aide 🙂

Les commentaires sont fermés.