Go to file
Adrien Bourmault 8103b8e66c WIP documentation 2022-10-23 17:08:59 +00:00
README.md WIP documentation 2022-10-23 17:08:59 +00:00

README.md

Service COFFRE

Installation de Vaultwarden

Installation des dépendances

Installation de la chaîne de compilation rustup

Récupération du script d'installation de rustup et exécution

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

Ajout du chemin de la chaîne de compilation dans la variable PATH

echo 'export PATH=~/.cargo/bin:$PATH' >> ~/.bashrc

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)