Compare commits

...

7 commits

3 changed files with 32 additions and 16 deletions

View file

@ -145,7 +145,7 @@
"/var/log/pelican/:/var/log/pelican:rw" "/var/log/pelican/:/var/log/pelican:rw"
]; ];
ports = [ ports = [
"8080:8080/tcp" "8443:8443/tcp"
"2022:2022/tcp" "2022:2022/tcp"
]; ];
cmd = ["wings" "--ignore-certificate-errors"]; cmd = ["wings" "--ignore-certificate-errors"];

View file

@ -115,7 +115,7 @@ services:
container_name: pelican_wings container_name: pelican_wings
restart: unless-stopped restart: unless-stopped
ports: ports:
- "8080:8080" - "8443:8443"
- "2022:2022" - "2022:2022"
stdin_open: true stdin_open: true
command: ["wings", "--ignore-certificate-errors"] command: ["wings", "--ignore-certificate-errors"]

View file

@ -7,7 +7,7 @@
choose = paths: builtins.head (builtins.filter (p: builtins.pathExists p) paths); 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 and Cloudflare DDNS records configured here. Update this list to add/remove records.
domain = "prg-radio.org"; 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; recordsStr = lib.concatStringsSep " " records;
zoneId = "9fde8d0fa53502f2d1b7e0b1d3765d49"; zoneId = "9fde8d0fa53502f2d1b7e0b1d3765d49";
envFile = "/home/traefikprg/cloudflare/cloudflare.env"; envFile = "/home/traefikprg/cloudflare/cloudflare.env";
@ -296,6 +296,11 @@ in {
address = "[::]:993"; address = "[::]:993";
}; };
# SMPT TCP entrypoint (For Pelican's Wings file service)
pelican-wings-file = {
address = "[::]:2022";
};
# Minecraft TCP entrypoint (Minecraft Java Edition default port) # Minecraft TCP entrypoint (Minecraft Java Edition default port)
minecraft = { minecraft = {
address = "[::]:25565"; address = "[::]:25565";
@ -379,7 +384,7 @@ in {
# Wings panel - exposes the Wings # Wings panel - exposes the Wings
wings = { wings = {
rule = "Host(`wings1.pelican.prg-radio.org`)"; rule = "Host(`wings1.prg-radio.org`)";
service = "wings-pelican"; service = "wings-pelican";
entryPoints = ["websecure"]; entryPoints = ["websecure"];
tls = {certresolver = "acme";}; tls = {certresolver = "acme";};
@ -488,14 +493,12 @@ in {
servers = [ servers = [
{url = "http://10.1.1.249:8070";} {url = "http://10.1.1.249:8070";}
]; ];
passHostHeader = true;
}; };
wings-pelican.loadBalancer = { wings-pelican.loadBalancer = {
servers = [ servers = [
{url = "http://10.1.1.249:2022";} {url = "https://10.1.1.249:8443";}
]; ];
passHostHeader = true;
}; };
# Mail JMAP HTTP backend # Mail JMAP HTTP backend
@ -577,7 +580,12 @@ in {
entryPoints = ["imaps"]; entryPoints = ["imaps"];
tls = {passthrough = true;}; 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) # TCP router for Minecraft (plain TCP on 25565)
minecraft = { minecraft = {
# Use catch-all SNI rule because Minecraft clients don't use TLS/SNI # Use catch-all SNI rule because Minecraft clients don't use TLS/SNI
@ -631,6 +639,13 @@ in {
servers = [{address = "10.1.1.15:993";}]; 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 # TCP service for Minecraft
minecraft.loadBalancer = { minecraft.loadBalancer = {
servers = [ servers = [
@ -640,10 +655,10 @@ in {
# TCP game services # TCP game services
openra.loadBalancer = { openra.loadBalancer = {
servers = [{address = "10.1.1.244:1234";}]; servers = [{address = "10.1.1.249:1234";}];
}; };
openttd.loadBalancer = { openttd.loadBalancer = {
servers = [{address = "10.1.1.244:3979";}]; servers = [{address = "10.1.1.249:3979";}];
}; };
}; };
@ -693,16 +708,16 @@ in {
# UDP game services (Valheim and Xonotic) # UDP game services (Valheim and Xonotic)
"valheim-2456".loadBalancer = { "valheim-2456".loadBalancer = {
servers = [{address = "10.1.1.244:2456";}]; servers = [{address = "10.1.1.249:2456";}];
}; };
"valheim-2457".loadBalancer = { "valheim-2457".loadBalancer = {
servers = [{address = "10.1.1.244:2457";}]; servers = [{address = "10.1.1.249:2457";}];
}; };
"valheim-2458".loadBalancer = { "valheim-2458".loadBalancer = {
servers = [{address = "10.1.1.244:2458";}]; servers = [{address = "10.1.1.249:2458";}];
}; };
xonotic.loadBalancer = { xonotic.loadBalancer = {
servers = [{address = "10.1.1.244:26000";}]; servers = [{address = "10.1.1.249:26000";}];
}; };
}; };
}; };
@ -998,8 +1013,9 @@ in {
}; };
}; };
networking.firewall.allowedTCPPorts = [80 443 10022 30033 8448 9001 3001 993 465 25 25565 24454]; # Allow common HTTP/S and control ports,
networking.firewall.allowedUDPPorts = [80 443 9987 9001 3001 993 465 25 25565 24454]; 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"; system.stateVersion = "25.11";
}; };