Jeg har nå lagt om backupen av min NixOS-hjemmeserver og gått fra et enkelt daglig skript til timesvise sikkerhetskopier. Ikke fullt så elegant som på Mastodon-instansen som vennen min administrerer – der har vi en ZFS-snapshot hvert 20. minutt – men jeg er fornøyd med denne løsningen også. Og jeg må si at jeg liker NixOS bedre og bedre. Uten KI ville det imidlertid vært altfor komplisert til at jeg kunne forstått det, men nå kan jeg i det minste lese de ferdige Nix-filene. Jeg vurderte på et tidspunkt å bytte serveren til en vanlig Linux-distribusjon, men så lenge dette fungerer så bra...

  1. /etc/nixos: Hele NixOS-konfigurasjonen (alle .nix-filer).

  2. /opt/minecraft: Alle verdener og data for Minecraft-serveren.

  3. /opt/satisfactory: Lagrede spill og konfigurasjon for Satisfactory-serveren.

  4. /opt/Blog: Kildekoden og innholdet i bloggen.

  5. /opt/ui: Mastodon-UI-filene.

  6. /opt/audiobookshelf: Lydbøkene og den tilhørende databasen.

Det hele havner på en S3-lagring som er montert via RClone.

NixOS-konfigurasjonen


{ config, pkgs, ... }:

{
  # BorgBackup-konfigurasjon
  services.borgbackup.jobs.hourly = {
    # Sti til repositoriet i S3-monteringen
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Ingen passord kreves
    encryption.mode = "none";

    # Komprimering for enda mer plassbesparelse
    compression = "auto,zstd";

    # Stiene som skal sikkerhetskopieres
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Utførelse hver time
    startAt = "hourly";

    # Initialiser repositoriet automatisk hvis det mangler
    doInit = true;

    # Oppbevaringsregler (Pruning)
    prune.keep = {
      within = "1d"; # Alle snapshots fra de siste 24 timene
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Sikre at S3-monteringen er klar før Borg starter
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}