Updating
Automatic (recommended)
The compose file ships with Watchtower, which polls ghcr.io/itsashn/kizuna every hour and automatically restarts the Kizuna container when a new image is available. No manual intervention needed.
To disable, remove the watchtower service from your docker-compose.yml.
Manual update via pre-built image
docker compose pull && docker compose up -dThe pre-built image is pulled from ghcr.io/itsashn/kizuna:latest. No build tools or source code needed on your server. Your data in data/ and uploads/ is preserved across updates (bind mounts).
Safe update with rollback
./scripts/update.sh # latest version
./scripts/update.sh --pin v0.2.0 # pin to a specific release tagThe script pulls the image, recreates the container, waits for the /health endpoint to respond, and rolls back to the previous image if the health check fails.
Pin to a release
Edit docker-compose.yml and change the image tag:
services:
kizuna:
image: ghcr.io/itsashn/kizuna:v0.2.0Then:
docker compose pull && docker compose up -dDevelopment builds (local compilation)
If you need to build from source:
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --buildManual (without Docker)
git pull
pnpm install
pnpm --filter @kizuna/server build
# Restart the server processDatabase
Kizuna uses SQLite and manages schema automatically on startup. No manual migration steps are required.