This commit is contained in:
parent
c0542212c4
commit
7ba85c2812
@ -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 \
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user