vitrinkaDocsBack to the vitrína

Operations

Upgrades, backups, air-gapped installs and licensing — the things you do after it is running.

Upgrading

Back up /data first, point at the new tag, and bring it up. Migrations run on boot.

# edit .env: VITRINKA_VERSION=vX.Y.Z
docker compose up -d
  • No hard stopsevery release migrates from every prior release, so you can skip versions.
  • You never edit shipped filesrelease notes may add optional .env keys; nothing you are given is meant to be modified.
  • Server before clientsdeploy the server before shipping clients that call new endpoints.

Backups

/data — the vitrinka-data volume — holds the SQLite databases and, unless you use S3, the blobs. Back it up on your normal schedule and before every upgrade.

docker compose stop vitrinka
docker compose run --rm --no-deps --entrypoint sh -v "$PWD:/backup" vitrinka \
  -c 'cd /data && tar czf /backup/vitrinka-data-$(date +%F).tgz .'
docker compose start vitrinka

Run it through compose, as above. A bare docker run -v vitrinka-data:… mounts a different, unrelated global volume rather than the project-scoped one the app actually uses — and you would back up nothing.

Your licence is not in /data

It lives in the bundle's ./license/ directory, mounted read-only into the container. Back up /data for your data and keep the bundle directory for your licence — they are two separate things to preserve.

Air-gapped installs

The bundle ships an image.tar, a LOAD-AIRGAP.md and the CLI binaries. Load the image into your internal registry or straight into Docker, point VITRINKA_IMAGE at it, and set AIR_GAP=1 to disable every outbound call — breach checks and update pings included.

shasum -a 256 -c SHA256SUMS    # verify the bundle first

The CLI, without a registry

The bundle carries the CLI too — six static binaries, one per platform, plus cli/latest.json. Workstations need it to capture sets and drive the work queue, and npm install -g assumes a registry your estate may not have.

Point $VITRINKA_RELEASE_FEED at your own internal mirror and vitrinka update keeps working offline. The bundle's cli/README.md carries the install instructions and the PowerShell path.

Licensing

Drop your vendor-signed license.json into ./license/. Compose mounts it read-only at /run/license, which is where the server looks.

  • Without a licencevitrinka runs in an unrestricted evaluation posture.
  • An expired licenceenters a grace period with a banner before any restriction.

Never a hard shutdown, and never data loss.