Check your install
Work down the list. Each step assumes the ones above passed.
1. The control plane answers
Section titled “1. The control plane answers”curl http://localhost:8080/healthExpected: {"status":"ok","db":"ok"}. This works before HTTPS is set up.
2. The containers are up
Section titled “2. The containers are up”docker ps --filter label=io.quasar.installation| Machine | You want |
|---|---|
| Combined host | quasar-recovery, quasar-postgres, quasar-control-plane, quasar-node-agent |
| Control-only host | quasar-recovery, quasar-postgres, quasar-control-plane |
| GPU host | quasar-recovery, quasar-node-agent |
All should be healthy. The seed (quasar-seed) is not listed. With your own
database there is no quasar-postgres.
The recovery actor lists the same services and anything in the way:
docker exec quasar-recovery quasar-recovery statusOn a legacy Compose install, use
docker compose -f deploy/docker-compose.yml ps.
3. The node agent registered
Section titled “3. The node agent registered”Your machine should be in Admin ▸ Fleet ▸ Hosts with a recent heartbeat. From the shell:
curl http://127.0.0.1:9091/health{"status":"ok","sessions":0,"connected":true}connected: false means the agent can’t reach the control plane. On a GPU host, the
enrollment string may be spent or expired: create a fresh command. See When it says
no.
4. The GPU was found, and an encoder with it
Section titled “4. The GPU was found, and an encoder with it”Open the host in Admin ▸ Fleet ▸ Hosts. The GPU should be listed with a render node and an encoder. A GPU with no encoder is the common failure: see Install and startup problems.
ls -l /dev/driNo renderD128 means no GPU is available to containers.
5. Virtual input works
Section titled “5. Virtual input works”ls -l /dev/uinputIt must exist and be writable by the agent. The host detail page’s readiness check tests this.
6. A session actually streams
Section titled “6. A session actually streams”Launch something from the library in Chrome. You should see moving video and hear audio.
Press Ctrl+Alt+Shift+Q, turn on performance stats, and check the frame rate is close to the tier you launched.
7. Certificates cover the address you use
Section titled “7. Certificates cover the address you use”The certificate must name the address you browse to. The names come from
QUASAR_PUBLIC_HOST and QUASAR_TLS_HOSTS (on legacy Compose, QUASAR_TLS_HOSTS in
deploy/.env). To fix a missing one, see HTTPS and
certificates.
docker exec quasar-control-plane \ sh -c 'openssl x509 -in /var/lib/quasar-control/tls/cert.pem -noout -text' \ | grep -A1 'Subject Alternative Name'On legacy Compose, use docker compose -f deploy/docker-compose.yml exec quasar-control-plane instead of docker exec quasar-control-plane.