---
title: "Installation mit Portainer"
---

Für Docker-Hosts, die bereits mit Portainer verwaltet werden und einen Reverse Proxy (Traefik) betreiben.

## Voraussetzungen

- Portainer mit Zugriff auf den Docker-Host (Environment *local* oder Agent)
- Traefik als Reverse Proxy mit einem Docker-Netzwerk `traefik`, der Container über Labels einbindet (die Stack-Datei verwendet dieses Muster; andere Proxys: Labels anpassen oder [Docker Compose](/installation/docker-compose) mit Host-Port verwenden)
- Registry-Zugangsdaten aus der Lizenz unter **Registries** in Portainer eintragen

## Stack anlegen

1. **Stacks → + Add stack**, Name `community`, *Web editor*.
2. Inhalt der Datei `portainer/docker-compose.yml` aus dem Auslieferungspaket einfügen.
3. Unter **Environment variables** (Advanced mode) setzen:

    | Variable | Wert |
    | --- | --- |
    | `APP_IMAGE` | Image aus der Lizenz, z. B. `registry.example.org/community/app:1.5.0` |
    | `APP_URL` | `https://community.example.org` |
    | `APP_HOST` | `community.example.org` (Hostname ohne Schema – für die Traefik-Regel) |
    | `TRAEFIK_ENTRYPOINT` | Entrypoint Ihres Traefik, z. B. `web` oder `websecure` |
    | `APP_SECRET` | 64 zufällige Zeichen (`openssl rand -hex 32`) |
    | `MARIADB_PASSWORD`, `MARIADB_ROOT_PASSWORD` | zufällige Passwörter |
    | `MERCURE_JWT_SECRET` | mindestens 32 zufällige Zeichen |
    | `ADMIN_EMAIL`, `ADMIN_PASSWORD` | erstes Konto (Plattform-Admin), nur beim ersten Start wirksam |
    | `MAILER_DSN`, `MAILER_FROM_ADDRESS` | SMTP-Zugang oder `null://null` zum Ausprobieren |

4. **Deploy the stack**. Der Container `community-migrate-1` endet mit *Exited (0)* – das ist richtig; `app`, `worker`, `mercure`, `mariadb`, `redis` laufen.

## TLS und Schema

Endet TLS bei Traefik (`websecure` mit Zertifikat), ist nichts weiter nötig. Liegt vor Traefik noch ein weiterer Proxy oder ein CDN (z. B. Cloudflare, das per HTTP an Traefik weiterreicht), erkennt die Anwendung Cloudflare automatisch. Meldet Ihr Proxy der Anwendung das Schema nicht, setzen Sie `APP_TLS_TERMINATED=1` – sonst leitet die App bei `https`-`APP_URL` endlos um.

## Konsole

Portainer → Containers → `community-app-1` → **Console** (`/bin/sh`, Benutzer `www-data`): dort stehen die [Konsolenbefehle](/betrieb#konsole) zur Verfügung, z. B. `php bin/console app:doctor`.
