mirror of
https://codeberg.org/polyteknisk-radiogruppe/the_prg_server_configuration.git
synced 2026-06-13 18:28:55 +02:00
Implement Minecraft server
This commit is contained in:
parent
5a99568c60
commit
ec50a86329
7 changed files with 324 additions and 11 deletions
|
|
@ -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" "partdb" "mail" "mailadmin" "@" "test"];
|
||||
records = ["git" "grafana" "anubis" "wavelog" "partdb" "mail" "mailadmin" "@" "test" "minecraft"];
|
||||
recordsStr = lib.concatStringsSep " " records;
|
||||
zoneId = "9fde8d0fa53502f2d1b7e0b1d3765d49";
|
||||
envFile = "/home/traefikprg/cloudflare/cloudflare.env";
|
||||
|
|
@ -292,6 +292,16 @@ in {
|
|||
# implicit TLS IMAP (port 993) - passthrough to backend
|
||||
address = "[::]:993";
|
||||
};
|
||||
|
||||
# Minecraft TCP entrypoint (Minecraft Java Edition default port)
|
||||
minecraft = {
|
||||
address = "[::]:25565";
|
||||
};
|
||||
|
||||
# Minecraft VoiceChat UDP entrypoint (VoiceChat mod default port)
|
||||
minecraft-voice = {
|
||||
address = "[::]:24454/udp";
|
||||
};
|
||||
};
|
||||
log = {
|
||||
level = "INFO";
|
||||
|
|
@ -448,6 +458,13 @@ in {
|
|||
mail-webadmin.loadBalancer = {
|
||||
servers = [{url = "http://10.1.1.15:8081";}];
|
||||
};
|
||||
|
||||
# Minecraft service (plain TCP on 25565)
|
||||
minecraft.loadBalancer = {
|
||||
servers = [
|
||||
{url = "http://10.1.1.244:25565";}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# TCP routing for TeamSpeak
|
||||
|
|
@ -509,6 +526,14 @@ in {
|
|||
entryPoints = ["imaps"];
|
||||
tls = {passthrough = true;};
|
||||
};
|
||||
|
||||
# TCP router for Minecraft (plain TCP on 25565)
|
||||
minecraft = {
|
||||
# Use catch-all SNI rule because Minecraft clients don't use TLS/SNI
|
||||
rule = "HostSNI(`*`)";
|
||||
service = "minecraft";
|
||||
entryPoints = ["minecraft"];
|
||||
};
|
||||
};
|
||||
|
||||
tcp.services = {
|
||||
|
|
@ -543,6 +568,13 @@ in {
|
|||
proxyProtocol = {version = 2;}; # Add this line
|
||||
servers = [{address = "10.1.1.15:993";}];
|
||||
};
|
||||
|
||||
# TCP service for Minecraft
|
||||
minecraft.loadBalancer = {
|
||||
servers = [
|
||||
{address = "10.1.1.244:25565";}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# UDP routing for TeamSpeak voice
|
||||
|
|
@ -551,6 +583,12 @@ in {
|
|||
entryPoints = ["teamspeak-voice"];
|
||||
service = "teamspeak-voice";
|
||||
};
|
||||
|
||||
# UDP router for Minecraft VoiceChat mod
|
||||
minecraft-voice = {
|
||||
entryPoints = ["minecraft-voice"];
|
||||
service = "minecraft-voice";
|
||||
};
|
||||
};
|
||||
|
||||
udp.services = {
|
||||
|
|
@ -559,6 +597,12 @@ in {
|
|||
{address = "10.1.1.248:9987";}
|
||||
];
|
||||
};
|
||||
|
||||
minecraft-voice.loadBalancer = {
|
||||
servers = [
|
||||
{address = "10.1.1.244:24454";}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -817,8 +861,8 @@ in {
|
|||
|
||||
systemd.services.prg-cloudflare-ddns-updater = {
|
||||
description = "PRG Cloudflare DDNS updater";
|
||||
after = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = ["network-online.target"];
|
||||
wantedBy = ["multi-user.target"];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.bash}/bin/bash /etc/cloudflare-ddns/update.sh";
|
||||
|
|
@ -830,10 +874,10 @@ in {
|
|||
|
||||
systemd.timers.prg-cloudflare-ddns-updater = {
|
||||
description = "Run PRG Cloudflare DDNS updater hourly";
|
||||
wantedBy = [ "timers.target" ];
|
||||
wantedBy = ["timers.target"];
|
||||
timerConfig = {
|
||||
OnBootSec = "1m"; # run shortly after boot
|
||||
OnUnitActiveSec = "1h"; # then every hour
|
||||
OnBootSec = "1m"; # run shortly after boot
|
||||
OnUnitActiveSec = "1h"; # then every hour
|
||||
AccuracySec = "1m";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue