diff --git a/infra/README.md b/infra/README.md
index e69ad00c..0643ed54 100644
--- a/infra/README.md
+++ b/infra/README.md
@@ -111,6 +111,9 @@ default
 `other`
 :   Machines without a specific purpose
 
+`hans`
+:   Testing machines for Hans's work
+
 ## Machines
 
 These machines are hosted on the Procolix Proxmox instance,
@@ -123,4 +126,5 @@ They host our stable infrastructure.
   vm02179   Procolix      *unused*                 `other`
   vm02186   Procolix      *unused*                 `other`
   vm02187   Procolix      Wiki                     `web`
+  fedi200   Fediversity   Testing machine for Hans `hans`
   fedi300   Fediversity   Forgejo actions runner   `git`
diff --git a/infra/fedi200/default.nix b/infra/fedi200/default.nix
new file mode 100644
index 00000000..b8db0479
--- /dev/null
+++ b/infra/fedi200/default.nix
@@ -0,0 +1,13 @@
+{
+  fediversityVm = {
+    domain = "abundos.eu";
+    ipv4 = {
+      address = "95.215.187.200";
+      gateway = "95.215.187.1";
+    };
+    ipv6 = {
+      address = "2a00:51c0:13:1305::200";
+      gateway = "2a00:51c0:13:1305::1";
+    };
+  };
+}
diff --git a/infra/flake-part.nix b/infra/flake-part.nix
index 22c8afb8..496ab033 100644
--- a/infra/flake-part.nix
+++ b/infra/flake-part.nix
@@ -83,6 +83,9 @@ let
       "vm02179"
       "vm02186"
     ];
+    hans = [
+      "fedi200"
+    ];
   };
 
 in
diff --git a/keys/systems/fedi200.pub b/keys/systems/fedi200.pub
new file mode 100644
index 00000000..f53d6bda
--- /dev/null
+++ b/keys/systems/fedi200.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEIndY+B2WnEwm9K+RW8wFWtHPvcYEW4gHQmu6UhLILS root@fedi200
diff --git a/secrets/forgejo-database-password.age b/secrets/forgejo-database-password.age
index 2828eff5..137db602 100644
--- a/secrets/forgejo-database-password.age
+++ b/secrets/forgejo-database-password.age
@@ -1,13 +1,14 @@
 age-encryption.org/v1
--> ssh-ed25519 ofQnlg G6Wg5L2ohyZZ9NnCAQ03ycAbP7HBa6/wGjNCsNF8nR0
-OCh5tR7JSEZUAd4oDqNlKUznNus/EZrLTjzCNpFfSTM
--> ssh-ed25519 COspvA Qbs9EvqDbPzMB3ciM9e37gXaCp2OAQ/rG6LzMhdBkwE
-/eBnkgGBhuweXzd2aw1XXoaHc8JbXLrqMqcY8CAqDr4
--> ssh-ed25519 1MUEqQ jacwM4dAbNezkeMY9FzmGlXtTneLoMUFJtfm6dyNsVA
-AodDTXYSkPoxS807xw+l0WbO9dMau9xp2Y9h0Ir6o8s
--> ssh-ed25519 Fa25Dw quSJ54tQOBBNtnkc/4dxH1z7SfIfJsr+9iORnT4XXmg
-q//oLKS+eRHwraOEDayxrnLmUJ1Zfahr/ZXvuqYvtzc
---- NLwY5C6WKTUSVYbmeSUJE1SiM19/rDb3pqMrVUx/l0c
-�t�
-�Z��:�+p�a���l�����1z�
-�-y)nZ5����h�
\ No newline at end of file
+-> ssh-ed25519 BAs8QA So3SHZluAHrYfuMpcAJlsWpS/uUxMzf/1jJ06FdwX0Q
++91itie1Y5RV4z5fcqG4Slf/Rbk4QX4QwKIyPkKJtDE
+-> ssh-ed25519 ofQnlg DPbq3ABrvnOCawBiB9iRFAIydPeHe1ZLaOQPBXEuIAo
+xanbFqJ163i1Lz3wtOykdIkmEkJZWcfICoVU92tH9o0
+-> ssh-ed25519 COspvA 1TR3I93d/2NuoBo9ATCNPPFM3lvrPi0PmAfe2YI+9gg
+VgaX82fNM2wAwOvk0yBPT4EMc9UP0GhjR4TEsvqPENA
+-> ssh-ed25519 1MUEqQ 69GQYp0wJYRa7kl/WB/5larESo3lQZp6dSUaDEudywk
+4mFR6P5DNLSarHzkN1q12H7W1RGiOqcSpw1C1BFILy4
+-> ssh-ed25519 Fa25Dw ypEUH+tBK13e2nG6Wl5vg1ERs4LPRIBD3orziWHOiHM
+FLAF+2vEpET/p/RTwo7D1Yzj9rAddxtEcbv/HRx2quM
+--- lAvYOKxFbbKJhmXgIN2QOOHVHWSUVbj8Mi1DUhu2Wgw
+†��x���4�x�a�@�
+�x5PPe)[�t�k��}֯
�!�7
\ No newline at end of file
diff --git a/secrets/forgejo-email-password.age b/secrets/forgejo-email-password.age
index 926a0389..6f8c667b 100644
--- a/secrets/forgejo-email-password.age
+++ b/secrets/forgejo-email-password.age
@@ -1,11 +1,13 @@
 age-encryption.org/v1
