# deviantony/docker-elk architecture

> Architecture diagram of the GitHub repository deviantony/docker-elk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/deviantony/docker-elk
- Repository: https://github.com/deviantony/docker-elk

## Overview

docker-elk is a Docker Compose template for running an exploratory Elastic Stack: an operator initializes the stack, starts its services, and uses Kibana to search and visualize data. Setup provisions Elasticsearch users; Elasticsearch provides storage and search, while Logstash and optional Beats/Fleet extensions support data ingestion and management. The tree and README establish these components, but no source excerpts were provided, so the graph omits unverified configuration-level wiring and extension-specific flows.

Main entry points: [`docker-compose.yml`](https://github.com/deviantony/docker-elk/blob/main/docker-compose.yml) (Compose stack), [`setup/entrypoint.sh`](https://github.com/deviantony/docker-elk/blob/main/setup/entrypoint.sh) (User setup), [`elasticsearch/config/elasticsearch.yml`](https://github.com/deviantony/docker-elk/blob/main/elasticsearch/config/elasticsearch.yml) (Elasticsearch), [`kibana/config/kibana.yml`](https://github.com/deviantony/docker-elk/blob/main/kibana/config/kibana.yml) (Kibana)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Stack orchestration"]
  node_compose["Compose stack<br/>[docker-compose.yml]"]
end

subgraph group_core["Elastic Stack"]
  node_es[("Elasticsearch<br/>[elasticsearch.yml]")]
  node_kibana["Kibana<br/>[kibana.yml]"]
  node_logstash["Logstash<br/>[logstash.yml]"]
  node_pipeline["Logstash pipeline<br/>[logstash.conf]"]
end

subgraph group_setup["Initialization"]
  node_setup["User setup<br/>[entrypoint.sh]"]
  node_setup_lib["Setup helpers<br/>[lib.sh]"]
  node_roles["Writer roles"]
end

subgraph group_extensions["Optional extensions"]
  node_filebeat["Filebeat<br/>[filebeat.yml]"]
  node_metricbeat["Metricbeat<br/>[metricbeat.yml]"]
  node_heartbeat["Heartbeat<br/>[heartbeat.yml]"]
  node_fleet["Fleet"]
  node_curator["Curator<br/>[curator.yml]"]
end

node_operator(("Operator"))

node_operator -->|"starts stack"| node_compose
node_compose -->|"runs setup"| node_setup
node_compose -->|"starts service"| node_es
node_compose -->|"starts service"| node_kibana
node_compose -->|"starts service"| node_logstash
node_setup -->|"uses helpers"| node_setup_lib
node_setup -->|"uses roles"| node_roles
node_setup -->|"initializes users"| node_es
node_kibana -->|"communicates with"| node_es
node_logstash -->|"communicates with"| node_es
node_operator -->|"uses interface"| node_kibana
node_compose -.->|"starts service"| node_filebeat
node_compose -.->|"starts service"| node_metricbeat
node_compose -.->|"starts service"| node_heartbeat
node_compose -.->|"starts service"| node_fleet
node_compose -.->|"starts service"| node_curator

click node_compose "https://github.com/deviantony/docker-elk/blob/main/docker-compose.yml"
click node_setup "https://github.com/deviantony/docker-elk/blob/main/setup/entrypoint.sh"
click node_setup_lib "https://github.com/deviantony/docker-elk/blob/main/setup/lib.sh"
click node_roles "https://github.com/deviantony/docker-elk/tree/main/setup/roles"
click node_es "https://github.com/deviantony/docker-elk/blob/main/elasticsearch/config/elasticsearch.yml"
click node_kibana "https://github.com/deviantony/docker-elk/blob/main/kibana/config/kibana.yml"
click node_logstash "https://github.com/deviantony/docker-elk/blob/main/logstash/config/logstash.yml"
click node_pipeline "https://github.com/deviantony/docker-elk/blob/main/logstash/pipeline/logstash.conf"
click node_filebeat "https://github.com/deviantony/docker-elk/blob/main/extensions/filebeat/config/filebeat.yml"
click node_metricbeat "https://github.com/deviantony/docker-elk/blob/main/extensions/metricbeat/config/metricbeat.yml"
click node_heartbeat "https://github.com/deviantony/docker-elk/blob/main/extensions/heartbeat/config/heartbeat.yml"
click node_fleet "https://github.com/deviantony/docker-elk/tree/main/extensions/fleet"
click node_curator "https://github.com/deviantony/docker-elk/blob/main/extensions/curator/config/curator.yml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_compose toneBlue
class node_es,node_kibana,node_logstash,node_pipeline toneAmber
class node_setup,node_setup_lib,node_roles toneMint
class node_filebeat,node_metricbeat,node_heartbeat,node_fleet,node_curator toneRose
class node_operator toneIndigo
```

## Components

### Stack orchestration

- [Compose stack](https://github.com/deviantony/docker-elk/blob/main/docker-compose.yml): `docker-compose.yml`

### Elastic Stack

- [Elasticsearch](https://github.com/deviantony/docker-elk/blob/main/elasticsearch/config/elasticsearch.yml): `elasticsearch/config/elasticsearch.yml`
- [Kibana](https://github.com/deviantony/docker-elk/blob/main/kibana/config/kibana.yml): `kibana/config/kibana.yml`
- [Logstash](https://github.com/deviantony/docker-elk/blob/main/logstash/config/logstash.yml): `logstash/config/logstash.yml`
- [Logstash pipeline](https://github.com/deviantony/docker-elk/blob/main/logstash/pipeline/logstash.conf): `logstash/pipeline/logstash.conf`

### Initialization

- [User setup](https://github.com/deviantony/docker-elk/blob/main/setup/entrypoint.sh): `setup/entrypoint.sh`
- [Setup helpers](https://github.com/deviantony/docker-elk/blob/main/setup/lib.sh): `setup/lib.sh`
- [Writer roles](https://github.com/deviantony/docker-elk/tree/main/setup/roles): `setup/roles`

### Optional extensions

- [Filebeat](https://github.com/deviantony/docker-elk/blob/main/extensions/filebeat/config/filebeat.yml): `extensions/filebeat/config/filebeat.yml`
- [Metricbeat](https://github.com/deviantony/docker-elk/blob/main/extensions/metricbeat/config/metricbeat.yml): `extensions/metricbeat/config/metricbeat.yml`
- [Heartbeat](https://github.com/deviantony/docker-elk/blob/main/extensions/heartbeat/config/heartbeat.yml): `extensions/heartbeat/config/heartbeat.yml`
- [Fleet](https://github.com/deviantony/docker-elk/tree/main/extensions/fleet): `extensions/fleet`
- [Curator](https://github.com/deviantony/docker-elk/blob/main/extensions/curator/config/curator.yml): `extensions/curator/config/curator.yml`

### Other components

- **Operator**

## Connections

- Operator → Compose stack: starts stack
- Compose stack → User setup: runs setup
- Compose stack → Elasticsearch: starts service
- Compose stack → Kibana: starts service
- Compose stack → Logstash: starts service
- User setup → Setup helpers: uses helpers
- User setup → Writer roles: uses roles
- User setup → Elasticsearch: initializes users
- Kibana → Elasticsearch: communicates with
- Logstash → Elasticsearch: communicates with
- Operator → Kibana: uses interface
- Compose stack → Filebeat: starts service
- Compose stack → Metricbeat: starts service
- Compose stack → Heartbeat: starts service
- Compose stack → Fleet: starts service
- Compose stack → Curator: starts service
