> ## Documentation Index
> Fetch the complete documentation index at: https://docs.levelrail.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Self-host Apache Kafka with Docker

> A single broker Apache Kafka in KRaft mode (no ZooKeeper) on the official image, with a persistent volume. It is not published on the host and speaks plaintext, so reach it only from other services in this project at kafka:9092.

A single broker Apache Kafka in KRaft mode (no ZooKeeper) on the official image, with a persistent volume. It is not published on the host and speaks plaintext, so reach it only from other services in this project at kafka:9092.

This page describes the Levelrail template for Apache Kafka (Infrastructure). It deploys the services below as one Docker Compose app on your own server. Project site: [https://kafka.apache.org/documentation/](https://kafka.apache.org/documentation/).

Recommended memory: about 1024 MiB.

## Services, ports and volumes

| Service | Image | Container ports | Volumes |
| - | - | - | - |
| `kafka` | `apache/kafka:3.8.0` | 9092 | `kafka_data -&#62; /var/lib/kafka/data` |

## Environment variables

| Service | Variable | Value |
| - | - | - |
| `kafka` | `KAFKA_ADVERTISED_LISTENERS` | Preset in the template |
| `kafka` | `KAFKA_CONTROLLER_LISTENER_NAMES` | Preset in the template |
| `kafka` | `KAFKA_CONTROLLER_QUORUM_VOTERS` | Preset in the template |
| `kafka` | `KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS` | Preset in the template |
| `kafka` | `KAFKA_LISTENERS` | Preset in the template |
| `kafka` | `KAFKA_LISTENER_SECURITY_PROTOCOL_MAP` | Preset in the template |
| `kafka` | `KAFKA_LOG_DIRS` | Preset in the template |
| `kafka` | `KAFKA_NODE_ID` | Preset in the template |
| `kafka` | `KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR` | Preset in the template |
| `kafka` | `KAFKA_PROCESS_ROLES` | Preset in the template |
| `kafka` | `KAFKA_TRANSACTION_STATE_LOG_MIN_ISR` | Preset in the template |
| `kafka` | `KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR` | Preset in the template |

Passwords and keys marked as generated are created for you when the app is deployed and stored as secrets. Values are not shown here.

## Security and requirements

Level: **Standard**.

What this template needs:

* Stores data in named volumes (`kafka`): kafka\_data.

What Levelrail adds around it:

* Automatic HTTPS and an ingress shield in front of every domain.
* Named volumes can be backed up and restored.
* Deploys are gated on the health check before traffic switches.
* One-step rollback to the previous revision.
* Exposure report shows what is reachable from outside.
* Host firewall rules managed for published ports.

## Deploy Apache Kafka with Levelrail

In the dashboard, open **Apps**, choose **New app**, then **Browse templates**, and select Apache Kafka. Review the Compose body and deploy.

With the CLI:

```bash theme={"dark"}
levelrail-cli templates deploy kafka --name my-kafka
```

See the [service template catalog](https://docs.levelrail.com/templates-and-registry.md) for how templates work, and [Getting started](https://docs.levelrail.com/getting-started.md) if you have not installed Levelrail yet.

## More Infrastructure templates

* [AdGuard Home](https://docs.levelrail.com/self-host/adguard-home.md)
* [Cloudflare DDNS](https://docs.levelrail.com/self-host/cloudflare-ddns.md)
* [Consul](https://docs.levelrail.com/self-host/consul.md)
* [Elasticsearch](https://docs.levelrail.com/self-host/elasticsearch.md)
* [etcd](https://docs.levelrail.com/self-host/etcd.md)

All templates are listed in the [self-host gallery](https://docs.levelrail.com/self-host.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.