From 25854bc608ff282fafb8476fac4ef36da7e5f3f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Thu, 9 Mar 2023 14:15:44 +0300 Subject: [PATCH] machines/magenta: add woodpecker ci service --- .agenix_config.nix | Bin 4123 -> 4415 bytes machines/asus-gl553vd/default.nix | 2 +- machines/canigou/default.nix | 1 + machines/canigou/hardware-configuration.nix | 4 + machines/home/default.nix | 2 +- machines/magenta/default.nix | 13 +--- machines/magenta/hardware-configuration.nix | 4 + machines/magenta/services/gitea.nix | 13 ++-- machines/magenta/services/traefik.nix | 33 ++++---- .../services/woodpecker/agent-docker.nix | 37 +++++++++ .../magenta/services/woodpecker/common.nix | 28 +++++++ .../services/woodpecker/data.secret.nix | Bin 0 -> 220 bytes .../magenta/services/woodpecker/default.nix | 9 +++ .../magenta/services/woodpecker/server.nix | 69 +++++++++++++++++ machines/modules/docker-swarm.nix | 14 ++++ machines/modules/traefik.nix | 70 +++++++++++++++++ ...{window_manager.nix => window-manager.nix} | 0 packages/woodpecker/agent.nix | 17 +++++ packages/woodpecker/cli.nix | 17 +++++ packages/woodpecker/common.nix | 37 +++++++++ packages/woodpecker/default.nix | 11 +++ packages/woodpecker/frontend.nix | 40 ++++++++++ packages/woodpecker/server.nix | 27 +++++++ packages/woodpecker/update.sh | 47 ++++++++++++ packages/woodpecker/woodpecker-package.json | 71 ++++++++++++++++++ secrets/docker-config.json.age | Bin 0 -> 2161 bytes secrets/gitea-smtp-passfile.age | Bin 1429 -> 1412 bytes secrets/mailserver-users-family-passfile.age | Bin 1451 -> 1417 bytes secrets/mailserver-users-gitea-passfile.age | Bin 1443 -> 1384 bytes secrets/mailserver-users-jan-passfile.age | Bin 1473 -> 1471 bytes secrets/traefik-dashboard-basicauth-users.age | Bin 1366 -> 1423 bytes secrets/users-jan-passfile.age | Bin 2428 -> 2426 bytes secrets/users-nas-passfile.age | Bin 2417 -> 2481 bytes secrets/wireguard-asus-gl553vd-private.age | Bin 1607 -> 1624 bytes secrets/wireguard-canigou-private.age | Bin 1379 -> 1361 bytes secrets/wireguard-home-private.age | Bin 1524 -> 1552 bytes secrets/woodpecker-common-env.age | Bin 0 -> 1433 bytes secrets/woodpecker-server-env.age | Bin 0 -> 1544 bytes 38 files changed, 535 insertions(+), 31 deletions(-) create mode 100644 machines/magenta/services/woodpecker/agent-docker.nix create mode 100644 machines/magenta/services/woodpecker/common.nix create mode 100644 machines/magenta/services/woodpecker/data.secret.nix create mode 100644 machines/magenta/services/woodpecker/default.nix create mode 100644 machines/magenta/services/woodpecker/server.nix create mode 100644 machines/modules/docker-swarm.nix create mode 100644 machines/modules/traefik.nix rename machines/modules/{window_manager.nix => window-manager.nix} (100%) create mode 100644 packages/woodpecker/agent.nix create mode 100644 packages/woodpecker/cli.nix create mode 100644 packages/woodpecker/common.nix create mode 100644 packages/woodpecker/default.nix create mode 100644 packages/woodpecker/frontend.nix create mode 100644 packages/woodpecker/server.nix create mode 100755 packages/woodpecker/update.sh create mode 100644 packages/woodpecker/woodpecker-package.json create mode 100644 secrets/docker-config.json.age create mode 100644 secrets/woodpecker-common-env.age create mode 100644 secrets/woodpecker-server-env.age diff --git a/.agenix_config.nix b/.agenix_config.nix index 13c7930e42be92a31f72595f0899ca576e40c68a..3b16faafc9fbd1f6c6c684089448a83f77fea6a0 100644 GIT binary patch literal 4415 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 diff --git a/machines/asus-gl553vd/default.nix b/machines/asus-gl553vd/default.nix index 44bb8ab..aac31b3 100644 --- a/machines/asus-gl553vd/default.nix +++ b/machines/asus-gl553vd/default.nix @@ -6,7 +6,7 @@ ./hardware-configuration.nix ../modules/common.nix ../modules/sound.nix - ../modules/window_manager.nix + ../modules/window-manager.nix ../modules/fonts.nix ../modules/gnupg.nix ../modules/nix.nix diff --git a/machines/canigou/default.nix b/machines/canigou/default.nix index c2e0b5c..123159d 100644 --- a/machines/canigou/default.nix +++ b/machines/canigou/default.nix @@ -10,6 +10,7 @@ in ../modules/common.nix ../modules/fail2ban.nix + ../modules/docker-swarm.nix ./services/wireguard.nix ]; diff --git a/machines/canigou/hardware-configuration.nix b/machines/canigou/hardware-configuration.nix index e54b5c4..d6cfa23 100644 --- a/machines/canigou/hardware-configuration.nix +++ b/machines/canigou/hardware-configuration.nix @@ -6,4 +6,8 @@ boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ]; boot.initrd.kernelModules = [ "nvme" ]; fileSystems."/" = { device = "/dev/sda1"; fsType = "ext4"; }; + swapDevices = [ + { device = "/dev/zram0"; } + { device = "/var/swapfile"; size = 1536; } + ]; } diff --git a/machines/home/default.nix b/machines/home/default.nix index cfd6efa..e896386 100644 --- a/machines/home/default.nix +++ b/machines/home/default.nix @@ -6,7 +6,7 @@ ./hardware-configuration.nix ../modules/common.nix ../modules/sound.nix - ../modules/window_manager.nix + ../modules/window-manager.nix ../modules/fonts.nix ../modules/gnupg.nix ../modules/nix.nix diff --git a/machines/magenta/default.nix b/machines/magenta/default.nix index a34ac4b..971143a 100644 --- a/machines/magenta/default.nix +++ b/machines/magenta/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: let data = import ../../data.nix; @@ -9,13 +9,14 @@ in ./networking.secret.nix # generated at runtime by nixos-infect ../modules/common.nix - ../modules/nix.nix ../modules/fail2ban.nix ../modules/garbage-collector.nix + ../modules/docker-swarm.nix - ./services/traefik.nix ./services/mailserver.nix ./services/gitea.nix + ./services/traefik.nix + ./services/woodpecker ]; boot.kernelPackages = pkgs.linuxPackages_6_1; @@ -33,10 +34,4 @@ in defaults.email = "dmitriy@pleshevski.ru"; }; - # Enable docker - virtualisation.docker = { - enable = true; - liveRestore = false; - }; - networking.firewall.allowedTCPPorts = [ 2377 ]; } diff --git a/machines/magenta/hardware-configuration.nix b/machines/magenta/hardware-configuration.nix index 40c8d65..d611882 100644 --- a/machines/magenta/hardware-configuration.nix +++ b/machines/magenta/hardware-configuration.nix @@ -6,4 +6,8 @@ boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" ]; boot.initrd.kernelModules = [ "nvme" ]; fileSystems."/" = { device = "/dev/sda1"; fsType = "ext4"; }; + swapDevices = [ + { device = "/dev/zram0"; } + { device = "/var/swapfile"; size = 1536; } + ]; } diff --git a/machines/magenta/services/gitea.nix b/machines/magenta/services/gitea.nix index c1cc7f8..1ad2041 100644 --- a/machines/magenta/services/gitea.nix +++ b/machines/magenta/services/gitea.nix @@ -8,6 +8,7 @@ let robotsTxt = pkgs.writeText "robots.txt" '' User-agent: * Disallow: /github + Disallow: /external ''; in { @@ -105,13 +106,11 @@ in ''; services.traefik.dynamicConfigOptions.http = { - routers = { - to_gitea = { - rule = "Host(`${hostname}`)"; - entryPoints = [ "https" ]; - tls.certResolver = "le"; - service = "gitea"; - }; + routers.to_gitea = { + rule = "Host(`${hostname}`)"; + entryPoints = [ "https" ]; + tls.certResolver = "le"; + service = "gitea"; }; services.gitea = { loadBalancer.servers = [ diff --git a/machines/magenta/services/traefik.nix b/machines/magenta/services/traefik.nix index e45b8af..bb66b56 100644 --- a/machines/magenta/services/traefik.nix +++ b/machines/magenta/services/traefik.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, lib, ... }: let traefikCfg = config.services.traefik; @@ -14,6 +14,8 @@ in inherit (traefikCfg) group; }; + users.groups.docker.members = [ "traefik" ]; + services.traefik = { enable = true; staticConfigOptions = { @@ -36,21 +38,26 @@ in email = "dmitriy@pleshevski.ru"; tlschallenge = true; }; + providers.docker = { + network = "rp_public"; + constraints = "Label(`traefik.constraint-label`, `${config.networking.hostName}_public`)"; + exposedByDefault = false; + swarmMode = true; + }; }; - dynamicConfigOptions = { - http = { - routers.to_traefik_dashboard = { - rule = "Host(`${magentaData.addr}`)"; - entryPoints = [ "dashboard" ]; - middlewares = [ "traefik_dashboard_auth" ]; - service = "api@internal"; - }; - middlewares = { - traefik_dashboard_auth.basicAuth = { - usersFile = config.age.secrets.traefik-dashboard-basicauth-users.path; - }; + dynamicConfigOptions.http = { + routers.to_traefik_dashboard = { + rule = "Host(`${magentaData.addr}`)"; + entryPoints = [ "dashboard" ]; + middlewares = [ "traefik_dashboard_auth" ]; + service = "api@internal"; + }; + middlewares = { + traefik_dashboard_auth.basicAuth = { + usersFile = config.age.secrets.traefik-dashboard-basicauth-users.path; }; }; }; }; + } diff --git a/machines/magenta/services/woodpecker/agent-docker.nix b/machines/magenta/services/woodpecker/agent-docker.nix new file mode 100644 index 0000000..633a425 --- /dev/null +++ b/machines/magenta/services/woodpecker/agent-docker.nix @@ -0,0 +1,37 @@ +{ pkgs, config, ... }: + +let + nextPkgs = pkgs.callPackage ../../../../packages/woodpecker { }; + + canigouData = import ../../data.secret.nix; + + data = import ./data.secret.nix; + inherit (data) userAgent group grpcPort; + + dockerSockVolume = "/var/run/docker.sock:/var/run/docker.sock"; + dockerConfVolume = "${config.age.secrets.woodpecker-docker-config.path}:/root/.docker/config.json"; +in +{ + systemd.services.woodpecker-agent = { + enable = true; + wantedBy = [ "multi-user.target" ]; + after = [ "woodpecker-server.service" ]; + restartIfChanged = true; + serviceConfig = { + EnvironmentFile = [ + config.age.secrets.woodpecker-common-env.path + ]; + Environment = [ + "WOODPECKER_DEBUG_PRETTY=true" + "WOODPECKER_LOG_LEVEL=trace" + "WOODPECKER_SERVER=${canigouData.addr}:${toString grpcPort}" + "WOODPECKER_MAX_WORKFLOWS=2" + "WOODPECKER_BACKEND=docker" + "WOODPECKER_BACKEND_DOCKER_VOLUMES=${dockerSockVolume},${dockerConfVolume}" + ]; + ExecStart = "${nextPkgs.woodpecker-agent}/bin/woodpecker-agent"; + User = userAgent; + Group = group; + }; + }; +} diff --git a/machines/magenta/services/woodpecker/common.nix b/machines/magenta/services/woodpecker/common.nix new file mode 100644 index 0000000..9c7026d --- /dev/null +++ b/machines/magenta/services/woodpecker/common.nix @@ -0,0 +1,28 @@ +let + data = import ./data.secret.nix; + inherit (data) userServer userAgent group; +in +{ + users.groups.${group} = { }; + + users.users.${userServer} = { + description = "Woodpecker CI Server"; + isSystemUser = true; + createHome = true; + inherit group; + }; + + users.users.${userAgent} = { + isSystemUser = true; + inherit group; + }; + users.groups.docker.members = [ userAgent userServer ]; + + age.secrets.woodpecker-common-env.file = ../../../../secrets/woodpecker-common-env.age; + age.secrets.woodpecker-server-env.file = ../../../../secrets/woodpecker-server-env.age; + age.secrets.woodpecker-docker-config = { + file = ../../../../secrets/docker-config.json.age; + mode = "440"; + inherit group; + }; +} diff --git a/machines/magenta/services/woodpecker/data.secret.nix b/machines/magenta/services/woodpecker/data.secret.nix new file mode 100644 index 0000000000000000000000000000000000000000..c86dcc92e392a8942ce2bf7dca410a35c4d51bc2 GIT binary patch literal 220 zcmV<203-hZM@dveQdv+`0Dz`=_h;V5@=vR&sXVfsVemPcUqrX~;Q?@zM11;jpMG!Z z0E!4J1u1q7TuS|!UqgSwvg;Vihq9_L@m%qXt|Zl7SDlP&A(@7Q;}%9$lJqjwQJAxw z;@Z1fhLEh_3geK#r?5~E3Qa#iq?w<73~w+ "$out/version" + + runHook postInstall + ''; + + # Do not attempt generating a tarball for woodpecker-frontend again. + doDist = false; + + meta = common.meta // { + description = "Woodpecker Continuous Integration server frontend"; + }; +} diff --git a/packages/woodpecker/server.nix b/packages/woodpecker/server.nix new file mode 100644 index 0000000..d974126 --- /dev/null +++ b/packages/woodpecker/server.nix @@ -0,0 +1,27 @@ +{ lib, buildGoModule, callPackage, fetchFromGitHub, woodpecker-frontend }: +let + common = callPackage ./common.nix { }; +in +buildGoModule { + pname = "woodpecker-server"; + inherit (common) version src ldflags postBuild; + vendorSha256 = null; + + postPatch = '' + cp -r ${woodpecker-frontend} web/dist + ''; + + subPackages = "cmd/server"; + + CGO_ENABLED = 1; + + passthru = { + inherit woodpecker-frontend; + + updateScript = ./update.sh; + }; + + meta = common.meta // { + description = "Woodpecker Continuous Integration server"; + }; +} diff --git a/packages/woodpecker/update.sh b/packages/woodpecker/update.sh new file mode 100755 index 0000000..48f362f --- /dev/null +++ b/packages/woodpecker/update.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p wget prefetch-yarn-deps nix-prefetch-git jq + +# shellcheck shell=bash + +if [ -n "$GITHUB_TOKEN" ]; then + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") +fi + +if [[ $# -gt 1 || $1 == -* ]]; then + echo "Regenerates packaging data for the woodpecker packages." + echo "Usage: $0 " + exit 1 +fi + +set -x + +cd "$(dirname "$0")" +version="$1" + +set -euo pipefail + +if [ -z "$version" ]; then + echo "Usage: $0 " +fi + +# Woodpecker repository +src_hash=$(nix-prefetch-git --url https://git.pleshevski.ru/infra/woodpecker --rev "${version}" | jq -r .sha256) + +# Front-end dependencies +woodpecker_src="https://git.pleshevski.ru/infra/woodpecker/raw/$version" +wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/package.json" -O woodpecker-package.json + +web_tmpdir=$(mktemp -d) +trap 'rm -rf "$web_tmpdir"' EXIT +pushd "$web_tmpdir" +wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/yarn.lock" +yarn_hash=$(prefetch-yarn-deps yarn.lock) +popd + +# Use friendlier hashes +src_hash=$(nix hash to-sri --type sha256 "$src_hash") +yarn_hash=$(nix hash to-sri --type sha256 "$yarn_hash") + +sed -i -E -e "s#version = \".*\"#version = \"$version\"#" common.nix +sed -i -E -e "s#srcSha256 = \".*\"#srcSha256 = \"$src_hash\"#" common.nix +sed -i -E -e "s#yarnSha256 = \".*\"#yarnSha256 = \"$yarn_hash\"#" common.nix diff --git a/packages/woodpecker/woodpecker-package.json b/packages/woodpecker/woodpecker-package.json new file mode 100644 index 0000000..9d89a21 --- /dev/null +++ b/packages/woodpecker/woodpecker-package.json @@ -0,0 +1,71 @@ +{ + "name": "woodpecker-ci", + "author": "Woodpecker CI", + "version": "0.0.0", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "scripts": { + "start": "vite", + "build": "vite build", + "serve": "vite preview", + "lint": "eslint --max-warnings 0 --ext .js,.ts,.vue,.json .", + "formatcheck": "prettier -c .", + "format:fix": "prettier --write .", + "typecheck": "vue-tsc --noEmit", + "test": "echo 'No tests configured' && exit 0" + }, + "dependencies": { + "@intlify/vite-plugin-vue-i18n": "^6.0.3", + "@kyvg/vue3-notification": "^2.4.1", + "@vueuse/core": "^9.3.1", + "ansi_up": "^5.1.0", + "dayjs": "^1.11.5", + "floating-vue": "^2.0.0-beta.20", + "fuse.js": "^6.6.2", + "humanize-duration": "^3.27.3", + "javascript-time-ago": "^2.5.7", + "lodash": "^4.17.21", + "node-emoji": "^1.11.0", + "pinia": "^2.0.23", + "prismjs": "^1.29.0", + "vue": "^3.2.41", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.5" + }, + "devDependencies": { + "@iconify/json": "^2.1.123", + "@types/humanize-duration": "^3.27.1", + "@types/javascript-time-ago": "^2.0.3", + "@types/lodash": "^4.14.186", + "@types/node": "^18.11.2", + "@types/node-emoji": "^1.8.2", + "@types/prismjs": "^1.26.0", + "@typescript-eslint/eslint-plugin": "^5.40.1", + "@typescript-eslint/parser": "^5.40.1", + "@vitejs/plugin-vue": "^3.1.2", + "@vue/compiler-sfc": "^3.2.41", + "eslint": "^8.25.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.0", + "eslint-plugin-simple-import-sort": "^8.0.0", + "eslint-plugin-vue": "^9.6.0", + "eslint-plugin-vue-scoped-css": "^2.2.0", + "prettier": "^2.7.1", + "typescript": "4.8.3", + "unplugin-icons": "^0.14.12", + "unplugin-vue-components": "^0.22.8", + "vite": "^3.1.8", + "vite-plugin-prismjs": "^0.0.8", + "vite-plugin-windicss": "^1.8.8", + "vite-svg-loader": "^3.6.0", + "vue-eslint-parser": "^9.1.0", + "vue-tsc": "^0.40.13", + "windicss": "^3.5.6" + } +} diff --git a/secrets/docker-config.json.age b/secrets/docker-config.json.age new file mode 100644 index 0000000000000000000000000000000000000000..8c5c910800206148b754c273b25eb0dae873ad49 GIT binary patch literal 2161 zcmV-%2#)svM@dveQdv+`0BX@|d*-|eLs6ay#5Y_l3$sWQ&`o9pH*jE-gt3C^stF%L zLqsAUhOVei)i%gf_44erq&`)7JRrz62J3sPpY1GNCQvb#K3h?t@y>m{mgFk77-lqc?atCdikiTAe5M0 zb9x7ELnvI+)u!!WC~qn4R;>+PQPG@dW)|n&=AzyUcP)MFz~Qucy-^q)X)IYGfUnPS{C=@_BK~*&aalP{(?s?lHI)n zk-g9;_7={B`I7WS_uSvRIYYt!uZ}^Omf&fY5X9)#hXVB+#)1LTE^B!>AQ&;&5R<17 zJUV5QLJ)%;?}e{B1SH%=l_zzFw#nQHOAlP4o%OTAf|SUMkaR50;T8b{?Qn|J3A^w! zc@z^LaoyE%suyX+@!&Fh=AJ?veqaLctt*1(OBwm)V&^F-QY)O#o3Q?AIJOWZ7iA*0@c>qjby;!5FPnAeFEY*7n1j%#$ zgEi`Sj~82T_q z(&d9L@t30`Mue3Q%)Lhe0~#r@O)trs5j~?)gVUKHy-U`)CmB{gNqB51L`37(UrrSD z&%?rI)5qNjNm%<;9k{8_eg@hAK7LWI{*=@|{kX*!x`zlRC{JyA zOP_dR-1iX`F0U-s<~Ah!g+!W5c7zf&G7nA^2tC8d+uH{+=SN9n&3#1wV7i?Z+qc4d zM<=ed+-W7~hH<-gmF9NzKS#*)@(*=u)rL7{P*B~L!rs@9l~JC6PZ&&kqX^GzFk7h> zR`Y>x%t8LW3P7}k2Xf3);=ExN#BYiOC+yHTs1utZr%&1KsOO}`g zx+1bk$wceqOz`(p9ABCOjSx@ zTU=3vc5*t;-rq`tQPo2&`gFIfa1Fyoc6Vd{p&sM~tv)iz27L4H9UyZSz5J-(ubX+p zg=?*EBxA4>lC(3&H|ABjyKIM7qW$%>|2wNWns} zp|8?`YUR!dM2Q}>`~#TEXwB*42wxVSEu7m8$7HIhVjvCTy-WxOK;B92kYGDO(tID$WK6Y?% z(!0J}(!$oq=otU#lly@jk4m>_@z_o?V9OqNi{&_do1UQ!3gEk<2 zGNG9G&dGQbi_E;JpUI`v^Z(%KoGVkce(yk(SpcU!3z?g*#jWhOHkk}4xN0_a`|!Ll%S6i{S5f<#8*N!K7uY>LCG7Tp%V;ttT2C?ov?*fsqamG zC9?fJ8-c}Pg7e=a8YG*6b2q0lE;yJ;%x~YkwkxHCO4?EOi)|kFO%hO3)3cF}JXt&qodYq#+NsC(V|ZB*cIvzGY#sev)mtRZ8nD|u7@==?8Tc>Blo^(*e* n4ysXQ5R>Cbdx|omNCssH&WG~BCfZN8>wM?8iBl6g8X)&^%U3ua literal 0 HcmV?d00001 diff --git a/secrets/gitea-smtp-passfile.age b/secrets/gitea-smtp-passfile.age index 8978c619a1b6159d95daa69ae2e38a1a9c4311e5..ff743b0058db0108e45555c233068e22c0ee68c2 100644 GIT binary patch literal 1412 zcmV-~1$+7cM@dveQdv+`0Q);^V{9Y$;Tkc_&3I)I#-jB<3<>A|!tu*&o_o5j=)k2K z14O%nNvj7w5p#M6sjaoP`h^{m{8u|R8y~y{A!CC8(1aySq|KlRsKlQzXf3A!UOu{O z8Dlckf#@k;lwp!b-w>ljfS#r&MV$bO=QAmj27Dl@E^mN)La_QU4c}kGodh+Dgpvpv{w> zBH!@jAn4c2N~38~xt+Fl@Y2gWpkbL-Iwi+X>TV0r5LVEKA%8S3Z^I(qxj~BW80i08 z4zYr^nSn4zo~J^m=Z2z6xbAu&2AR70`*RJdTI&39Ky)9BCqV=nb-t21PclZ-CXuVs z&6;9s6o*YX5=XMLgql8<37up9HK!4bx%hLiFd#&A7MUOWPMNls^i48kPg6N(q6(!? z$F?&RJk`@RS4Y$55sK{<2-G=(kN=aGok%qb(kbX?sa=qpT# zA9DiQbG@nLq9mxMusO}%HHr7T&d~1pRCZ-T64bTN?AlJ~KJDd9W2N4r@4#T@L@Cay z4;VZ7l34`05ZhG1i*0+&uTW@9z}x?Fw*QGu36ugoPmfWuHYR66O=P#rqtx-(m(}AI zvqeROsKYY~qbt$iVl>O2!k^eceS`*md;7tgs`ICdzx!O>Y!=&(^sZD<{-1Pikv>KX45flwc92Mk7|(* zVOsrW8x6WzN%?2FR4hN|-m1cWKe&sKMKUPNm7~Ej~?1z7nQUcB2Z&229Vaj zBwg#&%m98g{5N>6zD9I#EDigyQ*}eP71dh+mZ_PXY6hT-B)gN!iYXLd^E@lr5%*bg z3JDAQv^8I&Nl9$QFt<4QJ48}~Hg2~caY&!@*44v48#~$Ra}c9)>W+#u>P^N{;oKr~ z0}dlHnG_h4$Ew_ecQt*6%eh?gfj*Ayn{U;FDmmU@GRkDnX~M@P&$ZHF0M|IgSY(Jh z8%_g)dJ!K5MWoXpToO-_=P?t>H2l=O{vOpG SvC(?bbrOn5eCD$yK{oqvDZb+X literal 1429 zcmV;G1#0>LM@dveQdv+`0G#IQrF&yOmg$Vh#zs8(exVp6y^3K%Jj=A)+4;DaDX?}c zl}Y<3@Htj5yC%H8)WhZxP$D=4yCj~h_mEvIwFX_~)rvP$#n_wwsGabv&4uvq$iWM+KQr+vl-lgBBUwB@A zlXyICVsp|wLHysH1oNt$TFFS7oI;RV-?hh{@5l7L?n&6}rvI5!_1;Gu#_iQUx5iFT zV=B#H9wO56Z=WFrG0I8DiQBB+b(hP^-$p0rD4Y4lRm_+t{cKUdNzhb?ypQtp6PKy`8{qG{oiCg0xK>TjfKMWQX1 zFq52fn>DaJUbDI;4Bff3&;IhE17ud~jJnD;*0ZfW9DZVZDJXFZF7@5o%&1+I1($Oe~~P|tDAUw_U>1LFZiCj~i(Wjp3K zMKjL?ycv^?e&t{&D&Xc}Gh|3qJX%cWetV1Aj2LNSBaQHfUom6YFdjNV0-U-Wbh>?i zZUbF0R@rSr7TS&>N_Mb$G*~)H8)@jvdIDCGxZ$Wg3(q!==V4?LPN^2L&%?XvXc1o~ z#MT%~5^2I?rluzo)K?y1XN~xs9mpA`7rLd$^2KNy+61TpYyQ_-96by_$8G~GWxyyO zd&agtl+X+x&G1XzV9&@{ZGZP{`NU%tMNT7DO1V-o*orZ2Iz-})nu`Q#Of~hl(_ZF zD;4)>y*j@-R^S~dtkhGS$+^J|dW)T>v=R$8;eSI--KBFVOZ>WpPk!@H zy1g;W@SL>W$2Lv75S7jk%jTkCV1b2=z8d*b7Zuy44ug)Q(@iq^`*LkyB~u$(84AY=;`?rqVhKkSZRY2)IBh-4@-t-h?O4XTtR()KISAH$D$ ze_3@UdI{d~lP2j}0d&a8w`}n}^aX`x-H>BPio~1{{>knIbv_Kqr(6YHJwBAXRL%=w z-7!?sF8p&|t?Nq4c5r_J8NQj+I$hpmiladxbCEvdGK7LD*oc1OE&JESrYAYc+i6Zvve0JM^daw jUGG+6WA=+2y1+e=WD&pEx+@bs%hVy&lM*E3>nfg)N;qTL&7kt*yg+BK*3=DA2gRFR^jzYXLb*m|LnkIQJ zi}3tAeRb`Tp-pWWP|mgmtIL^WtE3JHH&UByW6n8+uaqx2Qa!04+hefS@ul0;%Amyz z`aGG)cj6vXp=DVZAN_uSzHvS@&=%cf9mtogQ}I7IY96AIA$;rr6GqKD8pt2dje z=I3_j$&?MhMe_~l3eVH6Z#hnc*Pknr{clpFk@2Qnm zZ;i9LaGRF8f@jHICEZKB#nQxM6W?39+Jemr(xotDD>sqK0!bs7`NwpPk6}KyR=AWr zx%g=TQXNGPNjC~z813Ou$D{9~m733vgh*rwa{Ac;CN9Z}b^hjR zwsrS?X^VHVT9{z*xO^G>myVCVv7P4#PFTE15R==UU&<+cwXHmw7mj`dwm}epn^|;I zaD&8ET%Yw-B^L0MuNKAOP(HNzx?#!JaR2tT%G%8*&Q4|SW2veh`C1z0)l~j`=AL!Z z?*uFC+OPEeBg}>Cc%9*EnM7CBP*Z6$&F(;qU_HENFaDaCGS6I*jD;f1{dD|Oc3K(O z46)F^b|(O0<_cXV*yjO1m0(ly^$cYe7V13(6d8w@9DZaN`rB3UThm<|c+ev^3t?~3 z#gs8TXp3m_vk%_e5)R!5s zZp^EhLcstDMjE0|wPqcCg_@6=#~8n@(pf0QdMHz8E}$@bhndT)1--pJVGAFszKz?S zB?Wx)NRSPb+Dbv2AfIIk4)MIW%LC95Q+GmRAH)5H(BwaN*H(ggcq=lrJ^MIsP5_tE zv}>z-LVIQ#Un$5s635PYMFPkalHXiDL)a(Ib*K)JbXM8Dt?*%UaoUcU$n!A z9kIiGwR-d~NEBDiZ@vA55p>bi4B4dSB4!QA9;XvX@gq!m#1PpJYbPFR2F8?wWlvoNIrxeQw>3*+>9g*B_4w- zEcXeD9Fg!5xW=rq6IKQ808f3W!a{>0M-Axby*8&*yeoaLy@qvpotN)I7tlkogiJxQ zT>iWEP%T&&r<)&_4yFe67yfj$S{&{x;3n@;J|-TPjH*2rTq$(P!0MIwED%Kiu|4JA zXp&T-Y_HANhAPeh!&FJrW6+AKJR3ec&i_xRe1yJ$CXU$)f6_1Ai(X`I(rHXMs$}Hm X>Qi`ceswaniHKqTU9ckJ)rFm#Aji9# literal 1451 zcmV;c1yuR~M@dveQdv+`0Pbyo03UwuhY2%My{v;QUu>9!`&939phMk8?unHwT3x7a zD*=tn*PYHqaaP)G0|3k(q=~F>z6AGKZ5(^%L>CQszFY988Vwi)Mes>OWdU!10~#kM zNX=i^X#Fy1Pu3K3`P5EF)&T222?5$HqpZc9?T%IT0tp=lFm`xsDbv1;*2m2eM3LdY zSOA9RO5w#@Y+~s$lxb;;s_?vW(z?LhdZ?B6$va|r(Js6nF8xRzN549>-Y;g^O^)&tn+?F?GPaB}X>CVgG$VX6*VQMpRqJ@6`L95?)lBw-?Kel1lWLW3Ko! zm-ZvXobkq_F%KcqSu>RBA565lGC#U$Z+v?2;}Cz8bLZ+ zSP`T8oKIPp)XZ6@3lIx?9q?%~B%e`W2UHbMxkI?q0VB3*(Cr=jLs0(hmg2L{!;!6- zdK#kG6ZStp+!6&--B^klO;3yjYT-bB&#@mc*TX(wJ4;l@c@a}C;& z)J5~$LqFm}3)AS#JY9?26>YXB#hzHgMJrX^w;(d^T&UkTt!l8D=fA? z^lMgd(8IM)!psLum`sLe)55M*35H?eXYhMHX(r>H6d3fvhpV<_epo4z9D@&jl4Y>k za1@eUeO-_RhLHEk;%2;?$1P(60|rr8E#-A4%)DQ`4wQp>W@>=#kF zG?2PsnjZGvV*_*J2jG9L>{VQf^SW; zONMG=diP&f4s3WH+zPmf7-h&`mGDu z%$IQ=539xel^X4qeS({D-`6Zmb?y;@ckyCsg1#?>#WX|5Pv?3>LC_Vap;=5x^2-OD zBRb}OV2+WxR#|eB)y9Leyp2_v^5MA4J{KAYk197(nHQNzyg8BEz}}3M)U;H{wyykQ zs^gbV5I(0^Sv>`sG_D}-@VO#09%0FJl$fSFcve=T#Xpz>qwiQC3y&>h0~{!VEfWp# zC}jf-R|K+(qK}4v$_=4xLw0EgPz zFpty76{^p}!c9})>gSWjUeq|S1fihYfMekT9xkW{l-CoxEhut8SkiKW$){tUzoJVz zdRXOEdu?(u!jffk?FX?6cE2Kpb(Y3vP>nuUP5>A6Gdzij1}AI6Mzk(eqdBb`J6$v$Ic41|rwpsj+Wy+OcZ#VlYR#^D({V%9|y1k;FhzW&CiXhJF=6wv-2uILPC6rj1dgmRLn7-%N FAFDZM#ZdqN diff --git a/secrets/mailserver-users-gitea-passfile.age b/secrets/mailserver-users-gitea-passfile.age index e66130ae0007038d75883d8ad3bef28c34b2a915..a8304344c3cb22a902926920a1a36346503a46f4 100644 GIT binary patch literal 1384 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 diff --git a/secrets/mailserver-users-jan-passfile.age b/secrets/mailserver-users-jan-passfile.age index dc544a2312ec267bbc09140c9e392899acfea4d7..3f42f7fc4c75e3be64f8ecf967b2c2e0102d43c3 100644 GIT binary patch literal 1471 zcmV;w1wi@$M@dveQdv+`08SL-c&jm0-1n!p~4I?ov`+x}nWt*XQ}T)f^Za-F9&9-CNi!7dgP}HDZ}OtR}>Cj3YU& zXUV!_cVUIZeAqhgz)n5%0x8ALY$euSEI~v^2M<#m*5Ub|lw}0rfr+f-h2=Obquye8 zeFjUMAVIpT2>Hn#7s`0{^)YJrQ^sM2HxP@1uitiB-@v0Xvgz>>0uCN6?UX-|&aTq{ zbt)Oi3HWf^w8WTmEEl%~(;IAg`APeG#n(Y{o2KmwDx~54DQ+4GMkmxrKFawCD4237 zu1nI`%PlOP>w?YH-N5(dgKN2?K{Q><=xF>9vLD+%mN?)BBI%MGO<_XL^g0%g zbta{PPoYzN*&sM6LY(%FO=+QqR3u5_Iu%EWU*ge1(hWULeH|rkY>Q zmlHs=l!EZ&TyW)7cy(x+;6LD>IWM>$5xko~ZdtR?6Hk(*6w@>6tImP)(D z*Ds)*@H0*jZT!glcc@rKHoJ4FXU$VG#;zBjizQ)T$e(|STq2=V&Q15&q~OrXN>6zF zmK%lwbjCgzS&oHRt#iI~{+J`J9N_>AzL1t#XKM?2&_@nLSzmCKS1cY5*jTebJ7?cs zyr=-B9FB+1&=xGbPPVDu+;(Rl#JyjLM;NV{cqDe*bO)|DrV*hV#F7BeqGe0#@Mob z_)*QAEUYE@-HP!x+42lX3=cHc=@2u1J}UyKaC2kRfcjcVCcl|$PE!mnlkS$kBEx)} zI_jvKv2a{@kX!ZuW}8BqtcUtb`v}IH{V`CrskCYzR2bQ?gnkQ~+IhTj16%*uG92pa zl6|9-f>?UzPJy)#cLOKh20a{XTVSaG{Yb@8&neH~j+C#dK$?>(1b<=$*KuI4-lHVw z0f39ZqPlYj{xICW-a$Dl$o2xscvm_p<#GIaQ00&al?O%1Il(tj>rTaXWdttxaAnK3?5wYMa|F&r;ilU&STPP;#67$-pqIKG_YRXwW+b=Tl*G7fl{F? z0z!Nt^K>(Q`{i|`p8>G}@uxT=TYY|>Y(W*i<*)Gbv*}piZtsp5{`_8@aWqB7JQh## zm@>kfo^4x}=fP6T60aGcD8K?iXt3p#VxwN}gVms87HiBvSZ?2{F^{af$u;58+z|JZ zsVlL-TwqztftqY&S3rG$A_3pZsbn-j-8_g+j41VFx1#FcL5!{*bdyiy5(FHT^r+;1 ZU5lZJ`D`BaX@Nl&sV~M- zOqC+(FcmR8Vq^sX+-A?shFr<|wVIThr-(DsGTadIUzL~~wMwyjtxv;D4;Nputn1&W zt{vo!`Uwtg)atc<#W3*9haFUe1r;?vbIw_!3QL{9)@%-$AV8D5Th0V$k;3Vr2;aC3 z;(m_mSSK-VQ;PCFE)+0Pfwy62UNf42qig2mh}}bF$!x9Ms)o=B!JI#(4P^$qX4v}R zdEbLmX`#vmT)*o6f6_rbbVR@;y%sEdbzjBOpXnHq&pl4KHvfxvoTGlbXB#($Ri`N3 z0~i$~69u$=OF8t`V+Ak=Ksdx@evD2sb7 z^K$0hil|@@vK~eSki>;l4c2d8z+O1hGWC1porctT89`@1(omSB%Rv*xLw6bkkhUl3epQUov zfN614$cK?n@v-^~{vvgF4=~xtj!RN#;|p|&83)Un=jo$1ue8!tpJQ`mv1?ZxdgK0A z8F--6@{p8|o7|<6h;_OsW=%A@4`m=etm!>MekN%YyhYspXVgpSozXH#PQ{cQr3&*= zXIn$pp?w8;CGiQq)t{{;0@ob~l?0-Sam`e$en~D_G8ALgYg0 zmt+i#?U`voyY>qR?5NEXbVy7n8r1a!Yvva1NefClw9N}6c-s4KO-0QEv$py7jmLDA zt`VmUc1alCCqHEaHRk~+Dwaa(raM_>uM?;Q0sX;ikh~HH>SuP|kn$Aa%1*Jya#GhU zN+kGvYsZf+z4RB>3`)Md%n+6u*n^cp|Fm%1OkZnnHO&m)E_A0+?~E+YZrEyct}d@z zkVRY$4UFOvhJKjt-xYOjr#Z0%_Z_lh@;Dcfql?xAm-s!v4L|AeZ~1^xf*V&%pzApa#i(%-omJ)W&WYi# z`Asobr(A_oYjF(+cBUHOyYq73#?7*kN|yjaOs51XKs)f z_l5!}k_-bpf4Yh?d&P0D>I7Sofw|Wma6>-uF$t;6njTjQL3#gBcCV%2~8 zG36js0Bc?W^*+{*d){GBjyNA+e9;T^*a=avi`LuiAZLKwFumUt8avt3;U6Y2z|_=7 zB|m`O)9(6&?ziiCk^u~Ra~p|P`99Vv2TWGXbQZCp57{926^ zt*wl94p-_ZZuguXjP#;*vG?JwC;agFdE4O|38m?;-a`TSKZ$Ig!BpxK)I4WPwQ)tZ_q)&tyrcH-Y| diff --git a/secrets/traefik-dashboard-basicauth-users.age b/secrets/traefik-dashboard-basicauth-users.age index 09a42f657d4ebb6adf4f4651b3ae820e2af1f25e..12d7dca41e3a933d775bddf059bd1e398a3609a7 100644 GIT binary patch literal 1423 zcmV;A1#tQRM@dveQdv+`02Iq(DW`5}_rqxH^-1N)Fl;_bcfFbnan|q4RL}fAf#0y* z06UCsC%oytV*r9m{1Tah!mDcxCp|-E$Gb~*4B%Q5A@bK}v6ve05R&E;bc4^SmN;#w z{Hq7&dh%**#{$*vt`q=$zZ4S>x35@0O6gBs`%c^7;eqC}#~F(n zu+y2evPT|fM>M8hNl671F$(Oy5L?n$;$v%WFRv}3T47}!Os&Qtq-d9u#_B7Z|9|EY z6!G0a>?h7>53Qoa){RL3N2=f6<(wJoi|K80@@0%~1v=rnunboE|8ql3wFnneW|6eZ z9`#Y@G5^f?nE#F6$}a2*UoYaqMZSaq$52mxMm+q#@sUVPfiL0(YFVM?nW<&oyFe7Q z^rb+C5)7{un(tg+OmE@Q5U0`}WPq`xk@9pT9}{NOR2?zAkQj~{K`jfWgQLjgcAHqW zpSS673Sw`_>|sG!Fpk~db;Na(Vvv<7>G(=NDS4~YBlj(ml}=fpM1^kom|G>QZiYKc z;Ypi_$1I-41=2iGA>LB)hW^e_?x&D{40FA>J5rRAVLH~&V1`#V(P_}i`c;6-VI!CUr*j>T@2JhzPVLT^v>(RTrn*tHP zt-8+K57_vs1j1qcZBZE)6!TL2mf=CWDyM2(6qT%urcWg>DDGAaPpzhDF=(eO`-lbK z>2hlxp6uSxkbC%Z;M4{>ZKe~lh-{!j%>m3zTJAtJJKF0Sbx`5UU`%{#QJlxj{=M3y zK#(L4K-Kg)egzie2Mqn)1_i>jV(+UL#YdtUh@l{ePv5U};pS=}FO5l`xDASamG?|}Mh1T`Gn7t&SWWz>vJa+L9^#;r#`~_fW|3E> zVj?)tQ3k%)qRXa;iO8+yXuODsbk4#5L)TghT;Hb;oyxm*3z`jtIsyFxaq{MF%^z_^?EO7v z58+w01v{(}|4~qCYY6olfHf(a5w!(i7S^Nkk$x@Pd5NfX066D)p<_c(GI%BkK~9oq z7~$dd!FgApSWzzh00oyY4{X(-#`^3>GcwtkDWnEwrTCbt!B(q|8!xh0d zmrjG|`>7jA9QY%eKTPoiHW=ST(>+@|Zec06-&7aEq$be25|0fybO6E5wQsQBO9d6c z%c=wP%bB<9OV@=>@#v6Em}94FqF9Y=!lmWTio?;VeiFiyMEbw_&`lz2F0GcB({i@UgFAc9D1E>h7mT4gU_U-7kznw}c)9N0PrlPUh-jw)%>LNq&bS+S z{&2Pk0;^!LAD5hzA^seP#*$)G^^X(-86052^^ul;7%!CXqhOT>o*2I~T7jwgd~3io dn_hgVQ-=wUTFJ522vZ-lHldss?9QF5SO*Sq%uWCR literal 1366 zcmV-c1*!S~M@dveQdv+`08qSymChUHczwf-3lrrJHV>Dm{R!(4&|3;w67=0#j!nYR zrRDpwWCm=LovVY*enuWsSaI&gm#r>-3{aKyj9|e~#!t?%9C0;0<{_Lmym%(us&Tv|L-k4or(Wrxn}m zGyurEF~)=r>EgYIl0-J7NtVHFYm66}U?i9N**4!q`e3AtkSH-GcQ9UDO0>k1=jBlI zcsu8H|xFNk%6Q_7<=3zh-I*OCIiF^1*G?*kSXWdzpQf`K#RAk=tEQFE^<{@dj8 z8`%(l$LdIX`7E4UYDIw;tFYo(fOq(!=}$)y=p1!r?KVE;_StyNF%B!b`rFjjPes@tn|WoGDm?#is?kdEH#Yh95Hl6wBPa zXEKehV35OR)@sLY!2}Ye>;S#jMpu6%H#r%kQJgA*Iz!B9;%4!1#2tK34X5mEnDYgq zm9}^oGFqGoM7awyiy+%Uv|Qi?aRqApKBd$iT??u^l$fO4tpHTgs*znIzQG zY%eKjj`sPY%*_~CPPYKn&TGR2Vn3Mo6!_jG0{N8%#cC8)7vrPfH`p}hscAZ}u5Oyn zx?^f~DK9qiX;qJfLtAfS*M=ZcwlGxo z-al#bNoz2kCxMyY!%+cqYxG1&5c^j)-)I}YI7Uvz!GI65 zeIj6hU59Y^D1>7lP&?tbCtS($R42P+?fEzMz2u4+psWCuE5SH{YA2bwQ0Q6U%4(Qy z>*Q{gesVt^WyzrM-y;b=<^i$8ya*c`w);c*ETVt9#HyWCyQ~2w2rtxB!q+6Dflm&> zkHXU7h*L0$t&n!eB!{-Eqo^FskC7kh)J+Rwxp**{@Web3bH`UbvF|u9h^0>y)=~_6 zVS}Dph4BO22yC+-P4E@)gR=p|$sQ!+j}TNZoCzItWZHqhgVyGS&gpNd;SGvAXH0cw z_V7VAb;>99tow9!SprKF$;k%dJ8!HA;9Df*Qa|zqRd<*laLEB6sC+a|gsY}d;rbSh z><|Cad~iO~#^ZC6H0)S4f%0XZL&7q2>Kbb5mDK4*R(EQwQ<%vyh|!ECVpy!YIT8?) zyPwUDuuzB%V0$C(K!*+-$BOTz|{#N8p<=tj`T+w$|undjjK4g<-=;^;YK zJ`(ZEV3Qm`9JzH$4cHqZjOC6U1I7*IVxZ1tp8@hVl+Sc5_=oa#Jz^bod*ly#lB5 Y0=gKAt%DjjBNEwzf~ISO+1aWl)uEcAr~m)} diff --git a/secrets/users-jan-passfile.age b/secrets/users-jan-passfile.age index 231826d2c3a5baf958801d8299129ecdfcb6d2cf..9b432fd703a08d183653085505608427f24035fe 100644 GIT binary patch literal 2426 zcmV-=35E6mM@dveQdv+`08~=K@(VvHl{v1qn#ogA9@YT@MvELwikSs}ZY)kU1|J{< z*$9m$`N^$Vu<`0SJrlQ%+}~AoTh*MtmPyNlntDToJdD2*ml)CN={Bzdw;YW@UwuV1 z{Nrc=9|unAJL2>k>MKB*yTC)a9LQqC@By|jONZV2I5qle--I4GU{XplK>2{`2$K2E zwOwjo34yY>(S1s}m6H|3DvJ&e|{2b+jqPD^-QMv)M` zr@j;!2N6?@73_zI`h73UFaY3_1SKS2T(A~worL#;Za%_aI3Rt|_CZ8+7rKPF_uLxn zL3n&Zm+cb=+Jy;;VbwoNG*Gg{5U@@0!S%U>cPiFtr`3bO5*$t z`gdlAHO2L?+|8!}?!(QHHRhP#%oI4W3R-~reQGU0iNs04BL`3|8ef2^!G!#S3WCaj z&x#1BY!@V;>HWgDto;2UrQ07P+K$nTwKC?Vcu*dcgw&p zO9AkyS<5P#nznFzt#@xQKN1kEs&Q(Idt zhTofIF(z@S6eg^b=#Z`wDv%5kFo6g1k62|&p0nsC*4!be&dG3y&iI0EX!%3wBWfl_ zN2FH)!t&X)fBqP5@Yqb$gaC^|PZ==;GZeLFeU z_>c=y1$gzjH>YEaj?AOBOk58spP9S5Aa+uXgBdh};u6khOxY8>ndBda$&H{4GY^Z6 zJz&E*)QzTc6zKh(9@yZUOhxeLlNBVRdUv52&d{^S+Zdh_@?hnCrGc7O2p>@A_@Nu3c~ zb3r{9`wsr%QDNFuO#$=aE}PoPyO_Jy3u8W$;h}q&mnf9lwA(mMy`J-wQN3u%luVHd zi6f0IO(8i zBJqD6$1S4+%bAPaP791DDUjb2OiJ`IV@zTGNR>Tyz}qsmf(DUw-9!gm>1xAEKaq;iBD ztV5Y5I^G31>3ZS5{5#T`#3BDpF<@zr5aK}XQ;jZ{sGvssAr0tF@!|}K*3o=lYgx0WYwkLfbeUB$B zL!j!U8ib~GOkvk4etjruatzBWt9Y3H=mS!Re=rsQ-FdskJHH5SE;zE6?GL0oQONwD{2~x-kBwa1opPB*wY1ox>N>nnKHoPO z%G~mNgi8tmtAf~%&4{WN^EE%3U@h(!*)daD3A3nUB zZc0p!9W{Z6zS?2(V{uDDaT~{S&#U4-Akvd;itE!TGBql_Q^@2<2@vYc9;rxpHb-3 zaz?%=mymww44U@Y!ejNnF_RUl5b27MSyd#cHMfpE(=)`8hr$P9767ZxRn?713QkZZ zUMB@1Z<>BQbLq8Iu=pdq?L^zUztLcVJNjAcH3eor!TqZlV=3LJ4w~NRdjAO1&(+w$ zX<7~qaL%w!HWEUCQ*nEOZh(QLb;w77s9lyPT-B*r>hE9)Wl>8jft{+rJjZVN=EiEk z_-@&KAS_q?iF0l8M7eGZ5%3EeejyTfswC*M@bWOocDlcvw#@!VB6rEn(Ag|q(NP=f zC-!F@Pa*y_x!d&MC!mn=QHkQM&AB#NxIeuxr`i0;U!#M2Cu=;G&ILX3Gq}NPy5|4h zmvqJbYFbtXc>E;+Sq6Mxk!1MI^>$nB8(WE~Wu$+ed)`&A`)D)jqDR2GmKE@ZD69u0 zrYV;l89>Z8g#yi9Af?UZ0^MIlX5&5{p<0)s!^$Z77*_CniRx1HTg#Chm)TRuS6N$= sK3_iO^cp1(#O2f+eQ9fWHBQx76Q(B5j}+6jskI+8gc@aMiNcNZY=?iXOaK4? literal 2428 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 literal 2417 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 W75O~J@aNFswY7SG#q4-MJe) literal 1607 zcmV-N2DteEM@dveQdv+`0O&jCkdDL3OgrB=-%E!5PSmrKJf4b#n{$VR7cB^$r^3SOqQVE#(E$4IZt#+O|j{6~)x7PTvEiJxXFlDZwOEJtGYNSt^7 z%660upSn4^+a;Way#bNY5kMn}CGC9Jd75J|lRFtEZ0~XgZaocA(xVMhNlXFS@yF-c zvGH>`!CB3M3Tz0C=TN!~@*qo`=7?5%?*p5zg1zHl^=vT?4FEK9-WOdoH8$X7bjE_p>Q7hTl#p7ms#{#@QmreaYFWWlS>5UBHC^4 zT_=NYH;pYwr^r~)MHh)1SMX4CQOm||(H*p|;o|c6v{n9Vcn7W?m^;$Bf*9CSCcMX& z6SR#~mG0Wr9A1DBI9)iA#Rc#H!rvf{!@hraV|`2d*apaBl2gM=n|H z6iUbz=(FK{5|rZOFzXcp?Rx$6B=XiSuw=5IkJ*N;x5x_X2+IQ;wytWv zL!Lv=DT9@KDS>`F|R4)-nip%E;$h@61UA*f5piQOMx0cdUk50_h(VZ$`#yWf0Hj?>}hZzm69B zSjP>YgFh39j$K%5DDI0^PWRB<&5{YPMWSI%F3q8mJoj)JhKeeytme^Fd?J@8mN5eC zqe*^mQtFC$G^lcgcRi9y9E=Nkco|h&d#g;i`Db^0#P7I;b6@g6X4vJuw_%gf9b5u7 z$czauaXu=78qm2*=G+xY;CDI?TUm=|N+tiaOPSY*mU+Ml#-7mB_mrT0Xwk#=*lF?V2+%=wep|ea)~`F*{{WyWHG}hP1V>J6 FpzI>^BrX5| diff --git a/secrets/wireguard-canigou-private.age b/secrets/wireguard-canigou-private.age index d8baa18e97cd90183de8ee4dba89cb2cff4f4a82..4f4fa7ed3d969b4732bc58fb53eacc0a713f3ead 100644 GIT binary patch literal 1361 zcmV-X1+Mx4M@dveQdv+`01=MMTwf%K>1+pf=1KTvvB9%f#VbVn8U8%|)0(pcL1JYT zW~nnJj#<%(+_i%a4T@1PJ!v$~W3nvhrI_b5l@SSAs$`dSCf4sArB0{~#s?*%kX~2& znI7<#d3#J6TJ5bb*2c9Xz&D}4g*m@M%*RomaZ7?jZU!H9NA1syl)$qk5k<-UlS zW^rh+p5QzzYO9y2F_8ZF!w9XrThyv0NcvCO`YaL(t!9|RHD(9JA0mH_Bc-+8mP*KWdDJTdeU~1_Z7x^el zPy8M0YQjY8w;5Utd1L*7%S7_EYA8*4YCniXhx2=rd>$Mk&JT7)2`(z|Wr;m?b?R_d z@_h4LSE(moyMEX!Wh!R;8wJxISk8|MtUnV5jC4wSN*|Yld;nohsu&lb*E%nM+EzeJhQbEiV@fAL?UZIj%b374^;`R%6cAPyK?HEiO$O|DDX(HP5ewj-JTnn12 zcq%+ThH0WzweNBJ6s70vzWpZN57iCQnKAy}${?{G@$ib)CLSN=C~U4`ti+xE41GQ~+#c2d=}DHAvk(xjBE?t3S;GzI zU@~dt--Uq$Q4SYB^x0u1TZHH6tol-T6%=xL3COu8-bFj(?6*T*^cxj7^>>(@1;C7- zy8{vB-Kih~>@d@XTK@uDIo(#Ps}77f4y1pPpG?ImoUG=9SroI@>ur;ao{@@A1#5S? z*~+SEfD%x|829~qmE*1b<(lgnb;%33P>pjrZm}ulK1%@?VoJRf8 z&^OGZQAn6KkGM4hfxj5tv8XaA*F+`U;(3=dU>lUBMuHB2dWSM=wY{4OM=%?V^J@{y zq(lHgCZrs`q(XBwn8f=*n#3Reux34=FJm~MnHai@5YZw6!Nlp1A*>q?{uTU)UIS)5 zjs_A8OxLQh1UU~kcZyI&*W+ol@C!tR2y+P`Bw^j`E2*UlH`2`FfP)2jTatgDFH6?i z?Og=uK6P%^h?Y~6<*4#r>&_j)ji0Bcu*XFU)zS{+r3R!_5WZ%L)$#50f(jw+yJ5wl z>gx*uHb*IUtn+RF0~rhi6^|bSac!QYM>#NZbDi)^6v<#90r| zASyy_PXLEptPi$Lz`>-|_`?XPH3&orE?-;l&9*s`^1MHo1>fXI0fd&D-h#S(1ru$DwGz4LTwHi@QyuDIE^Ak1?#j1Bh1z{q5@GK-*jERagYIj zcyut2>$7*{*8FPRAv_3WU+OYxkPW literal 1379 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 literal 1524 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 n+P?V2gz!^`U9i%7M;m literal 0 HcmV?d00001 diff --git a/secrets/woodpecker-server-env.age b/secrets/woodpecker-server-env.age new file mode 100644 index 0000000000000000000000000000000000000000..944285b8c093823211f5a00640728bc8e857c819 GIT binary patch literal 1544 zcmV+j2KV^@M@dveQdv+`03uJr0G>qR`z?iYVxX{-bpe_gyv^@akn*zi(vB|F2uVdV z8L|H0l@(RiLlABI2IV$cHcW8d6_nM@uAobeN=SwIQzBsCoXbqmB7=}(L|c$KaQcGR z7RPC0a@jykb4s++XTyhYdTnhRaK-VC=y-Ep0phHc`|>78I3Z$&f=nAyipHTT?>7YXRx6XuO8D;kQD@AAw{u7j4Hj{J zwb&p20bohk47EQNnX8DI`L(y`!wb+{-i|+UrCDeCznosr z-1xF{6%RhQ3^B5i6!8#x($2JPA;RQ2xe({V>j)Tyr%{Y)G`*_bgrYZ~^S%0<3*5@s zpPc=3JKX#n(<7vBYrrj~ABAxk{7dLT{>evG#D>1@jo3`7Xp64PAnu3$#ueMrUPEpL zuu(Xs;CPF)*G0|G`?_8K_!cWAMh%E{8kw1Dz7dhPzJ5<7d>XU-p*&lp#Y8)^zz6== z%|9be@k-84>aWhQg1Ro9+(;tIy{U$4X}!;{JYxVu{$gK4;Sz8uR=5(fZBUU!E1}Nb ze8{Sp+%(@haf8=NoDqmj!rbK=F!5j~r@A6NA)T!>$S{@_1MPG27OA-g0r|1FK@Cu4 zONwEu&{TkXj~irq2(I9Y@XW5Y4*xymjLch@3)UDT3X+FYo(p1>g^7d8r?~=CdX#9# zxXcG}CUwKLazsF8;qP%E_5`rBRKpUqFL8d1+(P#_wBC-G;jW5p~~jv zOgp>FAGrs>1RU%C!;ohGxrJ4?#(3@LAmI$^-fb)jJR;E(#QJ)uwc(=&0Oy&GK)gF0 zb@*O)@Eai*WP5Eu%P85tqRn=^Fq$rR}NnJ zA6m)>`qgLd7oEwnXm%1F8#=&m@q6!O4n{tV$+CQ_LiWG#GYG2qk34I*h^v#^Heu*L zHf))pyqG)dP|_VAX|tl`ZhxI$gDb0Q5%n4BY(&i6lQkVte$Ru+&(eaqJ>sD1U!t6| zim`YYOb&vLpm?V#uIWALn>G26hhMQa)9=P%Pa{|+f*z+Nt&GdyXi}ZfTm3X`ppv}t zOqCc>_h^Z7+A@ z&zDdfEd@;HUp1B-Fnm!VL?T*du)Y-6nE`nAMV}|$>P}37UyU$Sk9#dXUye7^EZmq8 z_cp)`1Iy4Ud~lj@&>{V~SoDLF)&oruCZ)uPBf>d`YdN7shDU}L`5lve2bt9rR2Vv5 z9%b*Nf|5E!Y5=cB>K5mA$VF(<-+x{anyx)Z1VPiFkEfoY7xYfPiKOSe$@DK!ilkj6 z@^^d+*YX?Yt&oImA~TJ?b6bqxLv;JogS?BG{4&? zVjEfomBX`NklliyhNS$dY>{)w?F=uJS1U7rh$_Y|MnTG!V(2X^>y+ny)cF`>72A7> z-lO%`x>umz@SB$j!AuTLisv09*oFo;9KL3$g}YC?yQ5@#l&fV#zrz~IAl*C)ql1v) zT1Pf36Zx|^OI3khDzp&rqT(g5``h>T1Ck840>2+Vk+@~04wbbYMN1=Esj`W0*?7BQ zb;@|D)>kuGAKsVbv5%|&9zF8PV=Z$hoCQaa7iC&@z0Z1z-dZoeiP`O9d#m*%x4Atm uqMA`3{_;71sRiZ(I?