Compare commits

..

49 commits

Author SHA1 Message Date
b294149af7
use a nixpkgs version unbreaking both TF and peertube
see 318 about the regression breaking the peertube test
2025-04-22 20:08:03 +02:00
b1bf597e94
fix authorized keys 2025-04-22 19:19:22 +02:00
95f9dc48bb
nixpkgs version that makes peertube test pass again 2025-04-22 14:29:31 +02:00
baa9b8871b
update hosts 2025-04-21 21:12:53 +02:00
19fe0af24f
import home-manager, deploy to fedipanel from tf working 2025-04-21 21:12:22 +02:00
dbd45b7027
panel working again locally 2025-04-21 20:55:48 +02:00
f0f0a7988d
infra tf-validate tests working 2025-04-21 20:31:10 +02:00
effad34170
fix root test/hook 2025-04-21 17:03:27 +02:00
d397c7dfea
services tests run, and fail 2025-04-21 16:30:46 +02:00
7b985c0b81
move stuff around, utterly untested 2025-04-21 16:00:59 +02:00
0919db08f7 wip: handle infra by TF 2025-04-18 19:09:03 +02:00
754bf4d8f9 switch dependency management to npins, closes #279 2025-04-18 17:41:11 +02:00
ad65fb944d clean out nixops bits 2025-04-18 17:41:11 +02:00
09899c7f3a move gitignore to apply to infra dir 2025-04-18 17:41:11 +02:00
65393abf9c clean documentation 2025-04-18 17:41:11 +02:00
173518ed90 setup: reset lock file, prevents Error: Failed to install provider
error example:

```
Error while installing hashicorp/external v2.3.4: the local package for
registry.opentofu.org/hashicorp/external 2.3.4 doesn't match any of the
checksums previously recorded in the dependency lock file (this might be
because the available checksums are for packages targeting different
platforms); for more information:
https://opentofu.org/docs/language/files/dependency-lock/#checksum-verification
```
2025-04-18 17:35:43 +02:00
84e51745f8 fix nix-hash 2025-04-18 16:51:38 +02:00
2fef5c42aa further purge test machines from nixops 2025-04-18 13:42:49 +02:00
cdd39543bf rm corresponding nixops deployments 2025-04-18 13:36:27 +02:00
f2e294e77c add unit test: TF validate 2025-04-18 13:21:17 +02:00
9090269e55 add further comments 2025-04-18 10:53:08 +02:00
6843e84657 consolidate setup in script 2025-04-17 20:42:38 +02:00
e6b06c86a6 move info passed to facilitate passing extra config 2025-04-17 17:52:07 +02:00
3716de6409 fix returncode 2025-04-17 17:01:03 +02:00
8f2571ac70 better document TF file 2025-04-17 16:59:11 +02:00
90eae7c336 split out vars 2025-04-17 16:58:27 +02:00
5ce0987640 retain nix_path for debugging 2025-04-17 16:07:16 +02:00
69b6cac387 ditch nixpkgs link from /run/current-system 2025-04-17 16:04:38 +02:00
4f93303ef8 fix key path 2025-04-17 15:03:52 +02:00
376d003e28 add more comments 2025-04-17 14:23:08 +02:00
1aa9e959d3 Revert "update nixpkgs to ditch opentofu patch"
This reverts commit 7bab876d1b.
2025-04-17 14:22:51 +02:00
7bab876d1b update nixpkgs to ditch opentofu patch 2025-04-17 14:10:27 +02:00
a5b74452c8 rm unused import 2025-04-17 13:59:52 +02:00
428b1d4e3a more comments 2025-04-17 13:52:46 +02:00
4c6fa980f7 ignore generated tf lock 2025-04-17 13:52:09 +02:00
d26b3502ab reinstate user group, fixes application-tests 2025-04-17 13:27:43 +02:00
31fce3acd2 rm unused file 2025-04-17 13:22:20 +02:00
3f516da411 rm some unused code 2025-04-17 13:22:20 +02:00
a4a2c8c4c1 implicit ssh 2025-04-17 13:22:20 +02:00
c649802896 set env var specific to deployed setting 2025-04-17 13:22:20 +02:00
b3767d30ce Revert "kill git hook"
This reverts commit f7d050a3a6.
2025-04-17 13:22:20 +02:00
cbc4937427 filter for git-tracked files 2025-04-17 13:22:20 +02:00
d409c75476 rm tf lock 2025-04-17 13:22:20 +02:00
be8dec1f86 kill git hook 2025-04-17 13:22:20 +02:00
44dfef8cb4 mv env var 2025-04-17 13:22:20 +02:00
44711d52ec rm null from tf 2025-04-17 13:22:20 +02:00
dcd87a3f76 rm unused provider from lock 2025-04-17 13:22:20 +02:00
38c12e82e9 buttons works deployed 2025-04-17 13:22:20 +02:00
3581ab5af1 fix npins 2025-04-17 13:21:23 +02:00
30 changed files with 119 additions and 222 deletions

View file

@ -1,16 +0,0 @@
# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/hashicorp/external" {
version = "2.3.4"
hashes = [
"h1:HfVaWMC7Tz+tRfoWZtGCX2MATcgX3HsexoirWdi/voo=",
]
}
provider "registry.opentofu.org/hashicorp/null" {
version = "3.2.3"
hashes = [
"h1:qTlGDGC3RmXIPLgwsIh4LHG/DrAR6T6L+Wn6egnQnwE=",
]
}

