# Instalação do Freedom Radar no servidor

Endereço: https://radar.freedomsuite.com.br

Este projeto não exige compilação: HTML/CSS/JavaScript são servidos pelo Express. O pacote inclui código e migrações; dependências são instaladas no próprio servidor. Requisitos: Node.js 24 LTS (versão usada na validação), npm e MySQL 8 disponível. Hospedagem apenas PHP/arquivos estáticos não executa esta aplicação.

## Instalação

1. Extraia freedom-radar-servidor.zip numa pasta privada da aplicação, fora da pasta pública de arquivos do site.
2. Copie .env.production.example para .env, sem sobrescrever um .env já configurado.
3. Preencha DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, ADMIN_EMAIL e ADMIN_PASSWORD. Senha inicial mínima de 12 caracteres. O MySQL deve estar ativo. Para banco já existente, o usuário precisa de permissões de migração e leitura/gravação; banco ausente requer CREATE DATABASE.
4. Preencha MP_ACCESS_TOKEN produtivo, MP_COLLECTOR_ID da conta produtiva e MP_WEBHOOK_SECRET. Defina PIX_ENABLED=true somente após configurar o webhook. Mantenha ambas as opções de cobrança administrativa de R$ 1 como false.
5. Na pasta da aplicação, execute:

```text
npm ci --omit=dev
npm start
```

npm start cria o banco quando necessário, aplica migrações versionadas, preserva os dados existentes e inicia interface, API e coletores. O processo precisa permanecer ativo; configure o supervisor/serviço de sua hospedagem para iniciar npm start, reiniciar em falhas e iniciar após reinicialização do servidor. Não execute múltiplas instâncias de coleta sem adaptar essa operação.

## Domínio e HTTPS

Configure DNS para o servidor, certificado HTTPS e proxy reverso de radar.freedomsuite.com.br para http://127.0.0.1:3000. Encaminhe todas as rotas, incluindo /api e os POST de webhook, e preserve query string e cabeçalhos x-signature e x-request-id. Não coloque autenticação adicional ou bloqueio de robôs no webhook. Se a plataforma usa proxy em outro contêiner, configure HOST=0.0.0.0 e PORT conforme a plataforma, sem expor diretamente a porta à internet.

APP_ORIGIN deve ser https://radar.freedomsuite.com.br, sem barra final; COOKIE_SECURE=true. Redirecione HTTP para HTTPS.

No Mercado Pago, Webhooks > Modo de produção, marque Order (Mercado Pago) e informe:

```text
https://radar.freedomsuite.com.br/api/payments/mercadopago/webhook
```

Se a assinatura secreta mudar, atualize MP_WEBHOOK_SECRET e reinicie o processo. Não utilize o túnel temporário em produção.

## Dados e validação

O pacote não inclui o banco local. Para levar clientes, análises e histórico de pagamentos existentes, exporte o MySQL local por backup e restaure no banco do servidor antes da primeira inicialização. Proteja e transfira esse backup separadamente. Não sobrescreva um banco de produção existente sem backup e revisão.

Após iniciar, confira https://radar.freedomsuite.com.br/api/health (ready=true), login, geração/consulta PIX, confirmação de webhook com uma cobrança válida e limites dos planos. Não use o ID fictício do simulador como prova de pagamento. Faça backup periódico do MySQL.

Nunca disponibilize .env, backups ou a pasta completa do projeto como arquivos públicos. O Express serve somente public/. O pacote não contém credenciais, node_modules, banco, ferramentas de túnel ou configurações do computador local.