--> ssh-ed25519 ofQnlg dmH3/gWbrhiYDSEzfEvwto/7ULietn9DHs7bqNRLuDE
-na8BTt4OCwwwJb/NNkUU1NWZKzsMyW84REcaz0bEX7c
--> ssh-ed25519 COspvA bk/ixd0gon+sxmhW+OBGY9sRaCVOZ267TELGFkkuUxs
-Y+XnlUVETv4fqA5uGd3VaHIs4mAJQQw+xmGweWPOP70
--> ssh-ed25519 1MUEqQ /mf6QgPlFqYGdQJHJbe2TEIusTxw0ftsemWst07nW3I
-SLzAtO31Evm/mOheVhMmV6QKoaNG0KYnIUaeThrp3CU
--> ssh-ed25519 Fa25Dw HzNVxKLwujLVxs37JczAImZwE3CsSVbBbN7yCvvvQQU
-yHh5wFtGdHgCZsuY70VVCeW+q3Tj3pJKclkVFXKZiPU
---- bi4B3ePG1HS3N5Y3civ4tvTZTk5dERKu4+LJwsN7Los
-�%���;"�q1v}����:i��]��jA0.�e�ǰq��9���
\ No newline at end of file
+-> ssh-ed25519 BAs8QA BVikwK3eMGHeW/2hnu5uQsxFjNclYreFX71rNz1ewSA
+EKhKxxkS7f/TeLXL61dEdEG9/qQCwDuciaT84PgytaE
+-> ssh-ed25519 ofQnlg EmBv6Eivd+nVVoamTSfjvU4WHILo/hAt5jwVPTnW3zY
+BF/TpxNzbaF/b+OimeV5cPJ695PAPBpPsWgg/WSmSbk
+-> ssh-ed25519 COspvA 16xKgJzAzETmDdhfqMcnWPupMtYEjanMM+REc9w17hw
+TIHFmgUgOCezXbr5hxtGp+8Tp9huDoymfgHE2EYrke0
+-> ssh-ed25519 1MUEqQ /9MyjSs7ABFP22y9HEzYG+o62pf+wEaVTtnejYAK/1M
+N+iDxoyiwjcascfweUyP6R+lnkYNCz+Sjax4jhRmPqo
+-> ssh-ed25519 Fa25Dw WfXNWdhAgJLa624YCL9evfLLdD7cVkrJoDP/7C/qbS4
+hiXQ/VgKS9jDZ532A9UEM0pkLFtgk6L9la0iJsfQLdQ
+--- niNaio2yti5BFp6hHJIY5XzItOTHA6KK1MjK4asgZ0s
+1�N&th�ȏ�<o�ǟ�-���n�539�)�T��&j�H+�P-.���h
\ No newline at end of file
diff --git a/secrets/forgejo-runner-token.age b/secrets/forgejo-runner-token.age
index b6e0d82c..dab8c4d2 100644
--- a/secrets/forgejo-runner-token.age
+++ b/secrets/forgejo-runner-token.age
@@ -1,11 +1,13 @@
 age-encryption.org/v1
