Introduction
Dans mon précédent article, je vous avais présenté Plakar, une solution de backup open source française, et comment l’utiliser pour sauvegarder vos fichiers en local.
Avoir des sauvegardes locales, c’est bien. Mais si votre serveur tombe en panne, si vous vous faites cambrioler, ou si un incendie ravage votre maison, vos sauvegardes disparaissent en même temps que vos données. C’est là qu’intervient la règle 3-2-1 : 3 copies de vos données, sur 2 supports différents, dont 1 hors site. Le backup local couvre une partie des deux premières conditions. La sauvegarde hors site complète cette règle en ajoutant une copie de vos données sur un support distant et indépendant.
Dans cet article, nous allons voir comment configurer Plakar pour sauvegarder directement vers Exoscale Simple Object Storage, un stockage objet compatible S3 hébergé en Europe. L’objectif : compléter votre stratégie de sauvegarde avec une copie hors site chiffrée, sans changer vos habitudes avec Plakar.
Note : je tiens à préciser qu’il s’agit d’un test. Tous les rôles, clés IAM et autres seront supprimés avant la publication de cet article, il est donc inutile de tenter d’utiliser les clés ou autres qui apparaissent dans cet article.
1. Pourquoi Exoscale Simple Object Storage ?
Je prévoyais d’écrire un article sur la sauvegarde hors site avec Plakar via S3, et c’est Exoscale qui m’en a donné l’occasion en m’offrant 100 € de crédit pour tester leur solution. Je tiens à le mentionner par souci de transparence, même si les conclusions de cet article sont les miennes.
Pour stocker des sauvegardes hors site, les options ne manquent pas. Alors pourquoi Exoscale ?
Hébergé en Europe : Exoscale opère exclusivement depuis des datacenters européens (Allemagne, Suisse, Autriche, Croatie, Bulgarie). Pour quelqu’un comme moi soucieux de savoir où ses données sont stockées, c’est un critère non négligeable.
Compatible S3 : Exoscale Simple Object Storage expose une API compatible S3, ce qui signifie que tous les outils qui parlent S3 fonctionnent sans modification, dont Plakar.
RGPD et souveraineté : Les données restent dans la zone choisie, sans transfert vers des serveurs hors UE. Exoscale possède une page Compliance détaillée qui liste notamment toutes les certifications par datacenter. De plus, Exoscale met à disposition ses documents de compliance directement depuis votre espace une fois connecté. À noter que l’accès à certains documents se fait après lecture et acceptation du NDA (Non Disclosure Agreement) d’Exoscale.
Pricing transparent : L’ingress (upload) est gratuit. Le stockage est à 0,00002750 € par GiB·heure (Tier 1), soit environ 0,20 €/mois pour 10 GiB ou 2 €/mois pour 100 GiB. L’egress (téléchargement) est facturé 0,02 € par GiB. Pour un usage de sauvegarde où on restaure rarement, ce coût reste marginal. Les tarifs complets sont disponibles sur la page de pricing.
Les alternatives ne manquent pas (OVHcloud, Scaleway, Backblaze B2, IDrive e2, AWS S3) et toutes fonctionneraient avec Plakar. Ce que j’ai apprécié en testant Exoscale : une interface web simple et efficace, et un CLI bien pensé qui couvre l’ensemble des opérations sans avoir à passer par le portail. J’ai toutefois noté que la traduction du portail pourrait être améliorée : certaines sections sont bien traduites en français, d’autres restent en anglais ou avec des traductions approximatives.
2. Configurer Exoscale
Avant de connecter Plakar, il faut mettre en place quatre choses : créer une clé IAM pour utiliser le CLI, installer et configurer ce dernier, créer un bucket, et enfin créer une clé IAM restreinte dédiée à Plakar.
Créer une clé IAM depuis le portail
L’IAM d’Exoscale repose sur deux éléments : un rôle qui définit ce qui est autorisé, et une clé IAM attachée à ce rôle. On va créer deux clés au total : une pour administrer notre compte via le CLI, et une restreinte pour Plakar.
Commençons par la clé d’administration. Rendez-vous dans la section IAM > Clés IAM du portail Exoscale et cliquez sur ADD. Donnez-lui un nom explicite (par exemple exo-cli) et sélectionnez le rôle Owner.
Notez bien la clé et le secret : le secret ne sera affiché qu’une seule fois.

