Updates
Keep Better-PaaS up to date with one-click, self-healing updates.
Better-PaaS can update itself to the latest release with one click — and if an update goes wrong, it rolls itself back automatically.
Updating from the dashboard
Go to Settings → Software Updates.
Click Check for updates. Better-PaaS queries GitHub Releases for a newer version (results are cached for 30 minutes).
If an update is available, click Update now.
What "Update now" does
The update is careful and self-healing. In order, it:
flowchart TD
A[Back up data/ first, always] --> B[git fetch + checkout new tag]
B --> C[Rebuild backend + frontend]
C --> D[Restart services]
D --> E{Health check /api/health}
E -->|Healthy| F[Done — running new version]
E -->|Unhealthy| G[Restore previous binary + ref, restart]
- Takes a backup of your
data/directory first — always. - Launches a detached helper that runs
git fetchand checks out the new release tag. - Rebuilds the backend (swapping in the new binary only on a successful build,
keeping
server.bak) and rebuilds the frontend. - Restarts the services and health-checks the new build at
/api/health. - If the new build doesn't come up, it automatically restores the previous binary and git ref and restarts — so a bad release rolls itself back.
Your data is never touched
Updates never modify your data/ directory. Schema changes are applied by
additive migrations on the next boot, so upgrading is safe.
Requirements
Git-checkout installs only
One-click update is available only for git-checkout installs, because it currently rebuilds from source on the host. That means the server needs the Go / Node / pnpm toolchain present (the installer sets this up for you). Downloading prebuilt release binaries is a planned follow-up.
How releases work
Releases are tag-triggered, not produced on every push. Pushing a tag
matching v* runs the release workflow:
git tag v1.2.3
git push origin v1.2.3 # this builds and publishes the releaseA normal push to main does not create a release. Each release
cross-compiles the backend for Linux and macOS (amd64 + arm64), bakes the
version into the binary, and publishes the binaries plus a SHA256SUMS file to
GitHub Releases.
Keep tags semver-shaped (vMAJOR.MINOR.PATCH) — the updater parses
major.minor.patch for version comparison.
Choosing the update source
The updater checks the repo named by UPDATE_REPO. It's resolved in this order:
- The
UPDATE_REPOenvironment variable - A stored value
- The checkout's
git remote originURL
So git installs work even without the variable set. To pin it explicitly:
Environment=UPDATE_REPO=your-org/better-paas