# Service COFFRE ## Installation de Vaultwarden ### Installation des dépendances #### Installation de la chaîne de compilation rustup Installation des paquets `rustc` et `cargo` sudo apt install rustc cargo ### Compilation du serveur On compile avec rust le serveur, en nettoyant bien avant. 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 # MariaDB # After=network.target mariadb.service # Requires=mariadb.service # Mysql # After=network.target mysqld.service # Requires=mysqld.service # PostgreSQL # After=network.target postgresql.service # Requires=postgresql.service [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 ### Mise à jour de la chaîne de compilation rustup rustup update ### 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 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 récupère la dernière version de npm/nodejs curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - On installe nodejs sudo apt-get install -y nodejs npm -g install npm@7 npm i npm@latest -g Ajout au `PATH` echo 'export PATH=/opt/node/bin:$PATH' >> ~/.bashrc ## Mise à jour de l'interface web ### Récupération des mises à jour On récupère les commits dans le dépôt cd ~/vaultwarden/webvault git fetch ### 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)