# Sicherheit

> Anmeldedaten, HTTPS, Anmeldung und Netzwerkanbindung einer PentAGI-Installation.

## [Standardwerte ändern](https://pentagi.com/de/docs/configuration/security/#change-the-defaults)

Eine Neuinstallation erstellt den lokalen Administrator `admin@pentagi.com` mit dem Passwort `admin`, das bei der ersten Anmeldung geändert werden muss. Falls das Passwort verloren geht, setzt es das Wartungsmenü des Installers zurück, solange das Konto noch die Adresse `admin@pentagi.com` verwendet.

Legen Sie diese Werte in `.env` vor dem ersten Start fest; der Installer generiert den Salt und die Passwörter für Sie. PostgreSQL und Neo4j übernehmen ihre Anmeldedaten nur bei der Erstellung ihrer Datenvolumes, sodass eine spätere Änderung die Verbindung unterbricht:

| Variable                                             | Zweck                                                                                                        |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `COOKIE_SIGNING_SALT`                                | Signiert Session-Cookies und API-Tokens — setzen Sie einen zufälligen Wert                                   |
| `PENTAGI_POSTGRES_USER`, `PENTAGI_POSTGRES_PASSWORD` | PostgreSQL-Anmeldedaten                                                                                      |
| `NEO4J_PASSWORD`                                     | Neo4j-Passwort für den [Knowledge Graph](https://pentagi.com/de/docs/glossary/#knowledge-graph); `NEO4J_USER` muss `neo4j` bleiben |
| `PUBLIC_URL`                                         | Die URL, die Benutzer aufrufen, zum Beispiel `https://pentagi.example.com`                                   |

Ändern Sie bei einer laufenden Installation zuerst ein Datenbankpasswort in PostgreSQL oder Neo4j und anschließend in `.env`.

## [HTTPS](https://pentagi.com/de/docs/configuration/security/#https)

PentAGI stellt HTTPS auf Port 8443 mit einem selbstsignierten Zertifikat bereit. Um Ihr eigenes zu verwenden, setzen Sie `SERVER_SSL_CRT` und `SERVER_SSL_KEY` und binden Sie die Dateien in `docker-compose.yml` ein.

## [Benutzer und Anmeldung](https://pentagi.com/de/docs/configuration/security/#users-and-sign-in)

Es gibt kein Registrierungsformular. Administratoren verwalten lokale Benutzer über die Users-API (`/api/v1/users/`) aus einer angemeldeten Browsersitzung heraus — ein API-Token erhält dort einen 403-Fehler — und Rollen beschränken, was jeder Benutzer sehen und ändern darf. Lokale Benutzer ändern ihre eigene E-Mail-Adresse und ihr Passwort unter **Settings → Account**.

Wenn die Anmeldung über GitHub oder Google konfiguriert ist, meldet sich eine Anmeldung, deren vom Anbieter verifizierte E-Mail-Adresse mit einem bestehenden Konto übereinstimmt (einschließlich lokaler Konten), bei diesem Konto mit seiner Rolle an; jede andere Anmeldung erhält ein neues Konto mit der Standardbenutzerrolle. Jede Installation beginnt mit dem Administrator `admin@pentagi.com`, verschieben Sie ihn daher unter **Settings → Account** auf eine Adresse, die Sie kontrollieren, bevor Sie die Anmeldung aktivieren, und aktivieren Sie sie nur dort, wo neue Konten akzeptabel sind, beispielsweise mit einer Google Workspace-App, die auf Ihre Domain beschränkt ist.

Die Anmeldung über GitHub und Google ist via OAuth verfügbar. Registrieren Sie eine App mit dem Callback `${PUBLIC_URL}/api/v1/auth/login-callback` und fügen Sie deren Anmeldedaten hinzu:

```bash
PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret
```

## [Netzwerkzugriff](https://pentagi.com/de/docs/configuration/security/#network-exposure)

Standardmäßig lauscht die PentAGI-Weboberfläche nur auf `127.0.0.1`. Um von anderen Rechnern darauf zuzugreifen:

```bash
PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443
```

Verwenden Sie die tatsächliche Adresse in `PUBLIC_URL` und `CORS_ORIGINS`, niemals `0.0.0.0`. Erstellen Sie die Container mit `docker compose up -d --force-recreate` neu und öffnen Sie Port 8443 in der Firewall.

Hinter einem Reverse-Proxy setzen Sie `TRUSTED_PROXIES` auf die Adresse oder das CIDR des Proxys, durch Kommas getrennt. Andernfalls scheint jede Anfrage vom Proxy zu kommen, und das Anmelde-Limit pro Adresse – 30 fehlgeschlagene Versuche in fünf Minuten, dann eine 15-minütige Sperrung – wird von allen Nutzern gemeinsam genutzt.

Jeder Sandbox-Container eines [Flow](https://pentagi.com/de/docs/glossary/#flow) veröffentlicht außerdem zwei Ports für Out-of-Band-Callbacks, beispielsweise für Reverse Shells. Sie stammen aus den 2000 Ports, die bei `DOCKER_PORTS_BASE` beginnen (Standard `28000`) und an `DOCKER_PUBLIC_IP` gebunden sind, die Adresse, die die [Agents](https://pentagi.com/de/docs/glossary/#agent) auch Zielen für Rückrufe angeben.

Standardmäßig ist `DOCKER_PUBLIC_IP` auf `0.0.0.0` eingestellt: Die Ports lauschen auf allen Schnittstellen des Docker-Hosts, und die Agents ermitteln ihre öffentliche Adresse selbst. Legen Sie nur dann eine spezifische Adresse fest, wenn der Host diese Adresse besitzt und die Ziele sie erreichen können; hinter NAT behalten Sie den Standardwert bei. Von Docker veröffentlichte Ports umgehen ufw- und firewalld-Regeln auf dem Host, schränken Sie den Bereich daher mit einer Firewall vor dem Host ein, beispielsweise einer Cloud-Sicherheitsgruppe, oder mit Regeln in der `DOCKER-USER`-Kette von Docker.

`PROXY_URL` leitet die Aufrufe des Backends an Modell-Provider, den Embedding-Provider, Such-APIs und die Update-Prüfung über einen Proxy weiter, was hilft, die Installation von externen Netzwerken zu isolieren. Selbst gehostete Endpunkte wie Ollama, vLLM oder SearXNG laufen ebenfalls darüber, da es keine `NO_PROXY`-Ausnahme gibt; der Proxy muss sie daher erreichen können. Die Sandbox-Container der Flows, in denen die Agents ihre Befehle ausführen, der Scraper, der Webseiten für das Browser-Tool öffnet, und der Graphiti-Dienst verwenden ihn nicht; beschränken Sie daher deren ausgehenden Datenverkehr auf Netzwerkebene. Die Anmeldung mit GitHub oder Google sowie Aufrufe an einen Langfuse- oder OpenTelemetry-Endpunkt außerhalb der gebündelten Stacks verwenden ihn ebenfalls nicht, und der Docker-Daemon lädt Images mit seinen eigenen Proxy-Einstellungen herunter.

## [Update-Prüfung](https://pentagi.com/de/docs/configuration/security/#update-check)

Innerhalb von zwei Minuten nach dem Start und dann alle drei Stunden fragt der Server `update.pentagi.com`, ob ein neuerer Build verfügbar ist. Die Anfrage enthält die Installations-ID, den Lizenzschlüssel, falls einer gesetzt ist, die Version und Plattform sowie eine Zusammenfassung der Installation: den konfigurierten Provider und die Anmeldearten, einige Feature-Schalter, die Anzahl der Benutzer, Flows, [Tasks](https://pentagi.com/de/docs/glossary/#task), Container, Prompts, API-Tokens und [Tool Calls](https://pentagi.com/de/docs/glossary/#tool-call) sowie die Token- und Kostensummen pro Providertyp – keine Namen, Adressen, Prompts oder Flow-Inhalte. `UPDATE_CHECK_INTERVAL=0` schaltet dies ab. Bei jedem Start des Installers und nach jeder ausgeführten Aktion, wie Apply Changes, Update, Start oder Stop, sendet dieser die installierten Images und den Status jedes Stacks sowie dieselbe Zusammenfassung, solange PentAGI läuft; `UPDATE_CHECK_INTERVAL` hat darauf keinen Einfluss.

> [!WARNING]
> Der Container `pentagi` läuft als Root, da er Container über den Docker-Socket verwaltet. Für eine stärkere Isolation führen Sie die [Tools](https://pentagi.com/de/docs/glossary/#tool) auf einem separaten [Worker Node](https://pentagi.com/de/docs/deployment/worker-node/) aus.