Ich habe jetzt mal das Backup meines NixOS Homeservers umgestellt und statt einem einfachen täglichen Script auf stündlich umgestellt. Nicht ganz so elegant wie auf der Mastodon Instanz, die mein Freund verwaltet – hier haben wir alle 20 Minuten einen ZFS Snapshot – aber mit der Lösung bin ich auch zufrieden. Und ich muss sagen NixOS gefällt mir immer besser. Ohne KI wäre es allerdings viel zu kompliziert, als dass ich es verstehen könnte, aber mittlerweile kann ich die fertigen Nix-Dateien zumindest lesen. Hatte mal überlegt den Server auf ein normales Linux umzustellen, aber solange das so gut funktioniert...
-
/etc/nixos: Die gesamte NixOS-Konfiguration (alle .nix Dateien). -
/opt/minecraft: Alle Welten und Daten des Minecraft-Servers. -
/opt/satisfactory: Spielstände und Konfiguration des Satisfactory-Servers. -
/opt/Blog: Der Quellcode und die Inhalte des Blogs. -
/opt/ui: Die Mastodon-UI Dateien. -
/opt/audiobookshelf: Die Hörbücher und die zugehörige Datenbank.
Das ganze landet auf einem S3 Storage der via RClone gemoundet wurde.
Die NixOS Konfiguration
{ config, pkgs, ... }:
{
# BorgBackup Konfiguration
services.borgbackup.jobs.hourly = {
# Pfad zum Repository im S3-Mount
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Kein Passwort erforderlich
encryption.mode = "none";
# Kompression für noch mehr Platzersparnis
compression = "auto,zstd";
# Die zu sichernden Pfade
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Stündliche Ausführung
startAt = "hourly";
# Repository automatisch initialisieren, falls es fehlt
doInit = true;
# Aufbewahrungsregeln (Pruning)
prune.keep = {
within = "1d"; # Alle Snapshots der letzten 24h
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Sicherstellen, dass der S3-Mount bereit ist, bevor Borg startet
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}