diff --git a/content/posts/2023-12-30-restic.md b/content/posts/2023-12-30-restic.md index 6c3c3863d9..ad0a8dcf1c 100644 --- a/content/posts/2023-12-30-restic.md +++ b/content/posts/2023-12-30-restic.md @@ -510,15 +510,61 @@ Match User restucuser Eine modifizierte Version von `run-restic` von oben sollte nun Daten in diesen Speicher schieben können. -# `restic-server` +# `rest-server` (via Matthias Gumz) -[`restic-server`](https://github.com/restic/rest-server) ist ein Unterprojekt von `restic`, +[`rest-server`](https://github.com/restic/rest-server) ist ein Unterprojekt von `restic`, das ein Server-Backend für das REST-Protokoll von `restic` implementiert. Es hat einen `--append-only` Modus, mit dem man Backups aus unsicheren Quellen annehmen kann, ohne daß die Backup-Quelle das Backup zerstören oder löschen kann. -Natürlich muß `prune` dann lokal auf dem Server getriggert werden und nicht durch den Backup-Prozess. +Natürlich müssen `forget` und `prune` dann lokal auf dem Server getriggert werden und nicht durch den Backup-Prozess. Das Projekt kommt mit einer umfangreichen Installationsanleitung und mit offiziellen Docker-Images, -sodaß das Aufsetzen eines Server mit wenigen Handgriffen getan ist. +sodass das Aufsetzen eines Servers mit wenigen Handgriffen getan ist. + +Der Aufruf sieht im Wesentlichen so aus: + +```bash +$ lvcreate -L 100G -n testing hdd +$ mkfs -t xfs /dev/hdd/testing +$ mkdir /backup/testing +$ mount /dev/hdd/testing /backup/testing +$ cd /backup/testing +$ htpasswd -B -c .htpasswd kris +Password: keks +$ cp /etc/apache2/md/domains/{privkey,pubcert}.pem . +$ rest-server \ + --append-only \ + --tls \ + --tls-cert pubcert.pem \ + --tls-key privkey.pem \ + --path /backup/testing/ \ + --max-size 107374182400 \ + --listen '192.168.1.10:8000' +``` + +*Testweises Starten von `rest-server` mit lokalen Kopien der bei "Let's Encrypt" generierten Zertifikate und ein Test-Repository.* + +Der Beispielaufruf startet den `rest-server` auf Port 8000 der Testmaschine. +Er verwendet Kopien der von "mod_md" generierten "Let's Encrypt"-Zertifikate aus `/etc/apache/md/domains`, +und greift auf ein "append-only"-Repository in `/backup/testing` zu. +Die Größe des Repository ist auf 100 GB (100 * 1024^3 Bytes) limitiert. + +Wir können das Repository unter dem Namen `rest:https://home.example.com:8000` ansprechen. +Also + +```bash +$ export RESTIC_REPOSITORY=rest:https://home.example.com:8000 +$ export RESTIC_PASSWORD=keks +$ restic init +... +$ restic backup --exclude-caches /etc +``` + +zum Sichern ein paar mal laufen lassen und dann `restic snapshots` zum Ansehen der Backups. + +Löschen von Backups mit `forget` und `prune` ist durch den Client nicht mehr machbar. + +Stattdessen kann man das Backup lokal als `-r /backup/testing` ansprechen und per Cron +das entsprechende `forget --prune --keep...`-Regel laufen lassen.