Updating & Maintenance

Kuberfy is packaged as a single multi-arch Docker image (ghcr.io/joelveloz/kuberfy:latest) with native support for both amd64 (x86_64) and arm64 (Apple Silicon / AWS Graviton / Raspberry Pi).

One-Command Updates

Method A: Using Host CLI (Recommended)

If you are on the server host where Kuberfy was installed:

kuberfy update

Method B: Remote Shell Script

You can also trigger an update from any terminal with root access to the Docker daemon:

curl -sSL https://kuberfy.pages.dev/update.sh | sh

How Rolling Updates Work

When an update is executed, the following sequence occurs automatically:

  1. Docker pulls the latest image tag from GitHub Container Registry.
  2. Docker Swarm executes a rolling service update with --update-parallelism 1.
  3. The new container boots up and connects to the existing SQLite database and Docker socket.
  4. Traefik seamlessly switches incoming HTTP and WebSocket traffic to the newly spawned container.
  5. The old container is safely terminated.

Zero Downtime: Deployed applications and background workloads running in your server are unaffected when the Kuberfy control plane updates.

Data Persistence & Backups

All platform state (users, session tokens, projects, application configs, domain mappings, and deployment logs) is stored in a single SQLite database inside the kuberfy-data Docker volume.

Backing Up Your Data

Because SQLite is a single file, taking a complete backup is as simple as copying the database file:

# Backup the SQLite database to a local file
docker run --rm -v kuberfy-data:/data -v $(pwd):/backup alpine \
  cp /data/kuberfy.db /backup/kuberfy-backup-$(date +%Y%m%d).db

Restoring from Backup

# Restore from a backup file
docker run --rm -v kuberfy-data:/data -v $(pwd):/backup alpine \
  cp /backup/kuberfy-backup.db /data/kuberfy.db