v1.6.0 — Version pinning, OpenTTD, crash reasons
A version-control release: pin what your servers run — the game build, the Steam branch, or the Docker image itself — always from a dropdown of real published versions, never a guessed string. Plus OpenTTD as game #24, crash explanations, and a security pass.
Game-version pinning (12 games)
Pick the game version or branch a server runs, right in its Settings, with the default always "stable/latest" so existing servers are untouched:
- Minecraft (Java) — every release + recent snapshots, live from the Mojang manifest.
- OpenTTD — every release (incl. betas), live from OpenTTD's GitHub.
- ATS / ETS2 / Life is Feudal: YO — the app's real Steam branches, live from SteamDB data (the truck sims expose per-version branches like
1.53.x). - 7 Days to Die stable/experimental · Enshrouded public/testing · Valheim stable/public-test · Palworld stable/beta-insider · V Rising current/legacy-1.0.x (Satisfactory's experimental toggle already existed).
Where a game genuinely can't be pinned (its image always installs the latest from Steam), the UI now says so explicitly instead of letting the image-tag picker masquerade as a version pin.
Docker image-tag pinning (all 24 games)
An advanced Image version card on every server: pin the game's Docker image to any published tag (Docker Hub and GHCR are queried live) — useful to roll back a bad image update. For Factorio and Terraria the tag is the game version; the card's per-game note explains exactly what a pin does and doesn't control on each game.
Crashed servers explain themselves
When a server dies, its Overview now shows why: the container's exit code (or OOM kill) plus the last log lines, in a copyable banner — captured for unexpected exits, wedged starts, and failed launches alike, and cleared on the next clean start. A bad image pin now reads "exited with code 1: UnsupportedClassVersionError…" instead of a bare Crashed badge.
OpenTTD (game #24)
Full lifecycle on the ich777 image: create → install → start with readiness detection, backups, schedules, player-count via the game port, and the full openttd.cfg catalog (rendered fresh each start across its three config files, passwords kept out of the world-readable one).
Palworld
- Palworld (Wine): 25 → 111 settings — full coverage of every variable the ripps818 image actually renders, byte-identical env for existing servers. Community contribution by @SCSIExpress (#15) — thank you!
- Wine servers can now opt into game-file updates (
ALWAYS_UPDATE_ON_STARTin the Version tab — previously they were silently stranded on their installed build). - A curated "Popular server mods" panel in the Mods tab (PalDefender link, UE4SS guidance), since Palworld has no browsable mod store for dedicated servers.
Fixes & hardening
- Unraid first-boot fix: a blank
PUBLIC_BASE_URLfield (Unraid passes blanks as empty strings) no longer crashes the container; scheme-less values like10.0.0.5:8970now work too. Empty env vars are treated as unset across the board. Thanks @kevinduong for the report (#6). - Dependency security pass: Next.js → 15.5.21 (DoS/SSRF advisories), plus patched postcss, sharp, and socket.io-parser — clearing every high-severity audit finding.
- The runtime image no longer ships the (unused) npm CLI — removing its vulnerable bundled
node-tarand shrinking the attack surface. - OpenTTD's Overview no longer shows phantom Query/RCON/Mods rows.
Upgrading
Standard image update — no manual steps. All new version controls default to the previous behavior, so nothing changes until you pin something.