From b397a8533600d3d95b9ba5e62ffd104014f794be Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 00:02:49 +0100 Subject: [PATCH 1/7] Update Traefik configuration for Wings service domain to use another one instead ("thanks" cloudflare) and add file service. --- nix-system-configs/modules/system/traefik.nix | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/nix-system-configs/modules/system/traefik.nix b/nix-system-configs/modules/system/traefik.nix index 7725c75..92b089e 100644 --- a/nix-system-configs/modules/system/traefik.nix +++ b/nix-system-configs/modules/system/traefik.nix @@ -7,7 +7,7 @@ choose = paths: builtins.head (builtins.filter (p: builtins.pathExists p) paths); # Domain and Cloudflare DDNS records configured here. Update this list to add/remove records. domain = "prg-radio.org"; - records = ["git" "grafana" "anubis" "wavelog" "pelican" "partdb" "mail" "mailadmin" "@" "test" "minecraft" "wings1.pelican"]; + records = ["git" "grafana" "anubis" "wavelog" "pelican" "partdb" "mail" "mailadmin" "@" "test" "minecraft" "wings1"]; recordsStr = lib.concatStringsSep " " records; zoneId = "9fde8d0fa53502f2d1b7e0b1d3765d49"; envFile = "/home/traefikprg/cloudflare/cloudflare.env"; @@ -379,12 +379,19 @@ in { # Wings panel - exposes the Wings wings = { - rule = "Host(`wings1.pelican.prg-radio.org`)"; + rule = "Host(`wings1.prg-radio.org`)"; service = "wings-pelican"; entryPoints = ["websecure"]; tls = {certresolver = "acme";}; }; + wings-file = { + rule = "Host(`wings1.prg-radio.org`)"; + service = "wings-pelican-file"; + entryPoints = ["websecure"]; + tls = {certresolver = "acme";}; + }; + # Matrix HTTP router for client requests (Element etc.) matrix = { rule = "Host(`lgbtq.prg-radio.org`)"; @@ -491,13 +498,20 @@ in { passHostHeader = true; }; - wings-pelican.loadBalancer = { + wings-pelican-file.loadBalancer = { servers = [ {url = "http://10.1.1.249:2022";} ]; passHostHeader = true; }; + wings-pelican.loadBalancer = { + servers = [ + {url = "http://10.1.1.249:8080";} + ]; + passHostHeader = true; + }; + # Mail JMAP HTTP backend mail-jmap.loadBalancer = { servers = [{url = "http://10.1.1.15:8080";}]; From 617e3a0e4594ea4f5b26a984d50bfa48c06ec6fb Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 00:51:31 +0100 Subject: [PATCH 2/7] Add debug flag to Wings command in Docker configuration --- nix-system-configs/modules/songsheet/wavelog/docker-compose.nix | 2 +- nix-system-configs/modules/songsheet/wavelog/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix index 4ff4be8..b842188 100644 --- a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix +++ b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix @@ -148,7 +148,7 @@ "8080:8080/tcp" "2022:2022/tcp" ]; - cmd = ["wings" "--ignore-certificate-errors"]; + cmd = ["wings" "--ignore-certificate-errors" "--debug"]; log-driver = "journald"; extraOptions = [ "--network-alias=wings" diff --git a/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml b/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml index 9425be8..516b02f 100644 --- a/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml +++ b/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml @@ -118,7 +118,7 @@ services: - "8080:8080" - "2022:2022" stdin_open: true - command: ["wings", "--ignore-certificate-errors"] + command: ["wings", "--ignore-certificate-errors", "--debug"] tty: true environment: TZ: Europe/Copenhagen From 676f8aaa0323f364299bfc170a01111a8cdde60e Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 01:53:52 +0100 Subject: [PATCH 3/7] Fix ips and ports of traefik, namely pelican wings ones. --- nix-system-configs/modules/system/traefik.nix | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/nix-system-configs/modules/system/traefik.nix b/nix-system-configs/modules/system/traefik.nix index 92b089e..891096f 100644 --- a/nix-system-configs/modules/system/traefik.nix +++ b/nix-system-configs/modules/system/traefik.nix @@ -296,6 +296,11 @@ in { address = "[::]:993"; }; + # SMPT TCP entrypoint (For Pelican's Wings file service) + pelican-wings-file = { + address = "[::]:25565"; + }; + # Minecraft TCP entrypoint (Minecraft Java Edition default port) minecraft = { address = "[::]:25565"; @@ -385,12 +390,6 @@ in { tls = {certresolver = "acme";}; }; - wings-file = { - rule = "Host(`wings1.prg-radio.org`)"; - service = "wings-pelican-file"; - entryPoints = ["websecure"]; - tls = {certresolver = "acme";}; - }; # Matrix HTTP router for client requests (Element etc.) matrix = { @@ -498,12 +497,6 @@ in { passHostHeader = true; }; - wings-pelican-file.loadBalancer = { - servers = [ - {url = "http://10.1.1.249:2022";} - ]; - passHostHeader = true; - }; wings-pelican.loadBalancer = { servers = [ @@ -591,7 +584,12 @@ in { entryPoints = ["imaps"]; tls = {passthrough = true;}; }; - + pelican-wings-file = { + # Use catch-all SNI rule because Minecraft clients don't use TLS/SNI + rule = "HostSNI(`*`)"; + service = "pelican-wings-file"; + entryPoints = ["pelican-wings-file"]; + }; # TCP router for Minecraft (plain TCP on 25565) minecraft = { # Use catch-all SNI rule because Minecraft clients don't use TLS/SNI @@ -645,6 +643,13 @@ in { servers = [{address = "10.1.1.15:993";}]; }; + # TCP service for SMTP of the Pelican + pelican-wings-file.loadBalancer = { + servers = [ + {address = "10.1.1.249:2022";} + ]; + }; + # TCP service for Minecraft minecraft.loadBalancer = { servers = [ @@ -654,10 +659,10 @@ in { # TCP game services openra.loadBalancer = { - servers = [{address = "10.1.1.244:1234";}]; + servers = [{address = "10.1.1.249:1234";}]; }; openttd.loadBalancer = { - servers = [{address = "10.1.1.244:3979";}]; + servers = [{address = "10.1.1.249:3979";}]; }; }; @@ -707,16 +712,16 @@ in { # UDP game services (Valheim and Xonotic) "valheim-2456".loadBalancer = { - servers = [{address = "10.1.1.244:2456";}]; + servers = [{address = "10.1.1.249:2456";}]; }; "valheim-2457".loadBalancer = { - servers = [{address = "10.1.1.244:2457";}]; + servers = [{address = "10.1.1.249:2457";}]; }; "valheim-2458".loadBalancer = { - servers = [{address = "10.1.1.244:2458";}]; + servers = [{address = "10.1.1.249:2458";}]; }; xonotic.loadBalancer = { - servers = [{address = "10.1.1.244:26000";}]; + servers = [{address = "10.1.1.249:26000";}]; }; }; }; From 3321243a6e261af0a7b4fe176214f32386a4a3e2 Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 01:58:02 +0100 Subject: [PATCH 4/7] Derp --- nix-system-configs/modules/system/traefik.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix-system-configs/modules/system/traefik.nix b/nix-system-configs/modules/system/traefik.nix index 891096f..20212eb 100644 --- a/nix-system-configs/modules/system/traefik.nix +++ b/nix-system-configs/modules/system/traefik.nix @@ -298,7 +298,7 @@ in { # SMPT TCP entrypoint (For Pelican's Wings file service) pelican-wings-file = { - address = "[::]:25565"; + address = "[::]:2022"; }; # Minecraft TCP entrypoint (Minecraft Java Edition default port) From cada6f46726e044d5752d433f4cd220563717550 Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 02:29:19 +0100 Subject: [PATCH 5/7] Derp --- .../modules/songsheet/wavelog/docker-compose.nix | 2 +- .../modules/songsheet/wavelog/docker-compose.yml | 4 ++-- nix-system-configs/modules/system/traefik.nix | 11 +++++------ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix index b842188..4ff4be8 100644 --- a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix +++ b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix @@ -148,7 +148,7 @@ "8080:8080/tcp" "2022:2022/tcp" ]; - cmd = ["wings" "--ignore-certificate-errors" "--debug"]; + cmd = ["wings" "--ignore-certificate-errors"]; log-driver = "journald"; extraOptions = [ "--network-alias=wings" diff --git a/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml b/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml index 516b02f..f82b7eb 100644 --- a/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml +++ b/nix-system-configs/modules/songsheet/wavelog/docker-compose.yml @@ -115,10 +115,10 @@ services: container_name: pelican_wings restart: unless-stopped ports: - - "8080:8080" + - "8443:8443" - "2022:2022" stdin_open: true - command: ["wings", "--ignore-certificate-errors", "--debug"] + command: ["wings", "--ignore-certificate-errors"] tty: true environment: TZ: Europe/Copenhagen diff --git a/nix-system-configs/modules/system/traefik.nix b/nix-system-configs/modules/system/traefik.nix index 20212eb..35e44ee 100644 --- a/nix-system-configs/modules/system/traefik.nix +++ b/nix-system-configs/modules/system/traefik.nix @@ -497,12 +497,10 @@ in { passHostHeader = true; }; - wings-pelican.loadBalancer = { - servers = [ - {url = "http://10.1.1.249:8080";} - ]; + servers = [ { url = "https://10.1.1.249:8443"; } ]; passHostHeader = true; + serversTransport = "wings-transport"; }; # Mail JMAP HTTP backend @@ -1017,8 +1015,9 @@ in { }; }; - networking.firewall.allowedTCPPorts = [80 443 10022 30033 8448 9001 3001 993 465 25 25565 24454]; - networking.firewall.allowedUDPPorts = [80 443 9987 9001 3001 993 465 25 25565 24454]; + # Allow common HTTP/S and control ports, + networking.firewall.allowedTCPPorts = [80 443 10022 30033 8448 9001 3001 993 465 25 25565 24454 2456 2457 2458 26000 1234 3979 2022]; + networking.firewall.allowedUDPPorts = [80 443 9987 9001 3001 993 465 25 25565 24454 2022 2456 2457 2458 26000 1234 3979 2022]; system.stateVersion = "25.11"; }; From 1a5c5b79042227af0044097dd6893ba41d2aefb3 Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 02:30:30 +0100 Subject: [PATCH 6/7] Derp again --- nix-system-configs/modules/songsheet/wavelog/docker-compose.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix index 4ff4be8..ce3f8ac 100644 --- a/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix +++ b/nix-system-configs/modules/songsheet/wavelog/docker-compose.nix @@ -145,7 +145,7 @@ "/var/log/pelican/:/var/log/pelican:rw" ]; ports = [ - "8080:8080/tcp" + "8443:8443/tcp" "2022:2022/tcp" ]; cmd = ["wings" "--ignore-certificate-errors"]; From 5ca27749600092dbbb06c787cdee9b9444023991 Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Mon, 23 Mar 2026 02:37:42 +0100 Subject: [PATCH 7/7] Derp again again --- nix-system-configs/modules/system/traefik.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/nix-system-configs/modules/system/traefik.nix b/nix-system-configs/modules/system/traefik.nix index 35e44ee..74e59c8 100644 --- a/nix-system-configs/modules/system/traefik.nix +++ b/nix-system-configs/modules/system/traefik.nix @@ -390,7 +390,6 @@ in { tls = {certresolver = "acme";}; }; - # Matrix HTTP router for client requests (Element etc.) matrix = { rule = "Host(`lgbtq.prg-radio.org`)"; @@ -494,13 +493,12 @@ in { servers = [ {url = "http://10.1.1.249:8070";} ]; - passHostHeader = true; }; wings-pelican.loadBalancer = { - servers = [ { url = "https://10.1.1.249:8443"; } ]; - passHostHeader = true; - serversTransport = "wings-transport"; + servers = [ + {url = "https://10.1.1.249:8443";} + ]; }; # Mail JMAP HTTP backend