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¶
- Quit Krywerk (system tray or menu bar › Quit – unmounts all drives).
- Install the new version as described in Installation:
- Windows: run the new installer (replaces the old version).
- macOS: replace
Krywerk.appin Applications with the new one. - Linux:
sudo apt install ./Krywerk_<version>_amd64.deb, replace the AppImage, or runinstall.shagain.
- 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)¶
- In
CHANGELOG.md, rename the "Unreleased" section to## [<version>] – <YYYY-MM-DD>and add a new, empty "Unreleased" section above it. - Set the version in
Cargo.toml([workspace.package]);cargo buildupdatesCargo.lock. - Commit, pull request, merge into
main. - Create and push the tag:
git tag -s v<version> -m "Krywerk <version>" && git push origin v<version>. - 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. Versions0.xappear as pre-releases. - Rebuild and publish the website and documentation:
make site deploy.