# Instalacja CMS Total.js i pierwsze logowanie

> Uruchom CMS przez Node.js lub Docker na porcie 8000, zaloguj się loginem i hasłem generowanymi przy pierwszym uruchomieniu, poznaj trzy sposoby uwierzytelniania administracji i miejsce, gdzie leżą dane witryny.

Framework: cms
Product: CMS (cms@8071e48)
Language: pl
Content-SHA256: 3bcf9dd4426d87751c892e559b673acdfa012f071801ae69ab324d2a3c00572e
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Uruchomienie

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

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

`npm run start` uruchamia `node index.js 8000`; port jest opcjonalny, a domyślny to `8000`. Z Dockerem:

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

## Pierwsze logowanie

Przy pierwszym uruchomieniu CMS tworzy jedynego administratora z **losowym loginem i hasłem**. Otwórz `http://localhost:8000/admin/`: do pierwszego udanego logowania strona pokazuje je w ramce z przyciskiem wypełniającym formularz. Potem jawna kopia hasła jest usuwana z preferencji i ramka znika, więc od razu użyj profilu administratora, aby ustawić własny login i hasło, a pierwszego logowania dokonaj zaraz po uruchomieniu nowej instalacji.

Dopóki nie utworzysz pierwszej strony, adres `/` przekierowuje na `/admin/`, o ile hasło jest jeszcze wygenerowane; gdy istnieje strona z adresem `/`, `/` serwuje Twoją witrynę.

## Trzy sposoby uwierzytelniania administracji

Administracja działa pod adresem z wiersza `$api : /admin/` pliku `config`. Funkcja `AUTH` w `definitions/auth.js` decyduje o żądaniach tej ścieżki:

| Tryb | Kiedy | Jak |
|---|---|---|
| Sesja | domyślnie | cookie zaszyfrowane `salt` konta; login i hasło są sprawdzane przez SHA-256 z tą solą |
| Token | w `config` istnieje wiersz `token : <value>` | wyślij go w nagłówku `x-token`: żądanie działa jako wbudowany użytkownik o nazwie *Bot*, administrator (`sa`). Dziesięć błędnych prób blokuje adres, a błędny token nie dostaje żadnej odpowiedzi (żądanie kończy się timeoutem) |
| OpenPlatform | ustawienia zawierają `op_reqtoken` i `op_restoken` | ludzie logują się przez [OpenPlatform](/en/openplatform/how-an-app-connects/), a jego grupy decydują o uprawnieniach `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` i `admin` |

Strony publiczne używają funkcji `FUNC.auth`, jeśli Twój kod ją definiuje (zobacz [strony, layouty i nawigacja](/en/cms/pages-layouts-and-navigation/)); bez niej każdy odwiedzający jest anonimowy.

## Gdzie leżą dane

| Miejsce | Co zawiera |
|---|---|
| `databases/config.json` | wygenerowane wartości instalacji |
| `databases/memorize_account.json` | administrator: nazwa, login, skrót hasła, nazwa cookie i sól |
| `databases/fs-db/` | magazyn plików: metadane witryny (strony, layouty, widżety, nawigacja, przekierowania, zmienne, konfiguracja) oraz HTML każdej strony i layoutu, wysłane pliki i wpisy |

Aby przenieść witrynę, skopiuj folder `databases/` albo użyj kopii zapasowej administracji ([API administracji](/en/cms/the-admin-api/)).
