diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2026-05-15 13:53:28 +0200 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2026-05-15 13:53:28 +0200 |
| commit | e3ebc04dc23864c6490de8ee57b950f52700f0dc (patch) | |
| tree | 0f3b9c5bb808e697864e69d1e5ad1d1e7b178258 | |
| parent | 8943a6fb5f57f086e7ebd006efdfb766c637c305 (diff) | |
| download | nixos-e3ebc04dc23864c6490de8ee57b950f52700f0dc.tar nixos-e3ebc04dc23864c6490de8ee57b950f52700f0dc.tar.gz nixos-e3ebc04dc23864c6490de8ee57b950f52700f0dc.tar.bz2 nixos-e3ebc04dc23864c6490de8ee57b950f52700f0dc.tar.xz nixos-e3ebc04dc23864c6490de8ee57b950f52700f0dc.zip | |
...
| -rw-r--r-- | hosts/surtr/dns/default.nix | 2 | ||||
| -rw-r--r-- | hosts/surtr/dns/keys/online.yggdrasil.li_acme | 18 | ||||
| -rw-r--r-- | hosts/surtr/dns/zones/li.yggdrasil.soa | 8 | ||||
| -rw-r--r-- | hosts/surtr/http/default.nix | 1 | ||||
| -rw-r--r-- | hosts/surtr/http/online.nix | 29 | ||||
| -rw-r--r-- | hosts/surtr/tls/tsig_keys/online.yggdrasil.li | 18 |
6 files changed, 74 insertions, 2 deletions
diff --git a/hosts/surtr/dns/default.nix b/hosts/surtr/dns/default.nix index af5b04f5..1f723f4b 100644 --- a/hosts/surtr/dns/default.nix +++ b/hosts/surtr/dns/default.nix | |||
| @@ -162,7 +162,7 @@ in { | |||
| 162 | ${concatMapStringsSep "\n" mkZone [ | 162 | ${concatMapStringsSep "\n" mkZone [ |
| 163 | { domain = "yggdrasil.li"; | 163 | { domain = "yggdrasil.li"; |
| 164 | addACLs = { "yggdrasil.li" = ["ymir_acme_acl"]; }; | 164 | addACLs = { "yggdrasil.li" = ["ymir_acme_acl"]; }; |
| 165 | acmeDomains = ["surtr.yggdrasil.li" "yggdrasil.li" "etesync.yggdrasil.li" "immich.yggdrasil.li" "app.etesync.yggdrasil.li" "paperless.yggdrasil.li" "hledger.yggdrasil.li" "audiobookshelf.yggdrasil.li" "kimai.yggdrasil.li" "changedetection.yggdrasil.li" "vikunja.yggdrasil.li"]; | 165 | acmeDomains = ["surtr.yggdrasil.li" "yggdrasil.li" "etesync.yggdrasil.li" "immich.yggdrasil.li" "app.etesync.yggdrasil.li" "paperless.yggdrasil.li" "hledger.yggdrasil.li" "audiobookshelf.yggdrasil.li" "kimai.yggdrasil.li" "changedetection.yggdrasil.li" "vikunja.yggdrasil.li" "online.yggdrasil.li"]; |
| 166 | } | 166 | } |
| 167 | { domain = "nights.email"; | 167 | { domain = "nights.email"; |
| 168 | addACLs = { "nights.email" = ["ymir_acme_acl"]; }; | 168 | addACLs = { "nights.email" = ["ymir_acme_acl"]; }; |
diff --git a/hosts/surtr/dns/keys/online.yggdrasil.li_acme b/hosts/surtr/dns/keys/online.yggdrasil.li_acme new file mode 100644 index 00000000..9c166f38 --- /dev/null +++ b/hosts/surtr/dns/keys/online.yggdrasil.li_acme | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | { | ||
| 2 | "data": "ENC[AES256_GCM,data:Ic4cQrF3bU55P8q4lFDL0fe0NJyoJ2K8VN1U7Lgq/y9+W2PcaGM0AjuPGP3K5SOMyVU6xUiN5T9vfRA+c7ztRBmEZYWu5/p7l9tajqMyCozzZ5ctYGEFAk5bwfuXf9Y4cGP+vh6dA6ktbewN8HzajQwHAd5ADcICzwXVD4CATcTPOgaUG9pDZZRqmRnfDzC22j6nKQQN494+5xj8cRFnx96LYN0nZUyVO5F5XxaWV+SkT0tJBhHuGNF85r/k3pVXmqRYgaQl6y4LNkzOSXGCy5jtu8QrPg==,iv:uQkkw/9KK4JHHcSgfnyV/VaW/dzqNhsz4eVOc4NimGU=,tag:/Xi7TzBBM7j2SEqV1Ah4yQ==,type:str]", | ||
| 3 | "sops": { | ||
| 4 | "age": [ | ||
| 5 | { | ||
| 6 | "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866", | ||
| 7 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBVFJ5K28xSjd0VGJvWldV\nRGxqUVQ5RDI5bi9kbXYyZXo0WG42N3BmdlY0CnU1TkpZT1V1Z1VMMUp4cFZnZGJh\nTTYvd3ZMVjd1Z3YrbDBQdnpQcGdtKzAKLS0tIHEzN2laV0JzTHhlbjNKb1ZuL1Bl\nOFpuQkQxaHhLdTlhSSs1aTZhTGlZVFEKAHrcAKrtdCfQKfhaDpQKQVPpMqZCEunT\nvuvRdxMvA5T4mX3vHEJ5WKXQ8C49krfMYT9QoSy5v2OeazTOPW/XMA==\n-----END AGE ENCRYPTED FILE-----\n" | ||
| 8 | }, | ||
| 9 | { | ||
| 10 | "recipient": "age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq", | ||
| 11 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiSTRTZGhNamxTSlg2VERI\ndnBtWFlZV2hzOTgyZmFldG9xU2dJalhTaERZCms0NVlJWWVqdjdNMkNFQXRRa0o3\nZHRvTE9BK3lWbHZTWkJ1SXE0NmlJR0kKLS0tIC9BclpLNlFrb0kxRlRibWVOSWdL\nRFUvd0N6ZFpnd25yME1WSXo3Mit6Yk0Kqpyx2tzblU0hLMaLQpuGaMDzC7ZlgIFU\n3szVfhlLHuLfqDzpxTshPrPOQs+q7RvUJ+I1NeztlpGw239/+c4U5Q==\n-----END AGE ENCRYPTED FILE-----\n" | ||
| 12 | } | ||
| 13 | ], | ||
| 14 | "lastmodified": "2026-05-15T11:50:25Z", | ||
| 15 | "mac": "ENC[AES256_GCM,data:fPcwi5HyrkY6HM90O3c9curi87X8MIWtNKF9lxQvFxPCMRVewDPteBvMgjCKDSM7RTGJVdDWnCyKTH6PXJwxGCuvOSv1CqSKreVPnNvilRETE+NLjwyQsAkgdZFDMofOvk1FhjI8gZ2aJg0yDwBvZMtaF694DhR4QVldXY2q8DA=,iv:Rs6KxSJwOSFrr7CEIs/9DED34tXbrCWfSn69KjiKSAE=,tag:tmKwx1y6LftEQBZWSs8qFQ==,type:str]", | ||
| 16 | "version": "3.12.2" | ||
| 17 | } | ||
| 18 | } | ||
diff --git a/hosts/surtr/dns/zones/li.yggdrasil.soa b/hosts/surtr/dns/zones/li.yggdrasil.soa index 73f6ddc5..4eb30d74 100644 --- a/hosts/surtr/dns/zones/li.yggdrasil.soa +++ b/hosts/surtr/dns/zones/li.yggdrasil.soa | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | $ORIGIN yggdrasil.li. | 1 | $ORIGIN yggdrasil.li. |
| 2 | $TTL 3600 | 2 | $TTL 3600 |
| 3 | @ IN SOA ns.yggdrasil.li. hostmaster.yggdrasil.li ( | 3 | @ IN SOA ns.yggdrasil.li. hostmaster.yggdrasil.li ( |
| 4 | 2026032107 ; serial | 4 | 2026051501 ; serial |
| 5 | 10800 ; refresh | 5 | 10800 ; refresh |
| 6 | 3600 ; retry | 6 | 3600 ; retry |
| 7 | 604800 ; expire | 7 | 604800 ; expire |
| @@ -125,6 +125,12 @@ _acme-challenge.vikunja IN NS ns.yggdrasil.li. | |||
| 125 | 125 | ||
| 126 | vikunja IN HTTPS 1 . alpn="h2,h3" ipv4hint="202.61.241.61" ipv6hint="2a03:4000:52:ada::" | 126 | vikunja IN HTTPS 1 . alpn="h2,h3" ipv4hint="202.61.241.61" ipv6hint="2a03:4000:52:ada::" |
| 127 | 127 | ||
| 128 | online IN A 202.61.241.61 | ||
| 129 | online IN AAAA 2a03:4000:52:ada:: | ||
| 130 | online IN MX 0 surtr.yggdrasil.li | ||
| 131 | online IN TXT "v=spf1 redirect=surtr.yggdrasil.li" | ||
| 132 | _acme-challenge.online IN NS ns.yggdrasil.li. | ||
| 133 | |||
| 128 | vidhar IN AAAA 2a03:4000:52:ada:4:1:: | 134 | vidhar IN AAAA 2a03:4000:52:ada:4:1:: |
| 129 | vidhar IN MX 0 ymir.yggdrasil.li | 135 | vidhar IN MX 0 ymir.yggdrasil.li |
| 130 | vidhar IN TXT "v=spf1 redirect=yggdrasil.li" | 136 | vidhar IN TXT "v=spf1 redirect=yggdrasil.li" |
diff --git a/hosts/surtr/http/default.nix b/hosts/surtr/http/default.nix index b643ded6..0e13acf7 100644 --- a/hosts/surtr/http/default.nix +++ b/hosts/surtr/http/default.nix | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | { | 2 | { |
| 3 | imports = [ | 3 | imports = [ |
| 4 | ./webdav | 4 | ./webdav |
| 5 | ./online.nix | ||
| 5 | ]; | 6 | ]; |
| 6 | 7 | ||
| 7 | config = { | 8 | config = { |
diff --git a/hosts/surtr/http/online.nix b/hosts/surtr/http/online.nix new file mode 100644 index 00000000..daad65d9 --- /dev/null +++ b/hosts/surtr/http/online.nix | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | { config, ... }: | ||
| 2 | { | ||
| 3 | config = { | ||
| 4 | services.nginx.virtualHosts."online.yggdrasil.li" = { | ||
| 5 | forceSSL = true; | ||
| 6 | kTLS = true; | ||
| 7 | http3 = true; | ||
| 8 | sslCertificate = "/run/credentials/nginx.service/online.yggdrasil.li.pem"; | ||
| 9 | sslCertificateKey = "/run/credentials/nginx.service/online.yggdrasil.li.key.pem"; | ||
| 10 | sslTrustedCertificate = "/run/credentials/nginx.service/online.yggdrasil.li.chain.pem"; | ||
| 11 | |||
| 12 | locations."/".extraConfig = '' | ||
| 13 | add_header X-NetworkManager-Status online; | ||
| 14 | add_header Cache-Control "max-age=0, must-revalidate"; | ||
| 15 | return 204; | ||
| 16 | ''; | ||
| 17 | }; | ||
| 18 | security.acme.rfc2136Domains."online.yggdrasil.li" = { | ||
| 19 | restartUnits = ["nginx.service"]; | ||
| 20 | }; | ||
| 21 | systemd.services.nginx.serviceConfig = { | ||
| 22 | LoadCredential = [ | ||
| 23 | "online.yggdrasil.li.key.pem:${config.security.acme.certs."online.yggdrasil.li".directory}/key.pem" | ||
| 24 | "online.yggdrasil.li.pem:${config.security.acme.certs."online.yggdrasil.li".directory}/fullchain.pem" | ||
| 25 | "online.yggdrasil.li.chain.pem:${config.security.acme.certs."online.yggdrasil.li".directory}/chain.pem" | ||
| 26 | ]; | ||
| 27 | }; | ||
| 28 | }; | ||
| 29 | } | ||
diff --git a/hosts/surtr/tls/tsig_keys/online.yggdrasil.li b/hosts/surtr/tls/tsig_keys/online.yggdrasil.li new file mode 100644 index 00000000..37cb5995 --- /dev/null +++ b/hosts/surtr/tls/tsig_keys/online.yggdrasil.li | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | { | ||
| 2 | "data": "ENC[AES256_GCM,data:pZn6ayJ1pCjLLodFAnpw3mgkcBYVdW7t9RYEysbdxfXUaf2jyIWX8h7dgpKO,iv:IWoU9AgUSRRPgD1R/2khVtLudo1GhPZV6C6q6wNZYDA=,tag:lJYqX6YV8z+uC1URFrw3eg==,type:str]", | ||
| 3 | "sops": { | ||
| 4 | "age": [ | ||
| 5 | { | ||
| 6 | "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866", | ||
| 7 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6WjgyYmUybVJwWW01dnY3\nYjk1dTI0c3pYU2dlSThLc1ZsT0JDeFFzWEIwCncrd3VTN0x3Wi94emdCNlpVWFBW\nSkVYM3pGRE44RHNmOW1HVkRtc2RVN1UKLS0tIE5NWG1TV0pqcm9NekxyRW9LVGhW\nYXY3ZlYwRytoQkwwVENSaFBNejRYelEKpEbY1WDa0iUugYj1PZFt4HidietHmcI/\ncbl8l+h/hbJxuC2UtaMVSlfe3IzJmnwnqpuYAiEm3WaF1LDiPzMWvA==\n-----END AGE ENCRYPTED FILE-----\n" | ||
| 8 | }, | ||
| 9 | { | ||
| 10 | "recipient": "age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq", | ||
| 11 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGNm5KQVhzeGQzNVVnaWFi\nRnBXMEl3UENDTExKeUZqdjk0RUl6V2hZYlZVClk5V3hnbkFycDRqOTlZWjZnRnpy\nSmVGT1BhbjQ1T21hZ3RqZFl5RU9jNVkKLS0tIDhHN1lRZkNjcjdnRHJrNjRlczFk\nQ0o4RUlQSkp1UXRsZmdHQXUxZ1Rwb1UK88VMOotD0qScxCM10cgWHpz577eih5TV\n5SchQznh3icCidYWnAG4i4vvKFDwQBiAE69Yx/3rTYlv/fJYMxpX6Q==\n-----END AGE ENCRYPTED FILE-----\n" | ||
| 12 | } | ||
| 13 | ], | ||
| 14 | "lastmodified": "2026-05-15T11:50:25Z", | ||
| 15 | "mac": "ENC[AES256_GCM,data:5f+Ge8WZoXp2QvPNi6ghrePo8KDaB93vIbqfllhwQI4kardiWSuaRANygAJC/d/zzok8EiOIiJ4qp8pcJJpW23K9qTT+6ZGJohdywDzk9IoHZ/FsJSHEiS3bxwnPE11n1Ia5xT14RFWPxswJy/YW8Go9sKSmiXuFXEcud4aZ8LU=,iv:2opq4uH+VGnlAcI4ffKrosKe+pVNDmTG+gC3ph6UFEM=,tag:NcYdxYhXCjnkUS5BvfpPXA==,type:str]", | ||
| 16 | "version": "3.12.2" | ||
| 17 | } | ||
| 18 | } | ||
