Instalação de Módulos
Como instalar, desinstalar e gerenciar módulos na plataforma ION Guard em ambiente de produção.
Visão geral
Módulos são distribuídos como pacotes encriptados (.enc) que contêm o código-fonte, migrations, frontend compilado e configurações. A instalação é feita pela interface web ou via linha de comando.
Instalação via interface web
Requer Platform Admin.
- Acesse Módulos (
/modules) no menu lateral - Clique em "Instalar Módulo"
- Selecione o arquivo
.encdo módulo (máximo 100 MB) - Aguarde o processamento
O que acontece internamente
- Descriptografia — O pacote
.encé desempacotado com a chave de release do módulo (MODULE_RELEASE_KEY), viaModuleReleaseEncryption. Essa chave é fixa e compartilhada entre instalações (serve apenas para embrulhar/desembrulhar o arquivo de distribuição). Não confunda com aMODULE_ENCRYPTION_KEY, que é gerada por instalação e cifra dados sensíveis de runtime (credenciais de gateway, tokens em banco) - Validação — Verifica a estrutura do ZIP: exige
{Módulo}/{Módulo}ServiceProvider.php, todos os arquivos sob o diretório{Módulo}/e nenhum path traversal (..ou caminho absoluto) - Staging — Extrai para um diretório temporário com nome aleatório (
.{módulo}.staging-{rand}) no mesmo filesystem do destino, para que a troca seja atômica - Swap atômico — Renomeia o módulo existente para
.bak-{timestamp}(se houver) e move o staging para a posição final emapp/Modules/ - Migrations — Executa
php artisan migrate --forcee reotimiza o cache (optimize+opcache_reset) - Assets — Publica assets do frontend
- Docker Compose — Regenera
modules_runtime.ymlcom os workers declarados pelo novo módulo - Restart — Agenda o restart do PHP-FPM (via watcher inotify, sem acesso ao socket do Docker) para registrar o ServiceProvider
A instalação e a desinstalação são registradas na trilha de auditoria (module_installed / module_uninstalled).
Em caso de falha
Se qualquer etapa falhar após a extração:
- O diretório staging é removido
- O backup da versão anterior (se existia) é restaurado
- Assets são despublicados
- Uma mensagem de erro é exibida na interface
Se a falha ocorrer após as migrations, elas não são revertidas automaticamente. Será necessário executar rollback manual se necessário:
./scripts/comp.sh exec -T ionguard_php php artisan migrate:rollback
Atualização de módulo
Para atualizar um módulo já instalado, basta instalar a nova versão sobre a existente. O sistema:
- Faz backup da versão atual
- Instala a nova versão
- Executa novas migrations
- Mantém a versão anterior como backup até confirmar sucesso
Desinstalação
Pré-requisitos
Antes de desinstalar, resolva todos os alertas ativos do módulo. A desinstalação é bloqueada se existirem alertas não resolvidos.
Via interface
- No card do módulo em Módulos (
/modules), clique em "Desinstalar" - Confirme no diálogo
O que é removido
- Registros de habilitação por site (
site_modules) - Arquivos do módulo em
app/Modules/ - Assets publicados
- Workers no Docker Compose
O que é preservado
- Tabelas no banco de dados — Dados criados pelo módulo permanecem
- Registros de auditoria — Log de ações do módulo
- Backups — Backups existentes não são afetados
Logs de instalação
Todas as operações de módulos são registradas em um log dedicado:
storage/logs/modules.log
Cada operação inclui um request_id para rastreabilidade. O log é rotacionado diariamente com retenção padrão de 14 dias.
Verificação pós-instalação
Após instalar um módulo:
# Verificar se o módulo está registrado
./scripts/comp.sh exec -T ionguard_php php artisan tinker --execute="
app(\App\Modules\ModuleRegistry::class)->all()
"
# Verificar se workers foram criados (se o módulo declara workers)
./scripts/comp.sh ps
# Health check
./scripts/healthcheck.sh
Habilitação por site
Após a instalação, o módulo precisa ser habilitado para cada site onde será usado. Veja Módulos — Guia do Usuário para instruções.