Releases: Shakes63/palisade
Release list
v1.8.0
The biggest release since 1.6 — two new games, a file manager, in-app guides, and a deep reliability pass.
New games (26 total)
- Counter-Strike 2 (joedwards32/cs2) — first shooter in the roster. Full Source RCON console, A2S player counts, CSTV settings, workshop maps, and the ~25-setting catalog. Heads-up: the depot is ~66 GiB, so the first start takes a while (the panel budgets a 2-hour startup window for it).
- Don't Starve Together (Jamesits/docker-dst-server) — master + caves shards in one container, linked automatically. Bring a free Klei cluster token (accounts.klei.com → Games → DST → Game Servers); it rides the admin-password field. If Klei's lobby has an outage the server shows Unhealthy and relinks its caves automatically once they recover.
File manager
Every server gets a Files tab: browse, edit, upload, and download anything in the instance folder — config tweaks without SSH. Path traversal is blocked server-side; operator role or better required.
Per-game guides
docs/games/in the repo: a guide for each of the 26 games — image credit, ports, how players join, first-boot expectations, and the gotchas we hit live-verifying every one.- The same guides ship inside the app as a Guide tab on every server page.
Reliability
- Unhealthy status — a Running server whose game process stops answering its status probe (or whose backend dependency is down) now shows an amber Unhealthy badge with an explanation, instead of a misleading green Running. Transitions (and recoveries) fire notifications.
- Save-on-shutdown — stopping the panel (deploys, array shutdown, host reboot) now sends a last-second world save to every running server that supports one. This never worked before: the container's init script swallowed the stop signal. Worth the release on its own.
- Patient Steam retries — crash loops caused by transient SteamCMD/CDN failures (manifest denials during Valve-side turbulence) now retry every 10 minutes instead of parking at Crashed.
- Panel DB hardening — SQLite now runs in WAL mode; the nightly self-backup respects your timezone and alerts your notification targets if it fails.
- docker.img bloat watchdog — warns when a game container starts writing gigabytes inside the container layer instead of its bind mount (bad permissions/path), before docker.img fills.
- 7 Days to Die: fixed a crash on hosts where the image's cron couldn't write its spool (#19).
UI
- Settings reorganized into tabs (General / Integrations / Backups / Users / Notifications / About) with a Save button per card — no more one-giant-scroll, and backup settings finally live next to replication.
- Per-game connect instructions and server-browser help for DST, CS2, and OpenTTD (they previously showed ARK's text); the Cluster field now only appears on ARK servers.
- About section credits all 26 image maintainers plus SteamGridDB for artwork.
Full diff: v1.7.1...v1.8.0
v1.7.1 — Palworld catalog doubled (community PR)
A small release with one big addition: the native Palworld catalog nearly doubles, thanks to a community contribution.
Palworld: 56 → 110 settings
Community PR #5 by @jdcmarques — thank you! — adds ~50 missing PalWorldSettings.ini options to the native Palworld variant, including:
- PvP tuning — Pal loss on death, death-drop looting between guilds, respawn block/penalty timers, PvP kill bonus drops, world-map item visibility
- Player options — stat-point toggles (health/attack/stamina/weight/work speed), aim assist, voice chat with distance falloff, global Palbox import/export, keep-character-after-logout
- World — the Pal randomizer (by region / fully random, with seed), supply-drop interval, item weight rate (the original #2 request), dropped-item lifetime and caps
- Guilds & bases — rejoin cooldown, auto-reset of empty guilds, base-camp limits, building owner display, build-area enforcement
- Server — region tag, account authentication, remote ban-list URL, chat rate limiting, join/leave announcements, log format
As always, defaults match the image's own, so existing servers see no behavior change until you adjust something.
Upgrading
Standard image update — no manual steps.
(The Palworld Wine variant got its equivalent expansion to 111 settings in v1.6.0 via #15 — both variants are now at full catalog coverage.)
v1.7.0 — Zomboid SandboxVars world tuning
Project Zomboid's world is now fully tunable from the panel — the follow-up to v1.6.1's server-settings expansion.
Zomboid: SandboxVars world tuning (~70 new settings)
Four new tabs on Zomboid servers expose the game's sandbox surface — the same options as single-player's Custom Sandbox menu:
- Zombies — population preset plus the real dials: speed (sprinters → shamblers), strength, toughness, infection transmission & mortality, cognition, memory, senses, activity hours, and the
ZombieConfigmultipliers (overall/start/peak population, peak day, respawn hours & fraction, group sizes, sound-follow distance). - Loot — all ten rarity categories (food, canned, weapons, firearms, ammo, medical, mechanics, survival gear, literature, other) plus loot-respawn rules.
- Survival — XP multiplier, hunger/thirst rates, nutrition, food rot & fridge effectiveness, farming & foraging abundance, injury severity, bone fractures, multi-hit melee, free trait points, starter kit, corpse cleanup.
- Vehicles — spawn rate, condition, gas amounts & consumption, locked cars, alarms, traffic jams, crash damage, easy-use mode.
- Plus world/time options in the World tab: day length, water/electricity shutoff, night darkness, the helicopter event, meta events, generators, house alarms, and the mini-map/world-map toggles.
Designed to not fight the game:
- Only settings you actually change are written to
SandboxVars.lua— your sandbox preset's values and anything an admin tunes in-game stay authoritative for everything you don't touch. (This "differs-from-default" rule was hardened during live testing and now also protects the server-INI settings from v1.6.1.) - The file is generated from your Sandbox preset on first boot, so panel tweaks apply from the second start onward. "Re-apply preset on start" intentionally overrides them.
- Every setting name is validated in CI against a real game-generated
SandboxVars.lua, so a typo'd key can never silently ship.
Zomboid now has ~190 settings in the panel across World / Zombies / Loot / Survival / Vehicles / Server / PvP & Safehouses / Chat & Voice / Backups tabs — the deepest catalog of any supported game.
Upgrading
Standard image update, no manual steps. Existing Zomboid servers are unaffected until you change a sandbox setting.
v1.6.1 — Game updates fixed, big uploads, full Zomboid settings
A bug-fix release driven entirely by your issue reports — every fix below traces to a GitHub issue. Thank you to everyone who filed one. 🙏
Game updates actually work now (#8, #12, #14)
The big one. For Palworld (both variants) and Conan Exiles, the manager disables the image's own update loop ("the manager owns updates") — but had no update path of its own, so existing servers could never move to a newer game build. Now:
- Install / Update → restart performs a real one-shot game update: the next start runs the image's SteamCMD update once, then reverts to the no-update default. Scheduled update actions do the same.
- Update detection was also fixed: the manager now finds the SteamCMD manifest wherever each image writes it, so the "Update available" badge fires correctly and clears after updating.
- Nothing updates unless you ask — pinned/default behavior is unchanged.
Credit to the detailed root-cause analysis in #12, which made this fix straightforward.
Save imports over 10 MB no longer fail (#10)
The web proxy in front of the API silently capped request bodies at 10 MB, so importing a saves archive died with a connection reset. The cap is now 1 GiB (matching the API). This also unblocks large mod .pak uploads and addon packs. Bonus: uploading a corrupt archive now returns a clear "Not a valid .tar.gz archive" error instead of a 500.
Project Zomboid: full settings page (#17)
The Zomboid settings page went from 8 settings to ~120 — the game's entire servertest.ini surface across World / Server / PvP / Safehouses / Chat & Voice / Discord bridge / Game backups / Anti-cheat tabs (B41 + B42 keys). Only settings you actually change are written to the file, so untouched settings keep the game's own defaults and in-game admin edits survive restarts.
Palworld: community listing, platforms, auto-pause (#7)
- Community server listing — the
-publiclobbyswitch, so your server can appear in Palworld's community browser (requires a join password, per the game). - Allowed platforms —
CROSSPLAY_PLATFORMS, e.g.(Steam,Xbox,PS5,Mac). - Pause when empty — freeze the server process while nobody's online (saves CPU); prerequisites are enabled automatically.
Also verified/closed
- Conan create-crash (#3) — fixed since the hardening pass; re-verified on this build.
- 7DTD cron permission warning (#18) — harmless image noise; not reproducible with Palisade's settings.
- Version pinning request (#13) — shipped in v1.6.0.
Upgrading
Standard image update, no manual steps. A database migration runs automatically on first boot.
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.
Palisade v1.5.0
A reliability, security, and onboarding release — plus a mod updater.
Mod updater
Installed mods now stay current on their own. For the two games whose mods don't auto-update on restart — Valheim (Thunderstore) and Minecraft (pinned CurseForge modpack):
- A background check flags servers with out-of-date mods, shows a "Mod update" badge on the server card, and sends a Discord/ntfy notification (new opt-in group, on by default).
- "Update all mods" applies every pending update in one click (Valheim mods tab).
- A new
update-modsscheduler action applies mod updates automatically on a cron — skipping the restart entirely when everything's already current, and honoring skip-if-players-online.
Reliability
- Startup deadline — a server that never reaches its ready marker no longer hangs in
Startingforever holding the one-server slot. After a per-game window it's marked failed, torn down, and reported, freeing the box. - Start preflight — a start is now rejected before it can do harm when the data volume is too full to install a game (clear "free up disk" message instead of a corrupted half-install), or when the game image isn't available (clear reason instead of a cryptic Docker error).
- Chaos test harness — recovery behavior (auto-restart, crash-loop cap, the startup deadline, bounded teardown) is now a red-build-if-broken property, not an assumption.
Security hardening
- Safe archive extraction — every untrusted archive (Thunderstore mod zips, uploads, backup imports) is now vetted for path-traversal (
../, absolute paths) and symlink escape before anything is written, independent of the extractor's own behavior. - Container-hardening invariant harness — every game's container spec is asserted to keep
no-new-privileges, a PID/RAM cap, no auto-restart policy, and — critically — to never mount the Docker socket. A future change that weakens hardening fails the build.
Easier to install
A blank install now just works — nothing to generate in a terminal:
SECRETS_KEYandJWT_SECRETare auto-generated and persisted on first start (stable across restarts). An explicit value still wins for bring-your-own setups.HOST_DATA_DIRis auto-detected from the manager's own data mount, so changing the App-data path can't silently break your game servers.- The Unraid template marks all three optional; the README has a 3-step Quick start. Existing installs are unaffected.
Palisade v1.4.0
New game: Palworld (Wine — full mods)
Adds a second Palworld variant that runs the Windows dedicated server under Wine (ripps818 image), sitting alongside the existing native-Linux Palworld. The reason to pick it: DLL-based mods (PalGuard, PalDefender) load here — the native Linux server can't run them.
- Full lifecycle: create → install → start → RCON, with a complete env-driven settings catalog.
- One-click UE4SS (Windows) install from the Mods tab — drops the official build into
Pal/Binaries/Win64, where Wine auto-loads it via thedwmapi.dllproxy (no LD_PRELOAD). DLL, Lua, and Blueprint mods all work;.pakcontent mods too. - Live-verified end-to-end on real hardware: UE4SS v3.0.1 loaded under Wine with the mod loader running, RCON and applied settings confirmed.
Heavier and crashier than the native variant — pick it only when you need DLL mods. Choose it as its own game (“Palworld (Wine — full mods)”) when creating a server.
Also in this release (since v1.2.1)
- SteamGridDB artwork: cover art on server cards, hero banners on server pages, and a per-server artwork picker (add a key in Settings). The icon kind also drives the Unraid Docker dashboard icon.
- Nightly channel: opt into faster prerelease builds with the
:nightlyimage tag (manual-only, self-identifies as a prerelease). - Native Palworld UE4SS: one-click, checksum-pinned, headless-safe install; fixed LD_PRELOAD scoping so it actually loads.
- Fixes: restart no longer stops a server it then refuses to start; POK images (ASA + Conan) exempted from
no-new-privilegesso they stop crash-looping.
Palisade v1.2.1
Tightens role checks: reading manager settings now requires the admin role (it exposes pfSense host/target IP and the data dir even though secrets are hidden). No other changes.
Palisade v1.2.0
Multi-user access, adoption of containers you already run, and player analytics — plus a test harness that immediately found two latent bugs.
New
Roles: admin / operator / viewer — give friends their own logins. Viewers get read-only dashboards; operators can start/stop servers, use the console, take backups, manage mods and schedules; admins can do everything, including settings, users, and deletes. Enforced server-side on every endpoint (reads open to all roles, mutations require operator, sensitive routes require admin). Manage accounts in Settings → Users.
Adopt existing containers — already running an itzg Minecraft or lloesche Valheim from Community Applications? Palisade can now find it, create a proper managed server, and copy its world data across. The original container is stopped and left in place so nothing is lost. Server list → "Adopt existing".
Player analytics — per-player total playtime and a server-wide activity-by-hour heatmap (shown in your timezone) on the Players tab. Measured from the live player-list poll, so it appears on games that expose one.
Fixed
- Palworld and Satisfactory were silently writing unused ARK
GameUserSettings.ini/Game.inifiles into their instance directories — dead files neither image ever reads. Found by a new lifecycle test harness that drives the real server-start path against a simulated Docker daemon; the same harness now guards all 22 games against that class of bug. - Off-box replication no longer hangs after the first archive (a tar exit-listener race), and the manual "Sync now" runs in the background so it survives large snapshot sets.
Internal
writeInis extracted from the 1,600-line servers service into its own ServerConfigWriter — adding a game's config handling no longer means touching the lifecycle service.
Upgrade notes
Existing single-admin installs keep full admin rights. Tokens issued before v1.1 are already invalid; if you haven't logged in since, you'll be asked to.
Palisade v1.1.1
Fixes the off-box replication sync hanging after the first artifact (tar close-listener race) and makes the manual sync run in the background so it survives proxy timeouts.