{ config, pkgs, ... }: let host = "ipv6-test.${config.domain}"; port = 8001; webRoot = pkgs.runCommand "pinix-ipv6-test-site" { } '' mkdir -p "$out" cp ${./ipv6-test.html} "$out/index.html" ''; in { # Statische Testseite hinter Traefik. Muster geklaut von # hosts/blunix/localServices/launcher.nix: static-web-server auf # Loopback, Traefik davor, und jedes Dienstmodul bringt seine eigene # Route mit, statt sie in eine zentrale Routenliste einzutragen. # # Die Seite nennt pinix ausdrücklich beim Namen -- wenn beim Test der # alte tnix-Pfad antwortet, fällt das sofort auf, statt als # "funktioniert ja" durchzugehen. # # Backend auf 127.0.0.1: es soll ausschließlich über den Proxy # erreichbar sein, deshalb steht 8001 auch in keiner Firewall-Liste. systemd.services.ipv6-test-site = { description = "Static IPv6 reachability test page (pinix)"; wantedBy = [ "multi-user.target" ]; before = [ "traefik.service" ]; serviceConfig = { ExecStart = "${pkgs.static-web-server}/bin/static-web-server" + " --host 127.0.0.1 --port ${toString port} --root ${webRoot}"; DynamicUser = true; Restart = "always"; RestartSec = "5s"; }; }; services.traefik.dynamicConfigOptions.http = { # TLS ueber ACME HTTP-01 (Resolver "le" in traefik.nix). Die # Weiterleitung von web nach websecure steht dort am Entrypoint, # gilt also fuer jede weitere Route mit. routers.ipv6-test = { rule = "Host(`${host}`)"; service = "ipv6-test"; entrypoints = [ "websecure" ]; tls.certResolver = "le"; }; services.ipv6-test.loadBalancer.servers = [ { url = "http://127.0.0.1:${toString port}/"; } ]; }; }