blog-static/feed.xml
2024-06-11 14:32:42 +02:00

153 lines
No EOL
20 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2024-06-11T14:32:26+02:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">Blog de Chapoline</title><subtitle>Blog, articles, et pensées non ordonnées
</subtitle><author><name>Caroline Canebier</name></author><entry><title type="html">Faire du Backup-as-a-Service avec Restic et Minio</title><link href="http://localhost:4000/2024/06/11/backup-minio.html" rel="alternate" type="text/html" title="Faire du Backup-as-a-Service avec Restic et Minio" /><published>2024-06-11T00:00:00+02:00</published><updated>2024-06-11T00:00:00+02:00</updated><id>http://localhost:4000/2024/06/11/backup-minio</id><content type="html" xml:base="http://localhost:4000/2024/06/11/backup-minio.html">&lt;p&gt;Pour mon infrastructure de backups, jutilise depuis plusieurs années &lt;a href=&quot;https://www.borgbackup.org/&quot;&gt;BorgBackup&lt;/a&gt;, un excellent outil pour chiffrer et dédupliquer ses sauvegardes, puis les stocker via SSH. Pour les sauvegardes de mes serveurs, il moffre une complète satisfaction. Mais je voulais explorer un nouvel outil dont on mavait dit beaucoup de bien, et je voulais essayer de faire du Backup-as-a-Service.&lt;/p&gt;
&lt;p&gt;Les besoins sont simple : les utilisateurs ayant un compte sur mon service de SSO devraient pouvoir se connecter sur un service, créer une clé dédiée à une application, puis utiliser cette clé pour backup une machine, serveur ou PC, et envoyer les données sur mon serveur central. Les backups créés devraient être chiffrés, dédupliqués, et avec une gestion des droits pour ne pas permettre à un utilisateur décraser ou de modifier les backups des autres (tout étant chiffré, laccès en lecture est moins critique). Si possible, le service devrait pouvoir définir des quotas par utilisateur ; malheureusement, la solution que jai trouvée ne le permet pas.&lt;/p&gt;
&lt;h2 id=&quot;faire-ses-backups-simplement&quot;&gt;Faire ses backups simplement&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://restic.net/&quot;&gt;Restic&lt;/a&gt; est une excellente alternative à BorgBackup, implémentée en Go. Il permet lutilisation de plusieurs types de backend de stockage, dont du SFTP, une API REST, ou divers protocols cloud comme AWS S3 et léquivalent chez la concurrence, au prix dune compression moindre et dun plus gros usage en ressources, notamment en RAM, que BorgBackup.&lt;/p&gt;
&lt;p&gt;Sur chaque machine, nous allons installer Restic, puis écrire un petit script &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;backup.sh&lt;/code&gt; autour du binaire pour backup facilement la machine. Je suis repartie de mes scripts existants, eux-même basés sur celui proposé &lt;a href=&quot;https://borgbackup.readthedocs.io/en/stable/quickstart.html#automating-backups&quot;&gt;dans la doc de BorgBackup&lt;/a&gt; :&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;restic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/sh&lt;/span&gt;
info&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;printf&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;%s %s&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$*&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&amp;amp;2&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;trap&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;echo $( date ) Backup interrupted &amp;gt;&amp;amp;2; exit 2&apos;&lt;/span&gt; INT TERM
info &lt;span class=&quot;s2&quot;&gt;&quot;Starting backup&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; .env
&lt;span class=&quot;c&quot;&gt;# Prehook start&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# You can write here some commands to run before the backup&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# For example, a database dump, or a service stop&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# Prehook end&lt;/span&gt;
restic backup /path/to/folder1 /path/to/folder2
&lt;span class=&quot;nv&quot;&gt;backup_exit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$?&lt;/span&gt;
restic forget &lt;span class=&quot;nt&quot;&gt;--prune&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--keep-daily&lt;/span&gt; 7 &lt;span class=&quot;nt&quot;&gt;--keep-weekly&lt;/span&gt; 4 &lt;span class=&quot;nt&quot;&gt;--keep-monthly&lt;/span&gt; 12
&lt;span class=&quot;nv&quot;&gt;prune_exit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$?&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# Posthook start&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# You can write cleanup commands here, or you can restart your services&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# Posthook end&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# use highest exit code as global exit code&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;global_exit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$((&lt;/span&gt; backup_exit &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; prune_exit ? backup_exit : prune_exit &lt;span class=&quot;k&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;global_exit&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-eq&lt;/span&gt; 0 &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then
&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Backup and Prune finished successfully&quot;&lt;/span&gt;
curl &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; 10 &lt;span class=&quot;nt&quot;&gt;--retry&lt;/span&gt; 5 https://health.chapoline.me/ping/&amp;lt;UUID&amp;gt;
&lt;span class=&quot;k&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;global_exit&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-eq&lt;/span&gt; 1 &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then
&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Backup and/or Prune finished with warnings&quot;&lt;/span&gt;
curl &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; 10 &lt;span class=&quot;nt&quot;&gt;--retry&lt;/span&gt; 5 https://health.chapoline.me/ping/&amp;lt;UUID&amp;gt;/1
&lt;span class=&quot;k&quot;&gt;else
&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Backup and/or Prune finished with errors&quot;&lt;/span&gt;
curl &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; 10 &lt;span class=&quot;nt&quot;&gt;--retry&lt;/span&gt; 5 https://health.chapoline.me/ping/&amp;lt;UUID&amp;gt;/2
&lt;span class=&quot;k&quot;&gt;fi
&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;global_exit&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; +x backup.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Jutilise une instance de &lt;a href=&quot;https://healthchecks.io/&quot;&gt;healthchecks&lt;/a&gt; pour monitorer mes backups. Je vous encourage à y jeter un coup doeil, cest très pratique pour monitorer les tâches ponctuelles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le fichier &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.env&lt;/code&gt;, qui contient les informations de connexion au backend de stockage, sera créé par la suite. Il est justement temps de choisir ce backend.&lt;/p&gt;
&lt;h2 id=&quot;stocker-ses-backups-quelque-part&quot;&gt;Stocker ses backups quelque part&lt;/h2&gt;
&lt;p&gt;Parmi les différents backends possible, jai fait le choix dutiliser &lt;a href=&quot;https://min.io/&quot;&gt;MinIO&lt;/a&gt;. Ce nest pas un outil que jaime beaucoup utiliser, mais sa compatibilité à lAPI S3 le rend très pratique, et je voulais construire une solution entièrement auto-hébergée.&lt;/p&gt;
&lt;p&gt;Son installation nest pas très simple sous Debian, mais une installation par Docker est possible (et beaucoup plus facile). Pour ma part, je lai instalé sur un serveur sous NixOS :&lt;/p&gt;
&lt;div class=&quot;language-nix highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;lib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;pkgs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}:&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;minio&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;enable&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;networking&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;firewall&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;enable&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;allowedTCPPorts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;22&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;9000&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;9001&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Dans un premier temps, nous allons utiliser les identifiants du compte &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;minioadmin&lt;/code&gt;, pour vérifier que tout fonctionne. &lt;strong&gt;Attention, ne faites pas cela en production&lt;/strong&gt;. On peut revenir sur lautre machine, et créer le fichier &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.env&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTIC_PASSWORD&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;lt;mot de passe de chiffrement des backups&amp;gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTIC_REPOSITORY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;s3:http://&amp;lt;url de minio&amp;gt;:9000/&amp;lt;bucket&amp;gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;minioadmin
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;lt;Mot de passe &lt;span class=&quot;nb&quot;&gt;du &lt;/span&gt;compte minioadmin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Enfin, on peut tester ces informations de connexion :&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; .env
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;restic init
created restic repository f1c6108821 at &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;url]
Please note that knowledge of your password is required to access the repository.
Losing your password means that your data is irrecoverably lost.
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;./backup.sh
Tue Jun 11 08:55:41 UTC 2024 Starting backup
repository f1c6108821 opened successfully, password is correct
...
Tue Jun 11 08:55:45 UTC 2024 Backup and Prune finished successfully
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Le &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;source .env&lt;/code&gt; est nécessaire pour lancer &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;restic init&lt;/code&gt; la première fois, ou pour faire des opérations manuelles sur les backups, mais pas pour lancer &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./backup.sh&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une fois que tout fonctionne, on peut créer un cron pour lancer automatiquement le backup :&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;0 4 * * * /path/to/backup.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Techniquement, un Timer Systemd est mieux et a plus de fonctionnalités, mais la force de lhabitude est forte.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;et-ma-sso-dans-tout-ça-&quot;&gt;Et ma SSO dans tout ça ?&lt;/h2&gt;
&lt;p&gt;Une fois un service de SSO configuré sur MinIO (laissé à titre dexercice au lecteur), la solution précédente, en plus de ne pas être sécurisée, nest plus possible : MinIO ne manipule plus de mot de passe pour le compte utilisateur. Il faut donc utiliser une Access Key. Malheureusement, utiliser directement lAccess Key dans la configuration précédente à la place des identifiants du compte ne fonctionne pas. Il va falloir rajouter un outil : &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aws-cli&lt;/code&gt;. Rassurez vous, bien que développé par AWS pour ses API, cet outil fonctionne parfaitement avec les autres solutions compatibles S3 et nenvoie aucune information à AWS.&lt;/p&gt;
&lt;p&gt;Commençons par nous connecter avec notre compte SSO à MinIO, puis par y générer une Access Key. Installons ensuite &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aws-cli&lt;/code&gt; sur la machine à backup, et configurons le :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cette section est basée sur &lt;a href=&quot;https://min.io/docs/minio/linux/integrations/aws-cli-with-minio.html&quot;&gt;https://min.io/docs/minio/linux/integrations/aws-cli-with-minio.html&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;awscli
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;aws configure
AWS Access Key ID &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;None]: Q3AM3UQ867SPQQA43P2F
AWS Secret Access Key &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;None]: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
Default region name &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;None]: ENTER
Default output format &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;None]: ENTER
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;aws configure &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;default.s3.signature_version s3v4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Enfin, éditez le fichier &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.env&lt;/code&gt;, pour remplacer les informations de connexion par le profile AWS que lon vient de créer :&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTIC_PASSWORD&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;lt;mot de passe de chiffrement des backups&amp;gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTIC_REPOSITORY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;s3:http://&amp;lt;url de minio&amp;gt;:9000/&amp;lt;bucket&amp;gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;AWS_PROFILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;default
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Vous pouvez retester que tout fonctionne comme précédemment. Il faudra probablement utiliser un autre bucket, ou supprimer le bucket du test précédent.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Concernant les quotas, &lt;a href=&quot;https://github.com/minio/minio/discussions/12361&quot;&gt;MinIO ne propose pas de quota par utilisateur&lt;/a&gt;, uniquement des quotas par bucket, et ne permet pas de définir des quotas par défaut pour tout nouveau bucket créé. Cette solution nest donc possible quavec des utilisateurs de confiance, et nécessite un monitoring de lespace de stockage du serveur MinIO.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour des backups encore plus sûrs, vous pouvez mettre en place &lt;a href=&quot;https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html&quot;&gt;un cluster MinIO&lt;/a&gt;, et/ou répliquer les buckets vers un autre serveur de stockage (auto-hébergé ou dans le Cloud) avec &lt;a href=&quot;https://rclone.org/&quot;&gt;rclone&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>Caroline Canebier</name></author><category term="sysadmin" /><category term="mainpage" /><summary type="html">Pour mon infrastructure de backups, jutilise depuis plusieurs années BorgBackup, un excellent outil pour chiffrer et dédupliquer ses sauvegardes, puis les stocker via SSH. Pour les sauvegardes de mes serveurs, il moffre une complète satisfaction. Mais je voulais explorer un nouvel outil dont on mavait dit beaucoup de bien, et je voulais essayer de faire du Backup-as-a-Service.</summary></entry></feed>