# Installare Flow e accedere per la prima volta

> Esegui Flow con Node.js o Docker, aprilo sulla porta 8000, accedi con il login e la password che Flow genera al primo avvio e scopri in quali cartelle si trovano i tuoi dati.

Framework: flow
Product: Flow (flow@11.1)
Language: it
Content-SHA256: 633bb7ef7ffd08c57b94eb99a8bc35a9236d738d604bb67430b92a2e17da4051
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Eseguirlo con Node.js

Flow ha bisogno solo di Node.js: nessun database, nessun servizio esterno.

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

`npm run start` esegue `node index.js 8000`. La porta è facoltativa sulla riga di comando e il valore predefinito è `8000`, quindi apri `http://localhost:8000`. Aggiungi `--release` per eseguirlo in modalità release.

## Eseguirlo con Docker

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

Il `docker-compose.yaml` del repository mappa la porta 8000 e mantiene due volumi: la cartella `databases` (impostazioni e utente) e la cartella `flowstream` (i tuoi flussi). Conserva questi due volumi e potrai sostituire il container a ogni aggiornamento.

## Il primo accesso

Al primo avvio Flow crea l’unico utente dell’applicazione con un **login e una password casuali**. Fino al primo accesso riuscito, la pagina di accesso li mostra in un riquadro (*Default account*) con un pulsante **Fill in the form**: fai clic e accedi. Da quel momento Flow cancella dalle sue preferenze la copia in chiaro della password e il riquadro non compare più, quindi apri subito il modulo password dell’applicazione e imposta un login e una password tuoi. Fai il primo accesso appena avvii una nuova installazione, prima che qualcun altro possa raggiungere l’indirizzo.

Alcuni dettagli dell’accesso, letti dal codice sorgente:

- La password è memorizzata come hash SHA-256 con il `cookie_secret` dell’installazione come sale, e la sessione è un cookie di un mese cifrato con lo stesso segreto. Flow genera il nome del cookie e il segreto la prima volta e li conserva in `databases/config.json`.
- Dopo ripetuti tentativi falliti un indirizzo viene bloccato (il blocco viene azzerato ogni 15 minuti).
- Quando le impostazioni contengono i token di un OpenPlatform (`op_reqtoken`, `op_restoken`), la pagina di accesso è sostituita dall’accesso di quell’[OpenPlatform](/en/openplatform/how-an-app-connects/) e i permessi *Create Flows* e *Remove Flows* controllano chi può creare e rimuovere i flussi.

## Dove vivono i dati

| Cartella | Cosa contiene |
|---|---|
| `databases/` | `config.json` (nome e segreto del cookie) e `memorize_preferences.json` (nome, token, l’utente, l’`env`, gli URL dei componenti) |
| `flowstream/` | `database.json` con ogni FlowStream: il suo design, i componenti, le variabili e le note |
| `private/` | file che i flussi scrivono e che puoi elencare con il token di Flow |
| `public/cdn/` | cache dei componenti dell’interfaccia che Flow scarica la prima volta che servono |

Per spostare Flow su un’altra macchina, copia `databases/` e `flowstream/`.

## Aggiornare

Scarica la nuova versione del repository (il file `version` ti dice quale esegui: `11.1` nella revisione documentata qui) oppure scarica la nuova immagine Docker e avviala con gli stessi volumi.
