# Instalează CMS-ul Total.js și autentifică-te prima dată

> Rulează CMS-ul cu Node.js sau Docker pe portul 8000, autentifică-te cu login-ul și parola pe care le generează la prima pornire, învață cele trei moduri de a autentifica administrarea și unde se află datele site-ului.

Framework: cms
Product: CMS (cms@8071e48)
Language: ro
Content-SHA256: 148f8c042430e64d37cc788908b15773bb42ffe9380f022c2191737a7e3fb5cd
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Rulează-l

CMS-ul are nevoie doar de Node.js: nicio bază de date, niciun serviciu extern.

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

`npm run start` rulează `node index.js 8000`; portul este opțional, iar cel implicit este `8000`. Cu Docker:

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

## Prima autentificare

La prima pornire, CMS-ul creează singurul său administrator cu un **login și o parolă aleatorii**. Deschide `http://localhost:8000/admin/`: până la prima autentificare reușită, pagina le afișează într-o casetă cu un buton care completează formularul. După aceea copia în clar a parolei este ștearsă din preferințe și caseta nu mai apare, așa că folosește imediat profilul administratorului pentru a seta un login și o parolă proprii și fă prima autentificare imediat ce pornești o instalație nouă.

Până creezi prima pagină, adresa `/` redirecționează la `/admin/` cât timp parola este încă cea generată; când există o pagină cu adresa `/`, `/` servește site-ul tău.

## Trei moduri de a autentifica administrarea

Administrarea se află sub adresa din linia `$api : /admin/` a fișierului `config`. Funcția `AUTH` din `definitions/auth.js` decide pentru cererile acelei căi:

| Mod | Când | Cum |
|---|---|---|
| Sesiune | implicit | un cookie criptat cu `salt` al contului; login-ul și parola sunt verificate cu SHA-256 și acea sare |
| Token | linia `token : <value>` există în `config` | trimite-l în antetul `x-token`: cererea rulează ca un utilizator încorporat numit *Bot*, un administrator (`sa`). Zece încercări greșite blochează adresa, iar un token greșit nu primește niciun răspuns (cererea se termină cu timeout) |
| OpenPlatform | setările conțin `op_reqtoken` și `op_restoken` | oamenii se autentifică cu [OpenPlatform](/en/openplatform/how-an-app-connects/), iar grupurile lui decid permisiunile `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` și `admin` |

Paginile publice folosesc funcția `FUNC.auth` dacă codul tău o definește (vezi [pagini, layout-uri și navigație](/en/cms/pages-layouts-and-navigation/)); fără ea, fiecare vizitator este anonim.

## Unde se află datele

| Loc | Ce conține |
|---|---|
| `databases/config.json` | valorile generate ale instalației |
| `databases/memorize_account.json` | administratorul: nume, login, hash-ul parolei, numele cookie-ului și sarea |
| `databases/fs-db/` | stocarea de fișiere: metadatele site-ului (pagini, layout-uri, widgeturi, navigație, redirecționări, variabile, configurație) și HTML-ul fiecărei pagini și layout, fișierele încărcate și articolele |

Pentru a muta site-ul, copiază folderul `databases/` sau folosește copia de siguranță a administrării ([API-ul administrării](/en/cms/the-admin-api/)).
