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.

WhereWhat
PostgreSQLAccounts, quizzes, archived results, feedback, settings changed from the administration, the audit.
RedisLive games (expire after 4 hours), sign-in sessions with an identity provider.
Media volumeUploaded images, videos and sounds (/data/media).
Store volumeQuizzes shared as templates (/data/store).
.envThe 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.

RequestToDefaultWhat is sent
Update checkapi.github.comOn (UPDATE_CHECK=true), at most once a day, when an administration page, ./quizdock status or version asksNothing but the request: GitHub sees the server's IP and its version in the user agent.
Community catalogueThe 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 providerYour provider's discovery, token and key endpointsOnly with AUTH_MODE=oidcThe 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.

What is stored, and who decides →

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.

Isolated and air-gapped networks →

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.

Choose a deployment →

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.

Branding →

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, an http:// 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.

Networking and the invitation address →

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.