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 frontendBoth 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.frontendwith self-hosted UI mode enabled; - passes
/dev/kvmand the libvirt socket to a privileged backend container; - mounts
/var/lib/libvirt/imagesread-write; - mounts source ISO and promoted golden-image directories read-only;
- stores backend data in the
cto-datanamed 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 -dAfterward, 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 downAvoid --volumes during routine stop or upgrade. The named volume contains
durable test state and cleanup journals used after restart.