Zum Inhalt springen

Offsite-Backups

Backups auf derselben Platte wie deine Projekte helfen nicht, wenn die Platte stirbt, das NAS geklaut wird oder es brennt. Offsite-Backups kopieren sie woandershin. Einrichten kannst du das unter Einstellungen → Backups → Offsite-Backups. Die lokalen Backups bleiben deine Arbeitskopien, und jedes Ziel führt seinen eigenen Bestand.

Drei Arten von Speicher gehen, und eine davon hat man meistens schon:

Typ Für Was es braucht
S3-kompatibel AWS S3, Backblaze B2, Wasabi, Hetzner Object Storage, Cloudflare R2, MinIO Endpoint-URL, Bucket, Region, Access Key und Secret Key
SFTP Hetzner Storage Box (Port 23), ein NAS, jeder SSH-Server Host, Port, Benutzer, Passwort und/oder ein OpenSSH-Private-Key ohne Passphrase
WebDAV Nextcloud/ownCloud (https://cloud.example.com/remote.php/dav/files/<benutzer> mit App-Passwort), Storage Box, NAS URL, Benutzer, Passwort

Bevor du dich auf ein Ziel verlässt, drück Testen. Envoryx schreibt dann eine kleine Datei, listet, liest und löscht sie wieder - danach weißt du, dass die Zugangsdaten wirklich passen. Bei SFTP merkt es sich dabei auch den Schlüssel des Servers. Ändert der sich später, stoppen die Uploads, bis du den Pin zurücksetzt. Das ist Absicht: Ein neuer Schlüssel kann heißen, dass jemand dazwischensitzt. Die Zugangsdaten liegen in /config/offsite.json (Modus 0600) und gehen nie zurück an den Browser.

Jedes Ziel entscheidet selbst, was es bekommt.

Geplante Projekt-Backups gehen hoch, sobald sie fertig sind, und zwar für alle Projekte. Pro Projekt behalten rotiert diese Kopien auf dem Ziel (0 behält alle); von Hand kopierte Backups räumt die Rotation nie weg.

Die andere Hälfte ist das tägliche Instanz-Backup. Zur gewählten Stunde legt Envoryx ein Instanz-Backup an und kopiert es. Genau das braucht ein frisches Envoryx, wenn der alte Host weg ist - es lohnt sich also, das einzuschalten.

Einzelne Backups schickst du jederzeit selbst los: Offsite kopieren neben einem Backup, Auch offsite kopieren beim Anlegen oder auf der Kommandozeile:

Terminal-Fenster
envoryx backup create shop --offsite
envoryx backup offsite shop <backup>

Die Uploads laufen im Hintergrund. Klappt einer nicht, versucht Envoryx es nach 5, 15 und 45 Minuten und nach 2 Stunden erneut, und bei jedem Fehler kommt die Benachrichtigung Backup fehlgeschlagen. Im Bereich Backups siehst du, wie es um jede Kopie steht.

In Backups stecken Passwörter, Tokens und Daten des Projekts, deshalb ist die Verschlüsselung standardmäßig an - als Schalter pro Ziel. Bevor ein Archiv den Host verlässt, verschlüsselt Envoryx es mit age und deiner Passphrase. Der Speicheranbieter bekommt nur .age-Dateien zu sehen.

Zum Öffnen brauchst du Envoryx übrigens nicht: age -d -o backup.tar backup.tar.age reicht.

Auf dem Ziel liegt alles unterhalb eines Ordners (standardmäßig envoryx, damit sich mehrere Instanzen einen Bucket teilen können):

projects/<slug>/<backup>.<inhalt>.<quelle>.tar[.age]
instance/<instanz-backup-id>.tar.gz[.age]

Die Karte Offsite-Kopien im Bereich Backups eines Projekts zeigt, was das Ziel für dieses Projekt hat - auch Backups, die du lokal schon gelöscht hast. Mit Abrufen holst du eines zurück in die lokale Liste und stellst es von dort wie gewohnt wieder her.

Terminal-Fenster
envoryx backup remote shop
envoryx backup fetch shop <backup> # --target NAME bei mehreren Zielen

Für diesen Moment ist das Ganze gedacht. Die Reihenfolge ist wichtig: Das Instanz-Backup bringt Projekte und Ziele zurück, die Projekt-Backups danach die Daten.

  1. Starte ein frisches Envoryx und leg ein Konto an.
  2. Unter Einstellungen → Backups legst du dasselbe Ziel mit demselben Ordner und derselben Passphrase an.
  3. Unter Instanz-Backups → Von einem Offsite-Ziel holst du das neueste ab und stellst es wieder her. Envoryx startet mit den alten Konten, Projekten, Einstellungen und Zielen neu - melde dich mit deinen alten Zugangsdaten an.
  4. Für jedes Projekt: Backups → Offsite-Kopien → Abrufen, dann Datenbank, Dateien und Bucket wiederherstellen. Beim Start des Projekts entstehen seine Container neu.

Ein Projekt, das das Instanz-Backup nicht kennt - danach angelegt, oder es gibt gar kein Instanz-Backup -, kommt auch allein zurück: Einstellungen → Backups → Backups gelöschter Projekte → Von einem Offsite-Ziel listet jedes Projekt auf dem Ziel, und In neues Projekt wiederherstellen holt das Backup und richtet das Projekt mit den Einstellungen wieder ein, mit denen es gemacht wurde.

Die Projekt-Backups auf dem Ziel NAS: ein verschlüsseltes geplantes Backup von acme-shop und eins von old-landing-page, jeweils mit dem Knopf In neues Projekt wiederherstellenDie Projekt-Backups auf dem Ziel NAS: ein verschlüsseltes geplantes Backup von acme-shop und eins von old-landing-page, jeweils mit dem Knopf In neues Projekt wiederherstellen

Auf der Kommandozeile:

Terminal-Fenster
envoryx backup recover # die Backups aller Projekte auf dem Ziel
envoryx backup recover blog # das neueste Backup von blog, als neues Projekt

Die Projekteinstellungen in einem Backup sind mit dem Secret Key der Instanz versiegelt, dafür brauchst du also den Schlüssel der alten Instanz. Das gilt auch für deine eigene Instanz, wenn du ihren Schlüssel ersetzt hast: Die Kopien, die schon auf einem Ziel liegen, werden nicht neu verschlüsselt, die älteren brauchen also weiter den alten Schlüssel. Fehlt er, nennt dir die Fehlermeldung die ID des Schlüssels, den das Backup braucht.

Verwaltet ein Hoster deine Instanz, kann der Tarif ein Ziel von ihm mitbringen. Es steht in der Liste mit dem Vermerk von deinem Hoster: Dein tägliches Instanz-Backup geht dorthin, und du kannst Kopien daraus holen wie aus deinen eigenen, es aber weder ändern noch löschen. Mehr dazu unter Verwaltete Instanzen.

Die Liste der Offsite-Ziele mit dem S3-Ziel des Hosters oben, markiert mit von deinem Hoster, mit täglichem Instanz-Backup um 03:00, verschlüsselt, und seinem letzten Upload; darunter das eigene Ziel der InstanzDie Liste der Offsite-Ziele mit dem S3-Ziel des Hosters oben, markiert mit von deinem Hoster, mit täglichem Instanz-Backup um 03:00, verschlüsselt, und seinem letzten Upload; darunter das eigene Ziel der Instanz