Installer et configurer le CLI Exoscale
Si vous préférez tout faire via le portail, vous pouvez sauter cette étape. Mais le CLI permet d’aller plus vite et de reproduire facilement la configuration.
Installez le CLI exo en suivant les instructions de la documentation officielle selon votre OS. Une fois installé, lancez la configuration :
exo config
Le CLI vous guidera pas à pas :
No Exoscale CLI configuration found
In order to set up your configuration profile, you will need to retrieve
Exoscale API credentials from your organization's IAM:
https://portal.exoscale.com/iam/keys
[+] API Key: EXOcac52848ce3c7156960742a5
[+] Secret Key:
[+] Name: exoscale
Default zone: de-fra-1
API Key/Secret Key: les credentials créés à l’étape précédenteName: le nom du profil local dans le CLI, exoscale convient très bienDefault zone: choisissezde-fra-1(Frankfurt), la zone où sera hébergé notre bucket
Vérifiez que tout fonctionne avec exo config show :

Créer le bucket
Via le portail
Rendez-vous dans la section STORAGE du portail Exoscale, puis cliquez sur AJOUTER.

Choisissez la zone DE-FRA-1 (Frankfurt), donnez un nom à votre bucket, puis cliquez sur AJOUTER.

Via le CLI
Création du bucket nommé mon-bucket-plakar dans la zone DE-FRA-1.
exo storage mb sos://mon-bucket-plakar --zone de-fra-1
La sortie de la commande ressemblera à ça :

Vérifiez qu’il a bien été créé :
exo storage ls --zone de-fra-1
Exemple de sortie :
2026-04-25 10:02:51 UTC de-fra-1 0 B mon-bucket-plakar/
À savoir : par défaut, les buckets créés sont en PRIVATE, donc seul le Owner a des droits configurés (Full Control), qu’ils aient été créés via le portail ou le CLI.
Créer une clé IAM restreinte pour Plakar
Plutôt que d’utiliser votre clé principale, on va créer une clé dédiée à Plakar avec uniquement les droits nécessaires sur le service Object Storage. Si cette clé venait à être compromise, l’attaquant n’aurait accès qu’à ce service, rien d’autre sur votre compte.
Via le portail
Dans la section IAM > Roles, créez un nouveau rôle nommé plakar-backup. Configurez la stratégie avec default-service-strategy sur REFUSER et autorisez uniquement le service sos. Il est également possible de choisir si la politique de ce rôle est modifiable ou non.

Ensuite, dans IAM > Keys, créez une clé nommée plakar-backup-key et attachez-la au rôle plakar-backup qu’on vient de créer. Notez bien le secret : il ne sera plus accessible ensuite.

Via le CLI
Créez d’abord le fichier de politique :
cat > plakar-sos-policy.json << 'EOF'
{
"default-service-strategy": "deny",
"services": {
"sos": {
"type": "allow"
}
}
}
EOF
Créez le rôle avec cette politique (en suivant la documentation) :
cat plakar-sos-policy.json | exo iam role create plakar-backup \
--description "Accès Object Storage uniquement pour Plakar" \
--policy -
Le retour de la commande donnera :

Note : comme pour la configuration via le portail, il est possible de choisir si la politique de ce rôle est modifiable ou non avec l’option --editable=false. Par défaut, c’est à true, comme vous pouvez le voir sur le retour de la commande ci-dessus.
Puis créez la clé IAM associée :
exo iam api-key create plakar-backup-key plakar-backup
Le CLI affichera la clé et le secret :

