# Standalone observability stack: OpenObserve (storage/search/UI) + Fluent Bit (collector). # # Runs independently of ForkFolio so any number of apps on this Docker host can # ship logs here. Fluent Bit tails every container's json-file log and routes # containers that set a logging "tag" to a matching OpenObserve stream. # # Usage: # cp .env.example .env # then set a strong password # docker compose up -d # open http://localhost:5080 name: observability services: openobserve: # Pin to a specific release tag for reproducible upgrades if desired image: public.ecr.aws/zinclabs/openobserve:latest container_name: openobserve restart: unless-stopped ports: - "5080:5080" env_file: .env environment: - ZO_DATA_DIR=/data volumes: - ./openobserve-data:/data logging: driver: json-file options: max-size: "10m" max-file: "3" fluent-bit: image: fluent/fluent-bit:latest container_name: fluent-bit restart: unless-stopped depends_on: - openobserve env_file: .env environment: - ZO_HOST=openobserve - ZO_PORT=5080 volumes: - ./fluent-bit/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf:ro - ./fluent-bit/parsers.conf:/fluent-bit/etc/custom_parsers.conf:ro # Docker's container log files (read-only) - /var/lib/docker/containers:/var/lib/docker/containers:ro # Tail positions, so restarts don't re-send or skip logs - fluent-bit-db:/fluent-bit/db logging: driver: json-file options: max-size: "10m" max-file: "3" volumes: fluent-bit-db: