Updating

Bittery publishes new Docker images to ghcr.io/bittery-org with every release. Database migrations run automatically on server startup — no manual migration step is needed.

Docker Compose

Choose the target release

cd ~/bittery
sed -i 's/^BITTERY_RELEASE=.*/BITTERY_RELEASE=0.5.1/' .env
docker compose pull

Restart the services

COMPOSE_PROFILES=builtin-db docker compose up -d

Adjust COMPOSE_PROFILES to match your setup (e.g. builtin-db,storage,cache).

Verify

docker compose ps

All services should show (healthy) within a minute.

Tip

You can combine both steps into a single command:

docker compose pull && COMPOSE_PROFILES=builtin-db docker compose up -d

Railway

  1. Go to your Railway project dashboard
  2. Set the server and web image tags to the same exact release
  3. Redeploy both services together

Rollback

If something goes wrong after an update, you can roll back to a specific version:

# Set the previous exact release for both images, then recreate the pair:
sed -i 's/^BITTERY_RELEASE=.*/BITTERY_RELEASE=0.5.0/' .env
docker compose pull
docker compose up -d

Warning

Database migrations are forward-only. If you roll back to an older server version, ensure the database schema is still compatible. For major version upgrades, always back up your database first.

Never mix server and web releases during an update or rollback. Rollback means deploying the previous compatible /api/v1 server and web pair.

Monitoring

Check the health of your instance at any time:

# Service status
docker compose ps

# Server logs
docker compose logs -f server

# Health endpoint
curl https://your-domain.com/healthz