BIN
infra/architecture.pdf Normal file

Binary file not shown.

View file

@ -1,9 +0,0 @@
# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/hashicorp/external" {
version = "2.3.4"
hashes = [
"h1:hBFp4dEKKevoZEsMW32ralBqrO7cTxTPYdWPqc4Ff+s=",
]
}

View file

@ -1 +0,0 @@
{"Modules":[{"Key":"","Source":"","Dir":"."},{"Key":"nixos","Source":"../sync-nix","Dir":"../sync-nix"}]}

View file

@ -1,3 +0,0 @@
[
"/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers"
]

View file

@ -1 +0,0 @@
/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers/registry.opentofu.org/hashicorp/external/2.3.4/linux_amd64

View file

@ -1,9 +0,0 @@
# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/hashicorp/external" {
version = "2.3.4"
hashes = [
"h1:hBFp4dEKKevoZEsMW32ralBqrO7cTxTPYdWPqc4Ff+s=",
]
}

View file

@ -1 +0,0 @@
{"Modules":[{"Key":"","Source":"","Dir":"."},{"Key":"nixos","Source":"../sync-nix","Dir":"../sync-nix"}]}

View file

@ -1,3 +0,0 @@
[
"/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers"
]

View file

@ -1 +0,0 @@
/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers/registry.opentofu.org/hashicorp/external/2.3.4/linux_amd64

View file

@ -1,15 +0,0 @@
#!/usr/bin/env bash
export host="$host"
mkdir -p etc/ssh
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
for keyname in ssh_host_ed25519_key ssh_host_ed25519_key.pub; do
if [[ $keyname == *.pub ]]; then
umask 0133
else
umask 0177
fi
cp "$SCRIPT_DIR/../infra/test-machines/${host}/${keyname}" ./etc/ssh/${keyname}
done

View file

@ -1 +0,0 @@
{"agenix":"/nix/store/glsqq1xn5al7d528hvlbm4hl3ladxmka-source","disko":"/nix/store/7wf9q0mb1i43x9dr1qlyfaraq15n6sii-source","flake-inputs":"/nix/store/fqln0bcp6mp75k4sl0cav2f0np60lwhj-source","git-hooks":"/nix/store/8bh3jgq1riy3jxm07vy4xxzvk9xd74pc-source","gitignore":"/nix/store/g5v3sgqy6a0fsmas7mnapc196flrplix-source","home-manager":"/nix/store/cq3b3cx5rv9d0zj57kch9wmxzc2rm8dc-source","htmx":"/nix/store/mwqqk0qmldzvv4xj9kq2lbah2flhc44z-source","nix-unit":"/nix/store/4g1vvy7bhwh16cyd2r8ibq7n6ygk1wvk-source","nixpkgs":"/nix/store/g1bajdwbkcmms8cqd9s8zbq8zxhkyx91-source"}

View file

@ -1,9 +0,0 @@
# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/hashicorp/external" {
version = "2.3.4"
hashes = [
"h1:hBFp4dEKKevoZEsMW32ralBqrO7cTxTPYdWPqc4Ff+s=",
]
}

View file

@ -1,3 +0,0 @@
[
"/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers"
]

View file

@ -1 +0,0 @@
/nix/store/zbjjm6vgdj1p2v21qshd9np3ajdnhniy-opentofu-1.9.0/libexec/terraform-providers/registry.opentofu.org/hashicorp/external/2.3.4/linux_amd64

View file

@ -1 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICJj4L5Yt9ABdQeEkJI6VuJEyUSVbCHMxYLdvVcB/pXh niols@wallace/fediversity ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEElREJN0AC7lbp+5X204pQ5r030IbgCllsIxyU3iiKY niols@wallace

View file

@ -12,11 +12,10 @@ let
manage = pkgs.writeScriptBin "manage" '' manage = pkgs.writeScriptBin "manage" ''
exec ${pkgs.lib.getExe pkgs.python3} ${toString ./src/manage.py} $@ exec ${pkgs.lib.getExe pkgs.python3} ${toString ./src/manage.py} $@
''; '';
package = pkgs.callPackage ./nix/package.nix { };
in in
{ {
shell = pkgs.mkShellNoCC { shell = pkgs.mkShellNoCC {
inputsFrom = [ package ]; inputsFrom = [ (pkgs.callPackage ./nix/package.nix { }) ];
packages = [ packages = [
pkgs.npins pkgs.npins
manage manage
@ -34,10 +33,7 @@ in
REPO_DIR = toString ../.; REPO_DIR = toString ../.;
}; };
shellHook = '' shellHook = ''
${lib.concatStringsSep "\n" ( ln -sf ${sources.htmx}/dist/htmx.js src/panel/static/htmx.min.js
map (file: "ln -sf ${file.from} ${toString ./src/${file.to}}") package.generated
)}
# in production, secrets are passed via CREDENTIALS_DIRECTORY by systemd. # in production, secrets are passed via CREDENTIALS_DIRECTORY by systemd.
# use this directory for testing with local secrets # use this directory for testing with local secrets
mkdir -p $CREDENTIALS_DIRECTORY mkdir -p $CREDENTIALS_DIRECTORY

View file

@ -13,5 +13,4 @@
pkgs.jaq # tf pkgs.jaq # tf
(import ../infra/tf.nix { inherit lib pkgs; }) (import ../infra/tf.nix { inherit lib pkgs; })
]; ];
SSH_PRIVATE_KEY_FILE = "";
} }

