docker-compose.laptop.yml
Rama main · réplica de lectura del repositorio original.
# Laptop stack: the RawTrail server on your own Mac, reachable from this Mac only. Bring it up with scripts/laptop/rawtrail-laptop
# install, which generates the secrets and the TLS certificate this file reads from RAWTRAIL_LAPTOP_HOME, starts the stack, and
# installs the agent pointed at it.
#
# Sized for a laptop rather than a server: the server is published on 127.0.0.1 only and terminates TLS itself (no Caddy), ClickHouse
# is capped near 1 GB, MySQL's buffer pool is 512 MB, events are kept for 7 days, and no telemetry is exported.
name: rawtrail-laptop
services:
mysql:
image: mysql:8.4.9@sha256:c36050afdca850f23cef85703f84c7531a5ae155a11b5ee1c60acb09937c4084
restart: unless-stopped
# One machine's events: no replica to feed, so no binary log. The buffer pool is 512 MB, enough to keep a long agent session's
# process graph in memory, with the container limit above it for MySQL's own overhead. The performance schema, a few hundred MB
# of instrumentation nobody reads here, is off.
command:
- --skip-log-bin
- --innodb-buffer-pool-size=512M
- --performance-schema=OFF
mem_limit: 1024m
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
MYSQL_DATABASE: edr
volumes:
- mysql-data:/var/lib/mysql
secrets:
- mysql_root
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping --silent 2>/dev/null || exit 1"]
interval: 5s
timeout: 5s
retries: 30
start_period: 10s
# The event archive (ADR-0015), on the private compose network only. The default user is passwordless there.
clickhouse:
image: clickhouse/clickhouse-server:24.8@sha256:1ffa82edee000a42c09313bd9f1293d94c570aee74babc1b3ca9983a35fa597b
restart: unless-stopped
# The container limit sits above ClickHouse's own cap (packaging/laptop/clickhouse-laptop.xml), so a heavy query is refused by
# ClickHouse with an error instead of the whole server being killed by the kernel.
mem_limit: 1280m
environment:
CLICKHOUSE_DB: edr
# Required for the default user to authenticate over the network with an empty password (code 516 otherwise).
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "1"
ulimits:
nofile:
soft: 262144
hard: 262144
volumes:
- clickhouse-data:/var/lib/clickhouse
- ./packaging/laptop/clickhouse-laptop.xml:/etc/clickhouse-server/config.d/laptop.xml:ro
healthcheck:
test: ["CMD", "clickhouse-client", "--query", "SELECT 1"]
interval: 5s
timeout: 5s
retries: 30
start_period: 10s
server:
image: ghcr.io/rawtrail/rawtrail-server:${EDR_VERSION:-latest}
restart: unless-stopped
# Longer than every stage of a graceful stop put together (65s); test/arch keeps it in step with those constants (#1127).
stop_grace_period: 90s
depends_on:
mysql:
condition: service_healthy
clickhouse:
condition: service_healthy
# Published on the loopback interface only: nothing else on the network can reach this server. The port is the installer's
# (8443 unless RAWTRAIL_LAPTOP_PORT says otherwise), clear of the 8088 a development server uses.
ports:
- "127.0.0.1:${RAWTRAIL_LAPTOP_PORT:-8443}:8088"
environment:
EDR_DSN: ""
EDR_DSN_FILE: /run/secrets/edr_dsn
EDR_ENROLL_SECRET_FILE: /run/secrets/enroll_secret
EDR_SECRET_KEY_FILE: /run/secrets/secret_key
EDR_CLICKHOUSE_DSN: "clickhouse://default:@clickhouse:9000/edr"
# The server terminates TLS itself with the installer's certificate for localhost, which the agent pins by fingerprint.
EDR_LISTEN_ADDR: "0.0.0.0:8088"
EDR_TLS_CERT_FILE: /tls/server.crt
EDR_TLS_KEY_FILE: /tls/server.key
# Break-glass passkeys bind to the origin the browser sees, and the setup URL the server prints is built from it.
EDR_BREAKGLASS_RP_ID: localhost
EDR_BREAKGLASS_RP_ORIGINS: https://localhost:${RAWTRAIL_LAPTOP_PORT:-8443}
EDR_LOG_LEVEL: ${EDR_LOG_LEVEL:-info}
EDR_LOG_FORMAT: "json"
# A week of events and of process graph, together, so an alert's graph is never older than its timeline.
EDR_EVENT_RETENTION_DAYS: "7"
EDR_RETENTION_DAYS: "7"
# A laptop's disk is smaller than a server's: the store size warning fires at 20 GB.
EDR_STORE_SIZE_WARN_GB: "20"
# No OTEL_EXPORTER_OTLP_ENDPOINT: telemetry export stays off.
# The console's laptop defaults: Agent sessions first, and fleet settings behind "Show advanced settings".
EDR_PROFILE: "laptop"
volumes:
- ${RAWTRAIL_LAPTOP_HOME:?run scripts/laptop/rawtrail-laptop install}/tls:/tls:ro
secrets:
- enroll_secret
- edr_dsn
- secret_key
volumes:
mysql-data:
clickhouse-data:
secrets:
mysql_root:
file: ${RAWTRAIL_LAPTOP_HOME:?run scripts/laptop/rawtrail-laptop install}/secrets/mysql_root
enroll_secret:
file: ${RAWTRAIL_LAPTOP_HOME:?run scripts/laptop/rawtrail-laptop install}/secrets/enroll_secret
edr_dsn:
file: ${RAWTRAIL_LAPTOP_HOME:?run scripts/laptop/rawtrail-laptop install}/secrets/edr_dsn
secret_key:
file: ${RAWTRAIL_LAPTOP_HOME:?run scripts/laptop/rawtrail-laptop install}/secrets/secret_key