QRVeo

Private Video Platform

For an existing deployment, use upgrade.sh from the new package. Do not re-run install.sh, and never overwrite the customer database with a full schema dump. There are two live modes—confirm which one you have first.

Before you start (shared)

  • Confirm License maintenance is valid (maintenanceExpiresAt) to obtain a new package; renew and re-sign if expired
  • Download the package matching your live architecture (amd64 or arm64 / aarch64)
  • Keep License files, domains, and published ports

Which deployment do you have?

Linux production / cloud VMs usually run K8s (or K3s). Mac demos or an explicit compose install use Docker Compose. If the package only has .env.template and no .env, you almost certainly installed via K8s—do not invent a new .env.

K8s / K3s

kubectl get ns vod-private

Docker Compose

docker compose ls # or ls the old docker-compose/.env

Path A: K8s / K3s (typical Linux production)

Credentials live in cluster Secrets (e.g. mysql-credentials, minio-credentials). No docker-compose/.env is required.

  1. Extract the new package and enter its private-deploy directory
  2. Ensure kubectl can reach the live cluster (K3s usually needs the correct KUBECONFIG)
  3. Run the upgrade script (backs up by default) ./scripts/upgrade.sh
  4. Verify: Admin upload → encode → playback

Do not copy .env.template into a fresh .env for upgrade—that creates new random passwords that will not match existing data. If you installed with LoadBalancer (http://IP/ on port 80), set VOD_EXPOSE_MODE=loadbalancer on upgrade, or restore with: VOD_EXPOSE_MODE=loadbalancer ./scripts/apply-expose-services.sh

Path B: Docker Compose (Mac demo / explicit compose)

Only the Compose path creates docker-compose/.env (DB and MinIO passwords). New packages ship .env.template only—you must copy the real .env from the old install directory.

  1. Extract the new package and enter its private-deploy directory
  2. Copy the old docker-compose/.env into the same path in the new package

    Without .env the script fails (avoids default IMAGE_TAG=0.1.0 pull). Example:

    cp /path/to/old/private-deploy/docker-compose/.env ./docker-compose/.env
  3. Ensure license.json and license.sig are under private-deploy (or keep your existing mount)
  4. Run the upgrade script (backs up by default) ./scripts/upgrade.sh
  5. Verify: Admin upload → encode → playback

What upgrade.sh does

  • Pre-upgrade backup (skip with --skip-backup; not recommended)
  • Load business images from the package (K8s: onto schedulable nodes)
  • Apply new manifests, or docker compose up
  • Run incremental SQL via upgrade-db.sh (never dump-overwrite)
  • Roll / recreate app components

After upgrade

Optional smoke check:

./scripts/e2e-acceptance.sh --smoke-only

License renew only

Buyout is perpetual; renewal updates maintenance. To replace signed files only:

./scripts/update-license.sh --license ./license.json --sig ./license.sig

Notes

  • Never overwrite the customer DB with a full schema dump from a newer package
  • Expired maintenance does not stop a running system; new packages and upgrade support require a valid maintenance window
  • Architecture must match the live host
  • Keep backup directories in your retention policy; missing mc may skip MinIO object backup (warning only)

Back to install & download