# Installer Flow et se connecter la première fois

> Exécutez Flow avec Node.js ou Docker, ouvrez-le sur le port 8000, connectez-vous avec l’identifiant et le mot de passe que Flow génère au premier démarrage et sachez dans quels dossiers se trouvent vos données.

Framework: flow
Product: Flow (flow@11.1)
Language: fr
Content-SHA256: 7e98901492c09ee3541ae3e33f14c994fe958e902bf698140687425f45e25329
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## L’exécuter avec Node.js

Flow n’a besoin que de Node.js : ni base de données, ni service externe.

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

`npm run start` exécute `node index.js 8000`. Le port est facultatif en ligne de commande et la valeur par défaut est `8000` ; vous ouvrez donc `http://localhost:8000`. Ajoutez `--release` pour l’exécuter en mode release.

## L’exécuter avec Docker

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

Le `docker-compose.yaml` du dépôt associe le port 8000 et conserve deux volumes : le dossier `databases` (réglages et utilisateur) et le dossier `flowstream` (vos flux). Gardez ces deux volumes et vous pourrez remplacer le conteneur à chaque mise à jour.

## La première connexion

Au premier démarrage, Flow crée l’unique utilisateur de l’application avec un **identifiant et un mot de passe aléatoires**. Jusqu’à la première connexion réussie, la page de connexion les affiche dans un cadre (*Default account*) avec un bouton **Fill in the form** : cliquez dessus et connectez-vous. À partir de là, Flow supprime la copie en clair du mot de passe de ses préférences et le cadre n’apparaît plus ; ouvrez donc tout de suite le formulaire de mot de passe de l’application et définissez votre propre identifiant et mot de passe. Faites la première connexion dès que vous démarrez une nouvelle installation, avant que quelqu’un d’autre puisse atteindre l’adresse.

Quelques détails de la connexion, lus dans le code source :

- Le mot de passe est stocké sous forme de hachage SHA-256 avec le `cookie_secret` de l’installation comme sel, et la session est un cookie d’un mois chiffré avec le même secret. Flow génère le nom du cookie et le secret la première fois et les conserve dans `databases/config.json`.
- Après plusieurs tentatives échouées, une adresse est bloquée (le blocage est levé toutes les 15 minutes).
- Quand les réglages contiennent les jetons d’un OpenPlatform (`op_reqtoken`, `op_restoken`), la page de connexion est remplacée par la connexion de cet [OpenPlatform](/en/openplatform/how-an-app-connects/) et les permissions *Create Flows* et *Remove Flows* contrôlent qui peut créer et supprimer des flux.

## Où vivent les données

| Dossier | Ce qu’il contient |
|---|---|
| `databases/` | `config.json` (nom et secret du cookie) et `memorize_preferences.json` (nom, jetons, l’utilisateur, le `env`, les URL des composants) |
| `flowstream/` | `database.json` avec chaque FlowStream : son design, ses composants, ses variables et ses notes |
| `private/` | fichiers que les flux écrivent et que vous pouvez lister avec le jeton de Flow |
| `public/cdn/` | cache des composants de l’interface que Flow télécharge la première fois qu’ils sont nécessaires |

Pour déplacer Flow vers une autre machine, copiez `databases/` et `flowstream/`.

## Mettre à jour

Téléchargez la nouvelle version du dépôt (le fichier `version` indique celle que vous exécutez : `11.1` dans la révision documentée ici) ou récupérez la nouvelle image Docker et démarrez-la avec les mêmes volumes.
