# Flow installieren und zum ersten Mal anmelden

> Führen Sie Flow mit Node.js oder Docker aus, öffnen Sie es auf Port 8000, melden Sie sich mit dem Login und Passwort an, die Flow beim ersten Start erzeugt, und wissen Sie, in welchen Ordnern Ihre Daten liegen.

Framework: flow
Product: Flow (flow@11.1)
Language: de
Content-SHA256: 51d61192c677d15fd59203a46434a62c466974d10f9d921b569f14d4109e21be
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Mit Node.js ausführen

Flow braucht nur Node.js: keine Datenbank, keinen externen Dienst.

```bash
git clone https://github.com/totaljs/flow.git
cd flow
npm install
npm run start
```

`npm run start` führt `node index.js 8000` aus. Der Port ist auf der Kommandozeile optional und der Standard ist `8000`, Sie öffnen also `http://localhost:8000`. Mit `--release` starten Sie im Release-Modus.

## Mit Docker ausführen

```bash
docker pull totalplatform/flow
docker run -p 8000:8000 totalplatform/flow
```

Die `docker-compose.yaml` des Repositorys bildet Port 8000 ab und hält zwei Volumes: den Ordner `databases` (Einstellungen und Benutzer) und den Ordner `flowstream` (Ihre Streams). Behalten Sie diese beiden Volumes, dann können Sie den Container bei jedem Update ersetzen.

## Die erste Anmeldung

Beim ersten Start legt Flow den einzigen Benutzer der Anwendung mit einem **zufälligen Login und einem zufälligen Passwort** an. Bis zur ersten erfolgreichen Anmeldung zeigt die Anmeldeseite beides in einem Kasten (*Default account*) mit einer Schaltfläche **Fill in the form**: Klicken Sie darauf und melden Sie sich an. Ab diesem Moment löscht Flow die Klartextkopie des Passworts aus seinen Einstellungen und der Kasten erscheint nicht mehr. Öffnen Sie also sofort das Passwortformular der Anwendung und legen Sie ein eigenes Login und Passwort fest. Melden Sie sich direkt nach dem Start einer neuen Installation zum ersten Mal an, bevor jemand anderes die Adresse erreichen kann.

Einige Details der Anmeldung, aus dem Quellcode gelesen:

- Das Passwort wird als SHA-256-Hash mit dem `cookie_secret` der Installation als Salt gespeichert, und die Sitzung ist ein Cookie für einen Monat, verschlüsselt mit demselben Geheimnis. Flow erzeugt Cookie-Namen und Geheimnis beim ersten Mal und speichert sie in `databases/config.json`.
- Nach wiederholten Fehlversuchen wird eine Adresse gesperrt (die Sperre wird alle 15 Minuten aufgehoben).
- Enthalten die Einstellungen die Tokens eines OpenPlatform (`op_reqtoken`, `op_restoken`), wird die Anmeldeseite durch die Anmeldung dieses [OpenPlatform](/en/openplatform/how-an-app-connects/) ersetzt, und die Berechtigungen *Create Flows* und *Remove Flows* steuern, wer Streams erstellen und entfernen darf.

## Wo die Daten liegen

| Ordner | Was er enthält |
|---|---|
| `databases/` | `config.json` (Name und Geheimnis des Cookies) und `memorize_preferences.json` (Name, Tokens, der Benutzer, das `env`, die URLs der Komponenten) |
| `flowstream/` | `database.json` mit jedem FlowStream: Design, Komponenten, Variablen und Notizen |
| `private/` | Dateien, die die Streams schreiben und die Sie mit dem Token von Flow auflisten können |
| `public/cdn/` | Cache der Oberflächenkomponenten, die Flow beim ersten Bedarf herunterlädt |

Um Flow auf einen anderen Rechner zu verschieben, kopieren Sie `databases/` und `flowstream/`.

## Aktualisieren

Laden Sie die neue Version des Repositorys herunter (die Datei `version` verrät, welche Sie betreiben: `11.1` in der hier dokumentierten Revision) oder ziehen Sie das neue Docker-Image und starten Sie es mit denselben Volumes.
