{ ... }: { services.nginx.virtualHosts = { "jellyfin.grzb.de" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://jellyfin.vs.grzb.de:80"; }; }; "mail-1.grzb.de" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://mail-1.vs.grzb.de:80"; }; }; "mastodon.nekover.se" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://mastodon.vs.grzb.de:80"; }; }; "matrix.nekover.se" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://matrix.vs.grzb.de:80"; }; }; "netbox.grzb.de" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://netbox.vs.grzb.de:80"; }; }; "grafana.grzb.de" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://metrics.vs.grzb.de:80"; }; }; "turn.nekover.se" = { listen = [{ addr = "0.0.0.0"; port = 80; }]; locations."^~ /.well-known/acme-challenge/" = { proxyPass = "http://coturn.vs.grzb.de:80"; }; }; }; }