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
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
81 lines
2.9 KiB
Markdown
81 lines
2.9 KiB
Markdown
# Docker
|
|
|
|
[English](../docker.md) · **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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
docker compose cp acaua:/data/acaua ./local-acaua-backup
|
|
```
|
|
|
|
Ou executar um container efêmero de inspeção:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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.
|