Backup media volumes
This commit is contained in:
parent
49f5ee7166
commit
3f86fa7d7d
4 changed files with 48 additions and 7 deletions
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue