Mi ĵus ŝanĝis la sekurkopian sistemon de mia NixOS hejma servilo kaj anstataŭigis simplan ĉiutagan skripton per hora sekurkopio. Ne tute tiel eleganta kiel ĉe la Mastodon-instanco, kiun mia amiko administras – tie ni havas ZFS-momentkopion ĉiun 20-an minuton – sed mi estas kontenta ankaŭ pri ĉi tiu solvo. Kaj mi devas diri, ke NixOS plaĉas al mi pli kaj pli. Sen AI ĝi tamen estus tro komplika por ke mi povu kompreni ĝin, sed intertempe mi almenaŭ povas legi la finitajn Nix-dosierojn. Mi iam pripensis reŝanĝi la servilon al kutima Linukso, sed tiel longe kiel tio tiel bone funkcias...

  1. /etc/nixos: La tuta NixOS-agordo (ĉiuj .nix-dosieroj).

  2. /opt/minecraft: Ĉiuj mondoj kaj datumoj de la Minecraft-servilo.

  3. /opt/satisfactory: Ludostatoj kaj agordo de la Satisfactory-servilo.

  4. /opt/Blog: La fontkodo kaj la enhavoj de la blogo.

  5. /opt/ui: La Mastodon-UI-dosieroj.

  6. /opt/audiobookshelf: La aŭdlibroj kaj la rilata datumbazo.

La tuto finiĝas en S3-stokrejo, kiu estis muntita per RClone.

La NixOS-agordo


{ config, pkgs, ... }:

{
  # BorgBackup-agordo
  services.borgbackup.jobs.hourly = {
    # Vojo al la deponejo en la S3-munto
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # Neniu pasvorto necesa
    encryption.mode = "none";

    # Kunpremo por eĉ pli da spacŝparo
    compression = "auto,zstd";

    # La sekurkopiotaj vojoj
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # Hora plenumo
    startAt = "hourly";

    # Aŭtomate pravalorizi la deponejon, se ĝi mankas
    doInit = true;

    # Konservreguloj (Pruning)
    prune.keep = {
      within = "1d"; # Ĉiuj momentkopioj de la lastaj 24h
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # Certigi, ke la S3-munto estas preta antaŭ ol Borg startas
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}