Skip to content

v1.15.0 — one schedule for every server, and sign-in through your own provider

Choose a tag to compare

@Shakes63 Shakes63 released this 01 Oct 02:49
· 13 commits to main since this release

Thirty-one changes since v1.14.0. Two of them came from outside: @magnuspihl added single sign-on and @SCSIExpress added MikroTik routers. Thanks to both, and to @jdvieira, @m0zzy, @kajusnau and @IsXGeo, whose reports drove much of the rest. @magnuspihl filed three of those too.

One schedule for every server

Running ten servers meant building the same nightly restart ten times. A new Schedules page in the header holds global schedules. Each one runs on every server, including ones you add later, or on a list you pick, and one edit changes it everywhere. Every target goes through the same steps its own schedule would: the player-count check, the countdown, the backup, then the action. A server whose game can't run the action is skipped, and the form names those servers before you save. Each server's Schedules tab lists the global schedules that reach it.

By default a global schedule fires on all its servers at the same moment. Set a stagger and they go one at a time in name order, that many minutes apart, so a fleet restart doesn't bring every server down together. Turning the schedule off or changing its time partway through skips the servers still waiting. A manager restart in the middle drops them too. A one-time schedule cut off that way is switched off on the next boot with a warning, rather than left looking armed.

If you'd rather give each server its own copy, every schedule now has a copy button. Copies are independent, can go to servers of any game, and skip a server whose game can't run the action.

Only accounts that can see every server manage global schedules. Restricted users still see the ones that reach their servers.

Sign in through your own identity provider

Admins can let users sign in with any OpenID Connect provider, set up under Settings → Users. Roles can follow the provider's groups through a claim you choose, and the login page can hide the password form or send people straight to the provider. Password sign-in stays as the fallback.

A provider identity never takes over an existing account just because the username matches. A new SSO user whose name is taken gets a suffixed one, and existing users link their identity from the new account menu, which can also unlink it. When roles follow groups, a role change ends that user's other sessions.

MikroTik routers, and rules Palisade didn't make

MikroTik RouterOS 7.1 and later joins pfSense and UniFi as a port-forward router, through its REST API. It signs in with a user and password, works whether or not the router's HTTPS service has a certificate, takes a port in the host field, and accepts either a WAN interface or an interface list such as the stock WAN.

On every router, a rule covering a port that Palisade didn't create is now a conflict instead of a mismatch. Fix used to re-point it, taking over someone else's rule and moving every port on a shared range with it. Now Fix leaves it alone and the card shows where it points. Replace disables it and creates a dedicated rule, and turns the old one back on if that fails.

Port forwards report what actually happened

A router can answer a create with success and change nothing. A UniFi API key without write access is one way to get there, and Fix forwards would then report nothing while forwarding nothing. Palisade now re-reads the router after every change and fails with the ports that are still missing.

Test connection only proves the key can read, so there's now a write check. It creates a disabled rule named Palisade - write test (safe to delete) on TCP 65535, then deletes it. pfSense runs it as part of Test connection. UniFi gets a separate Test write access button, since every step there is a config change pushed to the gateway.

RuneScape: Dragonwilds

Dragonwilds joins the supported games on the ferment9348/dragonwilds image, pinned to 1.1.1. Version 1.0 dropped the admin password, so the server takes your Owner Player ID instead. Palisade checks it is 32 hex characters, because a wrong length boots fine and never lists. The invite code the server makes at every start shows on the Overview, since consoles can't type an IP. Pak mods from Nexus upload through the Mods tab, which groups each mod's .pak, .utoc and .ucas files and flags a set with a part missing.

Valheim

  • Hexium joins Thunderstore as a mod source. Many authors, Azumatt among them, deprecated their Thunderstore packages and now publish only on Hexium, so their mods couldn't be found at all. Search covers both, and dependencies resolve across them. When a mod is on both, Thunderstore wins unless the author deprecated it there, which stops a squatter on Hexium from replacing a real mod.
  • Players stay online for their whole session. Sightings came only from the join line, so everyone went grey 90 seconds in, names with spaces never matched, and crossplay joins lost their SteamID. Joins and leaves now come from the log, playtime counts, and crossplay and private servers show a player count on the dashboard.
  • A Steam connection that drops before its character loads no longer leaves its SteamID waiting for the next player. A crossplay player joining after it could have been recorded under that id, and bans and whitelist changes would have hit the wrong account.
  • Mods with a BepInEx preloader patcher, such as ServersideQoL, put it where BepInEx loads patchers from. This needs a lloesche/valheim-server image from 2026-09-19 or later.
  • Mods zipped on Windows with backslash paths, ValheimModding-Jotunn among them, upload again. Mods whose manifest starts with a byte-order mark now show their installed version and get update checks.

Enshrouded

  • Join by IP showed the game port, which no client can connect to. It now shows the query port, and the game guide agrees.
  • Players go offline when they leave, not 90 seconds after they join. A fake player created by the server's machine login line is gone too.

A pass over every page

An audit of every screen turned up a long list of small breaks. The ones you're most likely to notice:

  • The app fits a phone. The header and the server tabs no longer make every page scroll sideways.
  • Dark confirm dialogs and toasts replace the browser's light confirm() and alert() popups.
  • Saving one Settings card no longer throws away unsaved edits in the others. Saving the Settings tab no longer shows the old values again after you switch tabs.
  • Changing a game port keeps the ports that are set on their own, such as Satisfactory's reliable port, Rust+, CS2's CSTV and DST's caves shard. Query ports that track the game port now follow it.
  • Clearing a required join password on edit is refused, the same as on create. Valheim and Enshrouded used to accept it and then fail to start.
  • Tabs only offer actions the game can run. A stopped server's console says it isn't running, the Players tab says when a game has no player tracking, and deletes ask first.
  • A backup with no save files is refused, so an empty automatic backup can't push a real one out of retention.
  • 7 Days to Die has an EasyAntiCheat setting, so mods that ship a DLL can load.
  • Two settings had the wrong units. Palworld's auto-save interval is seconds, not minutes, and Project Zomboid's war delay and duration are seconds, not hours. Stored values didn't change, only the labels and defaults. Palworld's death penalty and egg hatch defaults now match the game.
  • Muted text meets WCAG contrast, icon buttons have labels, and form fields show a focus ring.

Before you upgrade

  • An ARK server's join password now lives in one place, the encrypted field the Access card edits. A value left in the Settings tab moves there on the server's next save. Copy settings no longer copies an ARK join password to other servers.
  • Adding a server to a cluster now takes only ARK servers, one ARK game per cluster, since nothing transfers between ASA and ASE.
  • This release adds database migrations for SSO and global schedules. Prisma only migrates forward, so rolling back to v1.14.0 needs a database backup from before the upgrade. Palisade snapshots its database nightly, under Settings → Backups.

Also

  • Two new high-severity advisories in transitive dependencies, engine.io and @grpc/grpc-js, are overridden to their patched releases.