---
title: Docker Compose
description: Betreiben Sie Human Plugin mit Docker Compose auf einem einzelnen Host, angebunden an Ihre PostgreSQL-Datenbank.
canonical: https://developer.unico.io/de/human-plugin/self-hosting/docker-compose
locale: de
generated_by: markdown-export
---

# Docker Compose

Ein Human-Plugin-Container auf einem Host, verbunden mit Ihrer PostgreSQL-Datenbank.

## Voraussetzungen

- Docker Engine 24 oder neuer mit Docker Compose v2.
- Eine PostgreSQL-Datenbank, die ausschließlich Human Plugin vorbehalten und vom Host aus erreichbar ist. Siehe [Voraussetzungen und Zugang](/de/human-plugin/get-started/prerequisites).
- Die Registry-Zugangsdaten und der Zugriffsschlüssel von Unico.

## 1. Bei der Registry anmelden

Einmal pro Host. Docker speichert die Zugangsdaten in `~/.docker/config.json`.

```bash
echo "<token>" | docker login pkg.unico.run -u <username> --password-stdin
```

## 2. Einstellungen schreiben

Erstellen Sie ein Verzeichnis für Human Plugin und eine `.env`-Datei, die nur vom Eigentümer lesbar ist:

```bash
mkdir -p /opt/human-plugin && cd /opt/human-plugin
```

```bash title=".env"
HUMAN_API_ACCESS_KEY=<your access key>
POSTGRES_ADDRESS_HOST=<database host>
POSTGRES_USER=human_plugin
POSTGRES_PASSWORD=<database password>
```

```bash
chmod 600 .env
```

Fügen Sie `POSTGRES_ADDRESS_PORT`, `POSTGRES_DATABASE` oder `POSTGRES_SSL_MODE` nur hinzu, wenn Ihre Datenbank von den Standardwerten in [Konfiguration](/de/human-plugin/self-hosting/configuration) abweicht. Committen Sie die `.env`-Datei niemals.

## 3. `compose.yaml` schreiben

```yaml title="compose.yaml"
services:
  human-plugin:
    image: pkg.unico.run/human-plugin-api:latest
    pull_policy: always
    restart: unless-stopped
    stop_grace_period: 60s
    env_file: .env
    ports:
      - "127.0.0.1:8080:8080"
```

- **`ports`:** Veröffentlichen Sie nur auf `127.0.0.1` oder einer privaten Schnittstelle, niemals auf `0.0.0.0`. Human Plugin hat keine eigene Authentifizierung: siehe [Netzwerk und Sicherheit](/de/human-plugin/self-hosting/networking-and-security).
- **`stop_grace_period: 60s`:** Human Plugin wartet beim Stoppen bis zu 55 Sekunden auf laufende Anfragen. Eine kürzere Karenzzeit kann ein create abbrechen.
- **`pull_policy: always`:** Jedes `up` prüft auf das neueste Image, sodass Sie immer das aktuellste Release betreiben.

## 4. Starten

```bash
docker compose up -d
```

```bash
curl --fail http://127.0.0.1:8080/health/ready
```

Leiten Sie Datenverkehr erst dann an Human Plugin, wenn `/health/ready` mit `200` antwortet. Führen Sie anschließend die create-Anfrage aus dem [Quickstart](/de/human-plugin/get-started/quickstart#3-create-a-process) dagegen aus.

## Logs und Status

```bash
docker compose ps
```

```bash
docker compose logs -f human-plugin
```

Ein gesunder Start endet mit der Zeile `human plugin listening`. Das vollständige Start-Log finden Sie unter [Health und Monitoring](/de/human-plugin/self-hosting/health-and-monitoring#logs). Wenn der Container in einer Schleife neu startet, nennt das Log den Grund: siehe [Fehlerbehebung](/de/human-plugin/additional-resources/troubleshooting).

## Aktualisieren

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

Compose ersetzt den Container nur, wenn sich das Image geändert hat. Was Sie nach einem Update prüfen sollten, steht unter [Betrieb](/de/human-plugin/self-hosting/operations).

## Stoppen

```bash
docker compose down
```

Ihre Daten liegen in Ihrer PostgreSQL-Datenbank, daher geht beim Stoppen oder Entfernen des Containers nichts verloren.