Requisitos
Requisitos de hardware e software para instalação da plataforma ION Guard.
Sistema operacional
| OS | Versão | Status |
|---|---|---|
| Ubuntu | 24.04 LTS | Recomendado |
| Ubuntu | 22.04 LTS | Suportado |
Outras distribuições Linux com Docker podem funcionar, mas não são oficialmente suportadas.
Hardware
Mínimo
| Recurso | Especificação |
|---|---|
| CPU | 2 cores |
| RAM | 4 GB |
| Disco | 20 GB |
| Rede | Acesso à rede local dos gateways BLE |
Recomendado (produção)
| Recurso | Especificação |
|---|---|
| CPU | 4+ cores |
| RAM | 8 GB |
| Disco | 50 GB+ (SSD recomendado) |
| Rede | Gigabit Ethernet |
O consumo de disco cresce com a retenção de dados. Com os padrões (sinais: 7 dias, localizações: 90 dias), 50 GB são suficientes para a maioria dos cenários. Ajuste RETENTION_SIGNALS_DAYS e RETENTION_LOCATIONS_DAYS conforme necessidade.
Dimensionamento por escala
O processamento de sinais BLE é predominantemente I/O bound — o disco é o principal eixo de escala (cresce linearmente com beacons × tempo de retenção), enquanto CPU e RAM permanecem quase constantes. Use SSD: o InfluxDB depende de IOPS.
| Perfil | Cobre até | Cenário |
|---|---|---|
| 2 vCPU + 4 GB RAM | ~200 sinais/s | Maioria dos clientes |
| 4 vCPU + 8 GB RAM | ~500 sinais/s | Instalações maiores |
| 8 vCPU + 16 GB RAM | acima disso | Raramente necessário em servidor único |
Cada antena emite um pacote MQTT a cada 5 segundos; a taxa aproximada é (antenas × beacons_por_antena) / 5 sinais/s. Para dimensionar disco/CPU/RAM por número de antenas, beacons e sites, consulte o Guia de Dimensionamento de Servidores (documento técnico interno).
Software
Instalados automaticamente pelo bootstrap
| Software | Versão | Propósito |
|---|---|---|
| Docker Engine | 24+ | Container runtime |
| Docker Compose | v2 (plugin) | Orquestração de containers |
| curl | — | Download de pacotes |
| jq | — | Processamento JSON |
| gnupg | — | Descriptografia de pacotes |
| ufw | — | Firewall |
| logrotate | — | Rotação de logs |
Containers Docker (gerenciados pela plataforma)
| Serviço | Imagem | Versão |
|---|---|---|
| MariaDB | mariadb | 11 |
| Valkey (Redis) | valkey | 8-alpine |
| InfluxDB | influxdb | 2.7 |
| Nginx | nginx | 1.27-alpine |
| PHP-FPM | Build local | PHP 8.4 |
| Mosquitto | mosquitto-go-auth | Latest |
Todos os serviços rodam em containers Docker. Não é necessário instalar MariaDB, Redis, InfluxDB ou Mosquitto diretamente no servidor.
Rede
Portas necessárias
| Porta | Protocolo | Direção | Serviço |
|---|---|---|---|
| 22 | TCP | Entrada | SSH (administração) |
| 80 | TCP | Entrada | HTTP (redirect para HTTPS) |
| 443 | TCP | Entrada | HTTPS (interface web + API) |
| 8883 | TCP | Entrada | MQTT sobre TLS (comunicação com antenas/gateways) — padrão |
| 9001 | TCP | Entrada | MQTT WebSocket (debug no navegador) |
As portas HTTP/HTTPS e MQTT são configuráveis via .env (HTTP_PORT, HTTPS_PORT, MQTT_EXTERNAL_PORT, MQTT_WEBSOCKET_PORT). Útil quando o servidor hospeda outras aplicações.
Nas versões recentes, a comunicação dos dispositivos com o broker usa TLS na porta 8883 por padrão (os dispositivos devem conectar via TLS); a porta 1883 (texto puro) fica reservada a brokers de desenvolvimento isolados. Libere no firewall a porta definida em MQTT_EXTERNAL_PORT conforme o modo do seu deploy. Ver Configuração → TLS do broker MQTT.
Conectividade
- Antenas BLE precisam alcançar a porta MQTT sobre TLS (8883) do servidor
- Gateways DigiEye precisam alcançar MQTT sobre TLS (8883) do servidor
- Accelero precisa alcançar MQTT sobre TLS (8883) e HTTPS (443) do servidor
- Navegadores dos operadores precisam alcançar HTTPS (443)
DNS
Configure um registro DNS (A ou CNAME) apontando para o IP do servidor, ou use o hostname local diretamente. O certificado SSL auto-gerado inclui tanto o hostname quanto o IP como SANs.
Acesso root
A instalação requer acesso root ou sudo para:
- Instalar pacotes do sistema
- Configurar Docker e firewall
- Criar o usuário
iongrade - Registrar serviços systemd