Skip to content

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.