# Das Total.js CMS installieren und zum ersten Mal anmelden

> Führen Sie das CMS mit Node.js oder Docker auf Port 8000 aus, melden Sie sich mit dem beim ersten Start erzeugten Login und Passwort an, lernen Sie die drei Arten der Admin-Authentifizierung kennen und wo die Daten der Website liegen.

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

## Ausführen

Das CMS braucht nur Node.js: keine Datenbank, keinen externen Dienst.

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

`npm run start` führt `node index.js 8000` aus; der Port ist optional und der Standard ist `8000`. Mit Docker:

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

## Die erste Anmeldung

Beim ersten Start legt das CMS seinen einzigen Administrator mit einem **zufälligen Login und Passwort** an. Öffnen Sie `http://localhost:8000/admin/`: Bis zur ersten erfolgreichen Anmeldung zeigt die Seite beides in einem Kasten mit einer Schaltfläche, die das Formular ausfüllt. Danach wird die Klartextkopie des Passworts aus den Einstellungen gelöscht und der Kasten erscheint nicht mehr. Nutzen Sie daher sofort das Profil des Admins, um ein eigenes Login und Passwort festzulegen, und melden Sie sich direkt nach dem Start einer neuen Installation zum ersten Mal an.

Bis Sie die erste Seite anlegen, leitet die Adresse `/` auf `/admin/` um, solange das Passwort noch das erzeugte ist; sobald eine Seite mit der Adresse `/` existiert, liefert `/` Ihre Website aus.

## Drei Arten, den Admin zu authentifizieren

Der Admin liegt unter der Adresse der Zeile `$api : /admin/` der Datei `config`. Die Funktion `AUTH` in `definitions/auth.js` entscheidet für die Anfragen dieses Pfads:

| Modus | Wann | Wie |
|---|---|---|
| Sitzung | der Standard | ein mit dem `salt` des Kontos verschlüsseltes Cookie; Login und Passwort werden mit SHA-256 und diesem Salt geprüft |
| Token | die Zeile `token : <value>` existiert in `config` | senden Sie es im Header `x-token`: Die Anfrage läuft als eingebauter Benutzer namens *Bot*, ein Administrator (`sa`). Zehn Fehlversuche sperren die Adresse, und ein falsches Token bekommt gar keine Antwort (die Anfrage endet mit einem Timeout) |
| OpenPlatform | die Einstellungen enthalten `op_reqtoken` und `op_restoken` | die Leute melden sich mit [OpenPlatform](/en/openplatform/how-an-app-connects/) an, und seine Gruppen bestimmen die Berechtigungen `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` und `admin` |

Die öffentlichen Seiten verwenden die Funktion `FUNC.auth`, wenn Ihr Code sie definiert (siehe [Seiten, Layouts und Navigation](/en/cms/pages-layouts-and-navigation/)); ohne sie ist jeder Besucher anonym.

## Wo die Daten liegen

| Ort | Was er enthält |
|---|---|
| `databases/config.json` | erzeugte Werte der Installation |
| `databases/memorize_account.json` | der Administrator: Name, Login, Passwort-Hash, Cookie-Name und Salt |
| `databases/fs-db/` | der Dateispeicher: die Metadaten der Website (Seiten, Layouts, Widgets, Navigation, Weiterleitungen, Variablen, Konfiguration) und das HTML jeder Seite und jedes Layouts, die hochgeladenen Dateien und die Beiträge |

Um die Website zu verschieben, kopieren Sie den Ordner `databases/` oder nutzen Sie das Backup des Admins ([die Admin-API](/en/cms/the-admin-api/)).
