# Primeiro usuário e administrador

> Crie o primeiro usuário de um Nodaro self-hosted e promova um administrador na Business edition com um comando SQL, com ou sem o painel do Supabase.

Source: https://nodaro.ai/pt-BR/docs/self-hosting/first-admin

O **primeiro usuário** de um Nodaro self-hosted cria a conta no app como qualquer outra pessoa e se torna o operador da instalação. Na Community Edition, é só isso: não existe função de administrador no produto. Na Business edition, você então promove uma conta a **administrador** com um comando SQL, porque ainda não existe nenhum administrador para fazer isso no app.

## Criar a primeira conta
Abra `/setup` e siga a etapa 1, **Crie seu login do servidor**. Essa conta pertence só ao seu servidor. Ela não é uma conta do Nodaro Cloud: essa vem na etapa 2, e só se você se conectar ao Nodaro Cloud.

O serviço de login cria o usuário, e o Nodaro cria o perfil do usuário automaticamente. Na stack do Compose incluída, nenhum e-mail de confirmação é enviado, então a conta funciona na hora.

## Funções
Um perfil tem uma de três funções. As funções importam na Business edition, que tem o painel de administração.

| Função | O que acrescenta |
| --- | --- |
| `user` | O padrão. Usa o editor. |
| `admin` | Abre o painel de administração e gerencia as chaves de provedor da instalação. |
| `super_admin` | Também altera as funções de outros usuários no painel de administração. |

Na Community Edition, nenhum usuário tem restrições, e qualquer usuário logado pode gerenciar as chaves de provedor.

## Promover uma conta
### Abrir uma sessão SQL
Em um **projeto gerenciado no Supabase**, abra o painel do Supabase e escolha **SQL editor**.

Na **stack incluída**, que não tem painel, abra o `psql` no contêiner do banco de dados:

```bash
docker compose -f docker-compose.community.yml exec db sh -c 'PGPASSWORD="$POSTGRES_PASSWORD" psql -U supabase_admin -d postgres'
```

### Encontrar o ID do usuário
No painel do Supabase, o ID fica em **Authentication › Users**. No `psql`, liste os usuários:

```sql
SELECT id, email FROM auth.users;
```

### Definir a função
```sql
UPDATE profiles
SET role = 'admin'
 WHERE id = '<user_uuid>';
```

Use `'super_admin'` em vez de `'admin'` para a conta que deve gerenciar as funções dos outros usuários.

### Esperar ou reiniciar
A alteração passa a valer em até 5 minutos, porque o Nodaro guarda em cache o status de administrador de cada usuário por esse tempo. Para aplicá-la na hora, reinicie o app:

```bash
docker compose -f docker-compose.community.yml restart nodaro
```

## Proteger a conta do proprietário
Em uma instalação Business, defina `PLATFORM_OWNER_EMAIL` com o endereço de e-mail da conta do proprietário. A partir daí, nenhum outro administrador pode alterar a função dessa conta. Quando a variável está vazia, que é o padrão, nenhuma conta é protegida.

O arquivo do Compose não repassa `PLATFORM_OWNER_EMAIL` do `.env`. Adicione-a em `environment:` do serviço `nodaro`:

```yaml
nodaro:
environment:
# ...the variables already listed...
PLATFORM_OWNER_EMAIL: owner@example.com
```

## O painel de administração exige a Business edition
A imagem publicada e o arquivo do Compose rodam a Community Edition, que não tem painel de administração. Para ter um, primeiro mude a instalação para a Business edition: veja [Edições e perfis de superfície](https://nodaro.ai/docs/self-hosting/editions-and-profiles#switch-a-self-hosted-install-to-business). Os recursos de administração da Business edition são recursos Enterprise: leia [Licença](https://nodaro.ai/docs/self-hosting/license) antes de usá-los em produção.

## Frequently asked questions

### Como transformo um usuário em administrador no Nodaro self-hosted?

Depois que o usuário criar a conta, defina a coluna role do perfil dele como admin com um comando SQL, no SQL editor do Supabase ou com o psql no contêiner do banco de dados. O painel de administração só existe na Business edition.

### A Community Edition tem administradores?

Não. A Community Edition não tem painel de administração nem função de administrador no produto. Nenhum usuário tem restrições, e qualquer usuário logado pode gerenciar as chaves de provedor.

### Quanto tempo leva para uma promoção a administrador valer?

Até 5 minutos, porque o Nodaro guarda em cache o status de administrador de cada usuário por 5 minutos. Reinicie o contêiner do app para aplicá-la na hora.

### Para que serve PLATFORM_OWNER_EMAIL?

Essa variável indica a conta do proprietário em uma instalação Business. Nenhum outro administrador pode alterar a função dessa conta. Se ela ficar vazia, nenhuma conta é protegida.
