Skip to main content

Server requirements

Hardware

ComponentMinimumRecommended
CPU4 cores8+ cores
RAM8 GB16+ GB
Disk40 GB SSD100+ GB SSD
Network100 Mbit/s1 Gbit/s
Plan for the peak

A 5000-student exam generates traffic spikes. Size the server for the biggest simultaneous exam you expect, not for the daily average.

Software

SoftwareVersionPurpose
Ubuntu22.04 or 24.04Operating system
Docker24.0+Container runtime
Docker Composev2+Container orchestration
Ansible2.15+Deployment automation
NginxLatestReverse proxy (TLS termination)

Network (open ports)

PortServiceExternal access
443HTTPS (Nginx)Yes
8080KeycloakOptional (admin console)
9000Django (Gunicorn)No (internal)
9010Nginx proxyNo (internal)
5432PostgreSQLNo (internal)
6379RedisNo (internal)
6432Connection poolerNo (internal)
Keep internal services internal

Only 443 (HTTPS) and optionally 8080 (Keycloak admin) should be reachable from the internet. All other services stay on the internal Docker network.

Example sizing

A single server can host the entire platform for most institutes. Separate instances are only needed when you want to isolate Keycloak or scale the database across multiple machines.