Conservez-les pour l’étape suivante.
3. Connecter Plakar à Exoscale Simple Object Storage
Si vous n’avez pas encore lu l’article précédent sur Plakar en local, je vous invite à le faire avant de continuer. Les concepts de base (Kloset store, snapshots) y sont expliqués en détail.
Ici, on reprend exactement là où on s’était arrêté : le store local fonctionne, mais il reste dans votre machine. On va maintenant configurer un second store, cette fois sur Exoscale Simple Object Storage, pour avoir une copie hors site chiffrée de vos sauvegardes.
L’intégration S3 de Plakar n’est pas incluse par défaut. Il s’agit d’un plugin à installer séparément. Avant d’aller plus loin, un point sur l’authentification qui peut surprendre pour un outil self-hosted.
Un compte Plakar, pourquoi ?
Plakar propose des packages pré-compilés hébergés sur leur infrastructure. Pour y accéder, une connexion est requise (non pas pour surveiller vos sauvegardes, mais pour protéger leur service de distribution). Vos données restent entièrement chez vous, chiffrées côté client.
Si vous ne souhaitez pas créer de compte, vous avez une alternative : compiler le plugin vous-même depuis les sources (Go requis), puis l’installer manuellement.
Option 1 : avec un compte Plakar (packages pré-compilés)
Connectez-vous à votre compte Plakar :
plakar login
La commande ouvre un navigateur pour vous authentifier via email ou GitHub. Si vous êtes sur un serveur, il faut soit utiliser l’email (plakar login -email votre@email.com) soit GitHub avec l’option -no-spawn (plakar login -github -no-spawn) qui affichera une URL à ouvrir dans un navigateur pour initier l’authentification.
Une fois connecté, installez le plugin S3 :
plakar pkg add s3
Vérifiez que le plugin est bien installé :
plakar pkg list
Option 2 : sans compte (compilation depuis les sources)
plakar pkg build s3
Cela génère une archive dans le répertoire courant (par exemple s3_v1.0.7_linux_amd64.ptar).
Installez-la ensuite :
plakar pkg add ./s3_v1.0.7_linux_amd64.ptar
Vérifiez que le plugin est bien installé :
plakar pkg list
Configurer le store S3
On va maintenant enregistrer le bucket Exoscale comme store dans Plakar. L’endpoint pour Frankfurt est sos-de-fra-1.exo.io.
plakar store add exoscale-backup \
location=s3://sos-de-fra-1.exo.io/mon-bucket-plakar \
access_key=VOTRE_API_KEY \
secret_access_key=VOTRE_API_SECRET \
use_tls=true
exoscale-backup: le nom que vous donnez à ce store dans Plakarsos-de-fra-1.exo.io: l’endpoint S3 d’Exoscale pour la zone Frankfurtmon-bucket-plakar: le nom du bucket créé à l’étape précédenteaccess_key/secret_access_key: la clé IAM restreinte créée pour Plakar
Pour automatiser les sauvegardes sans saisir la passphrase à chaque fois, vous pouvez l’intégrer directement dans la configuration du store :
plakar store add exoscale-backup \
location=s3://sos-de-fra-1.exo.io/mon-bucket-plakar \
access_key=VOTRE_API_KEY \
secret_access_key=VOTRE_API_SECRET \
passphrase=VOTRE_PASSPHRASE \
use_tls=true
Note de sécurité : la passphrase et les clés API sont stockées en clair dans le fichier de configuration de Plakar. Restreignez ses permissions pour protéger cet accès : chmod 600 ~/.config/plakar/stores.yml (ou l’emplacement correspondant sur votre système). Il est également possible d’utiliser un gestionnaire de secret comme HashiCorp Vault ou 1Password CLI. Pour plus de détails, se référer à la documentation.
Initialiser le Kloset store distant
Avant de pouvoir sauvegarder, il faut initialiser le store sur S3. Plakar va créer sa structure dans le bucket :
plakar at @exoscale-backup create
Plakar vous demandera de définir une passphrase pour ce store distant (sauf si vous l’avez déjà intégrée dans la configuration). Conservez-la précieusement (sans elle, vos sauvegardes sont irrécupérables).
Première sauvegarde vers S3
La commande est identique à une sauvegarde locale, seul le store change :
plakar at @exoscale-backup backup $HOME/Documents
f8a68069: OK ✓ /home/kilian/Documents/.env
f8a68069: OK ✓ /home/kilian/Documents/important.txt
f8a68069: OK ✓ /home/kilian/Documents
f8a68069: OK ✓ /home/kilian
f8a68069: OK ✓ /home
f8a68069: OK ✓ /
info: backup: created unsigned snapshot f8a68069 of size 2.6 KiB in 610.521182ms (wrote 182 KiB)
Vérifiez que le snapshot est bien présent :
plakar at @exoscale-backup ls
2026-04-26T14:01:58Z f8a68069 2.6 KiB 1s /home/kilian/Documents
Vous pouvez également vérifier côté Exoscale que les données ont bien été écrites dans le bucket, via le portail ou le CLI :
exo storage ls sos://mon-bucket-plakar --zone de-fra-1

