Files
acaua/docs/pt-BR/docker.md
T
Lucas RayanandClaude Sonnet 5 8a80504c45
Release / Plan (reuse the published image?) (push) Successful in 3s
CI / Docker image (build and smoke test) (push) Skipped
CI / Format and clippy (push) Successful in 4m32s
CI / Dependency audit (push) Successful in 11s
CI / Tests (Linux) (push) Successful in 9m15s
Release / ci (push) Successful in 9m18s
Release / Build image (arm64) (push) Failing after 7m7s
Release / Build image (amd64) (push) Failing after 13m53s
Release / Publish tags (push) Skipped
Release / Gitea release (push) Skipped
refactor: distribute Acaua as a Docker image instead of a desktop app
Acaua is a collective SOC daemon consuming only Zeek log files, not a
single-user tool needing local hardware like its siblings. Drop the
Tauri desktop shell, installers and self-update entirely; the server
and its web dashboard ship as a container, updated by pulling a new
image tag.

Link against the official prebuilt libduckdb instead of compiling it
from source via the bundled feature, cutting image build time from
15+ minutes to about 3. Fix a real bug found along the way: as PID 1
in a container, the daemon ignored SIGTERM and was always killed
after the stop timeout; it now shuts down gracefully.

Also corrects the Pillar 1 beaconing score: the period estimate had a
harmonic alias (a perfectly periodic 4h series resolved to 600s), and
the old score formula flagged pure random traffic as suspicious
(p95 = 0.839 on Poisson noise). The new formula was validated against
300 samples per scenario.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VAyr8d7HuAdUGB6aA5xmDD
2026-10-31 19:54:45 -03:00

2.9 KiB

Docker

English · Português

O Acauã é distribuído como uma imagem de container oficial: git.lucasrguerra.dev.br/ciberfauna/acaua.

Tags de imagem disponíveis:

  • latest: Release estável mais recente.
  • X.Y.Z / X.Y: Versões semânticas fixadas.
  • edge: Gerada automaticamente a partir do branch main.

O container executa como usuário de sistema não privilegiado (acaua, UID 10001), com filesystem raiz somente leitura (read_only: true), todas as capabilities revogadas (cap_drop: [ALL]), e endurecimento de segurança (no-new-privileges:true).

Implantação com Compose

A implantação recomendada para produção e laboratório utiliza Docker Compose:

cp .env.example .env   # configure ZEEK_INTERFACE (apenas redes autorizadas)
docker compose pull && docker compose up -d

Para compilar e rodar localmente a partir do código:

docker compose up -d --build

A stack coordena dois serviços:

Serviço Imagem Finalidade Perfil de segurança
zeek zeek/zeek:9.0.1 Captura de pacotes de rede e rotação horária de logs Rede host, capabilities NET_RAW e NET_ADMIN
acaua git.lucasrguerra.dev.br/ciberfauna/acaua Processamento analítico, API e dashboard web Não privilegiado (UID 10001), rootfs read-only, sem capabilities

Volumes e organização de dados

A stack utiliza volumes nomeados para isolamento limpo de permissões e propriedade:

  • zeek-logs: Volume compartilhado montado em /logs no serviço Zeek e montado como somente leitura em /data/zeek:ro no serviço Acauã.
  • acaua-data: Volume dedicado de leitura e escrita montado em /data/acaua para o armazenamento DuckDB, partições Parquet e arquivos de execução.

Para inspecionar ou extrair dados no host:

docker compose cp acaua:/data/acaua ./local-acaua-backup

Ou executar um container efêmero de inspeção:

docker run --rm -v acaua_acaua-data:/data:ro debian:trixie-slim ls -la /data

Atualização

Por rodar como um daemon de SOC de uso coletivo, atualizações são realizadas puxando a imagem verificada mais recente:

docker compose pull && docker compose up -d

O daemon em execução finaliza de forma limpa em resposta ao SIGTERM em tempo sub-segundo, garantindo que gravações Parquet e transações DuckDB sejam concluídas sem corrupção.

Notas de segurança

  • O serviço zeek requer privilégios de captura de pacotes (NET_RAW, NET_ADMIN). Execute-o apenas em interfaces e redes que você tem autorização explícita para monitorar.
  • A publicação padrão do dashboard é restrita a loopback (ACAUA_PUBLISH=127.0.0.1:8787). Não exponha o serviço em interfaces externas sem um proxy reverso com autenticação.
  • A imagem não possui telemetria. Tráfego de saída restringe-se a checagens de versão iniciadas pelo operador contra a API de Releases do Gitea.