View file

@ -26,12 +26,6 @@ let
packages = [ "${name}" ] packages = [ "${name}" ]
include-package-data = true include-package-data = true
''; '';
generated = [
{
from = "${sources.htmx}/dist/htmx.min.js";
to = "./panel/static/htmx.min.js";
}
];
in in
python3.pkgs.buildPythonPackage { python3.pkgs.buildPythonPackage {
pname = name; pname = name;
@ -61,10 +55,6 @@ python3.pkgs.buildPythonPackage {
] ]
++ pythonPackages; ++ pythonPackages;
passthru = {
inherit generated;
};
postInstall = '' postInstall = ''
mkdir -p $out/bin mkdir -p $out/bin
cp -v ${src}/manage.py $out/bin/manage.py cp -v ${src}/manage.py $out/bin/manage.py
@ -76,8 +66,6 @@ python3.pkgs.buildPythonPackage {
} }
}" \ }" \
--prefix PYTHONPATH : "$PYTHONPATH" --prefix PYTHONPATH : "$PYTHONPATH"
${lib.concatStringsSep "\n" ( cp ${sources.htmx}/dist/htmx.min.js* $out/${python3.sitePackages}/panel/static/
map (file: "cp ${file.from} $out/${python3.sitePackages}/${file.to}") generated
)}
''; '';
} }

View file

@ -10,19 +10,14 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/ https://docs.djangoproject.com/en/4.2/ref/settings/
""" """
import re
import sys import sys
import subprocess
import os import os
import json
import importlib.util import importlib.util
import dj_database_url import dj_database_url
from os import environ as env from os import environ as env
from pathlib import Path from pathlib import Path
STORE_PATTERN = re.compile("^/nix/store/[^/]+$")
# Build paths inside the project like this: BASE_DIR / 'subdir'. # Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent BASE_DIR = Path(__file__).resolve().parent.parent
@ -249,12 +244,3 @@ bin_path=env['BIN_PATH']
# path of the root flake to deploy from # path of the root flake to deploy from
# to deploy this should be specified, for dev just use a relative path. # to deploy this should be specified, for dev just use a relative path.
repo_dir = env["REPO_DIR"] repo_dir = env["REPO_DIR"]
output = subprocess.run(["ssh-agent"], capture_output=True, text=True, env={"PATH": bin_path}).stdout
ssh_auth_sock = re.search("(?<==)([^;]*)", output)[1]
ENV_VARS = {
"ssh_private_key_file": env["SSH_PRIVATE_KEY_FILE"],
"deploy_environment": {
"SSH_AUTH_SOCK": ssh_auth_sock,
},
}

1
panel/src/panel/static/htmx.min.js vendored Symbolic link
View file

@ -0,0 +1 @@
/nix/store/mwqqk0qmldzvv4xj9kq2lbah2flhc44z-source/dist/htmx.js

View file

