Initial setup¶
This section describes what must be done before the first docker compose up so that the deployment starts correctly.
Overview¶
The deployment expects:
- Prerequisites — Docker installed and your user in the
dockergroup; GitHub authentication for pulling images (ghcr.io) and for Git/submodules; a configured.envfile. - Pre-start steps — Run
./start.sh(or perform its steps manually). This creates the Docker network, copies override files, starts only the shared database, waits for it to be ready, and runs all pre-install scripts. Pre-install scripts create databases and users, and generate config files from templates (e.g. Keycloak realm, SCS Manager OpenID config, Varnish VCL).
Important: Do not run a full docker compose up -d until after start.sh has completed successfully. Otherwise databases and generated configs will be missing and services will fail or behave incorrectly.
Steps¶
- Prerequisites — Install Docker, configure GitHub access, copy and edit
.env. - Pre-start steps — Run
./start.shand understand what it does (network, overrides, database, pre-install scripts). - After that, run
docker compose up -dto start all services. - Then follow the Post-configuration checklist to configure each service (Keycloak, SCS Manager, Nextcloud, JupyterHub, etc.).
Required environment variables (Keycloak pre-install)¶
The Keycloak pre-install script validates that these variables are set and non-empty (see 01_scripts/keycloak/pre-install.bash):
SCS_DB_ROOT_PASSWORDJUPYTERHUB_CLIENT_SECRET,JUPYTERHUB_DOMAINKC_DB_NAME,KC_DB_PASSWORD,KC_DB_USERNAME,KC_REALMKC_DIDMOS_CLIENT_ID,KC_DIDMOS_CLIENT_SECRETNEXTCLOUD_CLIENT_SECRET,NEXTCLOUD_NEXTCLOUD_DOMAINSCS_MANAGER_CLIENT_SECRET,SCS_MANAGER_DOMAIN
Set them in .env before running start.sh so the generated Keycloak realm and client secrets are correct from the first start. See Prerequisites and example-env for the full list of variables.