Skip to main content
How you update depends on how you installed Kernel. Pick your install method below.
Every install gets the same build, so updating always gets you the latest release regardless of license. A Pro or Lifetime license unlocks additional features rather than earlier access to builds; see Pro & Lifetime Features.

In-app updater (manual binary installs)

From Settings > Updates (admin only), Kernel can check for, download, and apply an update itself:
  1. Check: queries KERNEL_UPDATES_API (default https://api.kernelmedia.tv) for the latest version.
  2. Download: fetches and checksum-verifies the new binary.
  3. Apply: renames the running binary to .bak, swaps in the new one, and re-execs. If anything fails, it automatically rolls back to the .bak binary. The bundled ffmpeg tree and transcoder binary are updated the same way.

Docker

Don’t use the in-app updater inside a container. The server has no way to detect it’s running in Docker, so an in-app update swaps the binary inside the container’s writable layer, and that change is lost the next time the container is recreated (which is exactly what an orchestrator or docker compose up does). Instead, update the image itself:
As long as /app/data and /app/log are mounted volumes, your database and settings carry over untouched.

Linux packages (deb/rpm)

Packaged installs set KERNEL_MANAGED, which disables the in-app updater. The package manager is authoritative instead:
The systemd unit and /etc/kernelmediaserver/kernelmediaserver.env are marked as config files, so local edits survive the upgrade.

Homebrew (macOS)

Like the Linux packages, the Homebrew formulas set KERNEL_MANAGED, which disables the in-app updater automatically. brew is authoritative instead:

Database migrations

Regardless of install method, Kernel runs its database migrations automatically on startup. There’s no separate migration step to run after updating.