Updating
Update plugins and Railbase itself in one click, and how version compatibility is enforced.
Updated
Railbase updates two things independently: the plugins you've installed and the core binary itself. Both are driven from the Marketplace in your admin: when something newer is available, an "Updates available" banner appears there with one-click actions. Both respect a version-compatibility gate.
Updating a plugin
When a newer version of an installed plugin is published, the Marketplace flags it (a badge on the plugin, plus the banner up top). A plugin is data-resident (an encrypted JS+schema row in your Vault), so updating isn't "stop one process, start another" — it re-lands the new signed bundle and remounts the runtime:
- fetches the new build and verifies it's authentic and unmodified (the same check as a fresh install — see How plugins work),
- replaces the encrypted
_pluginsrow and reloads the runtime — reusing your existing license, so there's no second checkout.
The update re-runs the same install gates, so it can be refused: if the new
version's min_core is newer than your core it's blocked until you update the
core (below), and on a licensed (pinned) build the plugin's license must still be
valid and the Core EULA accepted, or the update is denied.
Updating Railbase
Railbase can update itself in place — from the Settings → System update screen
(/_/settings/system-update), which shows your running vs the latest version and
a progress checklist, or from the Marketplace banner's Update Railbase button.
This isn't a blind "download and restart"; a small in-binary supervisor runs a
safety pipeline:
- download + verify the new build (authenticity check),
- take an automatic vault backup,
- run a migration dry-run against the new binary,
- stage it beside the current binary and swap it in,
- health-gate the new worker — and automatically roll back to the previous binary if it fails to come up.
So a bad upgrade self-recovers. You can also update the manual way described in Installation: download the latest build and restart. Either way, your data is forward-compatible and schema migrations apply on the next boot.
Tip
The self-update already snapshots for you, but a manual snapshot is cheap
insurance. Note ./railbase backup needs the server stopped (it takes the
vault lock) — or snapshot from the admin console, which runs in-process. See
Backups & restore.
Note
The API-compatibility default is strict. Railbase serves the
PocketBase-compatible shapes at /api/* (the v1 ship target). The native
surface lives under a separate /v1 prefix, and is only mounted when
compat.mode is native (/v1 only) or both (/api and /v1) — it is
not served under /api/*. If you need the native shapes, opt in explicitly:
railbase config set compat.mode '"both"' (or RAILBASE_COMPAT_MODE=both). An
instance that already saved a compat.mode setting keeps it across updates. See
REST API → URL compatibility.
Compatibility
Every plugin declares a minimum core version (min_core). The core enforces
it:
- A plugin whose
min_coreis newer than your core won't install or run — the Marketplace tells you to update the core first. - The Marketplace also flags when a core update is available (comparing your running version to the catalogue), so the banner tells you when it's worthwhile.
This is why you occasionally update the core before a plugin: the plugin needs a capability the older core doesn't have.
Recommended order
- Snapshot —
./railbase backup. - Update Railbase if a plugin needs it (or to pick up fixes), then let it restart.
- Update plugins — they pick up the newer core's capabilities.
Because licenses are reused across updates, none of this re-charges you — updates are purely fetch, verify, and install.