From 3f86fa7d7de99f9b58f82bf861bf90678fc077a0 Mon Sep 17 00:00:00 2001 From: Pim Kunis <pim@kunis.nl> Date: Sun, 25 May 2025 18:07:25 +0200 Subject: [PATCH] Backup media volumes --- machines/atlas/configuration.nix | 1 - machines/jefke/configuration.nix | 1 - machines/lewis/configuration.nix | 44 ++++++++++++++++++++++++++++++++ nixos/backups-ng.nix | 9 +++---- 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/machines/atlas/configuration.nix b/machines/atlas/configuration.nix index 76c32ca..3d00282 100644 --- a/machines/atlas/configuration.nix +++ b/machines/atlas/configuration.nix @@ -7,7 +7,6 @@ pim.backups.borgBackups = { freshrss = { - repo = "ssh://ty1l82m0@ty1l82m0.repo.borgbase.com/./repo"; paths = ["/mnt/longhorn/persistent/volumes/freshrss"]; deploymentName = "server"; deploymentNamespace = "freshrss"; diff --git a/machines/jefke/configuration.nix b/machines/jefke/configuration.nix index a435c25..f30cb56 100644 --- a/machines/jefke/configuration.nix +++ b/machines/jefke/configuration.nix @@ -7,7 +7,6 @@ pim.backups.borgBackups = { radicale = { - repo = "ssh://s9cx8q8a@s9cx8q8a.repo.borgbase.com/./repo"; paths = ["/mnt/longhorn/persistent/volumes/radicale"]; deploymentName = "server"; deploymentNamespace = "radicale"; diff --git a/machines/lewis/configuration.nix b/machines/lewis/configuration.nix index 70337f7..557550c 100644 --- a/machines/lewis/configuration.nix +++ b/machines/lewis/configuration.nix @@ -22,6 +22,50 @@ k3s.serverAddr = "https://jefke.dmz:6443"; data-sharing.enable = true; backups.enable = true; + + backups.borgBackups = { + bazarr = { + paths = ["/mnt/longhorn/persistent/volumes/bazarr"]; + deploymentName = "bazarr"; + deploymentNamespace = "media"; + }; + + deluge = { + paths = ["/mnt/longhorn/persistent/volumes/deluge"]; + deploymentName = "deluge"; + deploymentNamespace = "media"; + }; + + jellyfin = { + paths = ["/mnt/longhorn/persistent/volumes/jellyfin"]; + deploymentName = "jellyfin"; + deploymentNamespace = "media"; + }; + + jellyseerr = { + paths = ["/mnt/longhorn/persistent/volumes/jellyseerr"]; + deploymentName = "jellyseerr"; + deploymentNamespace = "media"; + }; + + prowlarr = { + paths = ["/mnt/longhorn/persistent/volumes/prowlarr"]; + deploymentName = "prowlarr"; + deploymentNamespace = "media"; + }; + + radarr = { + paths = ["/mnt/longhorn/persistent/volumes/radarr"]; + deploymentName = "radarr"; + deploymentNamespace = "media"; + }; + + sonarr = { + paths = ["/mnt/longhorn/persistent/volumes/sonarr"]; + deploymentName = "sonarr"; + deploymentNamespace = "media"; + }; + }; }; systemd = { diff --git a/nixos/backups-ng.nix b/nixos/backups-ng.nix index 1cb100f..b79b3fa 100644 --- a/nixos/backups-ng.nix +++ b/nixos/backups-ng.nix @@ -6,9 +6,6 @@ }: let borgBackupOpts = { options = { - repo = lib.mkOption { - type = lib.types.str; - }; paths = lib.mkOption { type = with lib.types; listOf str; }; @@ -35,12 +32,14 @@ in { # TODO: should have some timeout and alerting? config = { services.borgbackup.jobs = - lib.mapAttrs (_name: c: { - inherit (c) repo paths; + lib.mapAttrs (name: c: { + inherit (c) paths; + repo = "ssh://w553a7cb@w553a7cb.repo.borgbase.com/./repo"; startAt = "*-*-* 00:00:00"; # TODO: low benefit, but we could set borgbase's host keys here as they are published online. environment.BORG_RSH = "ssh -i ${config.sops.secrets."borg/borgbasePrivateKey".path} -o StrictHostKeychecking=no"; postHook = "${pkgs.k3s}/bin/kubectl scale deployment -n ${c.deploymentNamespace} ${c.deploymentName} --replicas=${toString c.replicaCount}"; + archiveBaseName = name; prune.keep = { within = "7d";