Installation
There are two prepared ways to install Nova. Both build the image from deploy/Dockerfile and run Nova together with PostgreSQL 16. The templates are in the deploy/ directory; the commands below run in the directory that contains deploy/. What has to be in place beforehand is described in Requirements.
Single server with Docker Compose
The template deploy/docker-compose.yml starts Nova and PostgreSQL as containers. The database lives in a Docker volume of its own and survives restarts and updates.
- Create the configuration. Copy
deploy/.env.exampletodeploy/.envand set at leastSECRET_KEY,NOVA_ENCRYPTION_KEYand a dedicatedDB_PASSWORD;RUN_DUMMIESstays at0. The two keys can be generated as follows, the second one with Python and thecryptographypackage:bashopenssl rand -hex 32 python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" - Prepare for the TLS proxy. In
deploy/.env, setAPP_BIND=127.0.0.1so that Nova can only be reached from the server itself, plusTRUST_PROXY=1andSESSION_COOKIE_SECURE=1. - Build and start.bashThe first run builds the image and takes a few minutes. Nova is ready as soon as the log shows Gunicorn listening on port 8000. The template also contains the
docker compose -f deploy/docker-compose.yml --env-file deploy/.env up -d --build app docker compose -f deploy/docker-compose.yml --env-file deploy/.env logs -f apphandbookservice, which serves this handbook; Nova does not need it. - Set up the TLS proxy. A web server on the host accepts HTTPS and forwards to
http://127.0.0.1:8000. The nginx templates indeploy/nginx/show the settings: pass on the headersHost,X-Forwarded-For,X-Forwarded-ProtoandX-Forwarded-Host, allow uploads of up to 25 MB and set timeouts of 120 seconds. The certificate can be obtained from Let's Encrypt with certbot, for example.
Do not run without TLS
Without an upstream proxy, Nova serves plain, unencrypted HTTP only. Put a TLS proxy in front of it before using it with real data.
SAP BTP, Kyma runtime
The templates in deploy/kyma/ run Nova in a Kyma cluster: a Deployment for Nova, PostgreSQL as a StatefulSet with its own volume, and an APIRule that makes Nova reachable over HTTPS through the Kyma gateway – at https://nova-iam.‹cluster domain›.
- Access and namespace. Set up kubectl with the cluster's kubeconfig; sign-in runs through the OIDC plugin kubelogin. Create a namespace, for example
nova-iam. If the image is in a private registry, also create an image pull secret. - Provide the image. Build the image from
deploy/Dockerfile, push it to the registry and enter it indeployment.yaml. Give every new version a new tag: a node does not pull a tag it has already pulled. - Create the secret. Nova and PostgreSQL read their environment from the secret
nova-secrets, templatesecret.example.yaml:POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD,DB_NAME,DB_USER,DB_PASSWORD(same asPOSTGRES_PASSWORD),SECRET_KEYandNOVA_ENCRYPTION_KEY. Further variables such asSESSION_COOKIE_SECURE=1orNOVA_SMTP_*are added as extra keys. The real values do not belong in version-controlled files. - Adapt for production. The template is designed for a demo: in
deployment.yaml, setRUN_DUMMIESto"0"and do not applydummies-expose.yaml. Keepreplicas: 1and theRecreatestrategy – this way two instances never run at the same time. - Apply.bash
kubectl -n nova-iam apply -f deploy/kyma/postgres.yaml kubectl -n nova-iam apply -f deploy/kyma/deployment.yaml kubectl -n nova-iam apply -f deploy/kyma/apirule.yaml kubectl -n nova-iam rollout status deploy/nova-iam
The first start
On start, Nova creates the database schema and brings it up to date on every subsequent start. On the first start, Nova also writes basic data, including:
- an administrator account with a preset password, which administrators should change right after the first sign-in,
- the entitlements “Admin”, “Manager”, “Security” and “SoD Reviewer”,
- the preset background jobs, see Monitoring and jobs,
- two example target systems pointing to local test services: “SCIM Dummy Target” and “LDAP Directory”.
Administrators then connect their own target systems under “Systems”, see Target systems – Overview. How updates and backups work is described in Updates and backup.