# Instalează Flow și autentifică-te prima dată

> Rulează Flow cu Node.js sau Docker, deschide-l pe portul 8000, autentifică-te cu login-ul și parola pe care Flow le generează la prima pornire și află în ce foldere se află datele tale.

Framework: flow
Product: Flow (flow@11.1)
Language: ro
Content-SHA256: de9241058f28958e2a703e810467baf0b18fa5927a330a165231996a3f8e909c
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Rularea cu Node.js

Flow are nevoie doar de Node.js: nicio bază de date, niciun serviciu extern.

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

`npm run start` rulează `node index.js 8000`. Portul este opțional în linia de comandă, iar valoarea implicită este `8000`, așa că deschizi `http://localhost:8000`. Adaugă `--release` pentru a rula în modul release.

## Rularea cu Docker

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

Fișierul `docker-compose.yaml` din depozit mapează portul 8000 și păstrează două volume: folderul `databases` (setările și utilizatorul) și folderul `flowstream` (fluxurile tale). Păstrează aceste două volume și poți înlocui containerul la fiecare actualizare.

## Prima autentificare

La prima pornire, Flow creează singurul utilizator al aplicației cu un **login și o parolă aleatorii**. Până la prima autentificare reușită, pagina de autentificare le afișează într-o casetă (*Default account*) cu un buton **Fill in the form**: apasă-l și autentifică-te. Din acel moment Flow șterge din preferințe copia în clar a parolei și caseta nu mai apare, așa că deschide imediat formularul de parolă al aplicației și setează un login și o parolă proprii. Fă prima autentificare imediat ce pornești o instalație nouă, înainte ca altcineva să poată ajunge la adresă.

Câteva detalii ale autentificării, citite din codul sursă:

- Parola este stocată ca hash SHA-256 cu `cookie_secret` al instalației drept sare, iar sesiunea este un cookie de o lună criptat cu același secret. Flow generează numele cookie-ului și secretul prima dată și le păstrează în `databases/config.json`.
- După încercări eșuate repetate, o adresă este blocată (blocarea se șterge la fiecare 15 minute).
- Când setările conțin token-urile unui OpenPlatform (`op_reqtoken`, `op_restoken`), pagina de autentificare este înlocuită cu autentificarea acelui [OpenPlatform](/en/openplatform/how-an-app-connects/), iar permisiunile *Create Flows* și *Remove Flows* controlează cine poate crea și elimina fluxuri.

## Unde sunt datele

| Folder | Ce conține |
|---|---|
| `databases/` | `config.json` (numele și secretul cookie-ului) și `memorize_preferences.json` (nume, token-uri, utilizatorul, `env`, URL-urile componentelor) |
| `flowstream/` | `database.json` cu fiecare FlowStream: designul, componentele, variabilele și notele sale |
| `private/` | fișiere pe care le scriu fluxurile și pe care le poți lista cu token-ul Flow |
| `public/cdn/` | cache al componentelor interfeței pe care Flow le descarcă prima dată când sunt necesare |

Pentru a muta Flow pe altă mașină, copiază `databases/` și `flowstream/`.

## Actualizare

Descarcă noua versiune a depozitului (fișierul `version` îți spune pe care o rulezi: `11.1` în revizia documentată aici) sau descarcă noua imagine Docker și pornește-o cu aceleași volume.
