# Het Total.js CMS installeren en de eerste keer aanmelden

> Voer het CMS uit met Node.js of Docker op poort 8000, meld je aan met de login en het wachtwoord die het bij de eerste start genereert, leer de drie manieren om het beheer te authenticeren en waar de gegevens van de site staan.

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

## Uitvoeren

Het CMS heeft alleen Node.js nodig: geen database, geen externe dienst.

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

`npm run start` voert `node index.js 8000` uit; de poort is optioneel en de standaard is `8000`. Met Docker:

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

## De eerste aanmelding

Bij de eerste start maakt het CMS zijn enige beheerder aan met een **willekeurige login en een willekeurig wachtwoord**. Open `http://localhost:8000/admin/`: tot de eerste geslaagde aanmelding toont de pagina ze in een kader met een knop die het formulier invult. Daarna wordt de leesbare kopie van het wachtwoord uit de voorkeuren verwijderd en verschijnt het kader niet meer, dus gebruik meteen het profiel van de beheerder om een eigen login en wachtwoord in te stellen, en meld je voor het eerst aan zodra je een nieuwe installatie start.

Tot je de eerste pagina maakt, verwijst het adres `/` door naar `/admin/` zolang het wachtwoord nog het gegenereerde is; zodra er een pagina met het adres `/` bestaat, serveert `/` je site.

## Drie manieren om het beheer te authenticeren

Het beheer staat onder het adres van de regel `$api : /admin/` van het bestand `config`. De functie `AUTH` in `definitions/auth.js` beslist voor de verzoeken van dat pad:

| Modus | Wanneer | Hoe |
|---|---|---|
| Sessie | de standaard | een cookie versleuteld met de `salt` van het account; login en wachtwoord worden gecontroleerd met SHA-256 en die salt |
| Token | de regel `token : <value>` bestaat in `config` | stuur het in de header `x-token`: het verzoek draait als een ingebouwde gebruiker genaamd *Bot*, een beheerder (`sa`). Tien foute pogingen blokkeren het adres, en een fout token krijgt helemaal geen antwoord (het verzoek eindigt met een timeout) |
| OpenPlatform | de instellingen bevatten `op_reqtoken` en `op_restoken` | mensen melden zich aan met [OpenPlatform](/en/openplatform/how-an-app-connects/) en de groepen daarvan bepalen de rechten `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` en `admin` |

De openbare pagina’s gebruiken de functie `FUNC.auth` als je code die definieert (zie [pagina’s, layouts en navigatie](/en/cms/pages-layouts-and-navigation/)); zonder is elke bezoeker anoniem.

## Waar de gegevens staan

| Plaats | Wat het bevat |
|---|---|
| `databases/config.json` | gegenereerde waarden van de installatie |
| `databases/memorize_account.json` | de beheerder: naam, login, wachtwoordhash, cookienaam en salt |
| `databases/fs-db/` | de bestandsopslag: de metagegevens van de site (pagina’s, layouts, widgets, navigatie, doorverwijzingen, variabelen, configuratie) en de HTML van elke pagina en layout, de geüploade bestanden en de berichten |

Om de site te verplaatsen, kopieer je de map `databases/` of gebruik je de back-up van het beheer ([de beheer-API](/en/cms/the-admin-api/)).
