Voraussetzungen
Nova läuft als Container mit einer PostgreSQL-Datenbank und wird im Browser bedient. Auf den Arbeitsplätzen ist nichts zu installieren. Die Installationsschritte beschreibt Installation.
Laufzeitumgebung
| Baustein | Voraussetzung |
|---|---|
| Plattform | ein Server mit Docker Engine und Docker Compose v2 oder ein Cluster in SAP BTP, Kyma Runtime |
| Datenbank | PostgreSQL 16; die mitgelieferten Vorlagen betreiben sie als eigenen Container |
| Anwendung | Python 3.12 im Image; die Oberfläche entsteht beim Bau des Images |
| Zugriff der Anwender | HTTPS über einen vorgeschalteten TLS-Proxy oder das Kyma-Gateway |
Beim Bau des Images lädt Docker die Basis-Images für Node.js und Python sowie Pakete aus den Quellen von Debian, npm und PyPI. Der Rechner, der das Image baut, braucht Zugriff auf diese Quellen.
Eine Instanz
Nova läuft als genau eine Instanz mit einem Gunicorn-Worker (GUNICORN_WORKERS=1). Den Zeitplaner für Hintergrund-Jobs und den Zustand laufender Jobs hält Nova im Prozess; eine zweite Instanz oder ein zweiter Worker würde geplante Jobs doppelt ausführen. Mehr Last fängt Nova über Threads ab (GUNICORN_THREADS, Voreinstellung 8).
Größe
Eine verbindliche Größenempfehlung gibt es nicht. Anhaltspunkte:
- Die Kyma-Vorlage ist für eine Demo-Installation bemessen. Sie reserviert für Nova 0,2 CPU und 384 MiB Arbeitsspeicher bei einer Obergrenze von 1 CPU und 1 GiB, für PostgreSQL 0,1 CPU und 256 MiB bei einer Obergrenze von 0,5 CPU und 512 MiB, dazu 2 GiB Speicherplatz für die Datenbank.
- Nova öffnet bis zu 30 Verbindungen zur Datenbank.
Netzwerk
Nova baut die Verbindungen zu den Zielsystemen selbst auf. Freizugeben sind nur die Wege zu den tatsächlich angebundenen Systemen:
| Ziel | Protokoll und übliche Ports |
|---|---|
| SAP (ABAP) | RFC zum Gateway des Anwendungsservers, Port 33‹Systemnummer›; bei Anmeldung über den Message-Server auch dessen Port; optional über einen SAProuter |
| Active Directory, LDAP | LDAPS (636) oder LDAP (389) |
| Microsoft Entra ID | HTTPS (443) zur Microsoft-Anmeldung und zu Microsoft Graph |
| Keycloak | HTTPS zur Anmelde- und Admin-Schnittstelle des Realms |
| SCIM-Anwendungen | HTTPS zum SCIM-Endpunkt der Anwendung |
| SMTP, Voreinstellung Port 587 mit STARTTLS | |
| KI, optional | HTTPS zum Cloud-Anbieter oder Verbindung zum eigenen Ollama-Server |
Dieselben Wege gelten, wenn ein System als Quellsystem dient – etwa ein LDAP-Verzeichnis mit HR-Daten oder SAP-Organisationsdaten per RFC. Einzelheiten zu den Anbindungen stehen unter Zielsysteme – Überblick.
SAP: RFC-SDK des Kunden
Für SAP nutzt Nova das SAP NetWeaver RFC SDK. Es ist SAP-Software und nicht im Standard-Image enthalten: Das Image aus deploy/Dockerfile wird ohne SDK gebaut, SAP-Funktionen bleiben darin abgeschaltet. Wer SAP anbinden will, stellt das SDK für Linux bereit und nimmt es zusammen mit dem Python-Paket pyrfc in das Image auf.
E-Mail
Für Benachrichtigungen braucht Nova einen SMTP-Server. Eingerichtet wird er unter „Administration“ → „Benachrichtigungen“ → „E-Mail (SMTP)“. Ist dort nichts hinterlegt, verwendet Nova die Umgebungsvariablen NOVA_SMTP_*; nötig sind dann mindestens NOVA_SMTP_HOST und NOVA_SMTP_FROM_ADDRESS.
Umgebungsvariablen
| Variable | Bedeutung |
|---|---|
SECRET_KEY | Pflicht. Schlüssel für die Anmeldesitzungen. Fehlt er, erzeugt Nova bei jedem Start einen neuen; nach jedem Neustart müssen sich dann alle neu anmelden. Die Compose-Vorlage startet ohne ihn nicht. |
NOVA_ENCRYPTION_KEY | Pflicht. Schlüssel, mit dem Nova gespeicherte Zugangsdaten verschlüsselt. Warum er getrennt aufzubewahren ist, steht unter Updates und Sicherung. |
DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD | Verbindung zur Datenbank |
TRUST_PROXY, SESSION_COOKIE_SECURE | hinter einem TLS-Proxy beide auf 1 |
Optional sind unter anderem NOVA_TIMEZONE – die Zeitzone, nach der Nova den Kalendertag für Gültigkeiten bestimmt, Voreinstellung Europe/Berlin –, NOVA_SMTP_* sowie CLAUDE_API_KEY oder OPENAI_API_KEY für die KI eines Cloud-Anbieters. RUN_DUMMIES startet Demo-Zielsysteme im Container und bleibt im Produktivbetrieb auf 0.