# Produktion

> PentAGI für ein Team betreiben – Härtung, Isolation, Podman und mehrere Instanzen.

## [Checkliste](https://pentagi.com/de/docs/deployment/production/#checklist)

* Legen Sie alle Zugangsdaten, einschließlich `COOKIE_SIGNING_SALT`, vor dem ersten Start fest — siehe [Sicherheit](https://pentagi.com/de/docs/configuration/security/). Der Installer generiert das Salt und die Dienstpasswörter, aber nicht die Langfuse- und Grafana-Admin-Passwörter: Legen Sie `LANGFUSE_INIT_USER_PASSWORD`, `password` in der Vorlage fest, bevor Langfuse zum ersten Mal startet, und ändern Sie nach dem ersten Start von Grafana dessen Standard-`admin` / `admin`. Ändern Sie bei einer laufenden Installation die PostgreSQL- und Neo4j-Passwörter innerhalb der Datenbanken, bevor Sie sie in `.env` ändern.
* Verwenden Sie ein echtes Zertifikat und einen stabilen `PUBLIC_URL`.
* Hinter einem Reverse-Proxy setzen Sie `TRUSTED_PROXIES` auf die Adresse oder das CIDR des Proxys. Andernfalls teilen sich alle Nutzer die Adresse des Proxys, und 30 fehlgeschlagene Anmeldungen innerhalb von 5 Minuten sperren jeden für 15 Minuten aus.
* Verlegen Sie die Tool-Ausführung auf einen dedizierten [Worker Node](https://pentagi.com/de/docs/deployment/worker-node/).
* Aktivieren Sie [Observability](https://pentagi.com/de/docs/configuration/observability/), um Kosten und Fehler nachverfolgen zu können.
* Halten Sie den [Knowledge Graph](https://pentagi.com/de/docs/glossary/#knowledge-graph) und Langfuse in einem privaten Netzwerk.

## [Podman](https://pentagi.com/de/docs/deployment/production/#podman)

PentAGI läuft sowohl auf Podman als auch auf Docker. Im Rootless-Modus benötigt der Dienst `scraper` eine zusätzliche Konfiguration, da Rootless-Container keine privilegierten Ports binden können; das README des Repositorys beschreibt die Rootless- und Rootful-Setups.

## [Mehrere Instanzen (`TENANT_ID`)](https://pentagi.com/de/docs/deployment/production/#several-instances-tenant_id)

Lassen Sie `TENANT_ID` für eine einzelne Installation leer, und behalten Sie den leeren Wert auch bei einer bestehenden Installation bei: Wenn Sie ihn später setzen, wird die Instanz in ein neues, leeres Schema verschoben, das mit dem Standard-`admin@pentagi.com`-Konto beginnt, und ihre [Flows](https://pentagi.com/de/docs/glossary/#flow), Benutzer und Einstellungen sind nicht mehr sichtbar. Setzen Sie den Wert bei den Instanzen, die Sie hinzufügen, wenn mehrere PentAGI-Instanzen externe Ressourcen wie einen PostgreSQL-Server, einen [Worker Node](https://pentagi.com/de/docs/glossary/#worker-node), eine Neo4j- oder eine Langfuse-Instanz gemeinsam nutzen:

| Bereich           | Auswirkung von `TENANT_ID=acme`                                            |
| ----------------- | -------------------------------------------------------------------------- |
| PostgreSQL        | Arbeitet im Schema `acme` statt `public`                                   |
| Worker-Container  | Werden als `acme-pentagi-terminal-<flow>` benannt                          |
| Knowledge Graph   | Gruppen-IDs werden zu `acme-flow-<id>`                                     |
| Authentifizierung | Cookie- und Token-Schlüssel enthalten den [Tenant](https://pentagi.com/de/docs/glossary/#tenant) |
| Telemetrie        | Langfuse- und OpenTelemetry-Daten werden mit dem Tenant gekennzeichnet     |

Der Wert muss mit `^[a-z][a-z0-9_]{0,31}$` übereinstimmen. Host-Ressourcen sind nicht namespaced. Instanzen auf einem Server benötigen ihre eigenen `DATA_DIR` und veröffentlichten Ports. Instanzen, deren [Sandboxes](https://pentagi.com/de/docs/glossary/#sandbox) auf demselben Docker-Host laufen, auf einem Server oder einem gemeinsamen Worker Node, benötigen ihren eigenen `DOCKER_PORTS_BASE` und, falls dieser gesetzt ist, ihren eigenen `DOCKER_WORK_DIR`; andernfalls beanspruchen ihre Sandboxes dieselben Ports und Flows können nicht gestartet werden. Jede Basis startet ein Fenster von 2000 Ports, standardmäßig bei `28000`, verwenden Sie daher zum Beispiel `28000` und `30000`.