# Инсталиране на Flow и първо влизане

> Стартирайте Flow с Node.js или Docker, отворете го на порт 8000, влезте с потребителското име и паролата, които Flow генерира при първото стартиране, и разберете в кои папки са вашите данни.

Framework: flow
Product: Flow (flow@11.1)
Language: bg
Content-SHA256: 111309befbfd300ce2240b05af912570b53237591a89a1796d373de2cea9168f
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Стартиране с Node.js

Flow се нуждае само от Node.js: без база данни и без външна услуга.

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

`npm run start` изпълнява `node index.js 8000`. Портът е по избор в командния ред, а по подразбиране е `8000`, така че отваряте `http://localhost:8000`. Добавете `--release`, за да го стартирате в режим release.

## Стартиране с Docker

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

Файлът `docker-compose.yaml` на хранилището съпоставя порт 8000 и поддържа два тома: папката `databases` (настройки и потребител) и папката `flowstream` (вашите потоци). Запазете тези два тома и можете да подменяте контейнера при всяка актуализация.

## Първото влизане

При първото стартиране Flow създава единствения потребител на приложението със **случайно потребителско име и случайна парола**. До първото успешно влизане страницата за вход ги показва в поле (*Default account*) с бутон **Fill in the form**: натиснете го и влезте. От този момент Flow изтрива от предпочитанията си нешифрираното копие на паролата и полето вече не се появява, затова веднага отворете формата за парола на приложението и задайте собствено потребителско име и парола. Направете първото влизане веднага щом стартирате нова инсталация, преди някой друг да може да достигне адреса.

Някои подробности за влизането, прочетени от изходния код:

- Паролата се съхранява като хеш SHA-256 със `cookie_secret` на инсталацията като сол, а сесията е бисквитка за един месец, шифрована със същата тайна. Flow генерира името на бисквитката и тайната първия път и ги пази в `databases/config.json`.
- След повторни неуспешни опити адресът се блокира (блокирането се изчиства на всеки 15 минути).
- Когато настройките съдържат токените на OpenPlatform (`op_reqtoken`, `op_restoken`), страницата за вход се заменя с входа на този [OpenPlatform](/en/openplatform/how-an-app-connects/), а правата *Create Flows* и *Remove Flows* определят кой може да създава и премахва потоци.

## Къде са данните

| Папка | Какво съдържа |
|---|---|
| `databases/` | `config.json` (име и тайна на бисквитката) и `memorize_preferences.json` (име, токени, потребителят, `env`, адресите на компонентите) |
| `flowstream/` | `database.json` с всеки FlowStream: неговия дизайн, компоненти, променливи и бележки |
| `private/` | файлове, които потоците записват и които можете да изброите с токена на Flow |
| `public/cdn/` | кеш на компонентите на интерфейса, които Flow изтегля при първата нужда |

За да преместите Flow на друга машина, копирайте `databases/` и `flowstream/`.

## Актуализиране

Изтеглете новата версия на хранилището (файлът `version` показва коя изпълнявате: `11.1` в документираната тук ревизия) или изтеглете новия образ на Docker и го стартирайте със същите томове.
