Pular para o conteúdo principal

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âmetroObrigatórioDescrição
--facility NOMESimIdentificador do cliente. Usado como chave de descriptografia do pacote
--host HOSTNAMESimDNS name ou hostname para acesso à aplicação
--version X.Y.ZSimVersão do ION Guard a instalar
--local-source DIRNãoDiretório com pacotes .ionguard locais (pula download). Para ambientes air-gap
--forceNãoSobrescreve instalação existente em /home/iongrade/ionguard
--ssh-key "KEY"NãoChave 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

ContainerImagemPortaFunção
ionguard_nginxnginx:1.27-alpine80, 443Proxy reverso com HTTPS
ionguard_phpBuild local (PHP 8.4 FPM)Aplicação Laravel
ionguard_mariadbmariadb:11Banco de dados
ionguard_valkeyvalkey:8-alpineCache, filas e sessões
ionguard_influxdbinfluxdb:2.7Time-series (sinais BLE)
ionguard_mosquittomosquitto-go-auth1883, 9001Broker MQTT
ionguard_horizonBuild localWorkers de fila
ionguard_schedulerBuild localTarefas agendadas
ionguard_reverbBuild local8080WebSocket

Serviços systemd

  • ionguard-autostart.service — Inicia todos os containers automaticamente no boot do servidor
  • ionguard-inotify.service — Watcher para comandos remotos

Firewall (UFW)

Portas abertas automaticamente:

PortaProtocoloServiço
22TCPSSH
80TCPHTTP (redirect para HTTPS)
443TCPHTTPS
1883TCPMQTT
9001TCPMQTT 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)
╚══════════════════════════════════════╝
Importante

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 iongrade já existir → pula criação (re-aplica SSH key se fornecida)
  • Se o diretório de instalação já existir → erro (use --force para 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