Skip to content

Upgrading

Krywerk doesn't check for new versions by itself and sends no requests to the internet for that purpose. New versions appear on the releases page; what has changed is listed in the changelog. Versions follow Semantic Versioning: before 1.0, configuration and server interface may still change – the changelog then lists this under "Geändert" (changed) with migration notes.

Desktop app

  1. Quit Krywerk (system tray or menu bar › Quit – unmounts all drives).
  2. Install the new version as described in Installation:
    • Windows: run the new installer (replaces the old version).
    • macOS: replace Krywerk.app in Applications with the new one.
    • Linux: sudo apt install ./Krywerk_<version>_amd64.deb, replace the AppImage, or run install.sh again.
  3. Start Krywerk. Settings, remembered passwords and unlocked devices are kept.

For unsigned versions, macOS asks once after an update whether Krywerk may access the keychain – choose Always Allow.

Older versions read the settings of a newer version but don't overwrite them (notice in the app).

Krywerk Server

cd /opt/krywerk && git pull
cd crates/kw-server/deploy
./backup.sh /var/backups/krywerk 30                 # back up first
docker compose build && docker compose run --rm server check
docker compose up -d                                # database migrations run automatically at startup

Going back to an older version after a schema change is only possible with the backup taken before (older servers refuse newer databases with a clear message). Update the Caddy/Keycloak/Postgres images regularly (docker compose pull && docker compose up -d; Keycloak major versions according to its upgrade guide).

To use the prebuilt image instead of your own build: set KRYWERK_VERSION=<version> in deploy/.env, then run docker compose pull && docker compose up -d.

Compatibility

  • The apps (Krywerk, Cryptomator) speak the Hub protocol; a new server version stays compatible with it.
  • The database is migrated automatically at startup. An older server refuses a newer database with a clear message – going back is only possible with the backup taken before the update.

Publishing a new version (maintainers)

  1. In CHANGELOG.md, rename the "Unreleased" section to ## [<version>] – <YYYY-MM-DD> and add a new, empty "Unreleased" section above it.
  2. Set the version in Cargo.toml ([workspace.package]); cargo build updates Cargo.lock.
  3. Commit, pull request, merge into main.
  4. Create and push the tag: git tag -s v<version> -m "Krywerk <version>" && git push origin v<version>.
  5. The Release workflow builds all packages, the server image (ghcr.io/…/krywerk-server:<version>), SBOM and checksums, and creates the release with the notes from the changelog. Versions 0.x appear as pre-releases.
  6. Rebuild and publish the website and documentation: make site deploy.