Configuração
Referência completa das variáveis de ambiente e configurações da plataforma ION Guard.
Arquivo .env
O arquivo .env é gerado automaticamente durante a instalação. Ele contém todas as configurações da aplicação e nunca deve ser commitado no controle de versão.
Localização: /home/iongrade/ionguard/.env
Após editar o .env, aplique as alterações:
cd /home/iongrade/ionguard
# Recriar containers com novas variáveis
./scripts/comp.sh up -d --force-recreate ionguard_php
# Limpar cache de configuração
./scripts/comp.sh exec -T ionguard_php php artisan config:clear
Deployment
| Variável | Padrão | Descrição |
|---|---|---|
IONGUARD_DEPLOY | — | Hostname do deploy |
FACILITY | — | Identificador do cliente/facility |
DEPLOY_MODE | saas | Modo de deploy: saas ou onpremises |
VIRTUAL_HOST | — | Hostname virtual (usado pelo proxy reverso) |
Rede
| Variável | Padrão | Descrição |
|---|---|---|
HOST_IP | (auto) | IP do host. Auto-detectado por detectHostIp.sh a cada startup. Sobrescreva se a máquina tem múltiplas interfaces |
MQTT_EXTERNAL_HOST | (auto) | IP/hostname que antenas e gateways usam para conectar ao MQTT. Auto-setado como HOST_IP. Sobrescreva se atrás de NAT ou load balancer |
Aplicação
| Variável | Padrão | Descrição |
|---|---|---|
APP_NAME | IonGuard | Nome da aplicação |
APP_ENV | production | Ambiente: production, local, testing |
APP_KEY | (gerado) | Chave de encriptação da aplicação (base64) |
APP_DEBUG | false | Modo debug. Nunca true em produção |
APP_URL | https://{HOST} | URL base da aplicação |
APP_LOCALE | en | Idioma padrão (defina pt_BR para português) |
APP_FALLBACK_LOCALE | en | Idioma fallback |
BCRYPT_ROUNDS | 12 | Rounds do bcrypt para hash de senhas |
Logging
| Variável | Padrão | Descrição |
|---|---|---|
LOG_CHANNEL | stack | Canal de log principal |
LOG_STACK | daily | Tipo do stack: rotação diária |
LOG_LEVEL | debug | Nível mínimo: debug, info, notice, warning, error, critical |
Banco de dados (MariaDB)
| Variável | Padrão | Descrição |
|---|---|---|
DB_CONNECTION | mariadb | Driver de conexão |
DB_HOST | ionguard_mariadb_{HOST} | Hostname do container MariaDB |
DB_PORT | 3306 | Porta do MariaDB |
DB_DATABASE | ionguard | Nome do banco |
DB_USERNAME | ionguard | Usuário do banco |
DB_PASSWORD | (gerado) | Senha do banco |
DATABASE_EXPOSE_PORT | (vazio) | Porta para expor o MariaDB no host. Deixe vazio em produção |
Cache, Filas e Sessões (Redis/Valkey)
| Variável | Padrão | Descrição |
|---|---|---|
CACHE_STORE | redis | Driver de cache |
QUEUE_CONNECTION | redis | Driver de filas |
SESSION_DRIVER | database | Driver de sessões |
SESSION_LIFETIME | 120 | Duração da sessão em minutos |
SESSION_ENCRYPT | true | Criptografa os dados de sessão |
SESSION_SECURE_COOKIE | true | Cookie de sessão apenas via HTTPS |
REDIS_HOST | ionguard_valkey_{HOST} | Hostname do container Valkey |
REDIS_PORT | 6379 | Porta do Redis |
REDIS_PASSWORD | null | Senha do Redis (null = sem senha) |
WebSocket (Reverb)
| Variável | Padrão | Descrição |
|---|---|---|
BROADCAST_CONNECTION | reverb | Driver de broadcasting |
REVERB_APP_ID | (gerado) | ID da aplicação Reverb |
REVERB_APP_KEY | (gerado) | Chave pública Reverb |
REVERB_APP_SECRET | (gerado) | Chave secreta Reverb |
REVERB_HOST | ionguard_reverb_{HOST} | Hostname do container Reverb |
REVERB_PORT | 8080 | Porta do servidor WebSocket |
O frontend deriva automaticamente o host/porta/scheme do WebSocket a partir de window.location em runtime. Não é necessário configurar variáveis VITE_REVERB_*.
MQTT
| Variável | Padrão | Descrição |
|---|---|---|
MQTT_ENABLED | true | Habilitar integração MQTT |
MQTT_HOST | ionguard_mosquitto_{HOST} | Hostname do broker Mosquitto |
MQTT_PORT | 8883 | Porta MQTT (8883 = TLS, padrão; 1883 apenas para broker de dev sem TLS) |
MQTT_CLIENT_ID | ionguard-listener | ID do client MQTT |
MQTT_USERNAME | listener | Usuário MQTT |
MQTT_PASSWORD | (gerado) | Senha MQTT |
MQTT_TOPIC_PREFIX | ionguard | Prefixo dos tópicos MQTT |
MQTT_KEEP_ALIVE | 60 | Intervalo de keep-alive da conexão MQTT (segundos) |
MQTT_QOS | 1 | Qualidade de serviço das mensagens MQTT |
MQTT_EXTERNAL_HOST | (auto) | Host que dispositivos usam para conectar (auto-detectado; ver seção Rede) |
MQTT_EXTERNAL_PORT | 8883 | Porta MQTT que os dispositivos usam (device-facing). Ver caution abaixo |
MQTT_WEBSOCKET_PORT | 9001 | Porta WebSocket MQTT exposta no host |
TLS do broker MQTT
| Variável | Padrão | Descrição |
|---|---|---|
MQTT_TLS_ENABLED | true | TLS habilitado por padrão (fail-closed): com MQTT ativo e sem flag explícita, a conexão é feita com TLS |
MQTT_TLS_CA_FILE | — | Arquivo CA com que o certificado do broker foi assinado |
MQTT_TLS_VERIFY_PEER | true | Verifica o certificado do broker |
Nas versões recentes, a comunicação dos dispositivos (antenas/gateways) 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 um broker de desenvolvimento isolado. Ao configurar firewall e MQTT_EXTERNAL_PORT, alinhe a porta ao modo do seu deploy.
InfluxDB (Time-Series)
| Variável | Padrão | Descrição |
|---|---|---|
INFLUXDB_ENABLED | true | Habilitar InfluxDB para sinais BLE |
INFLUXDB_URL | http://ionguard_influxdb_{HOST}:8086 | URL do InfluxDB |
INFLUXDB_TOKEN | (gerado) | Token de autenticação |
INFLUXDB_ORG | iongrade | Organização no InfluxDB |
INFLUXDB_BUCKET | ionguard | Bucket de armazenamento |
Módulos
| Variável | Padrão | Descrição |
|---|---|---|
MODULE_ENCRYPTION_KEY | (gerado) | Chave para encriptação de dados sensíveis de módulos (credenciais de gateways, tokens). Gerada aleatoriamente por instalação |
A MODULE_ENCRYPTION_KEY é diferente da chave de release usada para empacotar módulos .enc. Esta chave é única por instalação e protege dados em runtime.
Retenção de dados
| Variável | Padrão | Descrição |
|---|---|---|
RETENTION_SIGNALS_DAYS | 7 | Dias de retenção de sinais BLE. Aplicado na política de retenção do bucket InfluxDB (definido na inicialização do container) |
RETENTION_LOCATIONS_DAYS | 90 | Dias de retenção de histórico de localização (MariaDB) |
RETENTION_EVENTS_DAYS | 365 | Dias de retenção de eventos |
RETENTION_AUDIT_DAYS | 365 | Dias de retenção de logs de auditoria |
RETENTION_BATCH_SIZE | 10000 | Tamanho do batch para limpeza de dados |
As retenções de localizações, eventos e auditoria são jobs de limpeza que rodam sobre o MariaDB (config/retention.php). A retenção de sinais BLE é aplicada diretamente pela política de retenção do bucket InfluxDB.
E-mail
| Variável | Padrão | Descrição |
|---|---|---|
MAIL_MAILER | smtp | Driver de e-mail |
MAIL_HOST | — | Servidor SMTP |
MAIL_PORT | 587 | Porta SMTP |
MAIL_USERNAME | — | Usuário SMTP |
MAIL_PASSWORD | — | Senha SMTP |
MAIL_FROM_ADDRESS | — | Endereço de remetente |
Performance
| Variável | Padrão | Descrição |
|---|---|---|
PHP_FPM_WORKERS | 50 | Número máximo de workers PHP-FPM. Ajuste conforme a RAM disponível |
TZ | America/Sao_Paulo | Timezone do sistema |
API (tokens Sanctum)
| Variável | Padrão | Descrição |
|---|---|---|
SANCTUM_TOKEN_EXPIRATION | 1440 | Validade dos tokens de API em minutos (1440 = 24 h) |
SANCTUM_TOKEN_PREFIX | ionguard_ | Prefixo dos tokens de API emitidos |
Portas (on-premises)
| Variável | Padrão | Descrição |
|---|---|---|
HTTP_PORT | 80 | Porta HTTP no host |
HTTPS_PORT | 443 | Porta HTTPS no host |
Se o servidor já hospeda outra aplicação nas portas 80/443, altere para portas alternativas (ex: HTTP_PORT=8080, HTTPS_PORT=8443).
Configurações da aplicação
Além do .env, existem arquivos de configuração PHP em app/config/ que controlam comportamentos específicos:
Location Engine (config/location.php)
Parâmetros do engine de localização BLE (todos sobrescrevíveis por .env):
| Variável | Padrão | Descrição |
|---|---|---|
LOCATION_WINDOW_SIZE | 15 | Janela (segundos) de coleta de sinais para o cálculo |
LOCATION_CALCULATION_INTERVAL | 5 | Intervalo (segundos) entre cálculos de localização |
LOCATION_MIN_SIGNALS | 2 | Mínimo de sinais para posicionar um beacon |
LOCATION_RSSI_THRESHOLD_MINIMUM | -90 | RSSI mínimo (dBm) considerado para detecção de zona |
LOCATION_HYSTERESIS_THRESHOLD | 5 | Histerese (dB) para evitar oscilação entre zonas |
LOCATION_KEEP_ALIVE_TIMEOUT | 120 | Tempo (segundos) sem sinal para marcar dispositivo como offline |
LOCATION_BATTERY_LOW_THRESHOLD | 20 | Percentual de bateria que dispara alerta de bateria baixa |
LOCATION_ESCALATION_TIMEOUT | 120 | Tempo (segundos) para escalonamento relacionado à localização |
Alertas (config/alerts.php)
| Parâmetro | Padrão | Descrição |
|---|---|---|
escalation.check_interval | 30 | Intervalo (segundos) do job que verifica alertas a escalonar |
Retenção (config/retention.php)
Políticas de retenção de dados (também configuráveis via .env).
Módulos (config/modules.php)
- Chave de release para descriptografia de módulos
- Diretório de módulos
- Configuração de carregamento