# Digital Dossier Cloud — instalação cPanel

## Estrutura recomendada

Extraia a aplicação fora de `public_html`, por exemplo:

`/home/UTILIZADOR/apps/digital-dossier/`

No cPanel crie `gfc.dominio.pt` com Document Root:

`/home/UTILIZADOR/apps/digital-dossier/public`

Depois abra:

`https://gfc.dominio.pt/instalar/`

Se abrir apenas `https://gfc.dominio.pt/` antes da instalação, a aplicação redireciona automaticamente para `/instalar/`.

## Requisitos mínimos

- PHP 8.3+
- MySQL 5.7+/MariaDB
- Extensões: PDO MySQL, fileinfo, GD, mbstring, ZIP, OpenSSL, cURL, DOM/XML e intl
- `storage/` e `bootstrap/cache/` graváveis
- HTTPS recomendado/obrigatório para produção
- Composer disponível **ou** `proc_open` + acesso HTTPS de saída para o instalador poder descarregar Composer.

## Base de dados

O instalador oferece dois modos:

1. **Manual** — crie a BD/utilizador em cPanel → MySQL Databases e introduza os nomes completos (`cpuser_nome`).
2. **API cPanel** — introduza host, utilizador e um API Token temporário. O token é usado apenas em memória para chamar UAPI `Mysql/create_database`, `Mysql/create_user` e `Mysql/set_privileges_on_database`.

É recomendável revogar o token depois da instalação.

## O que o instalador faz

- valida PHP/extensões/permissões;
- cria ou testa a base de dados;
- gera `APP_KEY` e `.env` de produção;
- instala dependências Composer quando necessário;
- corre migrations e seeders;
- cria o primeiro superadministrador;
- opcionalmente cria a primeira organização;
- cria `storage/app/installed.lock` para desativar o instalador;
- mostra os dois Cron Jobs necessários para scheduler e filas.

## Se Composer não puder correr pelo browser

No Terminal do cPanel:

```bash
cd /home/UTILIZADOR/apps/digital-dossier
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
```

Depois volte a `/instalar/` e submeta novamente. O instalador deteta `vendor/autoload.php` e continua.

## Cron Jobs

Após a instalação, copie os comandos mostrados no ecrã final para cPanel → Cron Jobs. O caminho do PHP é calculado através do PHP que está a executar o instalador.

## Segurança

- Nunca aponte o Document Root para a raiz da aplicação; deve apontar apenas para `public/`.
- Use HTTPS.
- O token cPanel não é gravado no `.env`, base de dados nem log.
- O `.env` é gravado com permissões 0600 quando o sistema de ficheiros o permite.
- Depois da instalação, `/instalar/` fica bloqueado por `installed.lock`.
