Go to file
Adrien Bourmault fe05a26a74 WIP: documentation 2022-10-23 17:14:21 +00:00
README.md WIP: documentation 2022-10-23 17:14:21 +00:00

README.md

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 (<version>)

cd ~/vaultwarden/vaultwarden
git fetch
git checkout <version>

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)