Esmu nomainījis sava NixOS mājas servera dublēšanas sistēmu un vienkārša ikdienas skripta vietā pārgājis uz stundas dublējumiem. Nav gluži tik eleganti kā Mastodon instancē, kuru pārvalda mans draugs – tur mums ir ZFS momentuzņēmumi ik pēc 20 minūtēm – bet ar šo risinājumu esmu apmierināts. Un jāsaka, ka NixOS man patīk arvien labāk. Bez mākslīgā intelekta tas gan būtu pārāk sarežģīti, lai es to saprastu, bet tagad es vismaz spēju izlasīt gatavos Nix failus. Biju domājis pārcelt serveri uz parastu Linux, bet, kamēr tas tik labi darbojas...

  1. /etc/nixos: Visa NixOS konfigurācija (visi .nix faili).

  2. /opt/minecraft: Visas Minecraft servera pasaules un dati.

  3. /opt/satisfactory: Satisfactory servera saglabātie dati un konfigurācija.

  4. /opt/Blog: Bloga pirmkods un saturs.

  5. /opt/ui: Mastodon UI faili.

  6. /opt/audiobookshelf: Audiogrāmatas un saistītā datubāze.

Tas viss nonāk S3 krātuvē, kas ir piemontēta, izmantojot RClone.

Die NixOS Konfiguration


{ config, pkgs, ... }:

{
  # BorgBackup konfigurācija
  services.borgbackup.jobs.hourly = {
    # Ceļš uz repozitoriju S3 montējumā
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Parole nav nepieciešama
    encryption.mode = "none";

    # Saspiešana vēl lielākai vietas taupīšanai
    compression = "auto,zstd";

    # Dublējamie ceļi
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Izpilde reizi stundā
    startAt = "hourly";

    # Automātiski inicializēt repozitoriju, ja tā trūkst
    doInit = true;

    # Saglabāšanas noteikumi (Pruning)
    prune.keep = {
      within = "1d"; # Visi momentuzņēmumi pēdējo 24h laikā
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Pārliecināties, ka S3 montējums ir gatavs, pirms Borg sāk darbu
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}