Use stable channel and use helper function for acme challenge proxy
This commit is contained in:
		
					parent
					
						
							
								9c0398a3c1
							
						
					
				
			
			
				commit
				
					
						27a6513e84
					
				
			
		
					 21 changed files with 257 additions and 319 deletions
				
			
		| 
						 | 
				
			
			@ -11,33 +11,32 @@
 | 
			
		|||
      worker_connections 1024;
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    streamConfig = ''
 | 
			
		||||
      map $ssl_preread_server_name $address {
 | 
			
		||||
        anisync.grzb.de 127.0.0.1:8443;
 | 
			
		||||
        birdsite.nekover.se 10.202.41.107:8443;
 | 
			
		||||
        cloud.nekover.se 10.202.41.122:8443;
 | 
			
		||||
        element.nekover.se 127.0.0.1:8443;
 | 
			
		||||
        gameserver.grzb.de 127.0.0.1:8443;
 | 
			
		||||
        git.grzb.de 127.0.0.1:8443;
 | 
			
		||||
        hydra.nekover.se 10.202.41.121:8443;
 | 
			
		||||
        matrix.nekover.se 10.202.41.112:8443;
 | 
			
		||||
        mewtube.nekover.se 127.0.0.1:8443;
 | 
			
		||||
        nekover.se 127.0.0.1:8443;
 | 
			
		||||
        nix-cache.nekover.se 10.202.41.121:8443;
 | 
			
		||||
        social.nekover.se 10.202.41.104:8443;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      server {
 | 
			
		||||
        listen 0.0.0.0:443;
 | 
			
		||||
        listen [::]:443;
 | 
			
		||||
        proxy_pass $address;
 | 
			
		||||
        ssl_preread on;
 | 
			
		||||
        proxy_protocol on;
 | 
			
		||||
      }
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    appendConfig = ''
 | 
			
		||||
      worker_processes auto;
 | 
			
		||||
 | 
			
		||||
      stream {
 | 
			
		||||
        map $ssl_preread_server_name $address {
 | 
			
		||||
          anisync.grzb.de 127.0.0.1:8443;
 | 
			
		||||
          birdsite.nekover.se 10.202.41.107:8443;
 | 
			
		||||
          cloud.nekover.se 10.202.41.122:8443;
 | 
			
		||||
          element.nekover.se 127.0.0.1:8443;
 | 
			
		||||
          gameserver.grzb.de 127.0.0.1:8443;
 | 
			
		||||
          git.grzb.de 127.0.0.1:8443;
 | 
			
		||||
          hydra.nekover.se 10.202.41.121:8443;
 | 
			
		||||
          matrix.nekover.se 10.202.41.112:8443;
 | 
			
		||||
          mewtube.nekover.se 127.0.0.1:8443;
 | 
			
		||||
          nekover.se 127.0.0.1:8443;
 | 
			
		||||
          nix-cache.nekover.se 10.202.41.121:8443;
 | 
			
		||||
          social.nekover.se 10.202.41.104:8443;
 | 
			
		||||
        }
 | 
			
		||||
        server {
 | 
			
		||||
          listen 0.0.0.0:443;
 | 
			
		||||
          listen [::]:443;
 | 
			
		||||
          proxy_pass $address;
 | 
			
		||||
          ssl_preread on;
 | 
			
		||||
          proxy_protocol on;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    appendHttpConfig = ''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,68 +1,23 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  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";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
let
 | 
			
		||||
  acmeDomainMap = {
 | 
			
		||||
    "jellyfin.grzb.de" = "jellyfin.vs.grzb.de";
 | 
			
		||||
    "mail-1.grzb.de" = "mail-1.vs.grzb.de";
 | 
			
		||||
    "social.nekover.se" = "mastodon.vs.grzb.de";
 | 
			
		||||
    "matrix.nekover.se" = "matrix.vs.grzb.de";
 | 
			
		||||
    "netbox.grzb.de" = "netbox.vs.grzb.de";
 | 
			
		||||
    "grafana.grzb.de" = "metrics.vs.grzb.de";
 | 
			
		||||
    "turn.nekover.se" = "coturn.vs.grzb.de";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  services.nginx.virtualHosts = (builtins.mapAttrs (domain: target: {
 | 
			
		||||
    listen = [{ 
 | 
			
		||||
      addr = "0.0.0.0";
 | 
			
		||||
      port = 80;
 | 
			
		||||
    }];
 | 
			
		||||
    locations."^~ /.well-known/acme-challenge/" = {
 | 
			
		||||
      proxyPass = "http://${target}:80";
 | 
			
		||||
    };
 | 
			
		||||
  }) acmeDomainMap);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,18 +3,12 @@
 | 
			
		|||
  services.nginx.virtualHosts."anisync.grzb.de" = {
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    listen = [
 | 
			
		||||
      { 
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 1234;
 | 
			
		||||
      } # workaround for enableACME check
 | 
			
		||||
      {
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 8443;
 | 
			
		||||
        ssl = true;
 | 
			
		||||
        proxyProtocol = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    listen = [{
 | 
			
		||||
      addr = "localhost";
 | 
			
		||||
      port = 8443;
 | 
			
		||||
      ssl = true;
 | 
			
		||||
      extraParameters = ["proxy_protocol"];
 | 
			
		||||
    }];
 | 
			
		||||
    locations."/" = {
 | 
			
		||||
      proxyPass = "http://anisync.vs.grzb.de:8080";
 | 
			
		||||
      proxyWebsockets = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,18 +3,12 @@
 | 
			
		|||
  services.nginx.virtualHosts."gameserver.grzb.de" = {
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    listen = [
 | 
			
		||||
      { 
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 1234;
 | 
			
		||||
      } # workaround for enableACME check
 | 
			
		||||
      {
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 8443;
 | 
			
		||||
        ssl = true;
 | 
			
		||||
        proxyProtocol = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    listen = [{
 | 
			
		||||
      addr = "localhost";
 | 
			
		||||
      port = 8443;
 | 
			
		||||
      ssl = true;
 | 
			
		||||
      extraParameters = ["proxy_protocol"];
 | 
			
		||||
    }];
 | 
			
		||||
    locations."/" = {
 | 
			
		||||
      proxyPass = "http://pterodactyl.vs.grzb.de";
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,18 +3,12 @@
 | 
			
		|||
  services.nginx.virtualHosts."git.grzb.de" = {
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    listen = [
 | 
			
		||||
      { 
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 1234;
 | 
			
		||||
      } # workaround for enableACME check
 | 
			
		||||
      {
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 8443;
 | 
			
		||||
        ssl = true;
 | 
			
		||||
        proxyProtocol = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    listen = [{
 | 
			
		||||
      addr = "localhost";
 | 
			
		||||
      port = 8443;
 | 
			
		||||
      ssl = true;
 | 
			
		||||
      extraParameters = ["proxy_protocol"];
 | 
			
		||||
    }];
 | 
			
		||||
    locations."/" = {
 | 
			
		||||
      proxyPass = "http://gitlab.vs.grzb.de:80";
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,18 +3,12 @@
 | 
			
		|||
  services.nginx.virtualHosts."mewtube.nekover.se" = {
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    listen = [
 | 
			
		||||
      { 
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 1234;
 | 
			
		||||
      } # workaround for enableACME check
 | 
			
		||||
      {
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 8443;
 | 
			
		||||
        ssl = true;
 | 
			
		||||
        proxyProtocol = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    listen = [{
 | 
			
		||||
      addr = "localhost";
 | 
			
		||||
      port = 8443;
 | 
			
		||||
      ssl = true;
 | 
			
		||||
      extraParameters = ["proxy_protocol"];
 | 
			
		||||
    }];
 | 
			
		||||
    locations."/" = {
 | 
			
		||||
      proxyPass = "http://cloudtube.vs.grzb.de:10412";
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,18 +3,12 @@
 | 
			
		|||
  services.nginx.virtualHosts."nekover.se" = {
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    listen = [
 | 
			
		||||
      { 
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 1234;
 | 
			
		||||
      } # workaround for enableACME check
 | 
			
		||||
      {
 | 
			
		||||
        addr = "localhost";
 | 
			
		||||
        port = 8443;
 | 
			
		||||
        ssl = true;
 | 
			
		||||
        proxyProtocol = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    listen = [{
 | 
			
		||||
      addr = "localhost";
 | 
			
		||||
      port = 8443;
 | 
			
		||||
      ssl = true;
 | 
			
		||||
      extraParameters = ["proxy_protocol"];
 | 
			
		||||
    }];
 | 
			
		||||
    locations."/.well-known/matrix/server" = {
 | 
			
		||||
      return = "200 '{\"m.server\": \"matrix.nekover.se:443\"}'";
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue