From 39f0026f52f8c8920cc54efdc79504bbc890b84b Mon Sep 17 00:00:00 2001 From: Chris Toph Date: Sat, 14 Jun 2025 01:17:25 -0400 Subject: [PATCH] Replace caddy proxies with Pangolin and Newt; initial work in proxy - Adds new container services for pangolin and newt - Removes caddy configuration for proxy --- hosts/global/core/default.nix | 1 + hosts/x86/proxy/config/adguard.nix | 5 +- hosts/x86/proxy/config/caddy.nix | 72 ------ hosts/x86/proxy/config/newt.nix | 8 + hosts/x86/proxy/config/pangolin/compose.nix | 156 +++++++++++++ hosts/x86/proxy/config/pangolin/default.nix | 230 ++++++++++++++++++++ modules/nixos/newt.nix | 129 +++++++++++ secrets.nix | Bin 22620 -> 22746 bytes 8 files changed, 527 insertions(+), 74 deletions(-) delete mode 100644 hosts/x86/proxy/config/caddy.nix create mode 100644 hosts/x86/proxy/config/newt.nix create mode 100644 hosts/x86/proxy/config/pangolin/compose.nix create mode 100644 hosts/x86/proxy/config/pangolin/default.nix create mode 100644 modules/nixos/newt.nix diff --git a/hosts/global/core/default.nix b/hosts/global/core/default.nix index cd86c93..ca0c5eb 100644 --- a/hosts/global/core/default.nix +++ b/hosts/global/core/default.nix @@ -17,6 +17,7 @@ in (map lib.custom.relativeToRoot [ "modules/global" + "modules/nixos" ]) ]; diff --git a/hosts/x86/proxy/config/adguard.nix b/hosts/x86/proxy/config/adguard.nix index 6a67d17..6868b7c 100644 --- a/hosts/x86/proxy/config/adguard.nix +++ b/hosts/x86/proxy/config/adguard.nix @@ -5,7 +5,7 @@ */ { # Containers - virtualisation.oci-containers.containers."adguard-adguard" = { + virtualisation.oci-containers.containers."adguard" = { image = "adguard/adguardhome:latest"; volumes = [ "/etc/adguard/confdir:/opt/adguardhome/conf:rw" @@ -24,7 +24,8 @@ "--network=adguard_default" ]; }; - systemd.services."docker-adguard-adguard" = { + + systemd.services."docker-adguard" = { serviceConfig = { Restart = lib.mkOverride 90 "always"; RestartMaxDelaySec = lib.mkOverride 90 "1m"; diff --git a/hosts/x86/proxy/config/caddy.nix b/hosts/x86/proxy/config/caddy.nix deleted file mode 100644 index 87d47ea..0000000 --- a/hosts/x86/proxy/config/caddy.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - services.caddy = { - enable = true; - virtualHosts = { - "adguard.ryot.foo" = { - useACMEHost = "ryot.foo"; - extraConfig = '' - reverse_proxy localhost:3000 - ''; - }; - - "cloudflared.ryot.foo" = { - useACMEHost = "ryot.foo"; - extraConfig = '' - reverse_proxy localhost:14333 - ''; - }; - - ## openWRT ## - - "wrt.ryot.foo" = { - useACMEHost = "ryot.foo"; - extraConfig = '' - reverse_proxy http://104.40.3.1 { - header_up Host {host} - header_up X-Real-IP {remote} - header_up X-Forwarded-For {remote} - header_up X-Forwarded-Proto {scheme} - header_up X-Forwarded-Port {server_port} - } - ''; - }; - - ## PROXMOX NODES ## - - "ochre.ryot.foo" = { - useACMEHost = "ryot.foo"; - extraConfig = '' - reverse_proxy https://104.40.3.2:8006 { - transport http { - tls_insecure_skip_verify - # optional: tls_server_name 104.40.3.2 - } - # ensure Proxmox sees the right Host - header_up Host {host} - header_up X-Real-IP {remote} - header_up X-Forwarded-For {remote} - header_up X-Forwarded-Proto {scheme} - header_up X-Forwarded-Port {server_port} - } - ''; - }; - - "pve.ryot.foo" = { - useACMEHost = "ryot.foo"; - extraConfig = '' - reverse_proxy https://104.40.3.3:8006 { - transport http { - tls_insecure_skip_verify - # optional: tls_server_name 104.40.3.3 - } - header_up Host {host} - header_up X-Real-IP {remote} - header_up X-Forwarded-For {remote} - header_up X-Forwarded-Proto {scheme} - header_up X-Forwarded-Port {server_port} - } - ''; - }; - }; - }; -} diff --git a/hosts/x86/proxy/config/newt.nix b/hosts/x86/proxy/config/newt.nix new file mode 100644 index 0000000..9d12bb0 --- /dev/null +++ b/hosts/x86/proxy/config/newt.nix @@ -0,0 +1,8 @@ +{ + services.newt = { + enable = true; + id = "1jh3j2bhucdiq09"; + secret = "f51n59bjwbg9c1wuyjg62my634mqqs1y199cwd1bxq3bes6p"; + useHostNetwork = true; + }; +} diff --git a/hosts/x86/proxy/config/pangolin/compose.nix b/hosts/x86/proxy/config/pangolin/compose.nix new file mode 100644 index 0000000..4e3da1d --- /dev/null +++ b/hosts/x86/proxy/config/pangolin/compose.nix @@ -0,0 +1,156 @@ +# Auto-generated using compose2nix v0.3.1. +{ + pkgs, + lib, + config, + ... +}: + +{ + # Containers + virtualisation.oci-containers.containers."gerbil" = { + image = "fosrl/gerbil:1.0.0"; + volumes = [ + "/etc/pangolin/config:/var/config:rw" + ]; + ports = [ + "51820:51820/udp" + "443:443/tcp" + "222:222/tcp" + "80:80/tcp" + ]; + cmd = [ + "--reachableAt=http://gerbil:3003" + "--generateAndSaveKeyTo=/var/config/key" + "--remoteConfig=http://pangolin:3001/api/v1/gerbil/get-config" + "--reportBandwidthTo=http://pangolin:3001/api/v1/gerbil/receive-bandwidth" + ]; + dependsOn = [ + "pangolin" + ]; + log-driver = "journald"; + extraOptions = [ + "--cap-add=NET_ADMIN" + # "--cap-add=SYS_MODULE" + "--network-alias=gerbil" + "--network=pangolin" + ]; + }; + systemd.services."docker-gerbil" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-pangolin.service" + ]; + requires = [ + "docker-network-pangolin.service" + ]; + partOf = [ + "docker-compose-pangolin-root.target" + ]; + wantedBy = [ + "docker-compose-pangolin-root.target" + ]; + }; + virtualisation.oci-containers.containers."pangolin" = { + image = "fosrl/pangolin:1.5.1"; + volumes = [ + "/etc/pangolin/config:/app/config:rw" + ]; + log-driver = "journald"; + extraOptions = [ + "--health-cmd=[\"curl\", \"-f\", \"http://localhost:3001/api/v1/\"]" + "--health-interval=3s" + "--health-retries=15" + "--health-timeout=3s" + "--network-alias=pangolin" + "--network=pangolin" + ]; + }; + + systemd.services."docker-pangolin" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-pangolin.service" + "pangolin-config-sync.service" + ]; + requires = [ + "docker-network-pangolin.service" + "pangolin-config-sync.service" + ]; + partOf = [ + "docker-compose-pangolin-root.target" + ]; + wantedBy = [ + "docker-compose-pangolin-root.target" + ]; + }; + + virtualisation.oci-containers.containers."traefik" = { + image = "traefik:v3.4.0"; + environment = { + "CLOUDFLARE_DNS_API_TOKEN" = config.secretsSpec.api.cloudflare; + }; + volumes = [ + "/etc/pangolin/config/letsencrypt:/letsencrypt:rw" + "/etc/pangolin/config/traefik:/etc/traefik:ro" + ]; + cmd = [ "--configFile=/etc/traefik/traefik_config.yml" ]; + dependsOn = [ + "gerbil" + "pangolin" + ]; + log-driver = "journald"; + extraOptions = [ + "--network=container:gerbil" + ]; + }; + systemd.services."docker-traefik" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + partOf = [ + "docker-compose-pangolin-root.target" + ]; + wantedBy = [ + "docker-compose-pangolin-root.target" + ]; + }; + + # Networks + systemd.services."docker-network-pangolin" = { + path = [ pkgs.docker ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStop = "docker network rm -f pangolin"; + }; + script = '' + docker network inspect pangolin || docker network create pangolin --driver=bridge + ''; + partOf = [ "docker-compose-pangolin-root.target" ]; + wantedBy = [ "docker-compose-pangolin-root.target" ]; + }; + + # Root service + # When started, this will automatically create all resources and start + # the containers. When stopped, this will teardown all resources. + systemd.targets."docker-compose-pangolin-root" = { + unitConfig = { + Description = "Root target generated by compose2nix."; + }; + wantedBy = [ "multi-user.target" ]; + }; +} diff --git a/hosts/x86/proxy/config/pangolin/default.nix b/hosts/x86/proxy/config/pangolin/default.nix new file mode 100644 index 0000000..f41fa69 --- /dev/null +++ b/hosts/x86/proxy/config/pangolin/default.nix @@ -0,0 +1,230 @@ +{ + lib, + config, + pkgs, + ... +}: +let + smtp = config.secretsSpec.users.admin.smtp; + pangolin = config.secretsSpec.docker.pangolin; + + # Create the configuration files as derivations + pangolinConfigFile = pkgs.writeText "pangolin-config.yml" '' + app: + dashboard_url: "https://pangolin.ryot.foo" + log_level: "debug" + save_logs: true + + domains: + domain1: + base_domain: "ryot.foo" + cert_resolver: "letsencrypt" + prefer_wildcard_cert: true + domain2: + base_domain: "toph.cc" + cert_resolver: "letsencrypt" + prefer_wildcard_cert: true + domain3: + base_domain: "goldenlemon.cc" + cert_resolver: "letsencrypt" + prefer_wildcard_cert: true + domain4: + base_domain: "kwahson.xyz" + cert_resolver: "letsencrypt" + prefer_wildcard_cert: true + + server: + external_port: 3000 + internal_port: 3001 + next_port: 3002 + internal_hostname: "pangolin" + session_cookie_name: "p_session_token" + resource_access_token_param: "p_token" + resource_access_token_headers: + id: "P-Access-Token-Id" + token: "P-Access-Token" + resource_session_request_param: "p_session_request" + secret: "${pangolin.SECRET}" + + traefik: + cert_resolver: "letsencrypt" + http_entrypoint: "web" + https_entrypoint: "websecure" + + gerbil: + start_port: 51820 + base_endpoint: "pangolin.ryot.foo" + use_subdomain: false + block_size: 24 + site_block_size: 30 + subnet_group: 104.40.3.1/24 + + rate_limits: + global: + window_minutes: 1 + max_requests: 100 + + email: + smtp_host: "${smtp.host}" + smtp_port: ${toString smtp.port} + smtp_user: "${smtp.user}" + smtp_pass: "${smtp.password}" + no_reply: "no-reply@ryot.foo" + + users: + server_admin: + email: "${pangolin.USER}" + password: "${pangolin.PASSWORD}" + + flags: + require_email_verification: true + disable_signup_without_invite: true + disable_user_create_org: true + allow_raw_resources: true + allow_base_domain_resources: true + ''; + + traefikConfigFile = pkgs.writeText "traefik-config.yml" '' + api: + insecure: true + dashboard: true + + providers: + http: + endpoint: "http://pangolin:3001/api/v1/traefik-config" + pollInterval: "5s" + file: + filename: "/etc/traefik/dynamic_config.yml" + + experimental: + plugins: + badger: + moduleName: "github.com/fosrl/badger" + version: "v1.2.0" + + log: + level: "DEBUG" + format: "common" + + certificatesResolvers: + letsencrypt: + acme: + dnsChallenge: + provider: cloudflare + delayBeforeCheck: 60 + resolvers: + - "1.1.1.1:53" + - "8.8.8.8:53" + email: chris@toph.cc + storage: "/letsencrypt/acme.json" + caServer: "https://acme-v02.api.letsencrypt.org/directory" + + entryPoints: + web: + address: ":80" + websecure: + address: ":443" + transport: + respondingTimeouts: + readTimeout: "30m" + http: + tls: + certResolver: "letsencrypt" + tcp-222: + address: ":222/tcp" + + serversTransport: + insecureSkipVerify: true + ''; + + dynamicConfigFile = pkgs.writeText "dynamic-config.yml" '' + http: + middlewares: + redirect-to-https: + redirectScheme: + scheme: https + + routers: + # HTTP to HTTPS redirect router + main-app-router-redirect: + rule: "Host(`pangolin.ryot.foo`)" + service: next-service + entryPoints: + - web + middlewares: + - redirect-to-https + + # Next.js router + next-router: + rule: "Host(`pangolin.ryot.foo`) && !PathPrefix(`/api/v1`)" + service: next-service + entryPoints: + - websecure + tls: + certResolver: letsencrypt + domains: + - main: "ryot.foo" + sans: + - "*.ryot.foo" + + # API router + api-router: + rule: "Host(`pangolin.ryot.foo`) && PathPrefix(`/api/v1`)" + service: api-service + entryPoints: + - websecure + tls: + certResolver: letsencrypt + + # WebSocket router + ws-router: + rule: "Host(`pangolin.ryot.foo`)" + service: api-service + entryPoints: + - websecure + tls: + certResolver: letsencrypt + + services: + next-service: + loadBalancer: + servers: + - url: "http://pangolin:3002" + + api-service: + loadBalancer: + servers: + - url: "http://pangolin:3000" + ''; + + keyFile = pkgs.writeText "pangolin-key" pangolin.KEY; +in +{ + imports = lib.custom.scanPaths ./.; + + boot.kernelModules = [ "wireguard" ]; + + ## Tmp files and Service to Avoid symlinks + systemd.tmpfiles.rules = [ + "d /etc/pangolin/config 0755 root root -" + "d /etc/pangolin/config/traefik 0755 root root -" + "d /etc/pangolin/config/letsencrypt 0755 root root -" + ]; + + systemd.services.pangolin-config-sync = { + description = "Sync Pangolin configuration files"; + wantedBy = [ "multi-user.target" ]; + before = [ "docker-compose-pangolin-root.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + cp ${keyFile} /etc/pangolin/config/key + chmod 0600 /etc/pangolin/config/key + cp ${pangolinConfigFile} /etc/pangolin/config/config.yml + cp ${traefikConfigFile} /etc/pangolin/config/traefik/traefik_config.yml + cp ${dynamicConfigFile} /etc/pangolin/config/traefik/dynamic_config.yml + ''; + }; +} diff --git a/modules/nixos/newt.nix b/modules/nixos/newt.nix new file mode 100644 index 0000000..e1d97ab --- /dev/null +++ b/modules/nixos/newt.nix @@ -0,0 +1,129 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.services.newt; +in +{ + options.services.newt = { + enable = mkEnableOption "Newt container service"; + + id = mkOption { + type = types.str; + description = "Newt ID for authentication"; + }; + + image = mkOption { + type = types.str; + default = "fosrl/newt"; + description = "Docker image to use for Newt"; + }; + + networkName = mkOption { + type = types.str; + default = "newt"; + description = "Docker network name to use"; + }; + + networkAlias = mkOption { + type = types.str; + default = "newt"; + description = "Network alias for the container"; + }; + + pangolinEndpoint = mkOption { + type = types.str; + default = "https://pangolin.ryot.foo"; + description = "Pangolin endpoint URL"; + }; + + secret = mkOption { + type = types.str; + description = "Newt secret for authentication"; + }; + + useHostNetwork = mkOption { + type = types.bool; + default = false; + description = "Whether to use host networking instead of Docker networks"; + }; + }; + + config = mkIf cfg.enable { + # Container + virtualisation.oci-containers.containers."newt" = { + image = cfg.image; + environment = { + "DOCKER_SOCKET" = "/var/run/docker.sock"; + "NEWT_ID" = cfg.id; + "NEWT_SECRET" = cfg.secret; + "PANGOLIN_ENDPOINT" = cfg.pangolinEndpoint; + }; + volumes = [ + "/var/run/docker.sock:/var/run/docker.sock:rw" + ]; + log-driver = "journald"; + extraOptions = + if cfg.useHostNetwork then + [ + "--network=host" + ] + else + [ + "--network-alias=${cfg.networkAlias}" + "--network=${cfg.networkName}" + ]; + }; + + # Container service with proper dependencies + systemd.services."docker-newt" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = mkIf (!cfg.useHostNetwork) [ + "docker-network-${cfg.networkName}.service" + ]; + requires = mkIf (!cfg.useHostNetwork) [ + "docker-network-${cfg.networkName}.service" + ]; + partOf = [ + "docker-compose-newt-root.target" + ]; + wantedBy = [ + "docker-compose-newt-root.target" + ]; + }; + + # Docker network service (only when not using host network) + systemd.services."docker-network-${cfg.networkName}" = mkIf (!cfg.useHostNetwork) { + path = [ pkgs.docker ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStop = "docker network rm -f ${cfg.networkName}"; + }; + script = '' + docker network inspect ${cfg.networkName} || docker network create ${cfg.networkName} + ''; + partOf = [ "docker-compose-newt-root.target" ]; + wantedBy = [ "docker-compose-newt-root.target" ]; + }; + + # Root target + systemd.targets."docker-compose-newt-root" = { + unitConfig = { + Description = "Root target generated by compose2nix."; + }; + wantedBy = [ "multi-user.target" ]; + }; + }; +} diff --git a/secrets.nix b/secrets.nix index 5ff1f9c6058c130572e37eb2a7bf2dcfebb73fbc..b2cb729f99dccb3a9b9b14f40bd6be123d7810d7 100644 GIT binary patch literal 22746 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%0DaBu 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%0D4N;1+E93g@Y>AaC3?Wh(k14?t>Lc7n;G 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