Files
nixfiles/docs/sites/colony/whale2.md
T
jackos1998 d51f2d62b6 docs: Document the deployment
Add a top-level README mapping the boxes and a full docs/ tree: topic
pages (architecture, networking, deployment), per-site box pages for
colony and home with containers nested under their hosts, remote and
mobile boxes, the installer, and the home switch fabric reference
(folded in from home-switches.md, with AGENTS.md and code comments
retargeted to its new home). Box pages carry marked assignment tables
that CI regenerates from nixos.allAssignments.

AGENTS.md points at the new docs and keeps its terse agent version of
the mechanics, referring to the topic pages for depth.
2026-07-26 19:16:43 +01:00

4.6 KiB

whale2

The colony podman/OCI host, dedicated to game servers (kept off shill so container churn and resource use stay isolated).

Role

  • Runs OCI containers via podman (virtualisation.oci-containers, netavark backend, firewall_driver = "none" so podman doesn't fight my.firewall).
  • Each game server gets its own routable address on the colony netavark network (defined in /etc/containers/networks/colony.json), which is backed by the oci interface and the prefixes.oci v4/v6 ranges; per-game addresses come from extraAssignments (valheim-oci, simpcraft-oci, …) and are passed to podman with --network=colony:ip=… (lib.my.dockerNetAssignment).
  • estuary forwards the game ports in (see firewallForwards), so the servers are reachable on the public IP as well as directly over IPv6.
  • /var/lib/containers is a dedicated XFS disk (project quotas).

Network assignments

Name Assignment IPv4 IPv6 Domain Notes
whale-vm (oci) internal 94.142.241.226/32 2a0e:97c0:4d2:11::3/64 ams1.int.nul.ie
whale-vm-oci oci 10.100.3.1/24 2a0e:97c0:4d2:13::1/64 ams1.int.nul.ie
whale-vm-routing routing 10.100.1.3/24 gw 10.100.1.1 ams1.int.nul.ie

Game servers

The OCI containers are documented here (they have no pages of their own). Addresses are the per-container extraAssignments on the oci network; ports are the public ones forwarded by estuary.

Container Address (v4 / v6 host) Ports Status
valheim 10.100.3.2 / 2a0e:97c0:4d2:13::2 2456-2457/udp running
simpcraft 10.100.3.3 / 2a0e:97c0:4d2:13::3 25565 tcp+udp running
simpcraft-staging 10.100.3.4 / 2a0e:97c0:4d2:13::4 25566 tcp disabled (commented out)
enshrouded 10.100.3.5 / 2a0e:97c0:4d2:13::5 15636-15637/udp disabled (enshrouded.nix not imported)
kevcraft 10.100.3.6 / 2a0e:97c0:4d2:13::6 25567 tcp+udp running
kinkcraft 10.100.3.7 / 2a0e:97c0:4d2:13::7 25568 tcp+udp running
graeme 10.100.3.8 / 2a0e:97c0:4d2:13::8 25569 tcp+udp running
  • valheim (valheim.nix) — lloesche/valheim-server, public server "amogus sus", world simpland2, allow-listed Steam IDs, password from agenix.
  • simpcraft (minecraft/) — itzg/minecraft-server (self-built git.nul.ie/dev/craftblock image), Modrinth "Simpcraft" modpack, whitelist + ops, 8 GiB heap. simpcraft-staging is the same setup pinned to an older pack version, currently commented out.
  • kevcraft — vanilla Minecraft 1.20.1, 4 GiB heap, extra op.
  • kinkcraft — same Simpcraft modpack as simpcraft, 6 GiB heap.
  • graeme — vanilla Minecraft on hard difficulty with its own whitelist.
  • enshrouded (enshrouded.nix) — sknnr/enshrouded-dedicated-server ("UWUshrouded"); the file exists but is commented out of whale2's imports, so the server is down (its forwards and DNS records remain).

The Minecraft containers share one whitelist/ops list and agenix env file (whale2/simpcraft.env, which also carries the RCON password).

Backups

A local borg job (services.borgbackup.jobs.simpcraft) archives the simpcraft world every ~15 minutes (offset from the usual 5-minute autosave ticks) into /var/lib/containers/backup/simpcraft, using mcrcon to save-off/save-on around each run. Retention is short (12 h + 48 hourly) — this is for quick world rollback, not disaster recovery (the oci LV itself is covered by colony's borgthin).

Notable config files