From 56cf4e9212e319c0f4b219ca10fdcb1b13efe19c Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Mon, 11 Aug 2025 21:23:48 +0200 Subject: [PATCH] improve the backup situation --- nix/apps/does-it-build/default.nix | 10 ++- nix/apps/forgejo/default.nix | 21 +++++- nix/apps/killua/default.nix | 4 +- nix/hive.nix | 2 + nix/modules/restic/default.nix | 74 ++++++++++++++++++++++ nix/secrets/backup_s3_secret.age | Bin 772 -> 772 bytes nix/secrets/caddy_s3_key_secret.age | Bin 771 -> 771 bytes nix/secrets/docker_registry_password.age | 8 +-- nix/secrets/forgejo_s3_key_secret.age | 11 ++-- nix/secrets/garage_secrets.age | 26 ++++---- nix/secrets/generic_backup_password.age | 14 ++++ nix/secrets/grafana_admin_password.age | 9 +-- nix/secrets/hugochat_db_password.age | Bin 339 -> 339 bytes nix/secrets/killua_env.age | Bin 293 -> 293 bytes nix/secrets/loki_env.age | Bin 326 -> 326 bytes nix/secrets/minio_env_file.age | Bin 397 -> 397 bytes nix/secrets/openolat_db_password.age | Bin 321 -> 321 bytes nix/secrets/pyroscope_s3_secret.age | Bin 336 -> 336 bytes nix/secrets/registry_htpasswd.age | 9 +-- nix/secrets/registry_s3_key_secret.age | Bin 364 -> 364 bytes nix/secrets/restic_backup.age | Bin 0 -> 784 bytes nix/secrets/s3_mc_admin_client.age | Bin 912 -> 912 bytes nix/secrets/secrets.nix | 2 + nix/secrets/upload_files_s3_secret.age | Bin 474 -> 474 bytes nix/secrets/wg_private_dns1.age | 9 ++- nix/secrets/wg_private_dns2.age | Bin 256 -> 256 bytes nix/secrets/wg_private_vps1.age | Bin 257 -> 257 bytes nix/secrets/wg_private_vps2.age | Bin 257 -> 257 bytes nix/secrets/wg_private_vps3.age | 9 ++- nix/secrets/wg_private_vps4.age | Bin 256 -> 256 bytes nix/secrets/wg_private_vps5.age | 8 +-- nix/secrets/widetom_bot_token.age | Bin 272 -> 272 bytes nix/secrets/widetom_config_toml.age | Bin 4006 -> 4006 bytes secrets-git-crypt/generic_backup_password | Bin 0 -> 62 bytes secrets-git-crypt/restic_backup | Bin 0 -> 154 bytes 35 files changed, 159 insertions(+), 57 deletions(-) create mode 100644 nix/modules/restic/default.nix create mode 100644 nix/secrets/generic_backup_password.age create mode 100644 nix/secrets/restic_backup.age create mode 100644 secrets-git-crypt/generic_backup_password create mode 100644 secrets-git-crypt/restic_backup diff --git a/nix/apps/does-it-build/default.nix b/nix/apps/does-it-build/default.nix index 388347e..7941ae7 100644 --- a/nix/apps/does-it-build/default.nix +++ b/nix/apps/does-it-build/default.nix @@ -39,12 +39,10 @@ in }; }; - services.custom-backup.jobs = [ - { - app = "does-it-build"; - file = "/var/lib/does-it-build/db.sqlite"; - } - ]; + services.custom-backup-restic.jobs = [{ + app = "does-it-build"; + path = "/var/lib/does-it-build/db.sqlite"; + }]; users.users.does-it-build = { isSystemUser = true; diff --git a/nix/apps/forgejo/default.nix b/nix/apps/forgejo/default.nix index bf6a407..e0016b8 100644 --- a/nix/apps/forgejo/default.nix +++ b/nix/apps/forgejo/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: { +{ config, lib, pkgs, ... }: { age.secrets.forgejo_s3_key_secret.file = ../../secrets/forgejo_s3_key_secret.age; @@ -51,8 +51,23 @@ ''; }; - services.custom-backup.jobs = [{ + services.custom-backup-restic.jobs = [{ app = "forgejo"; - file = "/var/lib/forgejo/data/forgejo.db"; + # this is a mess. do not question it. it is a beautiful mess. + dynamicFilesFrom = "${lib.getExe pkgs.sudo} --user=forgejo ${lib.getExe (pkgs.writeShellApplication { + name = "backup-forgejo.sh"; + runtimeInputs = [ pkgs.unzip ]; + text = '' + rm -rf /tmp/forgejo-backup + mkdir -p /tmp/forgejo-backup + { + cd /tmp/forgejo-backup + ${lib.getExe config.services.forgejo.package} dump -c ${config.services.forgejo.customDir}/conf/app.ini + unzip forgejo-dump-* >/dev/null + rm forgejo-dump-* + } >&2 + echo /tmp/forgejo-backup + ''; + })}"; }]; } diff --git a/nix/apps/killua/default.nix b/nix/apps/killua/default.nix index a9d23db..6188e0d 100644 --- a/nix/apps/killua/default.nix +++ b/nix/apps/killua/default.nix @@ -25,10 +25,10 @@ in }; }; - services.custom-backup.jobs = [ + services.custom-backup-restic.jobs = [ { app = "killua"; - file = "${dataDir}/trivia_questions.json"; + path = dataDir; } ]; diff --git a/nix/hive.nix b/nix/hive.nix index a7b70b3..f31e3b2 100644 --- a/nix/hive.nix +++ b/nix/hive.nix @@ -178,6 +178,7 @@ ./modules/podman ./modules/registry ./modules/backup + ./modules/restic # apps ./apps/website @@ -227,6 +228,7 @@ ./modules/wg-mesh ./modules/garage ./modules/backup + ./modules/restic # apps ./apps/website diff --git a/nix/modules/restic/default.nix b/nix/modules/restic/default.nix new file mode 100644 index 0000000..a7e4472 --- /dev/null +++ b/nix/modules/restic/default.nix @@ -0,0 +1,74 @@ +{ config, lib, ... }: with lib; +let + jobOptions = { ... }: { + options = { + app = mkOption { + type = types.str; + description = "The app name, used as the directory in the bucket"; + }; + environmentFile = mkOption { + type = types.nullOr types.path; + default = null; + }; + path = mkOption { + type = types.nullOr types.str; + default = null; + }; + dynamicFilesFrom = mkOption { + type = types.nullOr types.str; + default = null; + }; + pgDump = mkOption { + type = types.nullOr (types.submodule ({ ... }: { + options = { + containerName = mkOption { + type = types.str; + }; + dbName = mkOption { + type = types.str; + }; + userName = mkOption { + type = types.str; + }; + }; + })); + default = null; + }; + #mongo_dump = { }; + }; + }; +in +{ + options.services.custom-backup-restic = { + jobs = mkOption { + default = [ ]; + type = types.listOf (types.submodule jobOptions); + description = "Backup jobs to execute"; + }; + }; + + config = { + age.secrets.restic_backup.file = ../../secrets/restic_backup.age; + age.secrets.generic_backup_password.file = ../../secrets/generic_backup_password.age; + + services.restic.backups = + builtins.listToAttrs (map + (job: { + name = job.app; + value = { + paths = if job.path != null then [ job.path ] else null; + dynamicFilesFrom = job.dynamicFilesFrom; + initialize = true; + timerConfig = { + OnCalendar = "00:00"; + RandomizedDelaySec = "5h"; + }; + passwordFile = config.age.secrets.generic_backup_password.path; + repository = "s3:http://localhost:3900/backups-restic/${job.app}"; + environmentFile = config.age.secrets.restic_backup.path; + }; + }) + config.services.custom-backup-restic.jobs); + }; +} + diff --git a/nix/secrets/backup_s3_secret.age b/nix/secrets/backup_s3_secret.age index 6b09fe8edd37da3f87465ca97346ebfdd568416e..4dccf37f8014f2d2f923bb9eb8c4ddbee3356845 100644 GIT binary patch delta 683 zcmZo+Yhjz9Q(s}2m>y|b9$8jt=9QOfn(3IVU8!H5?xpRRuI=fc6j_|?TlVy1t70>X~R@Se%-a=c-@olVoAwo9~erR#*~l>YE=q z@uPTnXnA%-xJN~HVPsIMZ)spbZg^=*mWiKbrFlqNiK|hBe@0S>L8WJiwtF#GL1md^ zac-EokAb;+igsXfscA`-TUx0}ZgzpQb5TY}exh@VQAC)2h)??Dct-JXqq6j>q+AbU z3v)xS$|C*paxdr1NZ&vo_o|{OA17^R^9VO%Z^Ke!Q@2pA^did=kEFEhqTpPYj39kC z3zI!c^bPs4$xq5>;i%6(h|jEXZ03bieh{33(&jf;X4tDG!L z1G7ydb0Y(zioNqo!}LwKbaizVOrx@jQ~X^#QzM*xy#fv0DvM1s0!=H-6D$4lii|Sd zeLPd^qXK-&voj)!xz6jJo7AZAXkzP&2d$sFcP#MUT`44d@r`g#T6f3)s#MdvbM+a6 zttMpNU6%fO!i0}*<#h~~lUuY`udxxl%5!PyMlbJYr;I(!!v!o$_s`Q!a`+d@v8PA* z>UYI_S~_?sYTPR2pcVc6tc_u?G4# delta 683 zcmZo+Yhjz9Q}5}W=UiUtlj>^bn&egF;^A6poDxx$U+!Pwl@;ul>zJMFW*p*@?^NOD z$Q2%HZkg$l>zHd^o>S;)YG9F)t(|UK5$fb(Z06ygm=b9kBHUYZi9@0Svg9qJZdo|``=l4l%|r|o4DV3zD`?3|WmnpO~zomXZMQDj-1T$&#^ z@uPTnL}6uRc5rZrUrBblTWY3ughiCThg+Fzl%Z+1f03(KPO@RLv$01>NJKi9XL4|b zTab%Msgq-%Ur}*hX;o2Pxl2lURbX~yNPxeYms_EGcy_3nnM>&8ct-K?052zlkgBjs zXLG|0i*i%9q~OFNFJlYsjH;@V3g?2L$gC&}9|MoFVgpaEh!n4Uv%)Z!@Tw~Js)#b} zNXJC)JR{dCW9K|mC*MT#D9JsO0$#njf;vbLUPmdvdVG;-J*=r z9g96(y!A_SJo1bzlPwImbaizVw9^CglS(Z0)6)$?Tmvma3oWA3{4xSfOtQ1xvfccW zv?I;y!!wHli_EYi66EQ*YrGk)9XjTHx(xZkF%v=a>`ZSL~nRYFZMJR$LKLV(6Y78s<})>g(?2 z%jN0i8yRkqWfJP>;-PO=nq}k?VPvjfV6L5RQSRbv;u2w!Rg{=t;E^AY&ZTRoP+Xj$ zo0?)|YHDbyU}+fUQJSvc=I|B;+9cpP@0%;ToI`q>TZ~llM-y1 z@8|F3loRaAWg2SX=Iv!@;*@6Qlj&?x>Kjt%7~~pSCrk6&1se`%Djsh4+FPIhmIyj)Y`poq|bh*Ap+!&3K@pkl75@X*M>luC2s%#g?&@3PR) zB%=%?Qv=5wW7D#*6w|`=aF@J{uoR!jJjcmr8O7@>65X;&$_$I#BdXGKEByi@{fj*; zO|sJ>&CLrvGSiAn!}C&8(;T&vLIb(XtNfFE3Jc4;stVoxeX0x#ODakevkk(64O4Rq z{QVrYE%c)TecZK^g37scb#)ce3WCxsD+4WpN)jV{vXVmbva|C{^Bp}soebQyogIy{ zT}|qfP5r~nlPXQPsuQ0D-1?@^xFH}fjVFx#8t;@y%c}2K(DCkJd`MPVIT| zVfCSx3%q6B7Py_``1<0~s@;W(tkxTC;(T=yYIF0071y*DSEOy)aym`nz8&A)HqK+= U7Y`l2#c|Ry_4-4lnlg=v0K7r@T>t<8 delta 681 zcmZo>Yi66EQ}0xf<(U>);boHK;#Zg)P~snG6zWs%=~Wou;-6FK?_`u_SeO@;8<}3| z%H`r_=^7rD?CfqCmF8=jR^aLBm!D^ms$FVmRGj6T6j>FR8Cm4+SnO^Y%B5?kP+Xj$ zo0?)|YHDbyU}+fUQJSt0l46-tSejH>rtN6trtf4N>Sj>k9h#Boon>L-Y3`eoS5@Sd z>uBi_Y3XXh6&Vp_=xdtpX&Izll;~uTN++9*j3;cZwo&5YNEAlOJ z3BP59+45>#PHvo7&7182!x8T= diff --git a/nix/secrets/docker_registry_password.age b/nix/secrets/docker_registry_password.age index ac42c39..d673c45 100644 --- a/nix/secrets/docker_registry_password.age +++ b/nix/secrets/docker_registry_password.age @@ -1,5 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 qM6TYg 8JUZfDdX9AEAdOITGWTvE7DRH7VPUqsM9T7u7AhExlQ -UJhh3gVlfXc6ij/DFdd3a4I2QfZu8mZ0CrLaotxQ+Ck ---- eUV5GMuqhgxWHxZZ5Ee3QobSg42A3ja8h1nuxAeWt1Y -DѬvZ_%CF._:R1UjOP+} \ No newline at end of file +-> ssh-ed25519 qM6TYg kxQujT+O6ZGlzTONdS/18DUVoxNapwtxitQo8GKr2hc +b7KjCjuvhmWcqNB6BvNruL17Ww6yWkVKjjm/MGd+jlE +--- q3EzroLr8b0T2gKQ4xUR67YOLSwFP1V8UxAnKY0PP24 +l0g1CXqi{Ttg͇߭ەߑEs5hxk- \ No newline at end of file diff --git a/nix/secrets/forgejo_s3_key_secret.age b/nix/secrets/forgejo_s3_key_secret.age index 29ccd9f..9e4e8f3 100644 --- a/nix/secrets/forgejo_s3_key_secret.age +++ b/nix/secrets/forgejo_s3_key_secret.age @@ -1,8 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 qM6TYg UP4wmNgpJ9JErCdgk4oCAjwVw8w8MOE9IRdZfDADYgQ -xXd++OFcjJvkyYzow0WAVy0n2AV/0MZUXy+MYbIwZxo ---- 6aQIiK6E6tp6wXkaRdJcMfVYHh5zFzSmL9r2iU60wEo -Sps}z - -@\H_) U۽圁* -J48i]D+_u,Ζ2mj(.ٯlA \ No newline at end of file +-> ssh-ed25519 qM6TYg yxVVZ7LOgN9NiKsl1+dN7Rp6Rsf0zlqb25Y6w43styk +gQ5g7TL8+lyGp0SxdcoRg0nTpu1w6WbZZK0ERyqRpkc +--- 5uKpMbkW4zZ035mNXCuty+64IZ360gly/ezxnwtRX/0 +ˁSϸ>q!O߷TCUҺ[*󅬟\w݋tcg? |B;"*dWv/vnqe \ No newline at end of file diff --git a/nix/secrets/garage_secrets.age b/nix/secrets/garage_secrets.age index f5d9cb4..d9d0ee2 100644 --- a/nix/secrets/garage_secrets.age +++ b/nix/secrets/garage_secrets.age @@ -1,14 +1,14 @@ age-encryption.org/v1 --> ssh-ed25519 qM6TYg P1fCQKmzsmKh0JnB185cO8KhfJ1Nyf9c4Ld90TdMg1w -quzrkpAmOStHDT1CUwE7hMBf5NyoGZ/tF0vUatVGrl8 --> ssh-ed25519 91VHug C6sFv6lpxgOQNnABrtZEwv82n71wzKo67dQ4hE0LaW0 -dkHAjqWF201gRr9DivqUfycT3/lkrhDJajUnxVBaws4 --> ssh-ed25519 XzACZQ 7OpgE7ZvoFOd380AkrS4wZZQtpiXwKG9xq+w5EzzxD0 -w4aGa7AUwTvcl6DEfwJhFp4uOD1gyQG+MZkgUCHN5KA --> ssh-ed25519 51bcvA pYE+ZDrXfjSf0cKBZwo0OZ4BXQvTZhDll9/fn11Mj3I -l/2Z0lN2irj216+5EEIDvRd2sGWFCWWnqOXqGUtRR1w --> ssh-ed25519 vT7ExA 9WGSmvdL9I0Hv6aPPQgUSEXmUBfJfv6Zbi3ywG2BBTQ -qTsDY/NN/RVJcznCjoGC0ABYhWaorzEBB206X214HRo ---- yUwt0ca0wolODUhl1JwYyiF4PoLzd7N0KkEef9de4YQ -i@>jPN+s6V+8eL", W1~(71Nw2U1uOݘ8cIamc_9~8IŀÖ~.К(Tօ Rq ssh-ed25519 qM6TYg L6XQVJyw/T2kwH2iOa3dAxwxlAInVTKXek5QHUKsU3g +Mm8VXH3CITbrJTqBcjdMHGm1k7Kztd4irHqWnF0yKWM +-> ssh-ed25519 91VHug 2PoHH6c5lVj6hfTH6+2NLzJcpXh20LgYgUHYrpY9Wg4 +iSaKgUoh0eSjeoiZ7mggn7LWV9C9xsM2foZrpJZY/ok +-> ssh-ed25519 XzACZQ xyYG90gHM9XHAxIv2cFU/WvZsdLo6prAPQgRKADP0UY +XdiJz1Zmh3S+IvaOCZBqrF8DSWBrrqePjy+ZiEwuaSA +-> ssh-ed25519 51bcvA IYyt435x3NPiTKDKCVb8dIK5naOSyU/Wh7dOLQ6SRAM +M0s39vyjDY24Mlb16UHy9lFEseaJxzZhtCvszKxwVSA +-> ssh-ed25519 vT7ExA ZBvUjCU8vYFddKgNfnuROuiDnDXhitG6eR6ek4+1R1E +fiyuqamkakZ4t1MosIUqZaR0WEh7XVAwJiwH8lz3bsc +--- zvHNHd6bOMd0f3eIrl1qzyRh6zUe7G8mdrraYGtrnXU +%iFrљ`|)+ώܝSGNP>?E{֦mdadj`ԈVunZֻXU旽}>j_D_; 5Opa; +~4bwZ'70^2+wZ0j;4yTdp1'9 7Zsb.J *(yW _Pg`S^Gr \ No newline at end of file diff --git a/nix/secrets/generic_backup_password.age b/nix/secrets/generic_backup_password.age new file mode 100644 index 0000000..c666d43 --- /dev/null +++ b/nix/secrets/generic_backup_password.age @@ -0,0 +1,14 @@ +age-encryption.org/v1 +-> ssh-ed25519 qM6TYg IBVFRlOVLHcuS6xa7UVGA1z9NTBtNwGbt94c/yTB8wE +T+VtsTngND9kAd6DAtksXN4xYs+E8JZSxDeOm+G23tc +-> ssh-ed25519 91VHug nUkRwHgpn2i56NNY0VAuG+r3CX1rjt1M0ZVKj+ijwGo +ea8Ry6JIJlPOObY+v2Q5MkdcZqCeDLAOxC583WY38Hg +-> ssh-ed25519 XzACZQ 7f+8YcecMvwnOgwxjRMUUUm9Sp4cyKpIZWWMDrrCtzg +Bqhd2kpuTg3Xchme5wHfg4zkuikeM4H9GdOZVUv+HZk +-> ssh-ed25519 51bcvA DUk4CsGXhdj4uIqzYpoGmtHs5dnjIBUb0c9zj1DEum4 +hGe3j5Ycn/WVV5wgg+vZuh2KhnamHACkHrDWcVgkSjo +-> ssh-ed25519 vT7ExA Zf67OkbMvOpgABZDuXw3U94KqX32VG8nnjo3Xmkbih0 +5K5fnBxkQDaYwuMPhyNU5ZrZLjkgknG7dzMzyuANMuU +--- Jon4j4/xeZqS/6KsWszsVOoVOgJgsPEKxmtC7PcocCA +솳~ +N+jK߬/]Ӡ!䂶.7\k~ ssh-ed25519 XzACZQ lWHvBQNaeM4hMI6u36HvYCqLS3G/ScLbwOThzdGSzSA -PGPpaoY0V84v6CRutJk+K6M9BM7XaRwp2awPsB/Db6k ---- hlo1/uWQVHBmhfMRLPiA+9H0TGKYF/+gxUzzdAM4rYU -+@96Y ~ I]OhM 6T{3X(qZVR]CLpO->`/- .2YMjyUȰ^GnS \ No newline at end of file +-> ssh-ed25519 XzACZQ OeTS5wU4ac+Qh7s1PXbdFH3LDlRW1LV+qFtoVGI47XQ +JsixYPLzpnF45ODQH7nuVowXzwbNQi8lWx1Bp2YFVWc +--- MEG4bfGwoFRm9HizYdqtK7KApYhYH+QjAIEp7CpLznA +C/wC +Fz?MkrxN'NTzWb{Aj3X6mݲJ@OI{u?A,C d^ \ No newline at end of file diff --git a/nix/secrets/hugochat_db_password.age b/nix/secrets/hugochat_db_password.age index 29bd6d17ef27476dedad107041188a7234f013a9..f5e1cd01dd7d5b4e0af280999ded36584c31a78d 100644 GIT binary patch delta 304 zcmcc2beU;_PJM1fky&1$Wonv7d6mDTWnP%Jfq8JDpK(Z(Z zU$&`#m{*p$i%Y&ws9Tj!uA5`Ahe2tiiDzVXwyRfSWqoQ+aA;L#WigjRm9fh_LH&8k zyoK`(EDOU{KisxLisf7^gOcBr6DJStHa{8cw_)dnbv#prSGmoT(LSm;zBMKHkLeT?+oiNHpW~F z7g=E5Ci3R delta 304 zcmcc2beU;_PJMZJp|5d%rDI-Zn7^xEeo=afi(y7lSwTsbzpr_KzN>e+OK@_KVVYB* z0hdKZaaFNteq?})d4WfOXJwvag;7CdRCrjpPhMeghI67@d0w_w|&lJU&Y0vw37hAeXMLu0m;! zdsU9VV}(<8iA!!oSh#6ffLElExoM=EwnsrxsD5dtL6yI2qQ767qa#<#ZsB_sE0*rN z(7%E$aOUIn(*mm}{1IT;@#n4c3aQ@cFkz**J7J%nMrGY$II!7M%d|g#`k91v5vnaS zvi$(p8=Ql9Dx;FFJCEZ z`aWDgW!v(sDUWy7FtTm8o2AZ~{%q}+tc-?)hx=_VFo!$Zyza3uGu|Hk^Lk|?%N-Ss zlgwX}w=55RzK+ZP>V*Hwe`e}Rv0Qoe+En&)<@L&4zjr$bZ{4{%+0Ao0hx*B@ckjNt L!?v_KL6jE&*|=sW diff --git a/nix/secrets/loki_env.age b/nix/secrets/loki_env.age index a612e8d4f23acfb12c1f548f04973dc21da60ef8..f55d3a3cf011d5697d3d0f3d9d39d33bc7803a66 100644 GIT binary patch delta 291 zcmX@cbc|_&PJM7hc(HSEK)80MYhY$#ez-}FPi~;IV@bJ*d4W-KvbT|&XOVwuK&YE* zK39r%QgBgvxM68(c}j-1zK_3)wpo?8Nm+ifg{8l7RDf?pps`tYj#*J!IhU@ku0lwv zQG}suX_RYueri!lnv+jOKuL0GRk*u>ARqmoAkjo`YTT!I2Sl~ul&vY(@9Z_s}zdd*9fc<*IHdy>*Hn=@TE#o$^62$ z54uZQ&EqP6?wmc-K1rg={FdG?))ju$&jjXKO;FU_r7H34MdZ4NhO_T$w*|yAKig&_ uUA~j|t(PMWKmV{&Pkv2j>djzvy>c5;SgV7Z}%qliGOaUv1v+CMVdjDsh62kps}`JetkiyzNbq`a3mMQbQQKW|JU}d z>3Hwz;_dzE-6=aA`O`Be8^s=WOy%6bu;Hp<*T(%XKW?#zn`p#RUHS0bHpld(=GW>u zyEgC4oVt){)ARdWv-)N3wOEGl-E$_p_Q_h~^iwYW>I)fcug7oy*gwPNklJU3ulzcZ v#*=UE6g>SlxGS?+W|!6^Bi+Lh*L!~bXcAbreBY$UPt60eE_!Eu+GGX*e0O<) diff --git a/nix/secrets/minio_env_file.age b/nix/secrets/minio_env_file.age index d35a568a7e01077109e71585fc1eca37321a5d2d..e1d3f362cae6e49740d8fc998f5b838c0b2dbb5d 100644 GIT binary patch delta 362 zcmeBW?q!~!Q=e^|Rgz*6Me|VObgMR_br=92OX88eC?Sne7&toakbd z%oP&snQm5T;%pS2=o9D_TIm;J>=EdnWndYW>m8gOSdmj4mXqj`tZi5l$)#(jP+Xj$ zo0?)|YHDby5K-mm92KbG7nKoU8RBA^7g^!to9=JuUvFII;_n%fnqgj8QD{<@k>zgg zSWpm{8f~vZm7L>l>=G8p zrK_u}U=|u=T%Hsh;-sHuP;8MApdaax7-{L@=2DR7<5*H`P?=rq?ObMFVCm$@wWM)v z=H+AQrpX5PjeG(nF2384{m`e4Yqxya;n_~tRZK6Q7T%i6vuU4lOLe@()mPo;?`5fJ zH%_=H&1@a@`?;?Aq2>!5;SwIfpDuPM9(h*3JIy?FpzsD^j| delta 362 zcmeBW?q!~!Q(x{9U};?LogWrZURIT3=p5?H zrK_u}P+@3LlH^t9=569$VP0zPUu2-|7v}5gmu;9|9ATE`Vd)&?QQ?u5n35jJmEUyc zBiG*?ujd|Z(&*S z>p{v5OM@V`Ck&kH^;za;iMoFNU3b*+d#j0B@+9W(#XHx`u&Q}iC=+HVZB#rh@qixRz8<|wt`f}{o~=w zyJr0ldc~l(>(ioD?q4R>`FB3uSQmP?Z?T%~L$Ob443D0#30|^y?K-z`wt$J1cW0an zy2kic$47Ls+Y2E{nJHQaZ94pn7g&jYEb=<@_-HBTwWi=EmYVQWm$oTfkUplaWG8#p p;f})Qvq%0{E;fH6{^VG_%DtnG$JPk*WR~45(zxCbYph!S6#(kyba4Ox delta 286 zcmX@ebdYI+PJKa;r+a#op+#9xSebD|l0|5lQ$?D-d8wDHqrOGCUv^rqYh_T0eujlx zD3_&$WnN)+U_?@3o}XKZw|8Jfh)YpPU{+;@yRUn$W0JFJdXjfRk-uM7K9{bpu0o-I ziKAn%exO@+l)q`ZQ&E1Uey)kWXK8A>ag?c%k59RaalM;qkh7bMoo;?~@{x)w?|IeMfZv44bb)DtPJK$cV|bNodXP(cqQ1LPK#6&&X>xIeQBtslXL_Y+R+W*vSBQ47S%{l) zAXk<}m6NuYYgvkyenEs`YG#Udeo?MPSYc4Oqot!|rGI*eNoZb3lu?#JHkYohu7Y`X zcA2F`ZdIX6N}g#!S-NFphCy;cv3E|owx2o=a3I$)ofj+L&2fuw z{-djYulPdBMjr{rON(b@Z`$^tB5zW$C&Z~ouc=3C{w F0sv|%ej@+? delta 301 zcmcb>bb)DtPQ6>1TbWBqaJWyPX<gTYaLpzM+0eWHMLSevTfcf4uwc z{%QEzn+Pm1UT)f`Q^H)Q^S$h$ ssh-ed25519 qM6TYg qhB01I5HcTnTHTJTEYLEtJi416tlC1EMD4yjoBIK7gw -h8CcWgY/GslHI1FbXi5k5QXFs7YbM7wr7JWtez6ct84 ---- oLyc6wK3Bgl/zxjpZJYWoGAxWnXx4LN/+iT+r8RPOco - \, Ęf# `nSKPVvVʵ<-:xgM(Yiucl^apਬ%^+"wV \ No newline at end of file +-> ssh-ed25519 qM6TYg amvNJk2G0JJHgGOwAWCtYIJgylqBAYDSXTKNYKwb4mo +aBXr7jN0/VUDTxCGvn+obz3JIU0boKcm4BbwFAidm1o +--- B6s8naj3JiQdjBDdwzY+PqW01QZFgKMpKSOVXHDfbHw +T1QqҔ?)WŐژ4zc"C+ŌHmQ)ԋ#1Hnc^aG.' +$bc \ No newline at end of file diff --git a/nix/secrets/registry_s3_key_secret.age b/nix/secrets/registry_s3_key_secret.age index 3368ad92a78868cc6c4b6b05838a67f59d68eaff..fbd34507c893059b97c403ab184623ca2b21475c 100644 GIT binary patch delta 329 zcmaFE^oD7IPJL=cj+tqyPhLb~U~0ahnQ=yxWxhpKxnaJAhj+P`OQ>6#scV6AMQMh+ zBbR4-PLRJrRbYyfsj+2-NpPi)MNW=cwtkwwp}BjAVMR)Ql6gs`OQ5TfCzr0Su0lk% zqqk2^vUaw)v1M7IacF2!iI;D=e`J+YURY$IM_6UPNqsh-NB>bbpB&q&&{|@^zDr*+T^*wwRU;EaO(O&F`m zCs#p!zJ64eOPX_TNN}Z>VPRBGWuQlifuFvyX<$lEzonl~;v@bA5$&iFtBnQY2U8zMbd%UF|Nv z+i>E1sO0l7-C3EHThzK{FhBl!@9er$4_~JIbdItyU%YfbOUE3^gR9skuXD56e{25k zDOX?osN1%p&Rh3~_Qz<3oi|+DW_vSlt7hM`;D>4T2Z6UQrmrgn|g&T@C|7zo(6m|VD&+OXdOUo@bExo*WqEX(o**U-NRylvl kzryo6qGs+?gSGSOV=v5K_F7ndpN;5arWqa;snSl*0h~#bcK`qY diff --git a/nix/secrets/restic_backup.age b/nix/secrets/restic_backup.age new file mode 100644 index 0000000000000000000000000000000000000000..0465e54a5aaca8786602cbda8be77ffe60132300 GIT binary patch literal 784 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^fe2KOjjuLE-!V; zaLx1fFpKgHD)35=sz|Of_DRZ1tSoV|OfAc`Eb$_}XX z^YE%FFwYIrb_vop@=J2_bqdKW$qqNOOw90dw?Mbe(lE@UG+n{W&D_bw(my>Sz}v?# zxh&K(4@%SBT_p*$e!hGlS zBF`M{G&e&}kCO7_Jl90O{IDv++-xp0XFm^v%n+X_|K#v|qo7E?s;Z>?Qm-UeZ8H;t zRR2=%tYm-h@&ZF6(`V*BGS1`DsvtEeF7|BA2rP&wjViFTFw8VJ@G8&qc6JYP4^8ne z@G373bu-~gGcYvwi!5>~EGt9e%Fpm~j0*A8PmC}MNjA<7OHV0}2zSdi)OR*aGxy~ZkA5s| zKmQ8XlV=_^dfQf{@k~6@W9I0sV7?@7$42)V%113?f4uyE@pF#-+y2gzmX#?5+HdUV zb80nOu_ExMT*y$b5(RkIpX`)uz3R^W%~Dye&*1URDPNvX{_?^1u2%T7hn-7r#&-SkF0AL6d)c^nh literal 0 HcmV?d00001 diff --git a/nix/secrets/s3_mc_admin_client.age b/nix/secrets/s3_mc_admin_client.age index 2d40a5efbf2a0fd83ada756c22a61f44bd31e8bb..3e366bf2886f78e3c7c8a8e05062f3b7c7c8a9f2 100644 GIT binary patch delta 823 zcmbQhK7oCLPJL)VSzu*Bc12Nzn@LGL}c}hSB85hh?F^w{~i2Re3;~ zMNomiw|+%AS7mChn~70oP(XlwdRDeiWw>c_X_m2jy0>|mZ*fGFvwviIx_(A#WomNy z#E;@(W@gFGennwE9;F6(>$^QO<`9=OFPN`-k9xf3D$;nar`i3D%UKw5i?#ZQjC0>)`7$w3Ty?qKiN}NMO z%?mS~j9h)P6D@MX5-pOG^1?$>vr~$VEkZrbQ-hK%$^*GP9ixm&LXxVYaxANY+&r>V zLNc6E%F|5JO?|XoBRtB3qRff|{6jp7DzYb^WfZTEFboa}EwFIY&-Sq>&dDh>@^du^ zN^vjDFe$6ZGYv3Hb`D4hFDfd`F$(1}F^=-gE(wX!4ykh1HV6tZsw|9jv-B%)&2sT8 z478{$%JI%|H!O(Kj!Ng!)zwvSDawzm3N zs&uP2(9TIMGOkMJ>fXFG&gjCIuS_j%OLP2YhIX5(d9qCOYoDn$*}^O?Ut!YJg#|U? z_76FJG0bdeSl-1q{o%*63Cqg2brn{WCmq@MJoy&urON_L2kp0MAM}#zl5FVV=2FO5 z{AQ(4&$p>zpKhB488%lvZ&VIjV-&tBy`~ug1)ZTJ&^8<+w409J|NUlDT(E6Fn|4$uz8t0Z@tcc;%mO@%2@p~ PR+VE9clFPA&rbmWdnP`J delta 823 zcmbQhK7oCLPJL8VacP#bi+-6&q;`n5k9U+|w!V>bMS5CpUS4K}e{qplMOvb_U$8-D zI#;AeNV#{8xnGr0YGy=Q;>iI1UkfMZBOZe(zQm%qE8WubF&h-;GX z#E;@(g}D~4dCu-0>6YFFUZp9)`XM>`iRR`>&Yn4D6$ZumUID&dk?B6ZmbnI8?wPsX z+2J`ZRUYnTW?n(1rNNnQE?MSo+8)|QZrbU=ktrtHRawd5DHfCC7$w5JvyAfnEqroK z4XT2CDjg%eGW65Eipq;B!YxB8DiTdhGXl%ajSBp8Gd;O-waq+J{jw8%%bmj_ye&)3 zyp1Yz9sSetTnk+ivx37)ON)~7(>|C!F#T)~!pDqzBdFur|xSuI73s~+8$ zo$zN0c9o*5}b`foClTnn4fy?|Nimz z54mR;mhaqBQ@2BI=Eun!WcCzYTQ>by{86pIIc!ZYh3o&^{d~2!VMkN&?DuX_o71DO zP0}rU-fkCgH^2Kw_p7#ZYb2gOJlj`Sx4@yHU2;{9Y}*XZsM@@F_gNqN-dZJhV&8M? zHIMRmrZ3sEkt5^yYqu1xjgu`VSWbVevtXhb-|fOfCJ`${ZiFiHYl4oLzx>1(q9UGjOVQi3*4@i0Yu*Q+ PCqXAwb}pJ`nwJCsNWnla diff --git a/nix/secrets/secrets.nix b/nix/secrets/secrets.nix index 246b464..8e25b6b 100644 --- a/nix/secrets/secrets.nix +++ b/nix/secrets/secrets.nix @@ -26,6 +26,8 @@ in "forgejo_s3_key_secret.age".publicKeys = [ vps1 ]; "upload_files_s3_secret.age".publicKeys = [ vps1 ]; "pyroscope_s3_secret.age".publicKeys = [ vps3 ]; + "restic_backup.age".publicKeys = [ vps1 vps2 vps3 vps4 vps5 ]; + "generic_backup_password.age".publicKeys = [ vps1 vps2 vps3 vps4 vps5 ]; "wg_private_dns1.age".publicKeys = [ dns1 ]; "wg_private_dns2.age".publicKeys = [ dns2 ]; "wg_private_vps1.age".publicKeys = [ vps1 ]; diff --git a/nix/secrets/upload_files_s3_secret.age b/nix/secrets/upload_files_s3_secret.age index d5157e14c4d6025d45768849ca867cfc5c00e9c0..3bca9a4fadce6f01116ece8b34b25b714483809e 100644 GIT binary patch delta 440 zcmcb`e2aO4PJKjFm3D5jX{d8%X{2eswtiKiscS(bKR`$Je!2T@u;jynpiosX4-z1Q}|d6@5AvcE~LB`;CylS0hCBsvq&Q zTosZg?54)L_V=v%3HOY29Q`dXsws#3*}HtLrf_F`Ol4^D>lJcpGtAA-UAr8>bi-ZZ zp<(VFy9*ZGJ|_JFK0j_no_fEac+N{n=Ia8n3m7i164{v>J;_{&=koSLnT+W{67x;U z!xq`ex2B$bs;O~Cs#VrOc!fLj?}z8O{g?F#cH34aKHU;gTFY&!W+?qWH!;n+Rz)(z8@+nwVU*Z}~?wY)$8 delta 440 zcmcb`e2aO4PQ9mDUT%I_riZq+X;DF#caF1pxMzW7xMQ%ppPPr9d8M&Ic~C?|fOArI zC|7o5ly-JLs&n?YfbX{uA6cA8U_ey(q(xwmVcVQFGwxL;zSYkgW(V5PrFmL-@Pj-kuSeSBZ{^g`6X}q6WwZ-!cryf_d*gy_AP4{YW?&4iM)|A0D9xeF#rGn diff --git a/nix/secrets/wg_private_dns1.age b/nix/secrets/wg_private_dns1.age index eeb11f0..a54f3eb 100644 --- a/nix/secrets/wg_private_dns1.age +++ b/nix/secrets/wg_private_dns1.age @@ -1,6 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 LZU5Eg PttdTzbbxLbUw+V+mCZjRREsWuIHhGeVvIKkPCAkvQQ -3adTE4nRuPaMYo3wslgO2kND5dVYv5NOKYpi129kRrE ---- eKBS0RAp1BiY55dJ2vdJZdkJIA6wk/OA+JA2aTvLAFE -F]Y@JUM4914cbϓB9^.\™~ gkSGz - \ No newline at end of file +-> ssh-ed25519 LZU5Eg o+MPatbYPM3sZq0MCqvvxlvKMQwlbajHURPQ+0g0qm8 +UUurAYkPWXCaow746EV4dAQ+qTJnHIehcorUmanBc+o +--- BV+bxd0OIc3J4uT39al2odyn8ScDpq58SiwnW5pvRj4 +T7W |fJ%"cq{TP~fv,;:免-Ϛ4a -u\L_-VH% \ No newline at end of file diff --git a/nix/secrets/wg_private_dns2.age b/nix/secrets/wg_private_dns2.age index 49b5616dd16c329cc733300139e0c786adeec21a..64b2ad274dd5725d4edd1ebf5374b6e0da2ed66e 100644 GIT binary patch delta 220 zcmZo*YG9h6Q=by*T&^8vSm>0b?d|4~?wXt%QdD3ZP?8v2SzK7=Z0?kAX=YK86KquO z%jFVLkZF{xpW~F`8=o>bxLS`guuUlf&RQ5F#% z$mJiIT&Qj4k>}{)nq-2P-R)7A7C7rW|r#h6_)K)YH8pc;S&*7&ZVoXs}PXp zQc|AcA7GIeQlcGI;pr9Z>u6G1njDs=9qjAspHt>y5t<&9;a^ypn#^T#ZT_sO0=q(| z9~PTrwaj_CP4}c?p0;JGrORjSzEDwr`iIPfhLnGXGyd&g>a6uQF{R)Cq~GcFD@5-Y XbZ!4~|K62F&IYZmnT;p8z2iIp2RBwp diff --git a/nix/secrets/wg_private_vps1.age b/nix/secrets/wg_private_vps1.age index e24e248909577f68b3c69a002517b09dd896dfb5..6354b7bd6603fcb191d699de3759710f1be2c245 100644 GIT binary patch delta 221 zcmZo|UH#k(%i4Q|9fLo#zy35gZtmWme^%VU(=xoavlqTpSfqnOKl#!KJIKt6&i3 z6cQ4yuV3h&>>C;86J?a;mYSWOUmBhoRbi50>J<=f80KLSoM@8dSP7c^`!yT`wl7S+bC%;vx&ItC@ie9W XqxZfpsXUu2_@MBB;qlbw&{f?4SqM@@ delta 221 zcmZoY~@9LVD9~D?>7F=nPk&_wjTgS)DnOKmLS?-^i z&sF7892J(AY7&qeQ0i5sol+IyUzO!u=$?`kTXt?UFPhcrk|znZfs%bm}BW_QDx?q7v=9$9v0za;OkM69m%Dgt#&DU`*M$j zn{o5cAN93*^}G2|!n+TvLpqfV{4Z{QmSVb1YIZY2?b$=qcbgO$ulu+Zk>Oib6qx4WQWD^kV;*i|7UrB3m>|?jE{e;?w z4Tm<_Ziw5=q9Q6Ja_dj70$a$R$A?Y6s&O4#e&B%Tv_;1?xstiI`2=QmZGC8VIq2Sn YPr*~~{P@q!p&jDz*}(SXN!btI0AP<(;Q#;t delta 221 zcmZoQq|l9};X5SZNxX z&*f|p8I_k7;B4p{<>eS;Tv}=7nO0Wj>S$qV;hmFXVQK7FX6Bv~n3Nw@%%!WVtKerG z5)opkZ{}}Mm6;Z0ZkXof;+yPjSyblcUlJCTlNYM(73O4-WE@!*n$MNFaf0WJ4~AFb z3zK!9C~y6_zn&rAx#4Z!!oQCWzK>j%Akr7S_W4xVZC3S;ef;hTF+%71o?Ywxxm{wS Yq2k6w<-o#XlO+;%+dM9PG)oi*0K`C3P5=M^ diff --git a/nix/secrets/wg_private_vps3.age b/nix/secrets/wg_private_vps3.age index ca2fb19..a63f54e 100644 --- a/nix/secrets/wg_private_vps3.age +++ b/nix/secrets/wg_private_vps3.age @@ -1,6 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 XzACZQ 4f3Sm/Xpuu+lgnR+C5sLxrsADC4KjAwRCvb91zrPlg4 -Iok5RHD15fZmRWIay0nHzy1rtZjgt3Pbq23z6n6Zr78 ---- 4pu7oE7I2dV3Gd3r+cbezJWZULNS4n98B//0D+Vj55U -%3'=ڨ@x^-`[ -J_;WLEʨ@-SAyʛ euqzLQ \ No newline at end of file +-> ssh-ed25519 XzACZQ lm64+fQEWa9hF98cV/x1U3Mz+6zuM23dAV3XkwE7iz4 +7Rgqd13DThp/JLryCe5xTdXwDujaTj4viR2CBTdXYLs +--- pwebssA2O2VjzPFRAQ0/65+qiiF/MijCIIXexwH5mgk +\fv̤[ڟI[5*׷90'4+V;L~j ;S2yb \ No newline at end of file diff --git a/nix/secrets/wg_private_vps4.age b/nix/secrets/wg_private_vps4.age index ca7a4a90828c477b1c24b95551dd5d441bb999f6..dcf6aaf21371c1f7c56a4cfffd9c7354ee463537 100644 GIT binary patch delta 220 zcmZo*YG9h6Q=c2=6_8mJcQh z%M}q8RhVB^nV6GS;#v}>ukRMg!nQ6jE7`91vJ#sO@g-%B8ETt6(1J zSmNjsUKw6w5gcip<>OQ3T@g^6n&R(MnOL0WQ*4ss9crAHo009GX}}fh)$;Pl#U~LZ z6J6KL>U*Zy_;1?(43S{Q3E%eZlHPs7jeR@Ud*Kt8um2NXqQW=nl9AGfkZ(=<5=BIR XCroNPvabH;rRw>7eRHk&ZMj$gbaGXs delta 220 zcmZo*YG9h6Q}2=L;%b_1R_lTr};iqq|*8duLjp;?3@c%;Phy#iVdPTLHi$e~0F1NkTP;@4+@=J?x{uim^LYfDb W`mD8Nov|Zl^L~Bz3?*xy`|bevm{8#W diff --git a/nix/secrets/wg_private_vps5.age b/nix/secrets/wg_private_vps5.age index 6d19556..cbd582e 100644 --- a/nix/secrets/wg_private_vps5.age +++ b/nix/secrets/wg_private_vps5.age @@ -1,5 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 vT7ExA cGTbCRJ9dO5DMMYVZyMGswdyx6q114yInksFITtJR1U -EmFSgbzljek+luv2MncANyEoCRlCxrQN1OOrn5ejf6U ---- Sap30+9H/NG4GrkJTxjXUI0rxIugDMB5JIlh0PgSPhk -X@~L_Am3 XS)grǐnwH%l JcDϣ5PKS \ No newline at end of file +-> ssh-ed25519 vT7ExA G9mqOZiAvq+ot4OUevoxvNPIkgWgS8KqMY76uGsxeGs +AMEwoZoFc+axirDc5q+FM3e76IedkxblC3vVqUjmPL8 +--- oXGSsFKfJRPvcU1X3zHN7M6vd0IxBpNowyh4sPesq3A +i3cMTN0}r"Зs~OrPFP`Q<%:73 \ No newline at end of file diff --git a/nix/secrets/widetom_bot_token.age b/nix/secrets/widetom_bot_token.age index 42dec4358d6107740f1eb606929d1560f02fce33..e41446797cb7d42ccb7f1d2e02e93f3f09aa1145 100644 GIT binary patch delta 236 zcmbQhG=XV?PJMo2NKr;fWQJ>wQB3Rz!evc2&Nif01QYv5${)o>xYd zBUgB~rKNwGuWLkvyLNJzp^s~svt@ajfqQCLdWd0^k-MXTV~J0sbC9=-374*}u7XLZ zNlLk&c8Qmfk6VFfR)uR~ew3MqN0@0~V5muUkwK9`L8?oHw|8<#x+|C8lWVar^7`-E ze}3HX;6u~jor-^J6q`3&UE}z*`@%uroEuv5C;sx@QU8A3-gUu^pI>|(P8P*yo-50@ o60P^k{F;-^B0OQAMX<(ys~^|8jt8;o8^l#)-j1%|>vnz$08<2BbN~PV delta 236 zcmbQhG=XV?PQ67)skWJGm7kekR!LrFqMt`rYNT1PTe`NpWpbLQPh?qU-dSzr(gs-=+k+-{HN}*+$PkDM} zF_(F0P@cPaa)ou0ob` zX=a4Jc22g7b5Kd5seg*Ifp4i_QdxOPU|3pVXsKbCe|@B7S)#s|k1v;Tch;YcI;;NI zd}-HLf4-FU@PGS9+fEjJ(c4|Pd}5F8d1i^&y*K5#w(cxlyn()Hg?>ziQ($u){I8*p1{+g{9 zxBdE~bF<>i;U}{#>o?yiley`=imm@ca$w#$p8jN$%0m+#{Bn3E^7Y~y=2@#$B%VgQ z=dSxK##&eR+4OAJp#>YHcCzf`jr_C0yHb6LBU|8k zra4b`I|)eDJ~3u@@Bgop=)B_Q+8C9O*9+O+vL9#(Th}oA9(VA`oWLXX(m&U5wOPe` zzpGD6z4Nl;bFiVg@MVFWqBfEr9-L1(uHeq>_xOGmJKM)s9||{D?@Gc3wa+hmxi)tTe zo&0}Y^S@sWO=YXtM7x$aC8@`Uy44qEw-`mvFD>C%w8y-?>?CJsWqrzC#@#cg>KvZ- za{Y>L(`xT2zYCGxd2?ShhfDdVb%v`{SIpiYbZWgt{j|Wli_CANJiEo-uX=0c`U$d+ z@0@VD(o(qgyu-Gh6DAsWMUJ}Oah`qq&inS*oa`SgrkpA3I9B~Oz5Q*+2H6x_g&uB| zU-fQJd*|3FvmCqZ+pFEebE`ecsxVSp=KNd%-?E-%OMdC(+<0~Iy?qDMN|g)cA-;?9 z`acFFC!UUOJ3XsLi}Wrz1&O1QM=$1?pB>yCEo#>W)3-dmp$roLx>)5(Ao<%0Kh zPtD3s`Y%;H@c(8g&+Nb~uO9a=Uk_X|xOdlLf{S%j{Z997X&&zt7P(q*F8+IA{n3Di z{jLw5M>{nN?wF$>(|Mj-{P$0;O=-HTZDShco;*MAy7a#ZS80GlZH&jcj+vRx6K#Ur z#gsVz#D**L{;PT8ByrH}E5p5vS&QAC$^W!1=<8WvFmKk%Ep1l(YrO7jNd&HmDbJTm z-jVSBom+}rbYwk~vHz!pd%XWwMt@;_-+snJB4c`nN3F?q0ifM0UW6sCC=A)z03y?KLlwWi>)xcY(m?b~a!7u-$byt%dE?}a&= zc6L|`rM#cM!9s9#kQZ?e?9?)5IRqhE5Te8;=LJH?X?FBM<-eP8q9oG$P3yvO?POwOJAe2mhz z2E^|yTV{FcbaFK#%TDG;>uNtF+*_k)w&G~Ou>zev>nF|j*qq19@q59u!&!0vy4dQ) zbC&V<3;t{MF!=JEoBvOS(7TeFuJcPCOaEA9X&*J!=bqW+dlC}14%OGx{~n+6;o&UF zU`IaHhNQle-!f)h?i79g=j6(BbJdy;AN{oK>e02o#Fsn7OMJU7GPm)nnQi?t(_Yi{ z(d)i{5M-ZQlcK!R!q9QzVV^lxmoztCdYZhP=XSlA*A#;zr*i&;s&uYC|G3(ImqpCc z4W4%^wksN*KD8)q$L+g#1R zh3?-jw-;+M%+W}BBJym(uG0Hqk~?$03-U#Kh|E(rtX`ki*kQYUDnp)mr}xPc&ugv| zA0{rJv->>r%F_DZJnqF4nRa@l-r2{Zt^OiOQ>9R5MS%bEe|^R3$1WHyQqHJspA@(D zz_Lw(VW!(2eygaK*qXKCu#;C#@z*!6US!u^O|$UhkyD;|CT6Y8%E$FfFYB7Do8mn4 z%Cm&0?;nVMQeSq+*JWd;mc-l3D-@Tno3mX}&*`Jbe&*5`Pv5rz3H3|ze%Xsew5`+4 zoVow}5yeXTum3qjuI_l1x~jtMZ()ViPl4bo>tZC%n6FfsvMO!U--$cVC{)(&t=jPP z&O*J+SBHuxhCeWw7u{>Q%yP@-{(B{L8C`-$3};QMo5$#Sc#49E&kX%t-?Yx;@w72k zr<6H*J+1n;=-uxHWs9As&*PkATAy*%xW;C>K4*#9smka_o&QSY*UfObDU|g*)8t(8 zB#D_!9k;?8e+UUT3D1=bUb!LtiVgp%JvmQGwobIJmS;C@F5(|p|np=J<=tbI}_0bpO)3_R| z*NDHBsTVgeDA}8>yYWZIemHkT!(rFQz$ssLzKr|UmsKyaJU_-*^QibXr?0B#7Tj209ib!< zl&2J`!+-VD&BvwJrR})m8heFybS=2qHT#sr?ttYn`i8=F_x>5LPbe^aGc#<@qH2ys z3f~l;Zk{RWf9~Ht1N}P(eO_<~u3Dd%##+~2#^~~+Z0C%+&SiC{!+tgAZ$IaKecu-@ zCwb`)Z&hZn*0=X29DRL2XYy?sxrU{y%%;!h3tp=#FRvzQ8$R=H{{7iMCOM^bT+Qm# zFAk0T5ay?^ENXs(<*pO!nw&a@dZBp-mtK}K+aT-p)iI;39-$HgVdL*yt&w90Jla`+MrKK5eb)FBi)K5n5e;Xkzut&+% ztKm(4K}fB6S5^iOSH5_XSL`Br!HS!%=bp|#W6R35`R(z5=(I*tfwMQxf2>;3>vZn< zyw!{kyjM%;uldhy)Dj^hTK}z}I7?gHt7ZOu?swNpLvPf?l$qI;tyt&rtt9!|@hFd+ z4{IYjSekAhOZ>d}=OTHr*L>xhm4Bt4nZHSX>*giP@AlZ4I^WzH*kk@!t@*{8wuUU&Bzrdb?)#$7Yp?$(*N)f5kJ+xL2KYwd{vyyWFOZ+|7sU+s{PK z;(TVVJZHQ3F20@Y-vs@q{>zxrDf&U?^RFG2VX|TdaXT9#mrwiXctgLOk-5z8WK85D zV=)(>1J}DNVuZzlcl|ro@bMMjN|wyhT)sG!B`-y0UonZcwGKLeemQ$>Mn#*uhk&Kn zfd@*d8>Y>-F8F)$ctO(lz}Zr(yj@sM=haU#^r_#ba{l9H5rG4DUUo=4eZjW=p!O?K z<0%453ws_Kr7w+}E|8-4_egLcZ^iLvJPbxRDjz1K-)FU-%Ax5f$D(0%e7<*Z-hp|Q zfr5+lIa<3C56#^4Hp*P-4~zE!e)YNLx|6%>|9yM3ZHE22>wY%>qNZpIc1=&e7+lDg!Vt%2mb-gWm&4{Hm{?b^R6^Kqr(I7>Ox@AiKxEI4-UBJ=uso`ofwi{~zq_+jBy^e^dZ zuhlv$jl*J|DZ6=_IJvC8Yb(3l-FU3)o9xuWw5~yd~cgnF03kv-J!9mGEY~*|5r~< zVjx?zSm~GiH+7TJ&(?>X)~j7}OCU;MYv|>y+~anF@^^Xe7Ht%^$Xw`NcsO?c(zBZ3 z^#_FPb3fYJTKZg?zdkU0p75qm2SVO{mYaGhCHda99EbKz`9iKQzOtOXrf=F|F;mOX z%;jDD{q}2ZTdPkyUbSpAi(VA>^I|Of{#z~2{Q3CSiLTS#bnf2#CXv2L^}ANw>^4%~ zA@V9MY5Ie!{M&ORT%H}dbz~9GU%_9~Hf-FP8FA(Fl?ei|FK*6Cm*!)!Z+)k{Zoja@ z%u9Q+@#hf|8`|a@lf7j0KNPhdaspR(h*v|^}iL5qrEpkrUtIj?uGGWEq z%1euMwj8iClPMDmc+x2n+;6*b#rG$M^=E}Ycxp;3G%h?HxbH%*+T!h#SFCUTxO{r= zuSd6Ig|-_pKJ!W3YrEuXb!OCR3x0|G3F^O#mubhSuNJu}YAxni`Km@PSBpPtmD<;6 zr!?`u^|J-PPMY-X$GROX@0|XB{N(mnT08%skZsd03pU?h_%EPb=*yb=Ua75uGt8IW_P@OBn@6GC zf(em<4?TX( z#u+}l>vs8Uy5wuo@oGPtwy9C!)Ne}*U2h!HqX+IveGw` zQCjz)VW{cMHT#M-8UI`I;7M-?HxujgrrMwr*P5O`%ieg)lSQ1>{7gZ->bpsTV)xxo zFPOem#o+w56UG920`AX^&Yybl_QN<;$#tgl?;50T`rGnz+Wegx<@bD@cP$~@N%NZ- E0Ojwq#{d8T delta 4000 zcmZ1`zf69DPJKjiPJtHV4_)Jh<=cTFPE;au0m-> zWO=H#ew2k{rmvxwS3p^1s!6(|X<}7|OGQM1eyFQ)a(zfxRYXxru_M>cy8l}b7t0)n%1{&HLA%vX5-@qV{ht>lTHJEL?BEClaeW?%O&dZqmJQ;s3Z zYv=d}e7^K{XIJg<^m#Kv*%{sB+N@m48te>b?p&E*p}A$^qJ}$WCr?~IFhPI%trK@r z4(!{zVa+>{-3`{7HS*oWx`p^UoHRh zm-9JO*REoQUhl1rSyMK?$zpUpKpeVIfX7bb?o3L*<<2|jb6R}G5w6A`yK6#h9CKCr!na>-~XeLZ`yY5* zTfbn&yK}vnU80<41Iv=P>%BVDIbl^8x0Trrjr&_$a$kC>aGX)GtXguCIc26<`o8Z0 ztB&lw`QJ8n?Q-9%0+U2!=h(coxXpNBvv8y<+l0R^7k;X3I%_7pub$tpnsL=GBbBFY z5xv&lY6?A7H%@W4wW|J--un1;&PL+~4P8Oes{)tnS8sZ$WN^LWq@BiRvCz&2m7rT^ z`3>`UXT16(c=*|sg(d#tLT4s)K4uWTFJXO6g^P=!?D%U}S$vZKbu)H}oW7_W)Xt>&#CSKKyDeJ=0F?|=Wulpimf zY;(%`r9G?8$JGlur|vcQaz{#Wh7<3sbjFz{xb`}ByR3h1f3W;!W$66*eaAjk2>i{< zniJd^axL05B>cj{vL>g_MC%lt}V_!mlH&}^uYRk&IJ-ltpbG}Pl;#0HL8?rCFUEDi&dDGM<#oY1{b0*Dm|5S10 zm%71Ifj?W-3|0%(P7hsj{c6^p8Lc+yU5sBp_B^PT^i4g&C%i1B^rl?s@u^%-&0D|j z!8DPMzB?|6X^tf5sF~p&h#}n!n2sdwe-^Mfq&m_JY|vd(NDGoe>~wm-aTv;_~Er zCx6Q|PO(nuGX$Ag4{Q-(%YPG-``b2keJG2MlT+30gh>m6l@$AI`DYb-Xv<8l*me0D z$3i~2pZR&5hmD`*?Y=VO=?boWYme`ZE9aE|((vWURHv8?F}@|s{a1Yv?`*AM$<+5h z*U#AS?sDjN>s538m+rVb6M z=UfXv&s+|LS1ISsq#rG>b6Xz8!?{eysAhMh7t4ulOm5w3FZHBme%URxO0H0(L(wDU z+pCb%+IP(Bb1w#6-Tvai94j-mUEY&LCU8v?)jPUZh~x5Q$(ytO^4{oA={lgF*!k;4 z7Vq82cUu>mt~4z5lh)qfp5 z#ku7L!w%gdewUTc_b%PH?3{2t_Y}Fe@>^GInAe;6DdE9CW&Zt7ynY4VHLttTKXawe zmp%28VU+^;r`+lditk38V!BsvR{Sh2L3+K&O9zIo0(0@D>*8WM)?{1i!Gnvi*A*cO>XuW!= zg6M;~7uU6jeDzX%(W&dBRIGYe^3Tf>y-J&c%Rw)ecBR-q%MREoQ&FWWc=-L-&qBq& z?(aLjC5a3 z)6`qC+i(4gf&e>)em+(gFL4{2eBI28XWvvGSi3$TY?}Q(hArE+#{WzbesX_5;|m%0 z8?WC<>NcHtGVQ+C&TXCkzLiTopFe&ScKbHpJh`~z-u^+0IK4dsSo72hY!-dFT$BBG z{=uo+w-&y>Q*Rizp(|wz?^64|XTS2>IBIVArp%ZlIQ#C_c}8z4eb2RP@wp!R^>cHE z;mtX0ks%guP8r6k_FOwTb)S~Zsm@}d8IPW?);wvuUY9M+?EWc*8}008Cb>+wd&J*o z!uJVAOBxvh3lsevmYzFWaKwAQ-X6b;Jz6a8iA-laFYC_<{_#V%KIQd{17S>OZg(|a z>{35}*kaPF?$t&g=dU>XySxARzn@DQe(G*rWV83OvFwq+Q-(3ig*Ws3|1Xjw{ZjJV zIo8sX&8tpnJe_&D~LUoLFeqQbXB^tt7u6n5W7qHdz=c2s^=v30%i z{$uM$vB`IImiKlX{?oFpeRloX`d$7%eZS8a;F=_HqEp%9f4j%A@Cw=I+|P3_ulcid z@1A*)Ka5WZOSFj}SZLC7s_DDy+1Kip%UN7gOr;rfW`C-gKIQpDy&50J%SQ5#{x{@o z(E0r^S8kqK_5yUIyrOyfwU?ZXKO}t5ma2bk&A$CK>PwZ- z>dB{Oh;S3Ix3yU4iWOUFG0HIwfpH+xj-o0pUn zubwkAAg3bmR&Jh}?gjro7RLE5D-;|KuADWYV21IF_uKZ)zFcCUD$IYavnuI<-hRQ# zjMB-OPJ3RxC=$D?Gb5URrMc#{@Sfhye@*56I$_>ZeaO+V0Rr^(;_eDM_dNB8@8 zIoc>6(>-(_uEYe8K+Yw{tVaZ9al0}&AZyYHvHDd@ZdW3jc0;PHO_1Ok#ori+woI6 zrDbQCz_PiwcSD+)JvjbjqlfP*ZTHms;+H0XCB{PwLj~*3PSuilaCzp{GWPMk|{V$M~Q#6u0;L4 z&VxTb7kE3`x&5gW+?;Uu|Lrpc@pdf<`buT@;v4_|Jd&tuxG5c@6#}fNmUXHZr6!(ah9gH@eMY1wMALdluy3AT$ ze9_vx(@;~!w6tl#>c!C~@}}=rIL3N{_4MD?`mg)6ZqBc}^DCjGxntJ9!&?fzY*XGL zz-jf)Z$>K{XF^z`(S=8?4SxjfwuJus#aR3}?rVjh#r7vVL;^aJ?!5Xr&y(XwtX9DJ zBTTQQ|0Dd8}5h@H&+xU)~N z(p&i89J3!!j8?Tg`u1#2DR-u@i`h5#zlT@b_w&W2y02sQom8*P$keub*V#YnPiMEf zcV)ShDV_WrzVe#n$;{f;c|WrXn|4|1{mjgsCApq&?}gh5(w67VH$=WTAyddR(Y0FX z`kJ5%`_|mCOtZPFv6NNC`27S?_L88MoIm}+)kbe7NmSh8yY^_-nk@!_y5Z+66{l!k z*G+!i+3&QyJ*`*%Y?IT!`V0TJOnSd{!@~ELn)klcuzq;|`RSi|EB&;i%HLRM@DdYvtIYNx@^U*>Nsyyx=X^!|5N)TrRks^|T?<>KV)CqLM= zW+%rUnO||YGA>zV2JHzp-N`f6aYyRHZ>NvR{PRD}HSxf&N*>XbPjA;%9QtMu#()1( zd&Hr;6Yp|om`*svbV7c6n*M>mWd|?U*KhvA`i$wFKx|}Ao_N zQ?W56ykTDFeVLwT&z`ia&2_SsTJm6$PU1t!{0pW+&)JibBF+e|g))Z&>2b>>&h G>No%)wyY)q diff --git a/secrets-git-crypt/generic_backup_password b/secrets-git-crypt/generic_backup_password new file mode 100644 index 0000000000000000000000000000000000000000..97c322e2b3b790e69c04c30e8fb050265f45dffb GIT binary patch literal 62 zcmZQ@_Y83kiVO&0m@VEf+jrTI(<$^G$4u3?#-a}Xz3Y1XvSjS8G|r7PD*q(5Dd_3} T{!1FlsmDe24xD=!aAFDo%8wbf literal 0 HcmV?d00001 diff --git a/secrets-git-crypt/restic_backup b/secrets-git-crypt/restic_backup new file mode 100644 index 0000000000000000000000000000000000000000..03838fa354f7dfd78f03272e62a29cc810690ef8 GIT binary patch literal 154 zcmZQ@_Y83kiVO&0xI1^BN^pnp>DfNdL=H#d(VwC7v3dEY6D(TbJih Lw%O=dKynlS%*8^) literal 0 HcmV?d00001