--> ssh-ed25519 ofQnlg 42Tz44DFTDA7OdAqynPLKsAYJctXivj3wWkkIwYTInM
-pQ5rW2TH4IK/kjcLNOmkLgKMAuD/yzw9nOZn2NZNOv8
--> ssh-ed25519 COspvA iYtbO/GMmP2g+82xxPrvDsye2p+FpqGpG1a+Fr1jql0
-LYTL9v1c5UcikMIN2ivCLzzAtlKaY7z3PVJW/8OxrLM
--> ssh-ed25519 1MUEqQ 2JWKsR0gWXjustfZtj5Zg6aEflw+tMJ+Ii0k1FtdKVQ
-lo534OLXItxUMRN/hZ351PLTYVYC9KjXJ8WrlqP4XVM
--> ssh-ed25519 rJoYaw ePSTkrq9Nxk9kzAZR0O6P2KU8WZ40+/X7gI587WqRhk
-pQC9YAZdnKIyZ6ueN9iM+iAL9fkt0Dzo9WGfhTRABG4
---- CWPCtLLBJ+OYjuocYoSgOd0r7/nUIewTeMWbQx8MHXQ
->";��c�LSm�{Ҟ�/�H�*"�ߴ.r͐bVo+WZO^��~��ɋ�w]1h=����Hڭ�S��t�К,Erg���n
\ No newline at end of file
+-> ssh-ed25519 BAs8QA g4vxkU8nmlv5s52MRIijJoNAit6xj+KRZhuEvAURDAA
+eTgBMM8/dSPauDx1ffSwtzqiU2qRUzf/IQPR0eTlqEc
+-> ssh-ed25519 ofQnlg TMYSNqpcRyADWa5BywSBrNQF5uqpmg0Kp9urxocrRXA
+8JZ80/4ru3uW1sN08v/sNgXOd4BFviUQp4uzAkBMFRU
+-> ssh-ed25519 COspvA TyrZOsY3KgzTnGfN6vEHnJl2MhHNdCanTJVBBLZwriA
+/ApgrfF4lJEQ6GkoRumwKdqtnFwkq1rRw6OoHetagzU
+-> ssh-ed25519 1MUEqQ x/f06dn2mUOCf4W6ldDZrUBELqHzJyePcVZ8553KaE0
+SSf1F+jYWGkfgCWyKiKnnwo2TRmtk//1Q5l8kFRNSNw
+-> ssh-ed25519 rJoYaw +kwqZkHjWV5tkCJgxQo5zFXeNPM4pdY9OkDdN+t7eCk
+axoLL8yoT4oM4pmWWYK7xqU282gtZysIX5HehTtMYp4
+--- uWp3l0fwjCDNFSWcMrJgRfbUgsUY1IH30pGbhpkyCiM
+��m+����47	@/�{*�c>�����j�����O�{�#)�c�=��9N��֏��A'yA�IV�^q�Sy4����F
\ No newline at end of file
diff --git a/secrets/wiki-basicauth-htpasswd.age b/secrets/wiki-basicauth-htpasswd.age
index bc8f24c1..a7ba24f5 100644
Binary files a/secrets/wiki-basicauth-htpasswd.age and b/secrets/wiki-basicauth-htpasswd.age differ
diff --git a/secrets/wiki-password.age b/secrets/wiki-password.age
index 6aa1d39c..72222290 100644
--- a/secrets/wiki-password.age
+++ b/secrets/wiki-password.age
@@ -1,11 +1,13 @@
 age-encryption.org/v1
--> ssh-ed25519 ofQnlg fc4Kx1F73+x5k20ZAr+nwJ2//MKSbW0XrPwidaw3O34
-/sVyDyaHqBqWgB4aEBYCB9n0cVzEWUTdgqKvM4aAzJ8
--> ssh-ed25519 COspvA pfbE6BX+5WeYtuCfL1kRdnD3tVOV33fEJR4G0EndGBA
-ssywMgaFasyglxpIMjn9xxQViV5srAz8qS7t3aIJjnM
--> ssh-ed25519 1MUEqQ sqw/QOSTfTBzC2YOEDLzkB51VnGPZcz9JX5JYZ+/hjg
-p2pa5eakbFbNDhOfDZaXvb69ACh/F/2lFDTUQc4WlZ4
--> ssh-ed25519 dgBsjw QaKOQLbsEpD71x7Hk3ZoZV3/xgxv4+jG1wWiKmrhOik
-wyJP3apJB9jBcAOMK0D72lD7FqCkBEuwX0UyCvqOUJc
---- J/CTHVy20+V7iS/R0LeeUNzIxE6dU3lnVWAFHyEjbE8
-^TG���U�9��)	]6�n��<C���|�If��1�*9�&MJS�=	T��X�Kol{I
\ No newline at end of file
+-> ssh-ed25519 BAs8QA 84QtKy7v3jKCnM7jCr0deUNOwqET2smEJUXkIcI/F0w
+tFVT+1DL/c+W40j0PFwh53ou+2NQ535hDyKEK/7xni0
+-> ssh-ed25519 ofQnlg Hxao3mTog1bsdQ0HxlpEx+Ajrrf/r6VOrjFWbB8vl2M
+TFLC5u+lT3qwbFvuMEXBetCXW9GVLfxhWARb7QDAjNU
+-> ssh-ed25519 COspvA CDm0P71jKb1h9KNvSLgimJatkdz/WMc4Cu01oiUEc2c
+AFNQ1vYzlFNUHGgdSl83XeagMJeZ8JGunx1vncPYXyc
+-> ssh-ed25519 1MUEqQ qmsA/5ZYmJqrG+epnYD9sbVGciXq31h7M//dvE9pay8
+taxbhCtLYS+catxYSW2xesh07w66ZwWrMyoCnXJZcVI
+-> ssh-ed25519 dgBsjw x9489QMju7YO+DWER7MZP/PdorQ3ZS/873//kS9P62Y
+LgqCVik7K7J3qr/L5z9NJv8HbGwnrA51wRlVuNobxfo
+--- CHo+mL0smbVp/sBEjTh2Co8ywLloDk9gpRWxkXcUBok
+�����}ɍ��aenw���>����/�Fo�[�K�-;`]���f�!r���z���Z�o{x��
\ No newline at end of file
diff --git a/secrets/wiki-smtp-password.age b/secrets/wiki-smtp-password.age
index 63123ab6..11c1e200 100644
Binary files a/secrets/wiki-smtp-password.age and b/secrets/wiki-smtp-password.age differ