# Instalacja Flow i pierwsze logowanie

> Uruchom Flow przez Node.js lub Docker, otwórz go na porcie 8000, zaloguj się loginem i hasłem, które Flow generuje przy pierwszym uruchomieniu, i dowiedz się, w których folderach są Twoje dane.

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

## Uruchomienie przez Node.js

Flow potrzebuje tylko Node.js: żadnej bazy danych ani zewnętrznej usługi.

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

`npm run start` uruchamia `node index.js 8000`. Port jest opcjonalny w wierszu poleceń, a domyślny to `8000`, więc otwierasz `http://localhost:8000`. Dodaj `--release`, aby uruchomić w trybie release.

## Uruchomienie przez Docker

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

`docker-compose.yaml` w repozytorium mapuje port 8000 i utrzymuje dwa wolumeny: folder `databases` (ustawienia i użytkownik) oraz folder `flowstream` (Twoje przepływy). Zachowaj te dwa wolumeny, a kontener możesz wymieniać przy każdej aktualizacji.

## Pierwsze logowanie

Przy pierwszym uruchomieniu Flow tworzy jedynego użytkownika aplikacji z **losowym loginem i losowym hasłem**. Do pierwszego udanego logowania strona logowania pokazuje je w ramce (*Default account*) z przyciskiem **Fill in the form**: kliknij go i zaloguj się. Od tej chwili Flow usuwa ze swoich preferencji jawną kopię hasła i ramka znika, więc od razu otwórz formularz hasła w aplikacji i ustaw własny login i hasło. Pierwszego logowania dokonaj zaraz po uruchomieniu nowej instalacji, zanim ktokolwiek inny dotrze pod ten adres.

Kilka szczegółów logowania, odczytanych ze źródeł:

- Hasło jest przechowywane jako skrót SHA-256 z `cookie_secret` instalacji jako solą, a sesja to cookie na miesiąc zaszyfrowane tym samym sekretem. Flow generuje nazwę cookie i sekret za pierwszym razem i zapisuje je w `databases/config.json`.
- Po powtarzających się nieudanych próbach adres jest blokowany (blokada jest czyszczona co 15 minut).
- Gdy ustawienia zawierają tokeny OpenPlatform (`op_reqtoken`, `op_restoken`), strona logowania zostaje zastąpiona logowaniem do tego [OpenPlatform](/en/openplatform/how-an-app-connects/), a uprawnienia *Create Flows* i *Remove Flows* kontrolują, kto może tworzyć i usuwać przepływy.

## Gdzie są dane

| Folder | Co zawiera |
|---|---|
| `databases/` | `config.json` (nazwa i sekret cookie) oraz `memorize_preferences.json` (nazwa, tokeny, użytkownik, `env`, adresy komponentów) |
| `flowstream/` | `database.json` z każdym FlowStreamem: jego projekt, komponenty, zmienne i notatki |
| `private/` | pliki zapisywane przez przepływy, które możesz wylistować tokenem Flow |
| `public/cdn/` | pamięć podręczna komponentów interfejsu, które Flow pobiera przy pierwszym użyciu |

Aby przenieść Flow na inną maszynę, skopiuj `databases/` i `flowstream/`.

## Aktualizacja

Pobierz nową wersję repozytorium (plik `version` mówi, którą uruchamiasz: `11.1` w opisanej tu rewizji) albo pobierz nowy obraz Docker i uruchom go z tymi samymi wolumenami.
