Skip to Content
Self HostingDocker Compose Evaluation

Docker Compose Evaluation

The public Docker Compose deployment packages the self-hosted VM console for a single KVM host. It builds from local source, mounts host virtualization resources, and exposes the frontend on port 80.

Start and Inspect

From cto-gui:

docker compose -f docker-compose.self-hosted.yml up --build -d docker compose -f docker-compose.self-hosted.yml ps docker compose -f docker-compose.self-hosted.yml logs --tail=200 backend frontend

Both services should be running. The backend must connect to qemu:///system; a healthy container that cannot reach libvirt is not a usable deployment.

What Compose Does

  • builds the backend from ../cto-gui-libvirt-backend;
  • builds the frontend from cto-gui/Dockerfile.frontend with self-hosted UI mode enabled;
  • passes /dev/kvm and the libvirt socket to a privileged backend container;
  • mounts /var/lib/libvirt/images read-write;
  • mounts source ISO and promoted golden-image directories read-only;
  • stores backend data in the cto-data named volume;
  • restarts both services unless they are explicitly stopped.

What Compose Does Not Do

It does not configure TLS, a production identity provider, high availability, an external database, off-host backups, a secrets manager, log shipping, automatic updates, or a multi-host scheduler. restart: unless-stopped is container restart policy, not service high availability.

Updating an Evaluation

Record the current commit and inventory running guests before rebuilding:

git rev-parse HEAD docker compose -f docker-compose.self-hosted.yml ps virsh -c qemu:///system list --all docker compose -f docker-compose.self-hosted.yml build --pull docker compose -f docker-compose.self-hosted.yml up -d

Afterward, repeat the mode, ISO launch, VNC, stop, delete, and restart checks. The repository does not promise a zero-downtime Compose upgrade.

Stop Without Erasing State

docker compose -f docker-compose.self-hosted.yml down

Avoid --volumes during routine stop or upgrade. The named volume contains durable test state and cleanup journals used after restart.