# Flow installeren en de eerste keer aanmelden

> Voer Flow uit met Node.js of Docker, open het op poort 8000, meld je aan met de login en het wachtwoord die Flow bij de eerste start genereert en weet in welke mappen je gegevens staan.

Framework: flow
Product: Flow (flow@11.1)
Language: nl
Content-SHA256: 06c24d907668a15160242bea5d4947de1e630a3be76e335578cd58ff1a8cc883
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Uitvoeren met Node.js

Flow heeft alleen Node.js nodig: geen database, geen externe dienst.

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

`npm run start` voert `node index.js 8000` uit. De poort is optioneel op de opdrachtregel en de standaard is `8000`, dus je opent `http://localhost:8000`. Voeg `--release` toe om in release-modus te draaien.

## Uitvoeren met Docker

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

De `docker-compose.yaml` van de repository koppelt poort 8000 en houdt twee volumes bij: de map `databases` (instellingen en gebruiker) en de map `flowstream` (je streams). Bewaar die twee volumes en je kunt de container bij elke update vervangen.

## De eerste aanmelding

Bij de eerste start maakt Flow de enige gebruiker van de toepassing aan met een **willekeurige login en een willekeurig wachtwoord**. Tot de eerste geslaagde aanmelding toont de aanmeldpagina ze in een kader (*Default account*) met een knop **Fill in the form**: klik erop en meld je aan. Vanaf dat moment verwijdert Flow de leesbare kopie van het wachtwoord uit zijn voorkeuren en verschijnt het kader niet meer, dus open meteen het wachtwoordformulier van de toepassing en stel een eigen login en wachtwoord in. Meld je voor het eerst aan zodra je een nieuwe installatie start, voordat iemand anders het adres kan bereiken.

Enkele details van de aanmelding, gelezen uit de broncode:

- Het wachtwoord wordt opgeslagen als SHA-256-hash met de `cookie_secret` van de installatie als salt, en de sessie is een cookie van een maand, versleuteld met hetzelfde geheim. Flow genereert de cookienaam en het geheim de eerste keer en bewaart ze in `databases/config.json`.
- Na herhaalde mislukte pogingen wordt een adres geblokkeerd (de blokkade wordt elke 15 minuten gewist).
- Wanneer de instellingen de tokens van een OpenPlatform bevatten (`op_reqtoken`, `op_restoken`), wordt de aanmeldpagina vervangen door de aanmelding van dat [OpenPlatform](/en/openplatform/how-an-app-connects/) en bepalen de rechten *Create Flows* en *Remove Flows* wie streams mag maken en verwijderen.

## Waar de gegevens staan

| Map | Wat erin staat |
|---|---|
| `databases/` | `config.json` (cookienaam en geheim) en `memorize_preferences.json` (naam, tokens, de gebruiker, de `env`, de URL’s van de componenten) |
| `flowstream/` | `database.json` met elke FlowStream: zijn ontwerp, componenten, variabelen en notities |
| `private/` | bestanden die de streams schrijven en die je kunt opsommen met het token van Flow |
| `public/cdn/` | cache van de interfacecomponenten die Flow downloadt zodra ze voor het eerst nodig zijn |

Om Flow naar een andere machine te verplaatsen, kopieer je `databases/` en `flowstream/`.

## Bijwerken

Download de nieuwe versie van de repository (het bestand `version` zegt welke je draait: `11.1` in de hier gedocumenteerde revisie) of haal de nieuwe Docker-image op en start die met dezelfde volumes.