Note : le chiffrement se fait entièrement sur votre serveur. Exoscale ne voit que des données chiffrées dans votre bucket (sans votre passphrase, elles sont illisibles). C’est une des forces de Plakar pour un usage hors site.
Automatisation : pour planifier des sauvegardes régulières vers ce store, la commande est identique à celle du store local (seul le nom du store change). Reportez-vous à la section dédiée de l’article précédent pour la configuration cron ou systemd.
Explorer ses snapshots avec l’interface graphique
Plakar dispose d’une interface graphique intégrée qui permet de naviguer dans ses snapshots et de parcourir les fichiers sauvegardés directement depuis un navigateur. Pour la lancer sur le store distant :
plakar at @exoscale-backup ui -no-auth -no-spawn -cors -addr 192.168.1.40:3001
Les options utilisées ici sont adaptées à un serveur Linux sans interface graphique :
-no-auth: supprime le token d’authentification normalement requis pour accéder aux API HTTP (à réserver à un environnement de test sur réseau local)-no-spawn: désactive l’ouverture automatique du navigateur (inutile sur un serveur sans interface graphique)-cors: autorise les requêtes cross-origin, nécessaire pour accéder à l’interface depuis un poste différent de la machine qui l’héberge-addr 192.168.1.40:3001: définit l’adresse et le port d’écoute. En spécifiant l’IP du serveur sur le réseau local, l’interface est accessible depuis un autre poste du réseau
Note de sécurité : pour plus de protection, préférez binder sur 127.0.0.1 et accéder via un tunnel SSH (ssh -L 3001:localhost:3001 user@serveur). L’interface sera alors disponible à http://localhost:3001 sur votre machine locale, sans exposer le service sur le réseau.
Une fois démarré, ouvrez http://192.168.1.40:3001 dans votre navigateur. Le dashboard liste l’ensemble des snapshots du store :

On retrouve bien les trois snapshots créés au cours de cet article. En cliquant sur un snapshot, il est possible de naviguer dans l’arborescence des fichiers et de prévisualiser leur contenu (ici, une des images du dataset val2017) :

