# Quickstart: Docker

> The whole DFE stack under Docker Compose on one host: a laptop, a demo box or a proof of concept. It runs the same images as a Kubernetes deployment, just packaged differently.

You need Docker Engine 26.0 or later with Compose 2.34.0 or later.

```bash
docker compose -f oci://ghcr.io/hyperi-io/dfe-docker:compose up -d
```

Point your browser to http://localhost:3000 and log in as `admin` with password `dfe-first-login`. The console makes you change it at first login. Every port listens on 127.0.0.1 only. `docker compose -f oci://ghcr.io/hyperi-io/dfe-docker:compose down` stops the stack and keeps its data.

| Profile | Transport | Runs |
|---|---|---|
| `slim-grpc` | gRPC, low latency | The core path alone: receiver, loader and ClickHouse, with the engine and the console. |
| `slim-kafka` | Kafka message bus | The same core path over Kafka, plus a Kafka UI. |
| `single-grpc` | gRPC, low latency | The core path plus the fetcher and the transforms. |
| `single-kafka` | Kafka message bus | The core path over Kafka, plus the archiver, the fetcher and the transforms. The default. |

Then send it an event of your own:

```bash
curl -X POST http://localhost:8080/ingest \
  -H 'Content-Type: application/json' \
  -d '{"_source":"main","message":"hello dfe"}'
```

`_source` routes it, so `"main"` lands in `dfe.main` a couple of seconds later.

> **Coming from Splunk or Elastic?** You didn't create an index or a mapping first, and you won't need to. `main` takes whatever fields you send and they all work straight away, so a sender adding or changing a field breaks nothing. You tune the fields that matter later. More in [what's different](/v/2.2.2/coming-from.md#nothing-breaks-when-a-source-changes).

Where to find it: the console is at http://localhost:3000, ClickHouse HTTP at http://localhost:8123 and the engine API at http://localhost:8003. `single-kafka` adds the Kafka UI at http://localhost:8081. The ingest ports listen on every interface, and everything else on this host only.

Next:

1. The full first look, including reading the event back: [Taking DFE for a first look](/v/2.2.2/dfe-docker/evaluating.md).
2. What each profile runs: [profiles](/v/2.2.2/dfe-docker/profiles.md).
3. Set the deployment's configuration: [configuration](/v/2.2.2/dfe-docker/configuration.md).
4. Deploy, and move to a newer release: [deploying](/v/2.2.2/dfe-docker/deploying.md).
5. Run it day to day: [operating](/v/2.2.2/dfe-docker/operating.md).
6. When something does not come up: [troubleshooting](/v/2.2.2/dfe-docker/troubleshooting.md).
