A school entirely online
The full-cloud deployment, for a school with no hall server.
full-cloud is the whole application on one server on the internet: papers are
written, sat and marked there, and there is nothing to sync. It suits a small
school — under about a hundred students sitting at once — that would rather not
keep a machine in a hall.
It is a deliberate trade. An exam sat over the internet depends on the internet
for its whole duration: a school with unreliable power or bandwidth should run
the onsite deployment instead, which is what the hall design exists for.
Setting one up
Its own server, not shared with cloud companions: this one sits exams.
apt update && apt install -y docker.io docker-compose-v2
# copy deploy/ across
cd deploy
docker login ghcr.io -u YOUR-GITHUB-USERNAME
cp full-cloud.env.example .envFill in POSTGRES_PASSWORD, the same password inside DATABASE_URL, and
SUPER_ADMIN_PASSWORD — unlike a cloud companion, this deployment seeds its own
first account, because no school server is going to send it one.
Put the school's domain and your email in Caddyfile.full-cloud, point the
domain at the server, then:
docker compose -f compose.full-cloud.yml up -dCaddy is in this stack rather than shared, since there is only one school on it. It gets the certificate itself.
What differs from a school's own server
| Hall server | Full cloud | |
|---|---|---|
| Students sign in | yes | yes |
| Address | plain HTTP on the LAN | HTTPS on a domain |
| Live hall screens | over the LAN | over the internet |
| Cloud Sync page | present | hidden: nothing to sync |
| Backups | on demand from Settings | on demand, plus nightly |
SYNC_KEY and CLOUD_URL are not set here. The Cloud Sync page does not appear,
and the sync endpoint answers as if it did not exist.
What to watch
The live connection. Each machine sitting a paper keeps a connection for the clock and the invigilator's commands. Caddy passes those through without configuration, but a flaky link shows up as students dropping in and out of the Hall page.
Sizing. A hundred students writing at once is light work; the cost is in
uploads if your questions carry pictures. A CX22 is a sensible starting point,
with the disk sized for /data.
Backups leave the building. Nightly on the server, downloadable from Settings, and worth pulling off the VPS regularly — the school has no hall machine holding a second copy of anything.