# Installera Flow och logga in första gången

> Kör Flow med Node.js eller Docker, öppna det på port 8000, logga in med det login och lösenord som Flow genererar vid första starten och ta reda på vilka mappar som innehåller dina data.

Framework: flow
Product: Flow (flow@11.1)
Language: sv
Content-SHA256: 9b7ebfd9deadb03d421722883ea88b46b0c121af7906869b4d5eed4ffcad1481
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Köra det med Node.js

Flow behöver bara Node.js: ingen databas, ingen extern tjänst.

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

`npm run start` kör `node index.js 8000`. Porten är valfri på kommandoraden och standard är `8000`, så du öppnar `http://localhost:8000`. Lägg till `--release` för att köra i release-läge.

## Köra det med Docker

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

Förrådets `docker-compose.yaml` mappar port 8000 och håller två volymer: mappen `databases` (inställningar och användare) och mappen `flowstream` (dina flöden). Behåll de två volymerna så kan du byta ut containern vid varje uppdatering.

## Den första inloggningen

Vid första starten skapar Flow applikationens enda användare med ett **slumpmässigt login och ett slumpmässigt lösenord**. Fram till den första lyckade inloggningen visar inloggningssidan dem i en ruta (*Default account*) med en knapp **Fill in the form**: klicka på den och logga in. Från och med då raderar Flow klartextkopian av lösenordet ur sina inställningar och rutan visas inte längre, så öppna direkt lösenordsformuläret i applikationen och ange ett eget login och lösenord. Gör den första inloggningen så fort du startar en ny installation, innan någon annan kan nå adressen.

Några detaljer om inloggningen, lästa ur källkoden:

- Lösenordet lagras som en SHA-256-hash med installationens `cookie_secret` som salt, och sessionen är en cookie på en månad krypterad med samma hemlighet. Flow genererar cookiens namn och hemligheten första gången och sparar dem i `databases/config.json`.
- Efter upprepade misslyckade försök blockeras en adress (blockeringen rensas var 15:e minut).
- När inställningarna innehåller tokens för en OpenPlatform (`op_reqtoken`, `op_restoken`) ersätts inloggningssidan av inloggningen i den [OpenPlatform](/en/openplatform/how-an-app-connects/) och behörigheterna *Create Flows* och *Remove Flows* styr vem som får skapa och ta bort flöden.

## Var data finns

| Mapp | Vad den innehåller |
|---|---|
| `databases/` | `config.json` (cookiens namn och hemlighet) och `memorize_preferences.json` (namn, tokens, användaren, `env`, komponenternas URL:er) |
| `flowstream/` | `database.json` med varje FlowStream: dess design, komponenter, variabler och anteckningar |
| `private/` | filer som flödena skriver och som du kan lista med Flows token |
| `public/cdn/` | cache för gränssnittskomponenterna som Flow laddar ner första gången de behövs |

Kopiera `databases/` och `flowstream/` för att flytta Flow till en annan maskin.

## Uppdatera

Ladda ner den nya versionen av förrådet (filen `version` visar vilken du kör: `11.1` i revisionen som dokumenteras här) eller hämta den nya Docker-avbilden och starta den med samma volymer.