C’est particulièrement utile pour vérifier l’intégrité d’une sauvegarde ou retrouver un fichier spécifique avant de lancer une restauration complète.
4. Les chiffres
Le store est en place et opérationnel. Passons aux tests de performance avec des chiffres concrets.
Note : les sorties CLI de Plakar affichent les tailles en MiB (mébioctets, base 2). Les valeurs dans le texte sont converties en MB (mégaoctets, base 10) pour cohérence avec l’interface graphique de Plakar. La conversion est : 1 MiB = 1,049 MB.
Pour ce test, j’ai utilisé le dataset val2017 du projet COCO (un ensemble d’images réelles utilisées pour la recherche en IA, qui représente un bon cas d’usage typique pour un dossier de photos de homelab). L’archive contient 5 000 images pour 788 MB.
Backup initial
Le premier backup est toujours le plus long : Plakar doit transférer l’intégralité des données vers Exoscale.
time plakar at @exoscale-backup backup ./val2017
real 0m23.900s
user 0m0.798s
sys 0m0.400s
788 MB transférés en moins de 24 secondes, soit environ 33 MB/s de débit upload. Un résultat très satisfaisant pour une sauvegarde hors site chiffrée. Les performances réelles dépendent naturellement de votre débit montant.
Côté bucket Exoscale, le volume réellement stocké est d’environ 815 MB pour 788 MB de source (un léger overhead d’environ 3,5 %, dû aux métadonnées et à la structure du store Plakar).
Backup incrémental
Pour simuler un backup incrémental, j’ai supprimé 91 images (il en restait 4 909), puis relancé la sauvegarde.
time plakar at @exoscale-backup backup ./val2017
real 0m3.573s
user 0m0.783s
sys 0m0.369s
3,5 secondes pour un backup incrémental sur un dataset de 5 000 images, soit environ 6,7 fois plus rapide que le backup initial. Plakar ne transfère que les blocs modifiés, ce qui rend les sauvegardes quotidiennes quasi instantanées une fois le premier backup effectué.
Restauration depuis S3
C’est le test le plus important : une sauvegarde que vous n’avez jamais restauré n’est pas une sauvegarde. Pour simuler le pire scénario (une machine qui lâche avec toutes les données locales perdues), j’ai supprimé le dossier val2017 et restauré depuis le bucket sur Exoscale.
On commence par lister les snapshots disponibles :
plakar at @exoscale-backup ls
2026-04-26T15:42:48Z 37f776a8 762 MiB 2s /home/kilian/val2017
2026-04-26T15:38:40Z aea3b27f 777 MiB 21s /home/kilian/val2017
2026-04-26T14:01:58Z f8a68069 2.6 KiB 1s /home/kilian/Documents
On voit ici trois snapshots : les deux premiers correspondent à nos sauvegardes de val2017 : le backup initial (aea3b27f) et le backup incrémental après suppression de 91 fichiers (37f776a8). C’est le comportement normal de Plakar : chaque backup crée un nouveau snapshot, ce qui vous permet de restaurer n’importe quel état antérieur. Le troisième snapshot correspond à un backup de Documents effectué lors de la configuration initiale.
On restaure le snapshot le plus récent :
# Simuler la perte des données
rm -rf ./val2017
# Restaurer depuis S3 uniquement
time plakar at @exoscale-backup restore 37f776a8 -to ./val2017-restored
real 5m54.869s
user 0m0.866s
sys 0m0.385s
~799 MB restaurés en un peu moins de 6 minutes depuis Frankfurt. Pour mettre ce chiffre en perspective : le téléchargement initial du dataset val2017.zip depuis les serveurs COCO avait pris près d’une heure. En cas de sinistre réel, Plakar + Exoscale vous permettent de récupérer vos données bien plus rapidement que de les re-télécharger ou re-générer depuis zéro.
C’est logiquement plus long que le backup. On télécharge l’intégralité du snapshot depuis S3, sans le bénéfice de la déduplication à l’upload. Les 4 909 images sont intactes et récupérables depuis le cloud, sans aucune donnée locale.
Conclusion
Plakar et Exoscale Simple Object Storage forment une combinaison cohérente pour mettre en place une stratégie de sauvegarde hors site. La mise en place ne prend que quelques minutes, notamment grâce au système IAM d’Exoscale qui permet en quelques clics de créer une clé restreinte au seul service Object Storage. L’interface graphique intégrée permet de naviguer dans ses snapshots et de vérifier l’intégrité d’une sauvegarde avant restauration (un complément pratique à la ligne de commande).
Les chiffres parlent d’eux-mêmes : 788 MB traités en 24 secondes, un backup incrémental en 3,5 secondes, et une restauration complète en moins de 6 minutes. À 0,00002750 € par GiB·heure (Tier 1), le coût mensuel est très prévisible :
| Volume stocké | Coût mensuel estimé |
|---|---|
| ~815 MB | ~0,016 €/mois |
| 10 GiB | ~0,20 €/mois |
| 50 GiB | ~1,00 €/mois |
| 100 GiB | ~2,00 €/mois |
| 500 GiB | ~9,90 €/mois |
(Estimations basées sur 720 h/mois, soit 30 jours × 24 h.)
Pour un usage de sauvegarde où on restaure rarement, le coût se limite presque exclusivement au stockage. L’ingress étant gratuit sur Exoscale, seuls les téléchargements (restaurations) sont facturés.
Ce qui me plaît avec ces deux solutions : Plakar est open source et français, Exoscale est européen et respectueux du RGPD. Vos données restent en Europe, chiffrées avant même de quitter votre machine. Exoscale ne stocke que des blocs chiffrés dans votre bucket, inutilisables sans votre passphrase.
Que vous gériez un homelab ou une infrastructure de production, cette solution mérite sérieusement d’être considérée pour votre stockage hors site.