Apache Iggy
Server

Docker & Helm

Docker

You can easily run the Iggy server with Docker - the official images can be found here, simply type docker pull apache/iggy.

Below is an example of the docker-compose.yml file which additionally overrides the default configuration (described in the section below) with the environment variables. If you prefer using the configuration file, you can mount it as a volume and provide the path to it with the IGGY_CONFIG_PATH environment variable.

When running the container, make sure to include the additional capabilities required by io_uring and CPU affinity:

iggy:
  image: apache/iggy:latest
  container_name: iggy
  restart: unless-stopped
  cap_add:
    - SYS_NICE
  security_opt:
    - seccomp:unconfined
  ulimits:
    memlock:
      soft: -1
      hard: -1
  environment:
    - IGGY_ROOT_USERNAME=iggy
    - IGGY_ROOT_PASSWORD=Secret123
    - IGGY_HTTP_ENABLED=true
    - IGGY_HTTP_ADDRESS=0.0.0.0:80
    - IGGY_TCP_ENABLED=true
    - IGGY_TCP_ADDRESS=0.0.0.0:3000
    - IGGY_QUIC_ENABLED=false
    - IGGY_WEBSOCKET_ENABLED=false
    - IGGY_HEARTBEAT_ENABLED=true
    - IGGY_HEARTBEAT_INTERVAL=5s
  ports:
    - "3010:80"
    - "5100:3000"
  networks:
    - iggy
  volumes:
    - iggy:/iggy/local_data

networks:
  iggy:

volumes:
  iggy:

Or when running with docker run:

docker run --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 apache/iggy:edge

Why these capabilities?

  • SYS_NICE - required for setting CPU affinity (sched_setaffinity) in the thread-per-core architecture
  • seccomp:unconfined - required for io_uring syscalls which are blocked by Docker's default seccomp profile
  • memlock: -1 - io_uring needs to lock memory pages shared between user space and kernel

Available images

ImageDescription
apache/iggyServer + CLI
apache/iggy-web-uiStandalone Web UI
apache/iggy-connectConnectors runtime
apache/iggy-mcpMCP server

Images tagged latest are based on stable releases. Images tagged edge are built from the latest master branch.

Building from source

The Dockerfile uses a multi-stage build: Rust compilation (including the Web UI via npm), then a minimal Debian slim image. To build:

docker build -t iggy .

Or use docker compose up directly from the repository root.

Running the CLI inside the container

docker exec -it iggy-server /iggy -u iggy -p iggy stream list

Helm charts

Helm charts for Kubernetes deployment are available in the repository.

Quick start

helm install iggy ./helm/charts/iggy

Chart components

The chart includes templates for:

  • Deployment - the Iggy server pod with required security context (SYS_NICE, seccomp unconfined, unlimited memlock)
  • Service - exposes TCP (8090), QUIC (8080), HTTP (3000), and WebSocket (8092) ports
  • ServiceAccount - dedicated service account
  • PersistentVolumeClaim - persistent storage for local_data
  • HPA - Horizontal Pod Autoscaler (optional)
  • Ingress - optional ingress for HTTP access
  • ServiceMonitor - Prometheus ServiceMonitor for metrics collection (optional)
  • Secret - root user credentials

Key values

# values.yaml (excerpt)
replicaCount: 1

image:
  repository: apache/iggy
  tag: latest

persistence:
  enabled: true
  size: 10Gi

resources:
  limits:
    memory: 8Gi
  requests:
    cpu: 2
    memory: 4Gi

serviceMonitor:
  enabled: false

Customize the values file for your environment and deploy with:

helm install iggy ./helm/charts/iggy -f my-values.yaml

On this page