# jupyterhub — multi-user notebook server (cloud only) # Networks: app (UI proxied by nginx) + mgmt (Docker socket for DockerSpawner) services: jupyterhub: image: jupyterhub/jupyterhub:5 restart: unless-stopped networks: [app, mgmt] volumes: - jupyterhub-data:/srv/jupyterhub - /var/run/docker.sock:/var/run/docker.sock - ./config/jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py:ro environment: TZ: ${TZ:-Europe/Amsterdam} DOCKER_NOTEBOOK_IMAGE: ${JUPYTER_NOTEBOOK_IMAGE:-jupyter/datascience-notebook:latest} DOCKER_NETWORK_NAME: cloud-app # TODO: DockerSpawner config in jupyterhub_config.py; Keycloak OAuthAuthenticator; # preinstalled libraries; per-user persistent volumes; CPU/memory limits networks: app: mgmt: volumes: jupyterhub-data: