# Installation mit Docker

Flowplan läuft als ein einziger Container mit SQLite und einem Datenverzeichnis. Postgres, Redis oder ein separater Suchdienst werden nicht gebraucht.

## Voraussetzungen

- Ein Server mit Docker und einem dauerhaften Volume. Die Texterkennung gescannter PDFs braucht beim Hochladen kurzzeitig spürbar CPU.
- Eine Domain mit HTTPS über einen Reverse Proxy (Traefik, Caddy, nginx, Coolify, Pangolin …).
- Optional ein OpenID-Connect-Anbieter für Single Sign-on. Ohne ihn melden sich Personen mit E-Mail und Passwort oder Passkey an, siehe [Anmeldung](/sign-in).
- Optional: ein S3-kompatibler Speicher für Dateien und die laufende Datenbanksicherung, siehe [Speicher, S3 und Sicherung](/storage-and-backups).

## Mit Docker Compose

Flowplan ist Open Source (AGPL-3.0). Das fertige Image liegt in der GitHub Container Registry, für `linux/amd64` und `linux/arm64`:

| Tag | Inhalt |
| --- | --- |
| `ghcr.io/yannicschuller/flowplan:latest` | Neueste Version (Release) |
| `ghcr.io/yannicschuller/flowplan:1.2.3` | Feste Version, auch als `:1.2` und `:1` |
| `ghcr.io/yannicschuller/flowplan:beta` | Neuester Entwicklungsstand – zum Ausprobieren, nicht für den Betrieb |

Compose-Datei und Beispielkonfiguration herunterladen:

```bash
mkdir flowplan && cd flowplan
curl -O https://raw.githubusercontent.com/yannicschuller/flowplan/main/compose.yaml
curl -o .env https://raw.githubusercontent.com/yannicschuller/flowplan/main/.env.example
```

In `.env` mindestens die öffentliche Adresse setzen:

```dotenv
APP_URL=https://flowplan.example.com
```

Für Single Sign-on zusätzlich `OIDC_ISSUER`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET` und `OIDC_ADMIN_GROUP` (siehe [Anmeldung](/sign-in)); für E-Mails (Einladungen, Passwort vergessen) die `SMTP_*`-Werte aus der [Konfiguration](/configuration#e-mail-smtp).

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

Der Container lauscht auf Port `3000` (in der Compose-Datei nur an `127.0.0.1` gebunden, damit der Proxy davor sitzt). Das Volume `flowplan-data` auf `/app/data` hält alle Inhalte unabhängig vom Container. Eine feste Version wählst du mit `FLOWPLAN_VERSION=1.2.3` in der `.env`.

> [!NOTE]
> Eine Instanz öffnet direkt mit der Anmeldung. Die Webseite [flowplan.org](https://flowplan.org) und diese Dokumentation sind eigene Projekte; die gehostete Instanz läuft unter [app.flowplan.org](https://app.flowplan.org).

## Image selbst bauen

Aus dem Quellcode ([github.com/yannicschuller/flowplan](https://github.com/yannicschuller/flowplan)):

```bash
git clone https://github.com/yannicschuller/flowplan.git && cd flowplan
cp .env.example .env
docker compose up -d --build
```

Oder ohne Compose:

```bash
docker build -t flowplan:latest .
docker run -d --name flowplan \
  -p 127.0.0.1:3000:3000 \
  -v flowplan-data:/app/data \
  --env-file .env \
  flowplan:latest
```

Das Image enthält Node, Litestream für die S3-Sicherung und `curl` für den Healthcheck. Es läuft als Benutzer `node` (UID 1000).

## Erster Start

1. `https://flowplan.example.com/api/health` aufrufen – die Antwort ist `200` mit `"status":"ok"`.
2. Die Adresse im Browser öffnen: Eine neue Instanz bietet **Konto erstellen** an. Dieses erste Konto verwaltet die Instanz. (Mit Single Sign-on: **Mit SSO anmelden**; Admin ist, wer in der Gruppe aus `OIDC_ADMIN_GROUP` ist.)
3. In der Seitenleiste unter **Administration** Instanzname, Upload-Grenze, Registrierung und die [weiteren Einstellungen](/administration) setzen.

> [!WARNING]
> Flowplan ist für **genau eine laufende Instanz** gebaut. Mehrere Replikate würden dieselbe SQLite-Datei beschreiben. Nicht horizontal skalieren; bei Updates den alten Container vor dem neuen stoppen.

## Aktualisieren

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

Beim selbst gebauten Image stattdessen `git pull` und `docker compose up -d --build`.

Beim Start migriert Flowplan die Datenbank selbst. Vorher eine Sicherung anlegen (siehe [Speicher, S3 und Sicherung](/storage-and-backups)); ein Zurückgehen auf eine ältere Version nach einer Migration ist nicht vorgesehen.

## Ohne Docker

Node.js 22.13 oder neuer (Node 24 LTS empfohlen):

```bash
npm ci
npm run build
FLOWPLAN_DATA_DIR=/var/lib/flowplan npm start
```

Für die lokale Entwicklung reicht `npm run dev`. Der Entwicklungsmodus bietet zusätzlich **Lokalen Arbeitsbereich öffnen** an, ein gemeinsames Beispielkonto; im Produktionsmodus gibt es diesen Zugang nicht.

## Weiter

- [Konfiguration](/configuration): alle Umgebungsvariablen.
- [Coolify und Reverse Proxy](/coolify-and-proxy): Betrieb hinter Traefik, Coolify oder Pangolin.
