From 4d84fe2df38f5e508349f282c793d109b57fe970 Mon Sep 17 00:00:00 2001 From: ediblerope Date: Sat, 25 Apr 2026 15:26:55 +0100 Subject: [PATCH] 7dtd: add private coop server on ports 26910-26912 Second container 7dtd-coop with its own /var/lib/7dtd-coop state dir and a configure unit that patches the server as unlisted, 2-player, distinct world seed. Co-Authored-By: Claude Opus 4.7 --- services/game-servers.nix | 82 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/services/game-servers.nix b/services/game-servers.nix index 72e6137..535263d 100644 --- a/services/game-servers.nix +++ b/services/game-servers.nix @@ -10,6 +10,12 @@ "d /var/lib/7dtd/lgsm 0755 root root -" "d /var/lib/7dtd/log 0755 root root -" "d /var/lib/7dtd/backups 0755 root root -" + "d /var/lib/7dtd-coop 0755 root root -" + "d /var/lib/7dtd-coop/saves 0755 root root -" + "d /var/lib/7dtd-coop/serverfiles 0755 root root -" + "d /var/lib/7dtd-coop/lgsm 0755 root root -" + "d /var/lib/7dtd-coop/log 0755 root root -" + "d /var/lib/7dtd-coop/backups 0755 root root -" ]; ## <----- 7 DAYS TO DIE ----> ## @@ -39,6 +45,30 @@ TEST_ALERT = "NO"; }; }; + + containers."7dtd-coop" = { + image = "vinanrra/7dtd-server:latest"; + volumes = [ + "/var/lib/7dtd-coop/saves:/home/sdtdserver/.local/share/7DaysToDie" + "/var/lib/7dtd-coop/serverfiles:/home/sdtdserver/serverfiles" + "/var/lib/7dtd-coop/lgsm:/home/sdtdserver/lgsm/config-lgsm/sdtdserver" + "/var/lib/7dtd-coop/log:/home/sdtdserver/log" + "/var/lib/7dtd-coop/backups:/home/sdtdserver/lgsm/backup" + ]; + ports = [ + "26910:26900/tcp" + "26910:26900/udp" + "26911:26901/udp" + "26912:26902/udp" + "127.0.0.1:8091:8080/tcp" + ]; + environment = { + START_MODE = "1"; + VERSION = "stable"; + TimeZone = "Europe/Stockholm"; + TEST_ALERT = "NO"; + }; + }; }; systemd.services."7dtd-configure" = { @@ -87,7 +117,55 @@ }; }; - networking.firewall.allowedTCPPorts = [ 26900 ]; - networking.firewall.allowedUDPPorts = [ 26900 26901 26902 ]; + systemd.services."7dtd-coop-configure" = { + description = "Patch 7DTD-coop sdtdserver.xml on first install"; + after = [ "docker-7dtd-coop.service" ]; + wants = [ "docker-7dtd-coop.service" ]; + wantedBy = [ "multi-user.target" ]; + path = with pkgs; [ gnused coreutils systemd ]; + script = '' + MARKER=/var/lib/7dtd-coop/.configured + CONFIG=/var/lib/7dtd-coop/serverfiles/sdtdserver.xml + if [ -f "$MARKER" ]; then + echo "Already configured; skipping." + exit 0 + fi + echo "Waiting for $CONFIG (install can take 15+ minutes on first boot)..." + for i in $(seq 1 180); do + [ -f "$CONFIG" ] && break + sleep 10 + done + if [ ! -f "$CONFIG" ]; then + echo "Timed out waiting for $CONFIG; will retry next boot." + exit 1 + fi + + set_prop() { + sed -i "s|