# Appliance NVR

Instalador para transformar um Debian/Ubuntu Server em appliance NVR.

Uso principal:

```bash
sudo bash scripts/appliance/install-nvr-appliance.sh
```

Variaveis uteis:

```bash
sudo INSTALL_ROOT=/opt/nvr \
  RECORDINGS_ROOT=/var/lib/nvr/recordings \
  DB_NAME=plataforma_central \
  DB_USER=plataforma \
  DB_PASSWORD='troque-esta-senha' \
  ENABLE_HDMI_KIOSK=0 \
  bash scripts/appliance/install-nvr-appliance.sh
```

O instalador configura Nginx + PHP-FPM com o portal na raiz e o NVR em `/nvr`, instala MariaDB, Redis, FFmpeg, Supervisor, Composer, Node/npm quando disponivel, cria o usuario de servico `nvr`, prepara storage/cache, roda migrations e habilita os servicos systemd de fila, scheduler e gateway. O HTTP do platform nao usa `platform-http` no appliance.

Em producao, `CREATE_INITIAL_ADMIN=0` e o padrao. O fluxo normal deve ativar serial/licenca antes do login; admin local inicial so e aceito como contingencia tecnica explicita com `CREATE_INITIAL_ADMIN=1` e `ALLOW_TECHNICAL_INITIAL_ADMIN=1`.

Para ISO/appliance, o autoinstall diferencia disco vazio de disco com dados antes do particionamento. Disco com particoes/assinaturas ou multiplos discos exige selecao/confirmacao explicita `APAGAR`, registrada em log.

Diagnostico:

```bash
sudo bash /opt/nvr/scripts/appliance/healthcheck.sh
sudo REQUIRE_FIRST_BOOT_MARKER=1 bash /opt/nvr/scripts/appliance/healthcheck.sh # quando instalado pela ISO
sudo NVR_SUPPORT_AUTHORIZED_KEY='ssh-ed25519 ...' nvr-support-unlock # suporte SSH temporario por chave publica
sudo nvr-support-lockdown # encerra a janela de suporte antes do TTL
systemctl is-enabled nvr-stack.target platform-scheduler.timer nvr-log-rotate.timer
systemctl status nginx php*-fpm mariadb redis-server platform-queue gateway-bootstrap gateway-daemon gateway-local-web nvr-stack.target --no-pager
systemctl status platform-scheduler.timer nvr-log-rotate.timer --no-pager
journalctl -u nvr-first-boot-install.service -u gateway-bootstrap -u gateway-daemon -u gateway-local-web -u platform-queue --no-pager
```

O appliance usa Nginx + PHP-FPM para HTTP externo. A unidade `platform-http.service` existe apenas como modelo de runtime alternativo e nao e instalada pelo script appliance.
