Muutsin nüüd oma NixOS koduserveri varundust ja asendasin lihtsa igapäevase skripti tunnise varundusega. Mitte küll nii elegantne kui Mastodoni instantsis, mida mu sõber haldab – seal teeme iga 20 minuti järel ZFS snapshot'i – aga olen ka selle lahendusega rahul. Ja pean ütlema, et NixOS meeldib mulle üha enam. Ilma tehisintellektita oleks see aga liiga keeruline, et ma sellest aru saaksin, kuid nüüdseks suudan valmis Nix-faile vähemalt lugeda. Kaalusid korraks serveri üleviimist tavalisele Linuxile, aga seni kuni see nii hästi töötab...

  1. /etc/nixos: Kogu NixOS-i konfiguratsioon (kõik .nix failid).

  2. /opt/minecraft: Kõik Minecrafti serveri maailmad ja andmed.

  3. /opt/satisfactory: Satisfactory serveri salvestused ja konfiguratsioon.

  4. /opt/Blog: Blogi lähtekood ja sisu.

  5. /opt/ui: Mastodoni kasutajaliidese (UI) failid.

  6. /opt/audiobookshelf: Audioraamatud ja nendega seotud andmebaas.

Kõik see maandub S3-salvestusruumis, mis on ühendatud RClone'i kaudu.

NixOS-i konfiguratsioon


{ config, pkgs, ... }:

{
  # BorgBackupi konfiguratsioon
  services.borgbackup.jobs.hourly = {
    # Tee repositooriumini S3-mountis
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Parooli pole vaja
    encryption.mode = "none";

    # Pakkimine veelgi suurema ruumisäästu saavutamiseks
    compression = "auto,zstd";

    # Varundatavad asukohad
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Käivitamine kord tunnis
    startAt = "hourly";

    # Repositooriumi automaatne lähtestamine, kui see puudub
    doInit = true;

    # Säilitamisreeglid (Pruning)
    prune.keep = {
      within = "1d"; # Kõik viimase 24 tunni snapshotid
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Veendumine, et S3-mount on valmis enne Borgi käivitamist
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}