some backup fixes

This commit is contained in:
Dmitriy Kholkin 2024-01-24 17:28:12 +03:00
parent d31c49ed15
commit 237a8e9ded
Signed by: AtaraxiaDev
GPG Key ID: FD266B810DF48DF2
5 changed files with 41 additions and 13 deletions

View File

@ -1,6 +1,6 @@
{ config, inputs, ... }: {
sops.secrets.rustic-nas-pass.sopsFile = inputs.self.secretsDir + /backup-conf.yaml;
sops.secrets.rclone-rustic-backups.sopsFile = inputs.self.secretsDir + /backup-conf.yaml;
sops.secrets.rustic-nas-pass.sopsFile = inputs.self.secretsDir + /rustic.yaml;
sops.secrets.rclone-rustic-backups.sopsFile = inputs.self.secretsDir + /rustic.yaml;
services.rustic.backups = rec {
nas-backup = {
backup = true;

View File

@ -63,6 +63,12 @@
{ name = "wiki.ataraxiadev.com"; type = "AAAA"; value = "fd7a:115c:a1e0::3"; }
];
dnsmasq-list = [
# TODO: Fix dns resolution in blocky for unmapped subdomains of ataraxiadev.com
"/element.ataraxiadev.com/83.138.55.118"
"/matrix.ataraxiadev.com/83.138.55.118"
"/stats.ataraxiadev.com/83.138.55.118"
"/turn.ataraxiadev.com/83.138.55.118"
"/api.ataraxiadev.com/192.168.0.10"
"/auth.ataraxiadev.com/192.168.0.10"
"/cache.ataraxiadev.com/192.168.0.10"

View File

@ -1,6 +1,6 @@
{ config, inputs, ... }: {
sops.secrets.rustic-vps-pass.sopsFile = inputs.self.secretsDir + /backup-conf.yaml;
sops.secrets.rclone-rustic-backups.sopsFile = inputs.self.secretsDir + /backup-conf.yaml;
sops.secrets.rustic-vps-pass.sopsFile = inputs.self.secretsDir + /rustic.yaml;
sops.secrets.rclone-rustic-backups.sopsFile = inputs.self.secretsDir + /rustic.yaml;
services.rustic.backups = rec {
vps-backup = {
backup = true;

View File

@ -176,6 +176,21 @@ in
];
};
backupCommandPrefix = mkOption {
type = types.str;
default = "";
description = lib.mdDoc ''
Prefix for backup command.
'';
};
backupCommandSuffix = mkOption {
type = types.str;
default = "";
description = lib.mdDoc ''
Suffix for backup command.
'';
};
backupPrepareCommand = mkOption {
type = with types; nullOr str;
@ -224,10 +239,6 @@ in
profile = settingsFormat.generate "${name}.toml" backup.settings;
extraOptions = concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
rusticCmd = "${backup.package}/bin/rustic -P ${lib.strings.removeSuffix ".toml" profile}${extraOptions}";
pruneCmd = optionals (backup.prune) [
(rusticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts))
(rusticCmd + " check " + (concatStringsSep " " backup.checkOpts))
];
# Helper functions for rclone remotes
rcloneAttrToOpt = v: "RCLONE_" + toUpper (builtins.replaceStrings [ "-" ] [ "_" ] v);
toRcloneVal = v: if lib.isBool v then lib.boolToString v else v;
@ -247,10 +258,17 @@ in
restartIfChanged = false;
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
script = ''
${optionalString (backup.backup) ''
${backup.backupCommandPrefix} ${rusticCmd} backup ${concatStringsSep " " backup.extraBackupArgs} ${backup.backupCommandSuffix}
''}
${optionalString (backup.prune) ''
${rusticCmd} forget --prune ${concatStringsSep " " backup.pruneOpts}
${rusticCmd} check ${concatStringsSep " " backup.checkOpts}
''}
'';
serviceConfig = {
Type = "oneshot";
ExecStart = (optionals backup.backup [ "${rusticCmd} backup ${concatStringsSep " " backup.extraBackupArgs}" ])
++ pruneCmd;
User = backup.user;
RuntimeDirectory = "rustic-backups-${name}";
CacheDirectory = "rustic-backups-${name}";
@ -265,7 +283,7 @@ in
${pkgs.writeScript "backupPrepareCommand" backup.backupPrepareCommand}
''}
${optionalString (backup.initialize) ''
${rusticCmd} snapshots || ${rusticCmd} init ${concatStringsSep " " backup.initializeOpts}
${rusticCmd} init ${concatStringsSep " " backup.initializeOpts} || true
''}
'';
} // optionalAttrs (backup.backupCleanupCommand != null) {

View File

@ -1,14 +1,18 @@
rclone-rustic-backups: ENC[AES256_GCM,data:78Ch7VVk/9rPy8pTQCTmuSSXWVKlNwlaTxnrM4yBi8/AQ6B4QJYQr1ibtxbgFs4aGHMddJbARLILT9afzXVF3dwyZ5490v8b+6NmGQ/ECdLpQ3LUGWzQHSkTQRib8s2ks2v3XC7AAzUr4hNdXHxL4/11WrKIL5wJyn2YP/KngQoIjijkpzoAoKZgr9cTZDSQ3FsnDv6WlQ4lTneRSkssFmHrytgFWEj/EXTqeZo5/2E7GrqFC161iO/p6+ZM9dNFoSsLxj4SI5gF2HsUChZbDfMyMdzYCHTt,iv:a1Vgs89rKIDJ//CCN94F3rzUSBtbrBB9fB8nZpFacTg=,tag:Y4QA6YKOUAWN5uhnG2C95Q==,type:str]
rclone-postgresql-backups: ENC[AES256_GCM,data:rEINBfZezX3YSfQQhYm9JsgHOZE4c4us3dl5FvgZv2L+uIsoVVSNt0gr6My/nk19hL7IGY1I7ab2YgEwKE3w4rV3wpZ6+lCAucNM2YvGXWoqpvOvhH0YGfASA7yOSDaLZ69zL07UGX0WK2Z2dDrLOEz8NJsPbOn55XvDXVwjtR1o3R7j7bLKUHgcm8S/JGF0IQXvJWBN/WQzF66rFjNf0SxReEfa/mYLr3w+qdBpRVsZ3yiXQrvFUWj9GNS3FYfG6wro5SLGLuX7hDkGE+KiKv7j0cuMkphlQu0IyQ==,iv:NodSsCEPz6dMfSbHKE3sIfehaZ7cD3tq3gVtTceHmrg=,tag:lBDzO4QmOGyUBX5aAm2TYA==,type:str]
rustic-nas-pass: ENC[AES256_GCM,data:uDiQQRxlpBfbwihXDR32aGjP41iZ,iv:qx6FJEllahkP9BPYFFfv9LHnnVTOl6B7Jv9OSfNkPok=,tag:MBUT77ccG/acr/U/X2zrCA==,type:str]
rustic-vps-pass: ENC[AES256_GCM,data:LMdVK6j/TV9JLAxwWUtIfF//nf6r,iv:PjOYcNeLjlRx6uoZo+jr0oA9N60NJNNPloc9fc44raw=,tag:AjOzsfVIhDCb5a5D3yIdUA==,type:str]
rustic-postgresql-pass: ENC[AES256_GCM,data:oUHakvIPSwkNy1lkQ4k14+CWIofO,iv:v3EFeZCkFyeY/ADK8vqYvAD0XDmnQFIq6XGd9B8jvXY=,tag:6+kGWMq+9iVLSf5p/TIp8g==,type:str]
rustic-minio-secret-key: ENC[AES256_GCM,data:Jkn0mHcLFWS/euPCYtEF3hXN4Jx8PHZHA3RtZiMshuZdZTv0Y+tHteZB2i27Ka+u,iv:R2FEEhe+EoqFDQYbLJ3hrb+ENVvsP2c++WA0z3QQrxA=,tag:bifjyNyNouUhFGV6SpAg7Q==,type:str]
rclone-s3-sync: ENC[AES256_GCM,data:xM7ufaVNhuLPKCU1XYCA7PGinrkPLeTYSH6zx1di6/Vnq8YjgD6X2F3SUxX/zi0LAe0y5SuP0QpOkPq9jF1wnuKojPRK4xOqurURdIztQnDtF1CP3slWzx5CjDYLdkPWpOm6LWuMA+84ghxfFjA/mb4hbpg8W90avrYd+8uyOYIiHxFSC27n6kuIRjWERxgcVth+8tK2gSyEC3Y2P+jodA1Yqxt++exFMaM53KDhFE9W5Z9uBOZTFI0CeRHkJWOnbRw6ArtAm8XuWaRCvbLf0PCr4ULdzO+POpebSI3F9HK983omaCYbqm37Cnvn7EFECatMLLcx3EHBNXHkzDGEDosUAp2HCB1dFiL2H444SIxDLcA9uqgsts8VfwbHbmy1Nh2jJ7nUhykPbmg17FWlXwGJoY9izLP/jbuGroiBgEPliorbvzYwxybudDJsamvdO9XDdqUIblHlXyWZLqNl2d7PS4Gom6YZ6Xdkf8Ffpq87EUOWC+Ey7q2rOsnwatANyjDIKQB2fMZ5zIYPntOBJ4tsjPqVvjXLA7O/bRjmD9Acy2OPyiXtw7mwtT32upUyZxHpCjp1zIYM,iv:2pXnmuz+Lrv/7p6CsqAElRovFdERV03VMA+X7vQF+Gw=,tag:mZbTfZRih4inCGrHdeH6EQ==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2024-01-19T11:27:22Z"
mac: ENC[AES256_GCM,data:EskxLpbdlrpB5yvUsyzgjoozqwPgDnqPLSkA8WcHmreqR+v1mEM/xY2GAije2TA4Bg7WGSKEBonuapk5hMHtehXy7+9iytdloDNQtXJWAoOy2PLd55E7shUdBVilEAa2mCUz5VDBz9jXMtlW0jv13W4iwXQ9ixKmzaUr/JSpnCk=,iv:t2MBxAtKrMOG/BoBOszkTu+o4bELfmU2cVLbvZK+BZw=,tag:u6E7DZDrC58zbpYf9tqDYA==,type:str]
lastmodified: "2024-01-23T15:17:00Z"
mac: ENC[AES256_GCM,data:Ws5QPNDrb/xHj9/F6d14l2juemaVzLecYs4SeN/Fwo0DSztJsZhSK9JV2gx+iZk1R5i5WKJumr+2SPeEbFzfQkIuemj32ECHGBPKI0UB1O48hEMWOxIMN03zXf56MujWWXoIeVK+bzVNPot9+qtU0mZQ/VvLlVpWF35vb8tkORE=,iv:nJKM7qFqK1ezTiMe8sXAOz+Bpg+BnKCZOGDKCgUEEHE=,tag:01+MqoF0jfGjauVeaVatyQ==,type:str]
pgp:
- created_at: "2024-01-22T10:23:32Z"
enc: |-