Implementatie¶
Architectuur¶
Browser → Host Nginx (TLS) → ses_proxy → ses_server (Django)
Elke instelling = PostgreSQL schema + DomainRoutingMiddleware
URL-structuur (padgebaseerde routing):
/<instelling>/admin/ → Django-beheerder voor die instelling
/<instelling>/auth/sso/ → SSO-login voor die instelling
/<instelling>/exam-entry/ → Toetsingang voor die instelling
/<instelling>/handleidingen/ → Handleidingen voor die instelling
/health → Gezondheidscontrole (publiek)
Docker-services¶
| Service | Aantal | Poort | Beschrijving |
|---|---|---|---|
| ses-server | 1 | 9000 | Django (Gunicorn) |
| ses-proxy | 1 | 9010 | OpenResty + tokenvalidatie |
| postgres | 1 | 5432 | PostgreSQL 16 |
| keycloak | 1 | 8080 | Keycloak OIDC-provider |
| odyssey | 1 | 6432 | Verbindingspooler |
| redis | 1 | 6379 | Cache/sessies |
Tenantbeheer¶
# Alle tenants weergeven
python manage.py list_tenants
# Nieuwe tenant toevoegen
python manage.py add_tenant <slug> "<Naam>"
# Tenant verwijderen (verwijdert het hele schema)
python manage.py delete_tenant <slug>
Na het toevoegen van een tenant is deze direct toegankelijk op https://<domein>/<slug>/admin/ — geen herstart nodig.