Upgrading
Most upgrades only need the new image or a rebuild. The versions below also need a change on the operator's side, taken from the Upgrading section of each release in the changelog. When skipping versions, apply every section between the old version and the new one, oldest first.
Back up server.data_path, /var/lib/headplane by default, before
upgrading. It holds Northplane's database.
To get patch releases without moving to a new minor version by surprise, pin
the Docker image to a minor tag, such as ghcr.io/tale/headplane:0.8.
0.9.0
- DNS records are only read from and written to the file in Headscale's
dns.extra_records_path. Records listed inline underdns.extra_recordsshow as read-only, so move them into the file to keep editing them. - The
procandkubernetesintegrations now restart Headscale instead of reloading it, so Headscale needs a supervisor that brings it back: systemd withRestart=always, which Headscale's own unit and the NixOS module already set, or the kubelet. - Enabling more than one integration now turns them all off, with an error in the log. Keep one.
- After signing in with single sign-on, only owners, admins and IT admins can pick which Headscale user their account links to. Everyone else links automatically or is linked from the Users page.
- Builds no longer read
__INTERNAL_PREFIX. If a build used it to serve Headplane somewhere other than/admin, setserver.base_pathto that path instead.
0.8.1
- Single sign-on stays off until
server.base_urlis set to Headplane's public URL. - Proxy rules that rewrite the
Originheader, added as a workaround for 0.8.0, can be removed.
0.8.0
- Building from source needs Go 1.27.1 or newer.
0.7.0
- Headplane needs Headscale 0.27.0 or newer.
- The agent needs Headscale 0.28 and
headscale.api_key, and creates its own pre-auth key. Removeintegration.agent.pre_authkeyandintegration.agent.cache_path. oidc.headscale_api_keyis nowheadscale.api_key. The old option still works, but is deprecated.- Logs are JSON, one object per line. Update anything that parses them.
- Accounts are linked to Headscale users. Single sign-on accounts link by subject or email when they sign in. Accounts that don't match need linking by hand before they can create their own auth keys or use Browser SSH.
0.6.2
oidc.redirect_uriis replaced byserver.base_url. Headplane logs the value to use when it finds the old option.- PKCE is opt-in. If the identity provider requires it, set
oidc.use_pkce: true. - Environment variables are always read, so remove
HEADPLANE_LOAD_ENV_OVERRIDES..envfiles are no longer loaded. - Remove
oidc.strict_validation. It has no effect.
0.6.1
- Headplane keeps a database,
hp_persist.db, inserver.data_path. The directory has to be persistent and writable, such as a Docker volume. Existing users migrate on their own. - The Docker image has no shell. For debugging, use the matching
-shelltag, such asghcr.io/tale/headplane:0.6.1-shell.
0.6.0
- Headplane needs Headscale 0.26.0 or newer.
0.5.6
- Single sign-on accounts get roles. New accounts start as members with no dashboard access, and the first person to sign in becomes the owner, so sign in right after upgrading to claim the owner account.
0.5
- Settings moved from environment variables to a config file. Start from config.example.yaml. Settings that used to be shared with Headscale, such as
public_urlandoidc, are now separate.