# Topologia final de execução

## Desenvolvimento

```text
browser -> shared-web:8080 (portal real)
             ├── / .............. portal real
             └── /nvr ........... bridge público do portal -> php
                                   ├── platform-queue
                                   └── platform-scheduler

mariadb <------------------------- portal / platform / gateway
redis   <------------------------- portal / platform / gateway
mailpit <------------------------- portal SMTP local

gateway-daemon <------------------ fluxo operacional do appliance
gateway-web:9080 <--------------- interface local do gateway
```

## Produção compartilhada com o portal

```text
portal principal (DocumentRoot = /var/www/portal-principal/public)
  └── /nvr ............................. alias/location para INSTALL_ROOT/platform/public

INSTALL_ROOT=/var/www/portal-principal/public/nvr
  ├── portal/ .......................... portal real consolidado no pacote final
  ├── platform/
  ├── gateway/
  ├── deploy/
  ├── scripts/
  └── storage/
```

## Contrato operacional

- o portal permanece a porta oficial de entrada;
- o NVR entra sempre por subpasta do portal principal;
- nenhum ajuste de compose, systemd, supervisor, nginx ou apache depende de edição manual difusa após o render do instalador;
- `portal`, `platform` e `gateway` usam o mesmo banco central **MariaDB/MySQL** e o mesmo `redis` de coordenação quando aplicável;
- o gateway local permanece com daemon e web separados;
- o acesso remoto continua mediado pelo servidor central, sem exposição frágil do web local.
