# Upgrade

> Aktualisieren Sie eine Installation auf eine neue Version und erfahren Sie, was Sie beim Wechsel von 2.1.0 auf 2.2.0 ändern müssen.

Ein Update ersetzt die PentAGI-Images und, wenn das Release sie geändert hat, die Compose-Dateien. Ihre `.env` und die Datenvolumes bleiben erhalten, und Datenbankmigrationen werden beim Start von PentAGI ausgeführt.

## [Bevor Sie beginnen](https://pentagi.com/de/docs/deployment/upgrade/#before-you-start)

* Lesen Sie die [Versionshinweise](https://pentagi.com/changelog/) jeder Version nach der von Ihnen verwendeten; seit 2.1.0 enthalten sie Upgrade-Hinweise.
* Sichern Sie die Datenbank. Weder der Installer noch PentAGI führt dies durch, und Migrationen können nicht ohne Datenverlust rückgängig gemacht werden. Mit den Standardwerten `PENTAGI_POSTGRES_USER` und `PENTAGI_POSTGRES_DB`:

  ```bash
  docker exec pgvector pg_dump -U postgres -Fc pentagidb > pentagi-backup.dump
  ```

  Bewahren Sie auch Kopien von `.env` und den Compose-Dateien auf: Der Installer ersetzt Compose-Dateien ohne Sicherung.
* Schließen Sie die [Flows](https://pentagi.com/de/docs/glossary/#flow) ab, die Sie nicht mehr benötigen. Eine [Sandbox](https://pentagi.com/de/docs/glossary/#sandbox), die noch läuft, wird so wiederverwendet, wie sie erstellt wurde, mit den Einstellungen des Releases, das sie erstellt hat.
* Wenn Sie von 2.1.0 kommen, nehmen Sie die Änderungen in [Von 2.1.0 zu 2.2.0](#from-210-to-220) an `.env` und den daneben liegenden Dateien vor, bevor das neue Release startet. Bei aktivierter Anmeldung über Google oder GitHub leeren Sie jetzt `OAUTH_GOOGLE_CLIENT_ID` und `OAUTH_GITHUB_CLIENT_ID`; der Abschnitt erklärt, warum.

## [Docker Compose](https://pentagi.com/de/docs/deployment/upgrade/#docker-compose)

1. Laden Sie die Compose-Dateien des neuen Releases neben Ihre `.env` herunter: `docker-compose.yml` und die Datei jedes optionalen Stacks, den Sie ausführen. Der PentAGI-Container erhält nur die Variablen, die seine Compose-Datei auflistet, daher haben neue Einstellungen in `.env` hinter einer älteren Datei keine Wirkung.

   ```bash
   cd ~/pentagi
   curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose.yml
   # and the file of each optional stack you run, for example:
   curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-langfuse.yml
   ```

2. Pullen Sie die Images und starten Sie neu, mit denselben `-f`-Dateien, mit denen Sie den Stack starten. Ohne `pull` behält `up -d` die bereits auf dem Host vorhandenen Images.

   ```bash
   docker compose pull && docker compose up -d
   ```

3. Aktualisieren Sie das Sandbox-Image auf dem Docker-Host, der die Flows ausführt, was `docker compose pull` nicht tut. Danach erstellte Flows verwenden es.

   ```bash
   docker pull vxcontrol/kali-linux
   ```

Der `latest`-Image-Tag folgt dem main-Branch. Um bei einem Release zu bleiben, setzen Sie `PENTAGI_IMAGE=vxcontrol/pentagi:<version>` in `.env`.

## [Installer](https://pentagi.com/de/docs/deployment/upgrade/#installer)

1. Laden Sie den Installer des neuen Releases von [Schnellstart](https://pentagi.com/de/docs/getting-started/quickstart/) herunter und führen Sie ihn mit Ihrer `.env` aus. Der Installer 2.1.0 kann sich nicht selbst aktualisieren.
2. Um die Compose-Dateien zu ersetzen, ändern Sie eine Einstellung, sodass **Apply Changes** im Menü erscheint, wählen Sie es aus und antworten Sie mit `y`, wenn der Installer die veralteten Dateien auflistet.
3. Führen Sie im Wartungsmenü **Update PentAGI** aus, um die neuen Images zu pullen, und **Update Worker Image**, wenn es angeboten wird. **Update PentAGI** allein behält die alten Compose-Dateien.

## [Von 2.1.0 auf 2.2.0](https://pentagi.com/de/docs/deployment/upgrade/#from-210-to-220)

### [Dateien](https://pentagi.com/de/docs/deployment/upgrade/#files)

* Die Compose-Datei bindet `example.bedrock.provider.yml` daneben ein. Der Installer erstellt sie; bei einer manuellen Installation erstellen Sie sie selbst, eine leere Datei reicht aus: `touch example.bedrock.provider.yml`.
* Ersetzen Sie `docker-compose-langfuse.yml`, wenn Sie Langfuse ausführen: Die Datei 2.1.0 benennt das `minio/minio`-Image, das nicht mehr veröffentlicht wird, sodass `docker compose pull` damit fehlschlägt. Wenn Ihre `.env` `MINIO_IMAGE=minio/minio:…` setzt, entfernen Sie diese Zeile.
* Legen Sie für den [Knowledge Graph](https://pentagi.com/de/docs/glossary/#knowledge-graph) `examples/neo4j` aus dem Repository unter `./neo4j` ab — Graphiti benötigt sein APOC-Plugin — und sehen Sie [Speicher und Wissen](https://pentagi.com/de/docs/concepts/memory/#knowledge-graph-optional) für die Modell-Presets. `GRAPHITI_MODEL_NAME` wird nicht mehr gelesen.
* Acht Datenbankmigrationen werden beim ersten Start ausgeführt. `docker compose logs pentagi` zeigt „Database schema updated successfully“ an, wenn sie abgeschlossen sind.

### [Anmeldung und Zugriff](https://pentagi.com/de/docs/deployment/upgrade/#sign-in-and-access)

* Jeder muss sich erneut anmelden: Sitzungen aus 2.1.0 werden abgelehnt. API-Tokens funktionieren weiterhin, und Skripte melden sich mit `POST /api/v1/auth/logout` ab.
* Ein API-Token erhält 403 auf den REST-Routen `/users`, `/roles` und `/tokens`: Verwalten Sie Konten, Rollen und Tokens über eine angemeldete Browsersitzung.
* Die Anmeldung mit Google und GitHub meldet nun eine vom [Provider](https://pentagi.com/de/docs/glossary/#provider) verifizierte E-Mail-Adresse im bestehenden Konto mit dieser Adresse an, einschließlich lokaler Konten, mit der Rolle dieses Kontos. 2.1.0 kann die E-Mail-Adresse eines Kontos nicht ändern. Wenn die Anmeldung aktiviert ist, aktualisieren Sie daher mit leerem `OAUTH_GOOGLE_CLIENT_ID` und `OAUTH_GITHUB_CLIENT_ID`, verschieben Sie `admin@pentagi.com` unter **Settings → Account** auf eine Adresse, die Sie kontrollieren, und schalten Sie die Anmeldung dann wieder ein. Die Option **Reset Admin Password** des Installers findet den Administrator nur über `admin@pentagi.com`.
* Hinter einem Reverse-Proxy setzen Sie `TRUSTED_PROXIES`, sonst teilen sich alle Nutzer die Adresse des Proxys und eine Häufung fehlgeschlagener Anmeldesperrt jeden für 15 Minuten aus — siehe [Netzwerkexposition](https://pentagi.com/de/docs/configuration/security/#network-exposure).

### [Sandboxes](https://pentagi.com/de/docs/deployment/upgrade/#sandboxes)

* Mit `DOCKER_INSIDE=true` — der Vorlage `.env` von 2.1.0 und Installer-Standard — mountete 2.1.0 den Docker-Socket des Hosts in jede Sandbox. 2.2.0 gibt [Agents](https://pentagi.com/de/docs/glossary/#agent) Docker nur über einen separaten Daemon-Set in `DOCKER_INSIDE_HOST`; ohne diesen erhalten sie keinen Zugriff, und das Log sagt `sandbox DISABLED`. Bei `DOCKER_INSIDE_HOST` setzen Sie `DOCKER_SOCKET=` leer, sonst wird die `/var/run/docker.sock` der Vorlage weiterhin gemountet. Siehe [Worker-Knoten](https://pentagi.com/de/docs/deployment/worker-node/).
* Schließen Sie die auf 2.1.0 gestarteten Flows ab: Ihre Sandboxes behalten die alte Socket-Mounting und Fähigkeiten, bis der Flow abgeschlossen ist.
* Lassen Sie `TENANT_ID` leer: Auf einer bestehenden Installation zeigt es PentAGI auf ein neues, leeres Schema.

### [Modelle und Prompts](https://pentagi.com/de/docs/deployment/upgrade/#models-and-prompts)

* Der benutzerdefinierte Provider benötigt `LLM_SERVER_KEY`: Mit einem leeren Schlüssel ist er deaktiviert, setzen Sie also für einen Server ohne Authentifizierung einen beliebigen nicht-leeren Wert.
* `LLM_SERVER_LEGACY_REASONING` wurde entfernt. Der benutzerdefinierte Provider sendet `reasoning_effort` und wandelt ein `reasoning.max_tokens`-Budget in ein Effort-Level um; bei Kimi K2, GLM vor 5.2 und MiniMax M-Modellen führt ein Budget jetzt zum Fehlschlagen des Aufrufs, entfernen Sie es also von diesen Agents.
* In Provider-Konfigurationsdateien erhält ein Agent-Eintrag, der `max_tokens`, `temperature`, `top_p` oder `n` leer lässt, nun die Standards des Provider-Typs, statt nichts zu senden.
* Die integrierten Standardmodelle haben sich für jeden Provider außer Bedrock geändert; in **Settings → Providers** gespeicherte Provider behalten ihre Modelle. Fünf im Image gebündelte Konfigurationen haben Modelle geändert — `openrouter`, `deepinfra`, `ollama-cloud`, `moonshot` und `deepseek`. Wenn `LLM_SERVER_CONFIG_PATH` oder `OLLAMA_SERVER_CONFIG_PATH` unter `/opt/pentagi/conf/` auf eine davon verweist, behalten Sie die Datei 2.1.0 auf dem Host und mounten Sie sie stattdessen als benutzerdefinierte oder Ollama-Konfiguration.
* Setzen Sie bei `EMBEDDING_URL` auf einem anderen Server als dem von OpenAI `EMBEDDING_KEY`: `OPEN_AI_KEY` wird dort nicht mehr gesendet.
* Agents suchen über ein einziges `web_search`-Tool. Benutzerdefinierte Prompts mit `{{.GoogleToolName}}` und den anderen pro-engine-Variablen werden ignoriert, mit einer Warnung im Log, bis sie `{{.WebSearchToolName}}` verwenden; passen Sie benutzerdefinierte searcher- und pentester-Prompts an die neuen Standards an.

### [Weitere Änderungen](https://pentagi.com/de/docs/deployment/upgrade/#other-changes)

* Innerhalb von zwei Minuten nach dem Start und dann alle drei Stunden meldet PentAGI seine Version und eine Zusammenfassung der Installation an `update.pentagi.com`; [Update-Prüfung](https://pentagi.com/de/docs/configuration/security/#update-check) listet auf, was gesendet wird, und `UPDATE_CHECK_INTERVAL=0` schaltet es aus.
* Der Profiler hört nur dann auf Port 7777, wenn `PPROF_ADDR` gesetzt ist.
* Neue optionale Einstellungen umfassen [Provider-Failover](https://pentagi.com/de/docs/configuration/llm-providers/#failover) mit `LLM_FALLBACK_PROVIDER`, `DOCKER_PORTS_BASE` für [mehrere Instanzen](https://pentagi.com/de/docs/deployment/production/#several-instances-tenant_id), `DOCKER_IMAGE_SELECTION_MODE` und `DOCKER_ALLOWED_IMAGES`, die interne [Search Engine](https://pentagi.com/de/docs/glossary/#search-engine) `WEB_SEARCH_INTERNAL_ENABLED` sowie die Schlüssel für Mistral, xAI, MiniMax und Firecrawl.

## [Sichern und Zurücksetzen](https://pentagi.com/de/docs/deployment/upgrade/#back-up-and-roll-back)

PentAGI führt Migrationen niemals rückwärts aus, und das manuelle Ausführen löscht Daten, daher ist der Weg zurück zu 2.1.0 das Backup. Stoppen Sie die Dienste, die die Datenbank verwenden, erstellen Sie sie neu und stellen Sie den Dump wieder her:

```bash
docker compose stop pentagi pgexporter
docker exec pgvector dropdb -U postgres pentagidb
docker exec pgvector createdb -U postgres pentagidb
docker exec -i pgvector pg_restore -U postgres -d pentagidb < pentagi-backup.dump
```

Stellen Sie dann die gesicherten `.env` und Compose-Dateien wieder her, setzen Sie `PENTAGI_IMAGE=vxcontrol/pentagi:2.1.0` und starten Sie den Stack. Behalten Sie das neue `docker-compose-langfuse.yml` bei: Das MinIO-Image der 2.1.0-Datei kann nicht mehr gepullt werden.