Add backups for Lappy-T495

This commit is contained in:
chaos 2024-03-10 17:17:05 +00:00
parent bde2d41b9f
commit 0e271b08c4
No known key found for this signature in database
7 changed files with 65 additions and 0 deletions

View file

@ -21,6 +21,7 @@ in {
restic_owncast = restic + 8;
restic_jellyfin = restic + 9;
restic_grocy = restic + 10;
restic_lappy_t495 = restic + 11;
http_music = http + 0;
http_public = http + 1;

View file

@ -125,6 +125,7 @@ in {
"/Owncast/".proxyPass = "http://${containerIP}:${toString ports.restic_owncast}";
"/Jellyfin/".proxyPass = "http://${containerIP}:${toString ports.restic_jellyfin}";
"/Grocy/".proxyPass = "http://${containerIP}:${toString ports.restic_grocy}";
"/Lappy-T495/".proxyPass = "http://${containerIP}:${toString ports.restic_lappy_t495}";
};
extraConfig = ''
client_max_body_size ${clientMaxBodySize};

View file

@ -233,6 +233,16 @@ in {
"--baseurl=/Grocy/"
];
}
{
id = "restic-lappy-t495";
remote = "StorageBox:Backups/Restic/Lappy-T495";
type = "restic";
extraArgs = [
"--addr=0.0.0.0:${toString ports.restic_lappy_t495}"
"--htpasswd=${secrets.restic_lappy_t495_htpasswd.path}"
"--baseurl=/Lappy-T495/"
];
}
];
};
}

View file

@ -36,6 +36,7 @@
"api-keys/data/storage/restic/Owncast"
"api-keys/data/storage/restic/Jellyfin"
"api-keys/data/storage/restic/Grocy"
"api-keys/data/storage/restic/Lappy-T495"
"api-keys/data/storage/webdav/Main"
"api-keys/data/storage/webdav/Media"
@ -191,6 +192,14 @@
'';
};
restic_lappy_t495_htpasswd = {
user = "storage";
group = "storage";
fetchScript = ''
simple_get_htpasswd "/api-keys/storage/restic/Lappy-T495" "$secretFile"
'';
};
webdav_main_htpasswd = {
user = "storage";
group = "storage";

View file

@ -14,6 +14,8 @@
profiles.gaming.steam
hosts.lappy-t495.profiles.restic
./secrets.nix
];

View file

@ -0,0 +1,28 @@
{config, ...}: let
secrets = config.services.secrets.secrets;
in {
services.restic.backups.lappy-t495 = {
user = "root";
createWrapper = true;
paths = [
"/etc/NetworkManager/system-connections"
"/home/chaos/Projects"
];
extraBackupArgs = [
"--exclude-caches"
"--exclude=node_modules"
"--exclude=/home/chaos/Projects/*/target"
];
repositoryFile = "${secrets.restic_backups_repository_file.path}";
passwordFile = "${secrets.restic_backups_password.path}";
pruneOpts = ["--keep-within=14d"];
timerConfig = {
OnStartupSec = "5m";
OnUnitActiveSec = "30m";
};
};
}

View file

@ -27,6 +27,20 @@
echo "RESTIC_PASSWORD=''${restic_password}" >> "$secretFile"
'';
};
restic_backups_password = {
fetchScript = ''
simple_get "/private-public-keys/restic/Lappy-T495" .password >> "$secretFile"
'';
};
restic_backups_repository_file = {
fetchScript = ''
api_username=restic
api_password=$(simple_get "/api-keys/storage/restic/Lappy-T495" ".$api_username")
echo "rest:https://$api_username:$api_password@storage-restic.owo.monster/Lappy-T495" > "$secretFile"
'';
};
};
};
}