# Instalar o CMS do Total.js e iniciar sessão pela primeira vez

> Execute o CMS com Node.js ou Docker na porta 8000, inicie sessão com o login e a palavra-passe que gera no primeiro arranque, conheça as três formas de autenticar o admin e onde vivem os dados do site.

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

## Executá-lo

O CMS só precisa de Node.js: nem base de dados nem serviço externo.

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

`npm run start` executa `node index.js 8000`; a porta é opcional e a predefinição é `8000`. Com Docker:

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

## O primeiro início de sessão

No primeiro arranque o CMS cria o seu único administrador com um **login e uma palavra-passe aleatórios**. Abra `http://localhost:8000/admin/`: até ao primeiro início de sessão bem-sucedido a página mostra-os numa caixa com um botão que preenche o formulário. Depois a cópia em claro da palavra-passe é apagada das preferências e a caixa deixa de aparecer, por isso use logo o perfil do admin para definir um login e uma palavra-passe seus, e faça o primeiro início de sessão assim que arrancar uma instalação nova.

Até criar a primeira página, o endereço `/` redireciona para `/admin/` enquanto a palavra-passe for a gerada; quando existe uma página com o endereço `/`, `/` serve o seu site.

## Três formas de autenticar o admin

O admin vive sob o endereço da linha `$api : /admin/` do ficheiro `config`. A função `AUTH` de `definitions/auth.js` decide para os pedidos desse caminho:

| Modo | Quando | Como |
|---|---|---|
| Sessão | a predefinição | um cookie cifrado com o `salt` da conta; o login e a palavra-passe são verificados com SHA-256 e esse sal |
| Token | a linha `token : <value>` existe em `config` | envie-o no cabeçalho `x-token`: o pedido corre como um utilizador integrado chamado *Bot*, um administrador (`sa`). Dez tentativas erradas bloqueiam o endereço, e um token errado não recebe qualquer resposta (o pedido termina com um timeout) |
| OpenPlatform | as definições contêm `op_reqtoken` e `op_restoken` | as pessoas iniciam sessão com o [OpenPlatform](/en/openplatform/how-an-app-connects/) e os seus grupos decidem as permissões `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` e `admin` |

As páginas públicas usam a função `FUNC.auth` se o seu código a definir (veja [páginas, layouts e navegação](/en/cms/pages-layouts-and-navigation/)); sem ela todos os visitantes são anónimos.

## Onde vivem os dados

| Local | O que contém |
|---|---|
| `databases/config.json` | valores gerados da instalação |
| `databases/memorize_account.json` | o administrador: nome, login, hash da palavra-passe, nome do cookie e sal |
| `databases/fs-db/` | o armazenamento de ficheiros: os metadados do site (páginas, layouts, widgets, navegação, redirecionamentos, variáveis, configuração) e o HTML de cada página e layout, os ficheiros carregados e os artigos |

Para mover o site, copie a pasta `databases/` ou use a cópia de segurança do admin ([a API do admin](/en/cms/the-admin-api/)).