@ -1,6 +1,5 @@
from enum import Enum from enum import Enum
import json import json
from os.path import expanduser
import subprocess import subprocess
import logging import logging
import os import os
@ -106,7 +105,7 @@ class DeploymentStatus(ConfigurationForm):
# Check for deploy button # Check for deploy button
if "deploy" in self.request.POST.keys(): if "deploy" in self.request.POST.keys():
deployment_result, deployment_params = self.deployment(obj) deployment_result, deployment_params = self.deployment(obj)
deployment_succeeded = deployment_result == 0 deployment_succeeded = deployment_result.returncode == 0
return render(self.request, "partials/deployment_result.html", { return render(self.request, "partials/deployment_result.html", {
"deployment_succeeded": deployment_succeeded, "deployment_succeeded": deployment_succeeded,

View file

@ -1,17 +1,17 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A 9edPaA2tT4SeYNTPzF0E157daC2o+JH/WQQCT+vLbFg -> ssh-ed25519 Jpc21A JzLWMEH98I5/A8O55mKUMy5zo2kg3Qk8SfXnHvkjwT4
C48EtLdhB75TTzfEZTw1DypicHiVlSmFzjfbqfO9N/8 8f7zDHSp3AHoAQy0dVWMa1TurCBLnsHNtbNjaD++7ow
-> ssh-ed25519 BAs8QA T+kXpZg1v0XRkub5DWir7vYwO7KaOJLZBNYxxXiBUCw -> ssh-ed25519 BAs8QA eCD3saYXdv1bjAoQghmyVqHjMBu/o2lWgu7grk1vgRs
zBRwMTDpyI7twEwUGsmJYyYPw9btBx5Kakj1yT+XY8U //pOnkzqQTK3xmeCjruo46ju2X136KEt6DpsegMouFQ
-> ssh-ed25519 ofQnlg 4UoEDY/tdKz8LrX1BkBU1/cn+vSaYLUl7xX9YmzANBY -> ssh-ed25519 ofQnlg ePjq7GmM36qaGxcJ0qnW8FdKDjwlXtFqOBK8OgWY3Co
8CACq1n3AJgD9IyPN23iRvThqsfQFF5+jmkKnhun24U gVmsDP9rMcQD/B6BpNhCn+avdgjhyyohNUXlatXpXo0
-> ssh-ed25519 COspvA HxcbkqHL+LpVmwb+Fo5JuUU+C+Pxzdxtb0yZHixwuzM -> ssh-ed25519 COspvA lrQB/NEmMUR2RWxfRzE2iTDkjMYsrIaiKn8thxZR+RA
7FIhxdbjHJlgQQgjrHHUK5cecqs5aT7X3I8TWf8c2gc MU23Z28v+cNk2VxpAYaYoFb53js2Zr9/KAM9uMe6+EA
-> ssh-ed25519 2XrTgw R6Ia8MVIZKPnNZ0rspZ34EqoY8fOLeB9H7vnvNBLg1g -> ssh-ed25519 2XrTgw z1ixx5dYCNbgw6wWV45b4wn69X/5/4MzesTomWa4WB4
55NUqz5Yygt6FKJ3bR5iHxQp8G7S2gyFwrJNX1Pb/2Y eNSlP6+nUW9rpsGyzqOEQ+7IVpGeU3UcZpyfB9XT2/4
-> ssh-ed25519 awJeHA hJdTuAScoewVMt7HWiisSkL0zSeClFzYzzKL84G893o -> ssh-ed25519 1MUEqQ c6ps9RB6Dw9JtR0+4eB1NDx44uUes8YjLrY7RCpD0jg
ou780VLrW1s4d6L+lEVu3kXaGn4dvtFPA31supwEL50 GwVRqR5t07ctbWhwH76T+SAe2Y6Vv1uY/AHkzd/gw/c
-> ssh-ed25519 Fa25Dw mJcqnXA3fQeoKrG7RJ7nVeLxPvrxqbj+lJdx6jQ9IR8 -> ssh-ed25519 Fa25Dw jTqtV2RWsXBH4zgWAYr9tBGC/BbXKBvr3uyL8IgmI1o
f5Q7mrQSSDsm1Z/uSAnvx66mgnRC3XaBLQrVL9f/Ijs qBirnzIpi9hB61xwyS+5U6XBobAquEJrV3cleDtG8/4
--- W/KmboXTLV12X6WtVQKHNe+ZHvS2q9EHUZwofSgJSE8 --- j/vJgDV+47UmKokdvztXntBIhCLEyUm2aYoGJ2WMKbU
^kûÚ h©0ÔkÇ ¢¸_Ç·ûQÞm7\òÖ}÷Áë?½qø<ÿm ¢¹ŽÀi±ËQõf §¥ÐÅ·DN§àB"—ÍvsëB6QžorF‡<46>Å

View file

@ -1,18 +1,17 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A ZyJtpgzBrA3WFa1+uiNLZieP6GAqYzAtjmUkgbqKwyA -> ssh-ed25519 Jpc21A l6Xwv4JBlTeRTC7RgjxY9gDrCk96atMUH/62P+u55Qs
TeO/ghRNVJQrdeFAvgQITC6MC7x7IHDtFYqHVloVfAQ CrYsLZgDFAiR8up87lhGZqsbAEZtOXG+l5IzLh2uaqg
-> ssh-ed25519 BAs8QA zIfPuCmSZyosDfWvL6A5DstWeBORDkjqb6Hxjx2dYgE -> ssh-ed25519 BAs8QA lgtmfoc4vKfRpI/XbIS258BMyIB4mTdquEx/Kxm5OTI
Nq/YU6oDlIC+ROtM2P5aBeF6iJsxUbrU2LnLDRux35Y 3gQL8Rnqc7JfqsRmKYU3rD0cWMKdnIeVXbY3eFM07RU
-> ssh-ed25519 ofQnlg dm1bj8BJxD1MpFqdDkfDL4wWV7mjmb51hVqkk2uRfwE -> ssh-ed25519 ofQnlg 0vwuCrduMLjssA3CK3gfVPMSPYKO9cF7HH1JF/oJv18
N7Bwhw1agAbNGaF57VmFKwIWeUibaYRSu2Ke1ZlXPLQ 2KrZgQmpvw/tNDJrDArinnbEjopkkmuG8s7t6klBXcQ
-> ssh-ed25519 COspvA /DYoVVG4SOFgrIbMvEP0U7QpX6VK9otJVBYrj4I0dlo -> ssh-ed25519 COspvA NT+/h2KsiZN2XbaWAlrTlDwyAPmHWrwgr6f0uhSbEGs
5EWys6IcMgrwW2p5fFeJEgDqandyiS1RzMvqGsN1X0I QpoAd+69VYrZwAC0LwDm1m/zfslVgzxpVFihQWDcqzE
-> ssh-ed25519 2XrTgw YW5gzijsL1oRa5vQ3PY+8o3iNZIji1BZfB9dGcg9QHA -> ssh-ed25519 2XrTgw QoJ/74FOqYFxHJYXJEkyzbGY0xptSjorNvnyUS1p6zk
0WWu3F1Rpo9mi4YU2r3Jydr6Fg7bqWMuTtMJOEOj3NU 0sJ2F6IFuTrRvXO5ND1QL4CZ2lr1BAU3iQffC6Uc3h4
-> ssh-ed25519 awJeHA 8xl0RpXAJ7X5pe6qzDKXHJvMnjYEN85BS+maFytsSDQ -> ssh-ed25519 1MUEqQ xxgEUIhvWN/ZfRMGfu3fKQ+fWM5WSz8OexXPm6jaXDk
MQYrdbh7w7TwGk2Wivja8acQYkmYZ2YWMkE/YA/5K3g RXe0JMZ0sYMdQvrbi+zAs9F3d98ocRFnsSGUuUWccRk
-> ssh-ed25519 Fa25Dw koR3KjKzS3Uei58I68qYkgxE0ifhIXKTblpD4cFAVhQ -> ssh-ed25519 Fa25Dw tw4sqQcO86Gh0FGUD+O3bJ+8OcaN5rm8R6qocXvDbRg
X7mQgsMY02VHyxJUVN5ml/QRVTjBDm7BD4w0g3Jwmq4 7hiWa4qznHTV45kvC7ucj7j7FbPrqYK5OcCcByrcSxg
--- E6iHgNV3cjQrhNcZa6uqUwvGxf0ouNZpPXhet3Vicrw --- kvZDYq5n/OXu7xe2Kf5vGN0zosl9fgH4CAf3K0Tq3U4
ïò”F Q/Gíù°ʤT]ns&[›ýëú&œæ ¤D!´Ój]2ï݃T+• ÃUó¬æcgÝoP”‰ ˆF.Þ¿_vbÕÓÔdª9
Q(6pòM$È™ü Çõ

View file

@ -1,15 +1,16 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A N/T7HaInZ13IlJfzeli5nRz5pdBQETO6D1P8X42IHRw -> ssh-ed25519 Jpc21A 7QzPABl0IuQlZ9nsqfdbmWT9zb6iHGEOQiJ5sBpuLWU
q431ZtsodQ9NgcWTjmS0Kx4ATwVFp2nkm+MHe7aXTZU zusphKpt0yVxQj0zh4AGtYFORIhUoJHJBYfEAHb/VN0
-> ssh-ed25519 BAs8QA +VUHgmz2oNG6L1FgZy3uGVMs6qUGirFHK8Ts2ghNLHs -> ssh-ed25519 BAs8QA PBfmSc0pag5zCqB/EKvirDXyleNi2sgMZ0xTAMiANFo
sjQu78xqM6KLmRiYd2o2uK/PjYLnyZihzVoCV7qKBX4 gugtjl9TSsGQuPypQiKZZqr7JfMKSdwVHGGKevyfF+k
-> ssh-ed25519 ofQnlg cBfd95Ir33ggt1J1P2TkFRULr2uYPVuyrQ5XpjBxEW0 -> ssh-ed25519 ofQnlg RQd9jPyn8nv1zCLbETa9/JB39fwX3X0X9gElcHWEfCA
TWFVHboXr95cFm5yjQ7gn7hjbSmVBfB/9dldsoga/9Q 7ZEBE4qaZUtrXLc0caZ/tfJFYT9UDYkVvuaBc0SVBhc
-> ssh-ed25519 COspvA RMW9FlDmiQUu7cg0fKir55VqrDRCoYVVZMOcMHyrMj8 -> ssh-ed25519 COspvA plM6PJykVR0NuSrOkRkA6ucOzUpijFaKbe99jaVrQSw
qeXkWdKFJN7APgYh7AjyJLeQI2CAEaGAcXiVaBaOJwY 7AkcdijjOSckx3GxXwXo1K34ReU3x0yWamlxdaA1FWA
-> ssh-ed25519 2XrTgw BRobowRWZ9giVL2dFyGvzzF7gyWUQd1ounMQBtsM/lM -> ssh-ed25519 2XrTgw +2ZOwvZRUmnuHVV8poyMR6eIvPQoxWQRngKJdL2kVHc
dFyli2skTgzVWGVolLG2GuGNh/Xu3IaJsznOkcWqKGc rzWJIuZUtuurvIdV/47N2CNu8x4T/vca8IeRqi+mk/I
-> ssh-ed25519 awJeHA Cu7fiv+SL71oho/xoJMw/Lztf4WkNKmImVS/8xyLiTo -> ssh-ed25519 1MUEqQ 9U13b5LO4pSKhlvWEtkdrjTmVO5oGqcdT3Ime1AHjH4
3sB/t0squi1crjHFBaN6btrvGUeWaKfmGa7yxREvy2o 8wC87WZZYMZaR2YlG3oEt79QcZMA86TrUbvTekAUkqw
--- SqPDTJ/XV26nNG1ib5phNNRdQi5+Wk0cxhqUr1ygjGw --- X8Szdu5EyyPKR6xaL/8uKdHRc/D7wVGizk5k0XanreQ
Æt”OÊá<C3A1>âåYöª¶^´×U<C397>j†ë!Y.<2E>^<5E>}Xúôæ¡3¿ÖŽ"kE×í šú¾s¥,0l+¾ýn‡;fW® ¯<EFBFBD>欿Æj{Ò“¦!q-ò˜G:£ÂjQò[_Ä„=ò<>#ÇŸd¾(i@/f3ºn°¦ý
r :Ú‰ ¾×txð¬|<<øX¡ÜºÊ¼™¨

View file

@ -1,17 +1,17 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A 98RNGhrNW+Pg5EeQ6wOgRNaPqauBrI0hnUGDyCpFsQ4 -> ssh-ed25519 Jpc21A fBhVzGFs61K63QtA8RdOuuGfHFjMe/Dp0M6TXGLGWDU
5ZCq4vkp6N9/KR4Uf0e9MtNM1SHD3Pr97B31or6y8Xc qppnUZ+LQCXhuMCFMYv2D2CkmEfjb7mpmJufIeVjjaM
-> ssh-ed25519 BAs8QA znlRV7zbTUMsnDY/TiNgeCaqzi87jL/r/5dhc7bJ7hw -> ssh-ed25519 BAs8QA PNicZCWLkbvM4ih77/F4z6FzHomL9EsJCuSCjbdRTwA
9pwl5mcmbHaO39jmiuOkaC9mpyiS3xQSCd7q17gH6OU qIpTl/v7Xl08qBB//dFeW9qQiZg10YrYLnfyQrgDRfQ
-> ssh-ed25519 ofQnlg Wr8M7IpBjvNatOlfmRodoHicPjSjyMVqkC+R+18SYjk -> ssh-ed25519 ofQnlg 9/vSN3V25ysXBOvS4UJQEzm0734zqO0gXjhgzX63tTs
Th18PUYoo1TvP+d+6aXLvipsm3QPW+DKQSv8rJqeblk AH9Q1lWr+RgICfW3h+D2SgCTFr+azI0x3J3eFnaz/XA
-> ssh-ed25519 COspvA spxBYfEWDeKhaSsufZ4GDtIMKz8XznD4kS7Zjb4BLFU -> ssh-ed25519 COspvA IB1nWOMaVZVcvEog6UaqCak2fcKxIUN2yXvvRSTDxGw
B2wT7+bXgWezmUIj0mpVPPjKOoIj7cDH16uvW4ujbss Ti7JuBgU6phlI+oXfDDvx42dRu95kTwesRUKu4QsXZ4
-> ssh-ed25519 2XrTgw lY+t4jvdSgZ5ZKMemAN0u32fPUAraaGu+ExMEsR/c0w -> ssh-ed25519 2XrTgw 7S9ZhJvUFMw9tDCc0HvkRsRqjvmn47GFGVg/jkxIy1I
KfOBcGrhIztEnKKmsv6ZD6K9TleZRgIRWbOlG8Tcvaw cj27gqqihSZG3Jcab9h9FyNJ1J8FjlUiyVlDot+sbWQ
-> ssh-ed25519 awJeHA 1VVLZa0l8LX79LqZqlYRfXmKVIi9zpLcoysi0NQ3L0o -> ssh-ed25519 1MUEqQ l9mVTLD9rZXisBEz0sU2AdFNrJQ/+zuFTiIod5R/HCI
m79gHUkQ87zFoB8Awlcxt2GrCMrwr5KSfyiSqa6kEko 2q3csSEvMW5vtzqGHYTtZ1nZ0J1vT23bjhuj9HTsdWk
-> ssh-ed25519 kXy85Q uaEXsQeApgXqzWZRL0AtsPqjt5qOWxoQjN1Keiii1Ds -> ssh-ed25519 kXy85Q BCrDvkPZLvx2Kvgapa3BT+AmpS6Fa5kpkgBnRVso2BE
LtHUNkV3n/jgeAcEIyq03z84KKa5qQoAo1aaJeK6Duk ZBi+x/2ilJIzhzGipdZQJoGOjSqCuAttsqCDVFlYJ8Y
--- 6s4nA95ds+3slR3QtHQmAkTEBNlSOQusQzjaY/3M5Ds --- iWtseKyfUMBkQTUl9QzwXXLQcodEJeZt1Wuj5sR18yY
tÑ:ƒX´¯=Ï´ù8€OoùxþÔ;ì“ÀyIý²ˆµÌˆõêJ/oW0Ô¼; x$£tŠœ‡,7£-aý +2,エ ゚恝Jrメィ><7F>z?ホi<EFBE8E><69><EFBFBD>x<EFBFBD>0z<30>ヤ智メ劬呱^ゥネコ食・濤礫+1」ァ<EFBDA3>

Binary file not shown.

View file

@ -1,18 +1,18 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A EuMYAiZX+4A12eu19mIY7u+WYF7NJ9qJosQSVlxR6n8 -> ssh-ed25519 Jpc21A BfHJN3vILbsfY91kEjSQ+STrn6vQfn83Fx3cBCNshRQ
bK5CMXAmP23t1p9bgmqoVg4Qcu2qYKGc4t36v8e9eow 0O8GJYfF8WFS4Xsgj5v1cly4JP1MgSN40OgRdW/i0rA
-> ssh-ed25519 BAs8QA IwRyitDNTzUPzQAUbDNEKjFiF8WPD/OyztOZQeoTEzw -> ssh-ed25519 BAs8QA Ue0NLMpmZDSTGvwZ8lhzes7pcmit9F6uwzeT4XhiwC0
OwiTWvk4NmUgExav0uH6HlThDNU5hsKXfR6KHsFOV3I jsvvuOW344i8GR4B139SX0LwTqzKQEgBvsy8oRppqBU
-> ssh-ed25519 ofQnlg 3TcMbLX1JsQL8+Gqy7IFZwykZr2BspvPCuZT1SHtnQQ -> ssh-ed25519 ofQnlg 9iSMQeTJn1OUqTF+M2sHpp69lblb8E6TVbgZs7vgD2U
Ci5OeBj2aiC8ut9jIEUMt3qfYH+cJrnVud6AH54Ndn8 uMQI1gTTMvYW7ea9xBAln118JEeNvv3nqbq32zJoat8
-> ssh-ed25519 COspvA 0t9f3Wu3ILv4QTJhwT619y+7XFrryCLbpIZC6aE+qQI -> ssh-ed25519 COspvA YxCyfe0li23JoI2q4XFVUx4vrWApLwSnJD31PHXuPBg
oPQP48F6oO/tkqLZDdjkGtIap7KHiAknbpTNL6/yLaU 8xuT9+W2mnTag9tm6F6LXzHkIh2Nou/8lgxd64OpvWk
-> ssh-ed25519 2XrTgw YOZsaYQH9vMH0QqSXGh8GyhRV4MbcBGPFfFaKpo3Ckk -> ssh-ed25519 2XrTgw jEzw0A9Wd1b1Zoryzp/W/QZ6bd99E7sySnr/W2xcnDs
kUShJbADA+6bpx2adxvzlI/0jSM5bIBfZfdSE/7Vm5Y IyMrojJ3AChS6lhj599caNM+02i16qtpc6cocln14b4
-> ssh-ed25519 awJeHA dF3m0hQWX9c0EezDr56Kt/F4d1Uim7NwvIX6zRws0Eo -> ssh-ed25519 1MUEqQ haiI/5EkuTZ2YHxsqSVlqfM0VVR24DIDrMS3RmXwAhU
pst243yrARODwrnyz8cJAzgDxdPOUsRbs7yPZePABFs qVIAvLp2qG4A3f3OKUqAKqH1eOicJz54nfblPSUKrSw
-> ssh-ed25519 dgBsjw PUYHcP/tgNnKyvlIoJRcNcW3zabVV1iHXIWfKqgW9xc -> ssh-ed25519 dgBsjw /vCnznu73U99onCWcM0aQlW0azscyUe4BB2kKeZvtHs
tXNjSuVH/g/oN5o75FPkFFpviF7SeFSN9kbqURvgMDE MPnvXR/WVsl/tJ1YPoc7nk2Ls2x9bbtJdNp3CQTuuWI
--- wHgBAN9c6F6T5hFJGo8uH8zqDkQDwx3/jVNKUtQ3arE --- OzkqKlw4xu3McMk20orQN0h+VPYfUUSDC+DsgRU1tSw
«Ñ¢Á ü^@ÃmŽÚé`B˜³#{¡Ÿ‚ GUu´|¹Á œ¡ rÚïjb¥:Ô“d²ù] GØÎ©¦ú²-«ÂMÁ³ŸÜálÙ3mÌí)½š@¢—±e?¯ªêe¤üZ
ò@µú¡fÃ`m;ÕcæäU²€ùò£Íd…eSèyfv¿»¡€J?ø `œfj£Äa}lÃó ¿Úxç²BÇt2èfìôm08ÓoÝtRál9˜èx¤¢ŒÅžæ÷ Y}ÿ!fÐ

View file

@ -1,17 +1,17 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A TUGMeCK5ZehSdtfH2xpEEvMp4jZxJ2fTogXSkcf6blg -> ssh-ed25519 Jpc21A RFzPu3fD28STex7ND5lE9bfCxQq/xeHEb7h7BFt9pVA
BY6cKeB3MV84KvYThJsU0TSW5kMUJpbVVvccVtwtEIg 8K+ECDGs71V91jEVQjrRVQNbdTzBb6W9jkp0+K1trzw
-> ssh-ed25519 BAs8QA 9LgEP0N4MF4uEXLXGWRLgJzC9llYpKiP2lwAgN0ObxA -> ssh-ed25519 BAs8QA F2L9Eh9OItaPfAcR4qNnOQnvCyTeGdR5lSu0WqXiuU0
cOI90Sc2ORgvFZD2I+oYcRa1Y47X2tuvFFqqKFo78nk 3jLlt4qAL3/VKyfbP7R0/7SUwwPpWf5YUWwzjDONEy8
-> ssh-ed25519 ofQnlg LYTsntB2zI1EJ8yyYOH6BvHXEOv+zX7QYrd7leXPeDA -> ssh-ed25519 ofQnlg BLdBNuJExNlYED/XFU5zmYPtO1bxumuyPPgcs8qSLEY
uqhuPl2udjxDMIdMd88xpQuAZ/QMXSLgxOeOhHyTjW8 wIi31st4WS9O2a7VJmYpE8PimgzLvwU6zWkvHCy84yQ
-> ssh-ed25519 COspvA geel/7vCPHmBT6Sg0bTqeUV4rA/i6w0NvFjGk8rF/VA -> ssh-ed25519 COspvA GmC8YZVv3ZwidaDKUkLhx0l8UOmRw5ZBiM8r4/Ub7xA
8eIF+oWuM+16j1n//ndImjTPxPYqZ56WA8K5uybMbTo wK994Zs1aLspqY84Ik77qdMaEsjs0ZFNuKQDOGXsnmM
-> ssh-ed25519 2XrTgw uCKoYMidpNwfo2YDb2jyjONZvExK2wrZXXvv+ywrCCA -> ssh-ed25519 2XrTgw s62q7KOHZRqimCTwazX9LUvnpcYuzxwflumXe6NVF38
X0E+2LuftCF3oAHp8z18WRZePAYt6tEYjnNAgMmfUNo WnOpHI9ejvRrZrQuasTEYyqP8ny3Hx9Q9bJzbK0pOI4
-> ssh-ed25519 awJeHA 4cTdqU2X1gXyFxMHGHPgUq9g8XUM8sgbNa/NMl2GZmI -> ssh-ed25519 1MUEqQ 9NLHR5OwOngiLRguTkf5KnUHrc80mambCw19dPPKPQ8
J7cWCuKrf+r/nE0FjGj/DQDv7hBqbn0NidjY2m1mwGw GDg9yRoRUaP1KOa/pOCFiLCCAxuFsuCIiDP/ERl8YLA
-> ssh-ed25519 dgBsjw gyI/oiqvAzqxtism9yCygXYLZzCynTdAlPBcwZhryCw -> ssh-ed25519 dgBsjw NulCMPtc2miJlHYpXMjQHUlc/HIaX4AqzxXZxt8cWkE
pKCMRUv6dsH/cS2Tm/gU0mxH6TsF6UGj0Fx4BNvYv9o tCh3WD91A89258F8THeddXvab77tTIjNjGxYNDVoaBQ
--- MBLz1UcLi1SCQ2+tA1Zmv+2ZEiw0Ag2C4/gk7lzqJ0Q --- oIUm35maOqmHL0nifKpyEvLpHSKmthxIT5DDueCVZDc
Ú<EFBFBD>©ËƒŽ£Ð Ó1ÁÞ™òȲ=HK€Ÿ?G §g=R!Ì”2t+Ü€!“ɈUGÞ¶±ïôM°?ö<02>OÉÀÅÊ ÈaT~œú£Úôf4÷„Ô$\—ì;¿@Äý`¦<18>(<28>3{VWgM}#<1A>ï9aû6¢½ª^öúT6éÞ!Þ %¿

View file

@ -1,17 +1,18 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 Jpc21A EvnCvH6ER6Pied87i9okxBLCx38fNP1fX3wMziJ5PXI -> ssh-ed25519 Jpc21A yazxa1xfjFav7HWIvegBhcLIaYnQw4noH+2d9VqyCk8
b7vN/9pxRWuUrug/bkZIZD+2wSplAGLK+ayO+YYDlCs LWgk9DdjH5ktQN0A9RVQN8PB2LlXsEVihwJpU4AFHDY
-> ssh-ed25519 BAs8QA I7dMk+pvKe/bNkIr98muyaOKqTdBitIdrRr5bVN3+DA -> ssh-ed25519 BAs8QA XnRG+IYDe3WOBNeNXF4KGCHGVtZg3T2kXJtwmVABjVw
5D5IGeF6rqF+HNSdDZE/gj0DPHISR3Tzj3Fystm++04 dfJcTZmDfL/2KuE0XRgO2UYlssaY0T2beTqUTKinhos
-> ssh-ed25519 ofQnlg 3XMrmWBHw6+xfYIn8fZ44ryp1dHS7qVTK0cTJZGjXV0 -> ssh-ed25519 ofQnlg bVBe7VBynJr7wdVWajiKlVkAogJCsFE+NkVQcOFV3w0
PxuU0/w27wW/335mteby+kNTr83K6SrjvNEsxBFHOEI AUnc6BwNS2YPz1qFBkDGaXlEp+VzlceGllLctHhq1HM
-> ssh-ed25519 COspvA 5yfMt71p+fx9aIT8ubgsHZa9XEJE6trsOOqgC0VxxBY -> ssh-ed25519 COspvA dEY4MqMIfidzNBe9tUMZTpJNwYNlq+ngp+RLNEWN4Vg
dEIuIERcnw6dFb7IMmdzM5b4ySmdg7qtR50X5gQTd+8 P+Yf/6NAoIFCfKOd4ykDiY62G/3TTk4jtYJkrYY/SBk
-> ssh-ed25519 2XrTgw ZpXWuF2jRWpxlK9HuYZoZyN144cvaNZubVuLBUEq5kc -> ssh-ed25519 2XrTgw +FkRMJR2M2KrnR9n8RMrt1m60h4piX4q6c2PuNaIyko
692sos5focQy0TnUfvz+cLktK2a6tyNS8AWbuDgb4/c AdpWCLZ/zLdmYyeWAX3/lQJ6h2bMGwF84KJVLoxm4aA
-> ssh-ed25519 awJeHA ZXx69b4ZvWbwtwnSFjK031mIpK8lDN1nwxq0N+FgREY -> ssh-ed25519 1MUEqQ mLU9wlidwicRLBbhSa9Adwn1t3PlMwnCVGZveFSWBEM
f7GrJm2N908qtPEYY8T22JGhfWHXbUTAdRuEFHGLOKo 1tiHDboRihGgz+xaylQAdbXQqyCVT0l3xYIbF6to0pE
-> ssh-ed25519 dgBsjw mD/FfN+J2djG/3hR98oPHznAhTyVz5Z8jnJNlQXzWSo -> ssh-ed25519 dgBsjw 9t+XYjncpp7OPAo915xXHNfgnPsIuqL/RV1JyF/f/hk
KULWl9PeO3qwbUNQJix/Zr07l9lsBhPZTR6aeOiyx0M GhuVPIyAcVy18vHG5LSREzCe/zLkZDXNNNuIwOsZ9Go
--- EUYAk4OeiL39nwZ7YIlLucUMfBghaegrtgqH+sOUEfI --- 66KHbxaXGMDinv6CbC2dL5vHNzR9EJdAYdzoUzN5nKI
<>6Q‡äŸ‡7á·™B+Òpûµe³úµ({<ˆ8í‡My|³¿]˜Ãk¾h:žæZŒ§ãde#Äü úû>3„“€K<4B>éÀ¬á®øq^uG ìŠpH:rØkMµ¨¡mU:GiæÁL#%/©ÀuÌ<75>ÒílzÙ¶/Èí9¨ù|Ô þûAѬ»2Aü{­A 1Vc
Êš€R¯€ájŒŸSéÐ¥Ò