update vykar
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Grégory Lebreton 2026-04-23 17:45:02 +02:00
parent c0542212c4
commit 7ba85c2812

View File

@ -38,71 +38,65 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
### 1. Préparer les partitions ZFS ### 1. Préparer les partitions ZFS
??? example "Installer ZFS et créer les datasets" ```{ .bash .copy }
# Installer ZFS
sudo apt install zfsutils-linux
```bash # Créer un pool sur disque dédié (ou en miroir)
# Installer ZFS sudo zpool create tank /dev/sdb
sudo apt install zfsutils-linux # sudo zpool create tank mirror /dev/sdb /dev/sdc
# Créer un pool sur disque dédié (ou en miroir) # Créer les datasets
sudo zpool create tank /dev/sdb sudo zfs create tank/www
# sudo zpool create tank mirror /dev/sdb /dev/sdc sudo zfs create tank/mysql
sudo zfs create tank/data
# Créer les datasets # Déf{ .ini .copy }r les points de montage
sudo zfs create tank/www sudo zfs set mountpoint=/var/www tank/www
sudo zfs create tank/mysql sudo zfs set mountpoint=/var/lib/mysql tank/mysql
sudo zfs create tank/data
# Définir les points de montage # Rendre les snapshots accessibles à Vykar
sudo zfs set mountpoint=/var/www tank/www sudo zfs set snapdir=visible tank/www
sudo zfs set mountpoint=/var/lib/mysql tank/mysql sudo zfs set snapdir=visible tank/mysql
sudo zfs set snapdir=visible tank/data
# Rendre les snapshots accessibles à Vykar ```
sudo zfs set snapdir=visible tank/www
sudo zfs set snapdir=visible tank/mysql
sudo zfs set snapdir=visible tank/data
```
--- ---
### 2. Installer vykar-server ### 2. Installer vykar-server
??? example "Télécharger et installer le binaire" ```{ .bash .copy }
# Télécharger le binaire (adapter la version)
wget https://github.com/borgbase/vykar/releases/download/v0.12.1/vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz
tar xzf vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz
sudo mv vykar-server /usr/local/bin/
```bash # Créer l'utilisateur dédié
# Télécharger le binaire (adapter la version) sudo useradd -r -s /usr/sbin/nologin -d /var/lib/vykar vykar
wget https://github.com/borgbase/vykar/releases/download/v0.12.1/vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz sudo mkdir -p /var/lib/vykar
tar xzf vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz sudo chown vykar:vykar /var/lib/vykar
sudo mv vykar-server /usr/local/bin/ ```
# Créer l'utilisateur dédié
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/vykar vykar
sudo mkdir -p /var/lib/vykar
sudo chown vykar:vykar /var/lib/vykar
```
--- ---
### 3. Configurer les tokens et répertoires ### 3. Configurer les tokens et répertoires
??? example "Créer la structure et générer les tokens par serveur" ```{ .bash .copy }
# Créer les répertoires par serveur
sudo mkdir -p /var/lib/vykar/serveur-prod-1
sudo mkdir -p /var/lib/vykar/serveur-prod-2
sudo mkdir -p /var/lib/vykar/serveur-staging
sudo chown -R vykar:vykar /var/lib/vykar/
```bash # Générer un token unique par serveur
# Créer les répertoires par serveur openssl rand -hex 32 # → token serveur-prod-1
sudo mkdir -p /var/lib/vykar/serveur-prod-1 openssl rand -hex 32 # → token serveur-prod-2
sudo mkdir -p /var/lib/vykar/serveur-prod-2 openssl rand -hex 32 # → token serveur-staging
sudo mkdir -p /var/lib/vykar/serveur-staging ```
sudo chown -R vykar:vykar /var/lib/vykar/
# Générer un token unique par serveur
openssl rand -hex 32 # → token serveur-prod-1
openssl rand -hex 32 # → token serveur-prod-2
openssl rand -hex 32 # → token serveur-staging
```
??? example "Fichiers d'environnement — `/etc/vykar/*.env`" ??? example "Fichiers d'environnement — `/etc/vykar/*.env`"
```bash ```{ .bash .copy }
# /etc/vykar/serveur-prod-1.env # /etc/vykar/serveur-prod-1.env
sudo tee /etc/vykar/serveur-prod-1.env << 'EOF' sudo tee /etc/vykar/serveur-prod-1.env << 'EOF'
VYKAR_TOKEN=token-prod-1-xxxxxxxxxxxxxxxx VYKAR_TOKEN=token-prod-1-xxxxxxxxxxxxxxxx
@ -134,7 +128,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Template systemd — `/etc/systemd/system/vykar-server@.service`" ??? example "Template systemd — `/etc/systemd/system/vykar-server@.service`"
```ini ```{ .ini .copy }
sudo tee /etc/systemd/system/vykar-server@.service << 'EOF' sudo tee /etc/systemd/system/vykar-server@.service << 'EOF'
[Unit] [Unit]
Description=Vykar backup server - %i Description=Vykar backup server - %i
@ -162,24 +156,20 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
EOF EOF
``` ```
??? example "Activer les instances" ```{ .bash .copy }
sudo systemctl daemon-reload
```bash sudo systemctl enable --now vykar-server@serveur-prod-1
sudo systemctl daemon-reload sudo systemctl enable --now vykar-server@serveur-prod-2
sudo systemctl enable --now vykar-server@serveur-prod-1 sudo systemctl enable --now vykar-server@serveur-staging
sudo systemctl enable --now vykar-server@serveur-prod-2 ```
sudo systemctl enable --now vykar-server@serveur-staging
```
--- ---
### 5. Reverse proxy TLS ### 5. Reverse proxy TLS
??? example "Configuration Nginx — `/etc/nginx/sites-available/vykar`" ```{ .conf .copy }
# Serveur prod-1
```nginx server {
# Serveur prod-1
server {
listen 443 ssl http2; listen 443 ssl http2;
server_name backup-prod-1.example.com; server_name backup-prod-1.example.com;
@ -193,10 +183,10 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
location / { location / {
proxy_pass http://127.0.0.1:8585; proxy_pass http://127.0.0.1:8585;
} }
} }
# Serveur prod-2 # Serveur prod-2
server { server {
listen 443 ssl http2; listen 443 ssl http2;
server_name backup-prod-2.example.com; server_name backup-prod-2.example.com;
@ -210,10 +200,10 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
location / { location / {
proxy_pass http://127.0.0.1:8586; proxy_pass http://127.0.0.1:8586;
} }
} }
# Serveur staging # Serveur staging
server { server {
listen 443 ssl http2; listen 443 ssl http2;
server_name backup-staging.example.com; server_name backup-staging.example.com;
@ -226,8 +216,8 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
location / { location / {
proxy_pass http://127.0.0.1:8587; proxy_pass http://127.0.0.1:8587;
} }
} }
``` ```
--- ---
@ -235,16 +225,14 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
### 1. Installer Vykar ### 1. Installer Vykar
??? example "Télécharger et installer le client" ```{ .bash .copy }
wget https://github.com/borgbase/vykar/releases/download/v0.12.1/vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz
tar xzf vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz
sudo mv vykar /usr/local/bin/
```bash # Permissions de lecture sans root complet (optionnel)
wget https://github.com/borgbase/vykar/releases/download/v0.12.1/vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz sudo setcap cap_dac_read_search+ep /usr/local/bin/vykar
tar xzf vykar-v0.12.1-x86_64-unknown-linux-gnu.tar.gz ```
sudo mv vykar /usr/local/bin/
# Permissions de lecture sans root complet (optionnel)
sudo setcap cap_dac_read_search+ep /usr/local/bin/vykar
```
--- ---
@ -252,7 +240,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Fichier de configuration — `/etc/vykar/vykar.yaml`" ??? example "Fichier de configuration — `/etc/vykar/vykar.yaml`"
```yaml ```{ .yaml .copy }
repositories: repositories:
- label: "backup-principal" - label: "backup-principal"
url: "https://backup.example.com" url: "https://backup.example.com"
@ -338,18 +326,16 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
### 3. Initialisation et premier backup ### 3. Initialisation et premier backup
??? example "Initialiser le dépôt et lancer le premier backup" ```{ .bash .copy }
# Initialiser le dépôt distant (une seule fois)
vykar { .ini .copy }t --config /etc/vykar/vykar.yaml
```bash # Tester le premier backup manuellement
# Initialiser le dépôt distant (une seule fois) vykar backup --config /etc/vykar/vykar.yaml
vykar init --config /etc/vykar/vykar.yaml
# Tester le premier backup manuellement # Vérifier les snapshots créés
vykar backup --config /etc/vykar/vykar.yaml vykar list --config /etc/vykar/vykar.yaml
```
# Vérifier les snapshots créés
vykar list --config /etc/vykar/vykar.yaml
```
--- ---
@ -357,7 +343,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Service — `/etc/systemd/system/vykar-backup.service`" ??? example "Service — `/etc/systemd/system/vykar-backup.service`"
```ini ```{ .ini .copy }
[Unit] [Unit]
Description=Vykar Backup Description=Vykar Backup
After=network-online.target After=network-online.target
@ -372,7 +358,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Timer — `/etc/systemd/system/vykar-backup.timer`" ??? example "Timer — `/etc/systemd/system/vykar-backup.timer`"
```ini ```{ .ini .copy }
[Unit] [Unit]
Description=Vykar Backup quotidien Description=Vykar Backup quotidien
@ -386,7 +372,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Activer le timer" ??? example "Activer le timer"
```bash ```{. bash .copy }
sudo systemctl enable --now vykar-backup.timer sudo systemctl enable --now vykar-backup.timer
# Vérifier le timer # Vérifier le timer
@ -397,48 +383,48 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
## Commandes utiles ## Commandes utiles
??? tip "Lister et inspecter les snapshots" - tip "Lister et inspecter les snapshots
```bash ```{ .bash .copy }
# Lister les snapshots # Lister les snapshots
vykar list vykar list
# Inspecter le contenu d'un snapshot # Inspecter le contenu d'un snapshot
vykar snapshot list latest vykar snapshot list latest
vykar snapshot list a1b2c3d4 vykar snapshot list a1b2c3d4
# Chercher un fichier dans les 7 derniers jours # Chercher un fichier dans les 7 derniers jours
vykar snapshot find --name '*.conf' --since 7d vykar snapshot find --name '*.conf' --since 7d
``` ```
??? tip "Restaurer et monter" - Restaurer et monter
```bash ```{ .bash .copy }
# Restaurer le dernier snapshot # Restaurer le dernier snapshot
vykar restore latest /tmp/restauration vykar restore latest /tmp/restauration
# Restaurer un snapshot précis # Restaurer un snapshot précis
vykar restore a1b2c3d4 /tmp/restauration vykar restore a1b2c3d4 /tmp/restauration
# Monter un snapshot en lecture seule (WebDAV) # Monter un snapshot en lecture seule (WebDAV)
vykar mount latest /mnt/snapshot vykar mount latest /mnt/snapshot
umount /mnt/snapshot umount /mnt/snapshot
``` ```
??? tip "Vérifier l'intégrité et libérer de l'espace" - Vérifier l'intégrité et libérer de l'espace
```bash ```{ .bash .copy }
# Vérifier l'intégrité du dépôt # Vérifier l'intégrité du dépôt
vykar check vykar check
vykar check --verify-data # plus complet, plus long vykar check --verify-data # plus complet, plus long
# Libérer l'espace manuellement # Libérer l'espace manuellement
vykar prune vykar prune
vykar compact vykar compact
# Santé du serveur REST # Santé du serveur REST
curl https://backup.example.com/health curl https://backup.example.com/health
``` ```
--- ---
@ -456,7 +442,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
## Annexes ## Annexes
??? example "Stack applicative à sauvegarder — `docker-compose.yml`" ??? example "Stack applicative à sauvegarder — `compose.yml`"
```yaml ```yaml
services: services:
@ -546,7 +532,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Configuration msmtp — `/etc/msmtprc`" ??? example "Configuration msmtp — `/etc/msmtprc`"
```bash ```{. bash .copy }
# Installer msmtp # Installer msmtp
sudo apt install msmtp msmtp-mta sudo apt install msmtp msmtp-mta
@ -576,7 +562,7 @@ Sauvegarde chiffrée, dédupliquée et basée sur des snapshots ZFS vers un serv
??? example "Restauration des données" ??? example "Restauration des données"
```bash ```{. bash .copy }
# PostgreSQL # PostgreSQL
vykar restore latest /tmp/restauration vykar restore latest /tmp/restauration
docker exec -i mon-postgres \ docker exec -i mon-postgres \