7568578f60
konnektor-web is deployed and listening on 10.202.82.49:8082. Replace the 503 placeholder with a real reverse_proxy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
117 lines
3.1 KiB
Nix
117 lines
3.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
########################################
|
|
# AdGuardHome (DNS / DNS-Filter)
|
|
########################################
|
|
services.adguardhome = {
|
|
enable = true;
|
|
host = "127.0.0.1";
|
|
port = 3000; # Web-UI
|
|
};
|
|
|
|
########################################
|
|
# Caddy (Reverse Proxy)
|
|
########################################
|
|
services.caddy = {
|
|
enable = true;
|
|
email = "daniel@lindenfelser.de";
|
|
virtualHosts = {
|
|
"files.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.6:8080
|
|
'';
|
|
};
|
|
"cloud.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.6:8080
|
|
'';
|
|
};
|
|
"dns.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 127.0.0.1:3000
|
|
'';
|
|
};
|
|
"smart.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.30:8123
|
|
'';
|
|
};
|
|
"git.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.6:3000
|
|
'';
|
|
};
|
|
# konnektor-web — Frontend
|
|
"konnektor.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.49:8082
|
|
'';
|
|
};
|
|
# konnektor-api Frontend REST
|
|
"api.konnektor.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.49:8080
|
|
'';
|
|
};
|
|
# Zitadel OIDC
|
|
# Wichtig: `header_up Host {host}` — Zitadel routet anhand des Host-
|
|
# Headers; ohne das sieht es den Upstream-Container-Hostname und failt.
|
|
"auth.konnektor.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
reverse_proxy 10.202.82.49:8081 {
|
|
header_up Host {host}
|
|
}
|
|
'';
|
|
};
|
|
# Mailpit Web UI — NUR aus dem LAN 10.202.82.0/24 erreichbar.
|
|
# Alle anderen IPs bekommen 403, ohne dass Mailpit jemals angerufen wird.
|
|
"mailpit.konnektor.home.lindenfelser.de" = {
|
|
extraConfig = ''
|
|
@lan client_ip 10.202.82.0/24
|
|
handle @lan {
|
|
reverse_proxy 10.202.82.49:8025
|
|
}
|
|
handle {
|
|
respond "forbidden — mailpit ist nur aus dem LAN 10.202.82.0/24 erreichbar" 403
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
########################################
|
|
# Firewall
|
|
########################################
|
|
networking.firewall.enable = true;
|
|
|
|
networking.firewall.allowedTCPPorts = [
|
|
22 # SSH
|
|
80 # HTTP (Caddy)
|
|
443 # HTTPS (Caddy)
|
|
2222 # External SSH to Gitea
|
|
];
|
|
|
|
networking.firewall.allowedUDPPorts = [
|
|
53 # DNS (AdGuardHome)
|
|
];
|
|
|
|
########################################
|
|
# NAT / Port Forwarding
|
|
########################################
|
|
networking.nat = {
|
|
enable = true;
|
|
externalInterface = "ens18";
|
|
# Hairpin NAT for LAN clients hitting gateway:2222 so replies go back via gateway
|
|
extraCommands = ''
|
|
iptables -t nat -A POSTROUTING -p tcp -d 10.202.82.6 --dport 2222 -j MASQUERADE
|
|
'';
|
|
forwardPorts = [
|
|
{
|
|
proto = "tcp";
|
|
sourcePort = 2222;
|
|
destination = "10.202.82.6:2222";
|
|
}
|
|
];
|
|
};
|
|
} |