Your servers, your network, your data.
A QuizDock instance is the application, PostgreSQL, Redis and a media volume, on a machine you choose. It needs no cloud service, and you decide whether it talks to anything outside.
What runs on my server?
With Compose, four services: the QuizDock application, which serves the pages, the API and the game's WebSocket itself; PostgreSQL 16; Redis 7, with its append-only file on a volume; and a one-shot service that applies the database migrations at each start. The full setup adds Keycloak with its own database. The standalone image puts the application, PostgreSQL and Redis in one container, for trying QuizDock; it is not hardened for serious production.
| Where | What |
|---|---|
| PostgreSQL | Accounts, quizzes, archived results, feedback, settings changed from the administration, the audit. |
| Redis | Live games (expire after 4 hours), sign-in sessions with an identity provider. |
| Media volume | Uploaded images, videos and sounds (/data/media). |
| Store volume | Quizzes shared as templates (/data/store). |
.env | The configuration and its secrets, in the instance's folder. |
Which outgoing requests can the server make?
Three, and only three. This is the complete list.
| Request | To | Default | What is sent |
|---|---|---|---|
| Update check | api.github.com | On (UPDATE_CHECK=true), at most once a day, when an administration page, ./quizdock status or version asks | Nothing but the request: GitHub sees the server's IP and its version in the user agent. |
| Community catalogue | The registries in QUIZ_STORE_URL, files only from allowed hosts (QUIZ_STORE_HOSTS) | Off (QUIZ_STORE_URL empty) | No identity, no quiz, no result. |
| Identity provider | Your provider's discovery, token and key endpoints | Only with AUTH_MODE=oidc | The standard OpenID Connect exchanges. The provider can be on your internal network. |
Nothing else: no telemetry, no analytics, no e-mail, no webhooks. The free media libraries offered in the editor are plain links the host's browser opens; the server fetches nothing from them.
Outside the application itself: images are pulled from Docker Hub, and ./quizdock init downloads its
Compose files from raw.githubusercontent.com. In the browser, the pages load scripts, styles, fonts and
connections from the instance only. Two exceptions: a picture in a quiz's Markdown may come from any
https address, and so may a logo set with APP_LOGO_URL.
Can it work without Internet?
Yes, on an isolated local network. Answer No to Does this instance reach the Internet? in the setup
wizard, or run ./quizdock qd presets.apply --internet=offline: the update check is turned off and the
media library links are hidden. With the community catalogue left unset (the default), and local mode or an identity
provider on your network, the server makes no outgoing request. Images from the web in a quiz are loaded by the
browser, not the server.
And on an air-gapped network?
The running instance needs nothing from outside, as above. What is not documented is getting it there: the images
(for instance with docker save and docker load) and the files ./quizdock init
downloads (the Compose file, and for the full setup its overlay and the Keycloak realm). You can carry them in
yourself, but there is no tested procedure.
Do I need Docker?
In practice, yes. Docker is how QuizDock is distributed: images on Docker Hub for amd64 and arm64, run alone (standalone) or with Compose. Every documented install uses it; none covers bare metal, Kubernetes or Podman.
The application image is distroless and runs as a non-root user. The Compose file runs it with a read-only file system, every Linux capability dropped and no privilege escalation.
Can it carry our name and logo?
Yes, without rebuilding the image. APP_NAME sets the name in the header, the tab and the share
messages; APP_LANG the interface language (English, French, Spanish, Simplified and Traditional
Chinese, Turkish). A branding/ folder mounted into the application holds a logo, a square
favicon.png and an override.css loaded last, to change any CSS variable or rule; or point
APP_LOGO_URL at a logo elsewhere. APP_FEEDBACK_URL says where the feedback links lead, and
none hides them. There is no colour setting: the palette changes through override.css.
Will phones on the local network find it?
Phones open the address on the QR code and the join link. In the lobby, the host picks it: the public address
(APP_PUBLIC_URL), the page they are on, a detected local address, or Other address…. It is fixed
once the game starts.
- A container on the host's network (Linux,
--network host) sees the machine's local addresses. - Docker Desktop and bridge networks, the default, hide them: set
HOST_LAN_IPS, or type the address. - Phones must be on the same network, and the firewall must let the port through. Many guest Wi-Fi networks keep devices from seeing each other.
- Over
https, anhttp://local address makes phones warn.
The setup wizard's Address step shows a QR code per address: scan it with a phone, and the page says whether it got through.
Questions
Can QuizDock run without Internet?
Yes, on an isolated local network. Answer No to Does this instance reach the Internet? in the setup wizard: the update check is turned off and the links to online media libraries are hidden. Leave the community catalogue unset (the default), and use local mode or an identity provider on your network. The server then makes no outgoing request. Images from the web in a quiz are loaded by the browser, not the server.
Where is QuizDock data stored?
On the machine you run it on. Accounts, quizzes, results, feedback, settings and the audit are in PostgreSQL; live games in Redis; uploaded media and the templates folder on two volumes; the configuration in .env. The standalone image keeps all of it in one Docker volume.
Does QuizDock send data to a cloud service?
No telemetry, no analytics, no e-mail. One request is on by default: the update check, which asks api.github.com for the latest release at most once a day. GitHub sees the server's IP address and its version, nothing else. Set UPDATE_CHECK=false, or answer No to the wizard's Internet question, to turn it off.
Can QuizDock run on a local network?
Yes. Phones on the same network open the address on the QR code. When the container uses the host's network (Linux), QuizDock detects the machine's local addresses; with Docker Desktop or a bridge network, set HOST_LAN_IPS. The setup wizard tests each address from a phone.
Can it run in an air-gapped environment?
The application can: with the offline preset it needs nothing from outside. Bringing it in is not documented: the images come from Docker Hub and ./quizdock init downloads its Compose files from GitHub, so on a network with no Internet at all you carry them in yourself, without a tested procedure.
Can I use my own database?
Possible, not documented. The application reads DATABASE_URL and REDIS_URL, but the Compose file runs its own PostgreSQL 16 and Redis 7, and no guide covers an external server. The schema needs the citext extension.