From da0615ad184fe13238193de5d7892d4ac7570d23 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Thu, 8 Aug 2024 15:43:38 +0200 Subject: [PATCH] backup static files to garage --- .../cargo-bisect-rustc-service/default.nix | 7 ++ newinfra/nix/apps/uptime/default.nix | 7 ++ newinfra/nix/apps/uptime/uptime.json | 6 +- newinfra/nix/hive.nix | 12 +++- newinfra/nix/modules/backup/backup.sh | 36 ++++++++++ newinfra/nix/modules/backup/default.nix | 64 ++++++++++++++++++ newinfra/nix/modules/garage/README.md | 6 ++ newinfra/nix/modules/garage/default.nix | 4 ++ newinfra/nix/secrets/backup_s3_secret.age | Bin 0 -> 662 bytes newinfra/nix/secrets/caddy_s3_key_secret.age | Bin 661 -> 661 bytes .../nix/secrets/docker_registry_password.age | 8 +-- newinfra/nix/secrets/garage_secrets.age | Bin 709 -> 709 bytes .../nix/secrets/grafana_admin_password.age | Bin 282 -> 282 bytes newinfra/nix/secrets/hugochat_db_password.age | Bin 339 -> 339 bytes newinfra/nix/secrets/loki_env.age | Bin 326 -> 326 bytes newinfra/nix/secrets/minio_env_file.age | Bin 397 -> 397 bytes newinfra/nix/secrets/registry_htpasswd.age | Bin 278 -> 278 bytes .../nix/secrets/registry_s3_key_secret.age | Bin 364 -> 364 bytes newinfra/nix/secrets/s3_mc_admin_client.age | Bin 0 -> 802 bytes newinfra/nix/secrets/secrets.nix | 2 + newinfra/nix/secrets/wg_private_dns1.age | Bin 256 -> 256 bytes newinfra/nix/secrets/wg_private_dns2.age | 8 +-- newinfra/nix/secrets/wg_private_vps1.age | Bin 257 -> 257 bytes newinfra/nix/secrets/wg_private_vps3.age | Bin 257 -> 257 bytes newinfra/nix/secrets/wg_private_vps4.age | Bin 256 -> 256 bytes newinfra/nix/secrets/wg_private_vps5.age | Bin 256 -> 256 bytes newinfra/nix/secrets/widetom_bot_token.age | Bin 272 -> 272 bytes newinfra/nix/secrets/widetom_config_toml.age | Bin 4006 -> 4006 bytes newinfra/secrets-git-crypt/backup_s3_secret | Bin 0 -> 142 bytes newinfra/secrets-git-crypt/s3_mc_admin_client | Bin 0 -> 282 bytes 30 files changed, 148 insertions(+), 12 deletions(-) create mode 100755 newinfra/nix/modules/backup/backup.sh create mode 100644 newinfra/nix/modules/backup/default.nix create mode 100644 newinfra/nix/secrets/backup_s3_secret.age create mode 100644 newinfra/nix/secrets/s3_mc_admin_client.age create mode 100644 newinfra/secrets-git-crypt/backup_s3_secret create mode 100644 newinfra/secrets-git-crypt/s3_mc_admin_client diff --git a/newinfra/nix/apps/cargo-bisect-rustc-service/default.nix b/newinfra/nix/apps/cargo-bisect-rustc-service/default.nix index 2553d92..c9ae3d8 100644 --- a/newinfra/nix/apps/cargo-bisect-rustc-service/default.nix +++ b/newinfra/nix/apps/cargo-bisect-rustc-service/default.nix @@ -21,6 +21,13 @@ in }; }; + services.custom-backup.jobs = [ + { + app = "cargo-bisect-rustc-service"; + file = "/var/lib/cargo-bisect-rustc-service/db.sqlite"; + } + ]; + system.activationScripts.makeCargoBisectRustcServiceDir = lib.stringAfter [ "var" ] '' mkdir -p /var/lib/cargo-bisect-rustc-service/ chmod ugo+w /var/lib/cargo-bisect-rustc-service/ diff --git a/newinfra/nix/apps/uptime/default.nix b/newinfra/nix/apps/uptime/default.nix index b836a43..7552789 100644 --- a/newinfra/nix/apps/uptime/default.nix +++ b/newinfra/nix/apps/uptime/default.nix @@ -29,6 +29,13 @@ }; }; + services.custom-backup.jobs = [ + { + app = "uptime"; + file = "/var/lib/uptime/uptime.db"; + } + ]; + system.activationScripts.makeUptimeDir = lib.stringAfter [ "var" ] '' mkdir -p /var/lib/uptime/ ''; diff --git a/newinfra/nix/apps/uptime/uptime.json b/newinfra/nix/apps/uptime/uptime.json index 955289c..af235e3 100644 --- a/newinfra/nix/apps/uptime/uptime.json +++ b/newinfra/nix/apps/uptime/uptime.json @@ -24,15 +24,15 @@ }, { "name": "bisect-rustc.nilstrieb.dev", - "url": "https://bisect-rustc.nilstrieb.dev" + "url": "https://bisect-rustc.noratrieb.dev" }, { "name": "hugo-chat.nilstrieb.dev", - "url": "https://hugo-chat.nilstrieb.dev" + "url": "https://hugo-chat.noratrieb.dev" }, { "name": "api.hugo-chat.nilstrieb.dev", - "url": "https://api.hugo-chat.nilstrieb.dev/api/v2/rooms" + "url": "https://api.hugo-chat.noratrieb.dev/api/v2/rooms" }, { "name": "cors-school.nilstrieb.dev", diff --git a/newinfra/nix/hive.nix b/newinfra/nix/hive.nix index 3de4891..d95358d 100644 --- a/newinfra/nix/hive.nix +++ b/newinfra/nix/hive.nix @@ -161,6 +161,7 @@ ./modules/garage ./modules/podman ./modules/registry + ./modules/backup # apps ./apps/widetom @@ -234,13 +235,22 @@ ''; }; - vps5 = { name, nodes, modulesPath, config, ... }: { + vps5 = { name, nodes, modulesPath, config, pkgs, ... }: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ./modules/contabo ./modules/ingress ./modules/wg-mesh ./modules/garage + ./modules/backup + ]; + + services.custom-backup.jobs = [ + { + app = "testapp"; + file = "/etc/hosts"; + environmentFile = pkgs.writeText "env" "MyEnv=true\n"; + } ]; deployment.tags = [ "eu" "apps" "wg" ]; diff --git a/newinfra/nix/modules/backup/backup.sh b/newinfra/nix/modules/backup/backup.sh new file mode 100755 index 0000000..88d3eb6 --- /dev/null +++ b/newinfra/nix/modules/backup/backup.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail + +time="$(date --iso-8601=s --utc)" +echo "Starting backup procedure with time=$time" + +dir=$(mktemp -d) +echo "Setting workdir to $dir" +cd "$dir" +# Delete the temporary directory afterwards. +# Yes, this variable should expand now. +# shellcheck disable=SC2064 +trap "rm -rf $dir" EXIT + +echo "Logging into garage" +export MC_CONFIG_DIR="$dir" +mc alias set garage "$S3_ENDPOINT" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" --api S3v4 + +mc ls garage/backups + +files=$(jq -c '.files[]' "$CONFIG_FILE") + +IFS=$'\n' +for file_config in $files; do + filepath=$(echo "$file_config" | jq -r ".file") + app=$(echo "$file_config" | jq -r ".app") + + echo "Backing up app $app FILE $filepath..." + tmppath="$dir/file" + xz < "$filepath" > "$tmppath" + + echo "Uplading file" + mc put "$tmppath" "garage/$S3_BUCKET/$app/$time/$(basename "$filepath").xz" + echo "Uploaded file" +done diff --git a/newinfra/nix/modules/backup/default.nix b/newinfra/nix/modules/backup/default.nix new file mode 100644 index 0000000..32424d4 --- /dev/null +++ b/newinfra/nix/modules/backup/default.nix @@ -0,0 +1,64 @@ +{ config, lib, pkgs, ... }: with lib; +let + jobOptions = { ... }: { + options = { + app = mkOption { + type = types.string; + description = "The app name, used as the directory in the bucket"; + }; + environmentFile = mkOption { + type = types.nullOr types.path; + default = null; + }; + file = mkOption { + type = types.string; + }; + #pg_dump = { }; + #mongo_dump = { }; + }; + }; +in +{ + options.services.custom-backup = { + jobs = mkOption { + default = [ ]; + type = types.listOf (types.submodule jobOptions); + description = "Backup jobs to execute"; + }; + }; + + config = + let + cfg = config.services.custom-backup; + backupConfig = { + files = builtins.map (job: { app = job.app; file = job.file; }) + (builtins.filter (job: job.file != null) cfg.jobs); + }; + backupScript = pkgs.writeShellApplication { + name = "backup"; + runtimeInputs = with pkgs; [ jq minio-client getent xz ]; + text = builtins.readFile ./backup.sh; + }; + in + { + age.secrets.backup_s3_secret.file = ../../secrets/backup_s3_secret.age; + + systemd.services.custom-backup = { + startAt = "daily"; + serviceConfig = { + DynamicUser = true; + ExecStart = "${backupScript}/bin/backup"; + Environment = [ + "CONFIG_FILE=${pkgs.writeText "backup-config.json" (builtins.toJSON backupConfig)}" + "S3_BUCKET=backups" + "S3_ENDPOINT=http://localhost:3900" + ]; + EnvironmentFile = (builtins.filter (file: file != null) + (builtins.map (job: job.environmentFile) cfg.jobs)) ++ [ + config.age.secrets.backup_s3_secret.path + ]; + }; + }; + }; +} + diff --git a/newinfra/nix/modules/garage/README.md b/newinfra/nix/modules/garage/README.md index 95f82f8..d9d3b85 100644 --- a/newinfra/nix/modules/garage/README.md +++ b/newinfra/nix/modules/garage/README.md @@ -21,9 +21,15 @@ - key `docker-registry` RW - `loki` - key `loki` RW +- `backups` + - key `backups` RW ## keys - `caddy`: `GK25e33d4ba20d54231e513b80` - `docker-registry`: `GK48011ee5b5ccbaf4233c0e40` - `loki`: `GK84ffae2a0728abff0f96667b` +- `backups`: `GK8cb8454a6f650326562bff2f` + +- `admin`: `GKaead6cf5340e54a4a19d9490` + - RW permissions on ~every bucket diff --git a/newinfra/nix/modules/garage/default.nix b/newinfra/nix/modules/garage/default.nix index 13c616a..864260b 100644 --- a/newinfra/nix/modules/garage/default.nix +++ b/newinfra/nix/modules/garage/default.nix @@ -1,6 +1,10 @@ { config, pkgs, name, ... }: { age.secrets.garage_secrets.file = ../../secrets/garage_secrets.age; + environment.systemPackages = with pkgs; [ + minio-client + ]; + networking.firewall.interfaces.wg0.allowedTCPPorts = [ 3901 # RPC 3903 # admin for metrics diff --git a/newinfra/nix/secrets/backup_s3_secret.age b/newinfra/nix/secrets/backup_s3_secret.age new file mode 100644 index 0000000000000000000000000000000000000000..003ef35f8c47fa5adb46c55eb8370542da37081a GIT binary patch literal 662 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^fe2KOjjuPPtP)p z3e_&o^~w$M$uABl$xl!5@G3HK_VcnZG!65Ph|JI~&T~zya^*624R)z23Du4?Fw+mw zcJ#9-@yYfn)sED*3@uG_$~V<^3oI}t0tfGDii=AhWR4iY$GnEu%ci?*JLi^Jk!+7EK~oo3WLC`yd0l2?>w_4zc5$*@*I;A z&(K`AG?Sw2@(|0S!fbTg%0kRtD;yQleY4EUlS>Pe%F`-B(!FznoXtyv5-Tj7^c}-P zs!UT#9X+Bl481aP%d@#G0t%e8Ba2OnjUoffDm}e2N+K%?vYow)%ESEp%8HG1Ds#&# z!ZU*deSEoeb#)a|^}WM_GlE_GwLPm+BLf_RB8sX?va-F(D|1uI{Va3Ly^MTP!;Q3^ z%N)5DpEE=Qwzs6!wCPkS^XW-FsZ;%3 MrMfor8+0rL0PmmeEdT%j literal 0 HcmV?d00001 diff --git a/newinfra/nix/secrets/caddy_s3_key_secret.age b/newinfra/nix/secrets/caddy_s3_key_secret.age index c1fc9f78c3e42233e3aeaed2103fa88d9decfdb1..086a912be067fbfc184ebdc717c5bfa95cbe9a18 100644 GIT binary patch delta 590 zcmbQrI+b;TPJLEsN@!M|pT3ckSEx&=QDl)@P zabUJ{dX|v^m!*Msh);xZSbna5S%s5fQD&r{le4*BR-jj+v$m(JvsboTu(79+rAxla z#E;_PK4qSs=Gji6CdK|1euV`kQT`_0Re=Vffo72*1xcn!UIrz}Wod~yNmzOD$8&oJuo1 zyo|EkBfR}BEA;bxBRwrV!;LIL!!7bt^^?-MbaizVvO+_`!Y#d0Dm^U?3(6wGg36+D zvwdhK!xGL6TZ9j&w1g?yCF zny}92X8NbIegeiqD_1b?`X)O4CAUr2e`&FOjjMG|g@{M5Ki9=yw)~Lar*k)6rmdNr z#KHW=KsHM-im+vVw!ZR(elv!b=v@vFWWKz delta 590 zcmbQrI+b;TPQ9~_OORWEzmZE+P-3P*Vp64Bs7FYEL3p^oQ;CmTuz8V>f1zoHX<$ic zF_&q&n@4bDa&n22dw6zIs)bKxc2+@1Vy?cEM^a`^MpB7ya=43Arlo&oHkYoQLUD11 zZfc5=si~o*LPV9Lb5x*0c7D~q@X}(U*=_xMyrFqF*W*$c6 zM#Xuqt{J{%c_xV_r4e2!&L+WWd1dK=`X)}sg+Aul1yPp9VX5hp;~B;4T}sVz!}UFr ztHR0*w1fS8Ttc+X(lbhP%kup^eay?lwR61PN~0`-eL@1c5(^VEEYh6(EWFbF^E1uD zi;Id2oC^!Rv$9R1^73*_!lME+a!T|aLjz5?baizVaFh1Dee!p-2lBa$b8(-K)*9&cb z-Y9n6{_5I&S>m7PX ssh-ed25519 qM6TYg NvguOs7htIflYp6bh6oiiH7Cp2l/0Mf4mcf/4b8ReQg -BngCQfbilctBfNKjE+TkEhE3Bk2pkIlc1UYdAFISP/g ---- 3hA+KfCqIAvwuL+mr4PFW9hVlpsc+t0uwG8I8Uc8JXY -J@zI95/`VfWߤp#0;D دw'rg+n \ No newline at end of file +-> ssh-ed25519 qM6TYg 1HgGuuBWZKvGpR755SyGybRGIq26JR8qb4x4hywwWU8 +6e0gmCgL6CttzzzZ73oUYzpCcvhArAdFJGycwacFaIY +--- tfUAHcZONQZuZIXtumjCh1Crawf+BSl7djHSHC3WvJ8 +Ss.QeM~K!ٟ\Cqy^)SGjaaՙ \ No newline at end of file diff --git a/newinfra/nix/secrets/garage_secrets.age b/newinfra/nix/secrets/garage_secrets.age index 1c7e29bc2b49ed31273d704be7cdb684f6a42c45..4aa6674ffd28bc508f326c1c9a7ee6aa4437a640 100644 GIT binary patch delta 638 zcmX@gdX#m7PJKy$hp}g5x|vg%VWOu;psAl_m8Ds}VX{kTi9wpPQ-p!5b6%FCuVrOm zF_*Tdn{R-lS(QnYYo%LQwo7H1fwP}qL}7uKQtiTUEG6MS4l9nR$MxZ@7uEUusfhn6`1CskV21VWNKV z#E;_PF22Twz9AVoX=$OkSrLxmm1!;|PL*bEL57*mej(*mK4GRl!J+=4A-S$xVc{0V zu1OV+8F{%SdHSw-`Pu$irMd2AS-HuENreRl$sSoorT*sHIf?m`;~B;4oiZ|VO^njh z`~tEwBh8$G%By@$O-fP%i<2{gqWsfJ{EIxo)AQZDikuv|BF*#6%PcYrLK4%Hl7oW{ zeX`8MwTmKkJq-0rb1l=kbaizV0>ZPC0-Q>sA_}uzEkZ)8JdFzd zyfcgp3!F>~%S*Eh49#8Z)18t6y$Y)Gx#~F|^rls8IhmN=6QicA@_g#UQ@igU`L*o+ zil6mmzHQ#p95!FW@2*XoGDBAHe*F}7+l4m-`h(%J1!{xv`^Yl gBW`Dz>r_|EoMlPRE=PVfPtmAb5%T22nd#+h0L7E?y#N3J delta 638 zcmX@gdX#m7PJLQ_sbN-dcwT1p0u~%eDd8k{ipMRQ3x<^rZRB~p9Z*r2CuUWov zHkX-Wl72v0T3JfEd$F6lV`XxLaaoChNl{2*l2K?%RB=c^R!L=cZoa#AF_*5LLUD11 zZfc5=si~o*LPV9Lb5x*$c1Vo@I)8idT6_Sh9;r zibqjMa$rS1mr0eeNtsDiP;p3GS%I04u|bq!xTB|$XKK2IWmv9bhNZtpNU1^j z#E;_P!KumR8JQmGZYGf)`R+M+E`G@c79OQ$>6s>}Wr1FimWer~MS<>FDIuX;u3n+x znW4e{1p!52<+<5`B~C`(6-hy*X~{(v9?l+VzClI>1=;#;#+JU5;~B;4Q=L7Ns?5!T zQapUi%Y!|_Q<5voJ)*M)93 z&0&z!ycQ*N=y`L6bmG=2G1s|Q=`nS28dkCw{@?cSa&OG1lp_akU6P1;y!IJ4)BS*D z%D1utmalkp>fWrT%9j&vozB=C9HW2r`gTFHyWyV;819{z>3!H-Vb@icHi^KDRc$>> zb~gydT-?!UawoO%`}*DCKjrNbdTf?|{o-TV@Bf-rd71PQAWgNU~R?b7-EQYmis6i?_bBNnS}%pj(Kao4HR#QABoNq-&{5g?m7R z1y_!vQE7H)xqDz}QLa~Uev(h2d7xvcbGcuZw@;|Esdh%9OR%4Ln0AR*B$uwPu0lq( zPo`l;a7BiRb52IMlTSc;c2udOud_#{vuC)mk84&^XueNwMv8NkhXt1)gDKk?xA^lu zH!}A1_*I=g;=s)~+17FaOVOK)6W%yH74|kUc7HvM+c%@_Bk$jN(fbT^GVWO!pW&Iy z)>Han(^J75Z?3i4hvp?++`RD^^VS3Rwbxw@o6O+%>-Alpm?{^Z6J9IZH>&{vzN1~> delta 246 zcmbQmG>d71PJM8Gv0Fy4v!jQbQKn09wzh|XX;M{Ysk>#Ne?_XcetAe%U`1((ws(5E zBbSMOnz4aLg-21UYle}9c79-aMwD}aWmQ?azD0PEsb`o^a;9^*S5|OtK9{bpu7Y`i zc4c;8iAz*?MUHPlRdPy}yM?1~x>IVtepOOYcxs8MW4>i+n5lQEb3Rwor70>$Un#A4 z``X@MXZG}+iweL6CMv zIajJ_j;~WvvX^&$m|3|`h((y2ONyDJQF1{^o|}tVfmeA+YM4oCuuE}TF_*5cu7XLr zkC~;TiLY^anpr_qRa#D-uR)}5Sa@ElN0DEFvr$=acD+e{T0m%pK{D5l<`rA#J&j%a zDsYMa!OCljAM`tg?;AeX3)!rCsCeJU3k)*lyIga5)|!U~ol$#v+1_E#EEa=9aVB~z z?>w5IW1%K_-1XZl6QRSaO1tg$I$nS0TO76b<_b%%n?a9SZs`45xLGYNW3s`O-!{u6 z=0?8!a3ptMTu#tF&9Ao=*k<)TQDa#ZQ^{uISSazrX5|!pUtwq7+Mbt2?kVr=_U_X+ IuU+*70Mg`slK=n! delta 304 zcmcc2beU;_PQ68O^D}K(@G}Y?d>i%MzZuI##2X{qWT;3_8k)Ed4 zym^1YN&Oiv;*~*~xj!SO-%%?35R;$(jBi%bx5CZ}-FtJ`;)Q<)q&H05c7OSgPX7(> IiZ^-#0LZ_A2><{9 diff --git a/newinfra/nix/secrets/loki_env.age b/newinfra/nix/secrets/loki_env.age index 65ec96e57768f37df492dbf55afea346dba453c4..ac870337f23cfb9463d0381c3443667769f94667 100644 GIT binary patch delta 291 zcmX@cbc|_&PJOsVy0LzypHphNdw8+2UvfxNNLrX_WRbh4NocZfrhAlyYf-*-p@&gU zB$rXKenePtm|uQ@S6FDJhoOOUx?75orBiZNL}i9&NO)CHQBqiOaC($UB$uwPu7bN` zp?6?ea9W9nc5Yy~Pg03VW=@G;fU`-kZ%$&ed76p8d%d|^cCk~AYbcjf`(5YivvY4; zb`M^_c)xJ+bSbH;8|1Fco&1;Q^7%@)#RcnsuUb6M(`65*`hW2WOia0714N%jhQ198 zc>Y&sD$~K2pBLS9ce!~mMN9Pj{^riPS0}lY^K0NY%BDF6Tf delta 291 zcmX@cbc|_&PJK$LvxP@WXsNMdsh>xFzKcPQe`S7PNk)`Wx_M%{M}@0)zOiMdM^2Vw zHdmg1Ww5hxW?n?1i=l5;Qhsrmpu>GuZeR>id(t20hg|>u0mk8 zpQ($5S6Y~Jh;yY=PPk`&sYz~bn5jj&N0ez{da$8$WW9-FKt--mc_`QB26fB1egOqD z&b)On?XBo_aGh)yVKHNJiuk-|wg2XJ`W8NQ_c5$n7{B1**`kWdX;V&rXSrmcsjA@; z;_x(jU+S^bC4wOowYWGTxYu@4WqQrdoHh3iHR^w)tt6fAXU)5 t@*$gd&P7=n_kA)kys}&T7DrD=JhZ7-68D}ehunp;>F?422r>lfvj98?zRYUyuKWolTJ%%y9mP+Xj$ zo0?)|YHDby5K-mm92KaLZ&6rmXyhE3?Gc`1>SY*USf5`QT3DW6?r2sTk>(!|6%yzZ zT$$rsoEB)nl@b=@=v^mrAo4Q?d@$3xwDJH*bGEQjBX$$l}>zNbmbxc|R$&^11 z&zoPmI(#hKvf1Z|qEf8w^aqjK7>@WgZx?#A#{16(mhJXAXD0l))%E=l+f9u#2V?uA LW~^Q}VNWaouvLj~ delta 362 zcmeBW?q!~!Q*Rzv9#LgnVOHpzmuZo0kmp+vVOg$ko|><1Y+Pj#VU((!Y*vx(T9NGP z%avN{Yvg8W7F3etW|>y#XPAoE@5(&!uapP+Xj$ zo0?)|YHDby5K-mm92KZw;2fD@r0;D~YMka7Y3>&oR9{twz;vDXprd<}w zrK_u}P@W%N8W3z?VVWEfndFk09T^a2RA89v;gOeS;F(iZmE@#dq#YIHsBI9+b-b)~ z%d$DMn}1n=0#a L4)0#o_iF+GZw`lC diff --git a/newinfra/nix/secrets/registry_htpasswd.age b/newinfra/nix/secrets/registry_htpasswd.age index 2bf8a3f85682171861ccaec060049cbc918157ad..65f648ba0c046ddd951589b13d2f6beefa64a13c 100644 GIT binary patch delta 242 zcmbQnG>vJ3PJLl&Sb#@LnqOgBs!^s}nx(g4iE(*GW@wWQige! zCznfAo{43tg-+UPxMspMi&YPHs?QMs|dDl2cTAswdaU?~`Ajcyypi z_H5U#@;bL)GB4iMvpg^oVaXMJDp-4z_4_25uLnKXe2P15e%)MyolEta+C!a^b61{< vS7e{EHIvJ3PQ5`+P=$X~NtH*MS(0f$qIqG3k!xgDXr{TBxn*Lwaj9{zd3m{sX{N7} z373;cSc-p;VR>;>Xp)DSQ(1V^K<;Uv^4}fq`32P%+mrQ-kBL;tu7< z{rD$!O3Cex!TDlEk-{GT9@_`&3PkRRypg@t^nXI}v~{^l!=Yx+-H8L u`q#VIho?GkY8U`-zNe9QetJ}*X}*PJVU~MFVX0f8Q*MMsRB%S6M^U12U{QdR1(&X_u0oJDKw_r@zMWzB4&> zV#_}3e_JZ-icbVO+27p9d8jeH^3Vg$`JUgc4{giWTrCj6F-z~7==+I(ChyzTba&Do j@fTP69R>7v20cz`_)>c&>9*H8rJLJ#BxG&y3#kPFMLUg& delta 329 zcmaFE^oD7IPQAHPSh-Jeie+G?bC6}eONg;giIHoeV^W1nP+($(k3pG7XjZs;MtEVU zCznY;Zc0{GfR{mmk+WsEV|qYlq(xduo^wQUL5WGae{f>4xxRm7RFQ{kB$uwPu0nBc zd9uGnc4?J)RYj_QQBH|PUShUyj+>ELRfWExQMSKpYJI7Hv6rKzmnYYx$m79*F+oka z+ZYb&X1!^Py37)PBF*Am)UN~Q)YVp`NA@qgP`K!Y-0RB~@oF2-pN@@+{ju_oX}#ht z{Yi~0qE0;TQ<9advym<@*zY`Qfi9-MY diff --git a/newinfra/nix/secrets/s3_mc_admin_client.age b/newinfra/nix/secrets/s3_mc_admin_client.age new file mode 100644 index 0000000000000000000000000000000000000000..42ef966d92ebf3d280e08aac26bedda0154df929 GIT binary patch literal 802 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^fe2KOjpo1DK+#m zNh*&@DbP0$3D+(#G>b^{_R)7Ncg;$VGITaFDF`eLDl<(EGvG3I3v|vYv8>ciHcttR zs5CAJF-dkZ&380(HxEiSOOD743Mol+4zDsY^hCEUqRP=ZDp0{AugK9WJlDn8(kU>+ z(c8eau)?n_y)soh-K01-%P6lPsZiUGDn5rTTm)DXcvz_?!pFXIHDQTG{s!vR!SMXURw<_MK|C_;$6LrTS`tv)}G_3|g{= zqThSYo1ZW#jdu9ZIwjNj%zup);qF4K<)tA2> zSc*+JX}qZ;p+H&E-9d$&Yg$>!a<{GZfYnL??6=Vh!RZ-PWG$^0m6U8?%4bJwE? z6XD+9b69-u{k(8%X=1^R_lGzx->JR2G{0@u$@QDG%{MbjIsW_W=2o?3(&dg>7oGtC DuKh83 literal 0 HcmV?d00001 diff --git a/newinfra/nix/secrets/secrets.nix b/newinfra/nix/secrets/secrets.nix index edf17a0..dfb89b6 100644 --- a/newinfra/nix/secrets/secrets.nix +++ b/newinfra/nix/secrets/secrets.nix @@ -18,6 +18,8 @@ in "registry_s3_key_secret.age".publicKeys = [ vps1 ]; "grafana_admin_password.age".publicKeys = [ vps3 ]; "loki_env.age".publicKeys = [ vps3 ]; + "backup_s3_secret.age".publicKeys = [ vps1 vps3 vps4 vps5 ]; + "s3_mc_admin_client.age".publicKeys = [ vps1 vps3 vps4 vps5 ]; "wg_private_dns1.age".publicKeys = [ dns1 ]; "wg_private_dns2.age".publicKeys = [ dns2 ]; "wg_private_vps1.age".publicKeys = [ vps1 ]; diff --git a/newinfra/nix/secrets/wg_private_dns1.age b/newinfra/nix/secrets/wg_private_dns1.age index 44c6e6e2c5d66462387840e1b55208585d07de0a..3dc6f81523db3994b00ce14badc9178241294d26 100644 GIT binary patch delta 220 zcmZo*YG9h6Qy-k=5nNyy6&@096zm@vZj|N`6%5L%EEpkJKjpU%~4-W3}1qmA?a zJ#+adN(%}nF8x!wt>I-=l{M2UZ7v*=xmx%m|+lFk!9|aSs9RG?q-l@S>SG7%%!WVt5B7Z z=8{($5nL7$kZ)-inpowZ>}BbeS7qrEknNUYVvv#M7n-A;>X#c?n9XH+wduf5=6jXK zxt1E8eZ1$`UigT9Jc@hpH!0o diff --git a/newinfra/nix/secrets/wg_private_dns2.age b/newinfra/nix/secrets/wg_private_dns2.age index 86fce00..5b3d149 100644 --- a/newinfra/nix/secrets/wg_private_dns2.age +++ b/newinfra/nix/secrets/wg_private_dns2.age @@ -1,5 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 5bWSnQ gkB+3cKWYoBYV0eDyBD5g5UWsSs94DaQSka42g9EsA8 -B8Hm9IrecZNv75DWfPJPPGJSP8AkBcOgy070foI8gPQ ---- d6F58mcEIAHmIpaAr1sgMaQUQAqa6Tr7DHq5hFgetOc -Lmb&Ɂd1ץ^{;tH堨5MX1c[ b[ߠ 篈jz( \ No newline at end of file +-> ssh-ed25519 5bWSnQ yYpbqupe6d0ZiH4CxnkHx6clUSI6VOAwiFicoeghIi8 +Q1rxBbAhYeZfi5uSNW7/kE/sn15ZpDSxC/P8/SuekWQ +--- CsY6lrPSTBryg9t7U1FfnoAYoz0pDRhRpkTy+bsJrZc +E' f07TBc㯦-߬&Kpd~Gm8: )Lpy x˲ < \ No newline at end of file diff --git a/newinfra/nix/secrets/wg_private_vps1.age b/newinfra/nix/secrets/wg_private_vps1.age index 368b05386198941835cf7a06ab5371cef18b335b..44225dafe6f417b69b5724fe526320eb42c4fc3b 100644 GIT binary patch delta 221 zcmZoW18!sZ)h25TIJ)H=TnwwT;N$%WRO%@=x3H55u8+! z&y^Zz=I7$*z0$_VG(L<>Rjkq>gHXUQW75So)egnXJp`;n3Wim7*?3$6XjHB>dN*0*$G2~T1{#7 z#P3tic$5o%>AN_`gWclhhT9gVMeDhf>gQ%CMP7A~=~Cq@3y?^(uwj*A5S+eOb5G`6 XT}{WCKR)lO5jx#(`=-aSdH!1fRH;yd delta 221 zcmZoT=@*<;;2!Q=k?Z3fQk79^ZtfNA z%N1^E7~rL!o?DikQD))dQ5uqOno(Jv>~5ZwZCL5y>E=3G)>>XTs{8s-^M?qQLcSkC1k0b{6!{*|_l#lknYA&Q|W) YB?2y!&b{3yd-vdhNj!3zy+@=X0Z!OdYybcN diff --git a/newinfra/nix/secrets/wg_private_vps3.age b/newinfra/nix/secrets/wg_private_vps3.age index ab1a7d7b8bdae53bfd58ee38c7de8cd8e85c6924..d7388a46bd5a602a4a5a5537191add2834165ca1 100644 GIT binary patch delta 221 zcmZo#b?-!V>Us&Rk?CF{6>Kzf8Vw6{^omQF=niuMxUgBIFS(WRU z%~fjY6HsAZUS1wrW{;r^!Bxl4~_RO;@FV2nx3;%MGm XlUKJ_*`TXmIXm67=R|+>HpyZD9e!2- delta 221 zcmZoDS#D}*;2&9D?qTGYo}(S<6=)t5;%A!VUh3#uZke0p?qgbR5>TAz%cZNUtB~wu zTAAaW9%!oVA5l@{npRZcSZEqv>>H4rlN20j5LxVP8J4JRksWSaQqHy7EU9`0kJH^K zzpKu#q<(g^-O??}z2LBX#-_Vn44h9k=HBE{7Fl&}|NVvQ_wTkkVf=BUW9fnL-zON} Ze>pd2Emznx4)?i}jy!$rxTK-Q1pslER;vI2 diff --git a/newinfra/nix/secrets/wg_private_vps4.age b/newinfra/nix/secrets/wg_private_vps4.age index b8f355f26a6b7f7897489c6f75f9636a63b1213c..fda3f23056b02245738a68aa2f5a25817fe6ef74 100644 GIT binary patch delta 220 zcmZo*YG9h6Q=jRcS?O)$>XcrQTAm%|=$Gg3om1lKlvj}J6ke5^WbBsj=Ifdgl$YXC z&XwvBmFMDCkXqoLZDv<{fF6&84fWtKjEV z<`Wd0Q=Sr9=ICRP9No9~H-0%6c`1+Em5n8#AUN3!qfA<=N XfWEkiYcB>a=4icrv$9TZN+~Y@C#h89 delta 220 zcmZo*YG9h6Q(qKNrSBFQVU!jam19=u9p;{Cl2cinl<1n49GVm5QF%1F z%oXA0ZtR0)SD93J8rTy9}xP+)G6o1c*xWsz!HRuo_s73k$}!lkRLt6*vF zVPu&WWl))98R1mvo9OTAYaWywlveEOA6cH|Z0c;D9UA2tl$zn}8p;)RbISV%aqe{o zuIm&}eDFp0W=!d&=1`3j?~Dp=t}D{nYq)4>8{gd%S}ErWPHNiAr|TzGKB!!jciuO7 Xer?K`BTI}AmuZCuvnA~2OkDv0B|}tc diff --git a/newinfra/nix/secrets/wg_private_vps5.age b/newinfra/nix/secrets/wg_private_vps5.age index 6a84e459e1c9d22a7b36a30060e61d65ac56a696..6faebf3f586a33cc95ebf659181bc9e5c653abc3 100644 GIT binary patch delta 220 zcmZo*YG9h6Q=gI@T#=bvkWv;Ln3x_>=$#W9n3ow4o~&Jz;}v0=<(I2nWs>0@;#3gg z$`zdA>k%1lSZe4UWts12;#HQS?H+7t>gQ}+<`?c?R$i4ERFYR3>=hPZ!KJIKtB{l3iAnTPA*c delta 220 zcmZo*YG9h6Q*U8X<>FOTmRlO+QJj{Y8}1U8mL6tc6l|I2?;8f+$k;H)8lZ&BCez=#rWk{H7 zHdknAfM-gce{p4?uYSIXZ;45zWqMdpvG oy4#0SBpZL8Vw|wU^=RF;2(duz4XM4FH91YU%R$iiEo_k@MBbTnOu7ZcR zuUCPeV`!MAsb7e1T6R=gWlCbDVNz~ThGA*AepIl#S*nYrTXJE!y9rmI=J5rE+5vga z$HEr&f1fU_{OuH*ckZPbw>r-`UJr5Y4sK4dSt`1sHT_H3g7q6a{>$j_*?iZ$x_*|~ oUFL^Xx$<*`7}EFH{+;vkx~%1z|CS!l?=08Q^Iv+P*uQor0Gjw)H2?qr diff --git a/newinfra/nix/secrets/widetom_config_toml.age b/newinfra/nix/secrets/widetom_config_toml.age index dc3698c9abd755516e1c0dd38b0cdfb0c077bb0d..a4a749ebf8b815dde9035cfbe122f98af0241f99 100644 GIT binary patch delta 4000 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 As{jB1 literal 0 HcmV?d00001 diff --git a/newinfra/secrets-git-crypt/s3_mc_admin_client b/newinfra/secrets-git-crypt/s3_mc_admin_client new file mode 100644 index 0000000000000000000000000000000000000000..637a25141bde4add17bafee1ac9b2dae1b688784 GIT binary patch literal 282 zcmZQ@_Y83kiVO&0s8K${SI_6OXM}@k~^s zmdn{@MoP=HiXh2lp%wEuDncAnPAq-3zk2>RqlX3)p0C)==C+3E^3+MQZi@5Uu9?eO zdF#WOPi*Thszth;{_E}akAWx7dV19VLwAW_KWra!4?jG|Uizdn+wsJIHRS_Z) t^}V4XLMMnn<9H|gq|S9y#lu9+pB=ra@Ko%Q$D1?hFH$n6^V#(n0sxnWjtT$( literal 0 HcmV?d00001