# Service COFFRE ## Installation de Vaultwarden **Pour la compilation du serveur, un minimum de 2.5Go de mémoire vive est requis (sans quoi la compilation échoue)** ### Installation des dépendances Installation des paquets `rustc` et `cargo` sudo apt install rustc cargo ### Compilation du serveur On récupère les sources cd ~ mkdir vaultwarden git clone https://github.com/dani-garcia/vaultwarden ~/vaultwarden/vaultwarden On choisit la bonne version à l'aide des tags git checkout On compile avec rust le serveur, en nettoyant bien avant. cd vaultwarden/vaultwarden cargo clean cargo build --features sqlite --release ### Installation du serveur Installation du fichier de configuration par défaut sudo cp ../../.env.template /etc/vaultwarden.env Installation du binaire sudo cp vaultwarden /usr/bin/vaultwarden Création du dossier des données sudo mkdir /var/lib/vaultwarden/data Correction des droits sudo chmod +x /usr/bin/vaultwarden sudo useradd -m -d /var/lib/vaultwarden vaultwarden sudo chown -R vaultwarden:vaultwarden /var/lib/vaultwarden ### Création du fichier de service On crée le fichier sudo nano /etc/systemd/system/vaultwarden.service Avec le contenu suivant : ``` [Unit] Description=Bitwarden Server (Powered by Vaultwarden) Documentation=https://github.com/dani-garcia/vaultwarden # If you use a database like mariadb,mysql or postgresql, # you have to add them like the following and uncomment them # by removing the `# ` before it. This makes sure that your # database server is started before vaultwarden ("After") and has # started successfully before starting vaultwarden ("Requires"). # Only sqlite After=network.target [Service] # The user/group vaultwarden is run under. the working directory (see below) should allow write and read access to this user/group User=vaultwarden Group=vaultwarden # The location of the .env file for configuration EnvironmentFile=/etc/vaultwarden.env # The location of the compiled binary ExecStart=/usr/bin/vaultwarden # Set reasonable connection and process limits LimitNOFILE=1048576 LimitNPROC=64 # Isolate vaultwarden 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=/var/lib/vaultwarden ReadWriteDirectories=/var/lib/vaultwarden # Allow vaultwarden to bind ports in the range of 0-1024 AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target ``` On recharge les services sudo systemctl daemon-reload On démarre sudo systemctl start vaultwarden.service sudo systemctl enable vaultwarden.service ## Mise à jour de Vaultwarden ### Récupération des mises à jour On récupère les commits dans le dépôt et on passe sur le tag de la dernière version (``) cd ~/vaultwarden/vaultwarden git fetch git checkout ### Mise à jour du serveur On compile avec rust le serveur, en nettoyant bien avant. cargo clean cargo build --features sqlite --release On installe le binaire sudo cp target/release/vaultwarden /usr/bin/vaultwarden sudo chmod +x /usr/bin/vaultwarden On redémarre le service sudo systemctl restart vaultwarden.service ## Installation de l'interface web ### Installation des dépendances On paramètre la source pour la version la plus récente de nodejs curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - On installe nodejs sudo apt install -y nodejs sudo npm i npm@latest -g ### Compiler la dernière version de l'interface web On récupère les sources git clone https://github.com/dani-garcia/bw_web_builds ~/vaultwarden/webvault On compile cd ~/vaultwarden/webvault make full ### Installation de l'interface web cd ~/vaultwarden/webvault sudo cp -R builds/bw_web_ /var/lib/vaultwarden/web-vault Correction des droits sudo chown -R vaultwarden:vaultwarden /var/lib/vaultwarden ## Mise à jour de l'interface web ### Mise à jour des dépendances sudo npm i npm@latest -g ### Récupération des mises à jour On récupère les commits dans le dépôt cd ~/vaultwarden/webvault git pull ### Compiler la dernière version de l'interface web cd ~/vaultwarden/webvault make full Lorsque demandé, insérer l'identifiant du tag le plus récent (dispo avec git tag) ### Installer l'interface web On installe la version correspondant à `` cd ~/vaultwarden/webvault sudo rm -r /var/lib/vaultwarden/web-vault sudo cp -R builds/bw_web_ /var/lib/vaultwarden/web-vault Correction des droits sudo chown -R vaultwarden:vaultwarden /var/lib/vaultwarden