Instalação
Guia passo a passo para instalar o ION Guard em um servidor Ubuntu limpo.
Pré-requisitos
Antes de iniciar, certifique-se de que o servidor atende aos requisitos mínimos:
- Ubuntu 24.04 LTS ou Debian 12+
- Acesso root ou sudo
- Conexão com a internet (para download dos pacotes)
- DNS ou hostname configurado para o servidor
Visão geral do processo
O processo de instalação é automatizado pelo script bootstrap.sh, que executa as seguintes etapas:
1. Validação do sistema (Ubuntu, root, diretório livre)
2. Instalação de pacotes do sistema (curl, jq, gnupg, ufw, etc.)
3. Instalação do Docker Engine + Compose plugin
4. Criação do usuário iongrade (com acesso sudo e docker)
5. Configuração do firewall (UFW)
6. Configuração de swap e logrotate
7. Download e descriptografia dos pacotes da aplicação
8. Geração do arquivo .env com secrets aleatórios
9. Geração de configurações (nginx, mosquitto, mariadb)
10. Geração de certificado SSL auto-assinado
11. Build e inicialização dos containers Docker
12. Execução de migrations e seed inicial
13. Build do frontend
14. Registro dos serviços no systemd
Comando de instalação
Execute o seguinte comando como root no servidor de destino:
curl -sSL https://internal.iongrade.com.br/ionguard/bootstrap.sh | sudo bash -s -- \
--facility NOME_DA_FACILITY \
--host ionguard.cliente.local \
--version 0.1.0
Parâmetros
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
--facility NOME | Sim | Identificador do cliente. Usado como chave de descriptografia do pacote |
--host HOSTNAME | Sim | DNS name ou hostname para acesso à aplicação |
--version X.Y.Z | Sim | Versão do ION Guard a instalar |
--local-source DIR | Não | Diretório com pacotes .ionguard locais (pula download). Para ambientes air-gap |
--force | Não | Sobrescreve instalação existente em /home/iongrade/ionguard |
--ssh-key "KEY" | Não | Chave SSH pública para acesso ao usuário iongrade |
Instalação air-gap (sem internet)
Para ambientes sem acesso à internet, copie os pacotes para o servidor e use --local-source:
# No servidor com internet — baixe os pacotes
wget https://internal.iongrade.com.br/ionguard/bootstrap.sh
# Copie bootstrap.sh e os pacotes .ionguard para o servidor de destino
scp bootstrap.sh 0.1.0.ionguard deploy.ionguard usuario@servidor:/tmp/
# No servidor de destino
sudo bash /tmp/bootstrap.sh \
--facility NOME_DA_FACILITY \
--host ionguard.cliente.local \
--version 0.1.0 \
--local-source /tmp
O que é criado
Após a instalação, a seguinte estrutura é criada:
/home/iongrade/ionguard/
├── app/ # Código da aplicação Laravel
├── deploy/ # Scripts e configurações Docker
│ ├── scripts/ # Scripts operacionais
│ ├── docker/ # Dockerfiles e configs
│ └── systemd/ # Units do systemd
├── modules.json # Lista de compose files ativos
├── .env # Variáveis de ambiente (gerado automaticamente)
├── backup/ # Diretório de backups
└── logs/ # Logs da aplicação
Containers Docker
| Container | Imagem | Porta | Função |
|---|---|---|---|
ionguard_nginx | nginx:1.27-alpine | 80, 443 | Proxy reverso com HTTPS |
ionguard_php | Build local (PHP 8.4 FPM) | — | Aplicação Laravel |
ionguard_mariadb | mariadb:11 | — | Banco de dados |
ionguard_valkey | valkey:8-alpine | — | Cache, filas e sessões |
ionguard_influxdb | influxdb:2.7 | — | Time-series (sinais BLE) |
ionguard_mosquitto | mosquitto-go-auth | 1883, 9001 | Broker MQTT |
ionguard_horizon | Build local | — | Workers de fila |
ionguard_scheduler | Build local | — | Tarefas agendadas |
ionguard_reverb | Build local | 8080 | WebSocket |
Serviços systemd
ionguard-autostart.service— Inicia todos os containers automaticamente no boot do servidorionguard-inotify.service— Watcher para comandos remotos
Firewall (UFW)
Portas abertas automaticamente:
| Porta | Protocolo | Serviço |
|---|---|---|
| 22 | TCP | SSH |
| 80 | TCP | HTTP (redirect para HTTPS) |
| 443 | TCP | HTTPS |
| 1883 | TCP | MQTT |
| 9001 | TCP | MQTT WebSocket |
Primeiro acesso
Após a instalação, o script exibe um banner com as credenciais:
╔══════════════════════════════════════╗
║ ION Guard v0.1.0 instalado ║
╠══════════════════════════════════════╣
║ URL: https://ionguard.cliente.local
║ Email: dev@iongrade.com.br
║ Senha: (exibida no terminal)
╚══════════════════════════════════════╝
A senha inicial do administrador é exibida apenas no terminal durante a instalação. Anote-a e altere imediatamente após o primeiro login.
O usuário inicial é criado com o perfil Platform Admin, que tem acesso completo ao sistema. Consulte Perfis de Acesso para entender os diferentes níveis de permissão.
Idempotência
O script de bootstrap é seguro para re-execução:
- Se o Docker já estiver instalado → pula instalação
- Se o usuário
iongradejá existir → pula criação (re-aplica SSH key se fornecida) - Se o diretório de instalação já existir → erro (use
--forcepara sobrescrever) - Se swap já estiver configurado → pula
- Se certificado SSL já existir → pula
Verificação pós-instalação
Após a instalação, verifique o estado do sistema:
# Verificar containers rodando
cd /home/iongrade/ionguard
./scripts/comp.sh ps
# Verificar health check
./scripts/healthcheck.sh
# Verificar logs
./scripts/comp.sh logs -f ionguard_php --tail 50
Próximos passos
- Configuração — Ajustar variáveis de ambiente
- Instalação de Módulos — Instalar módulos IndoorLocation, DigiEye, Accelero
- Primeiros Passos — Começar a usar a plataforma