Repolode
jittering

jittering/traefik-kop

A discovery agent that reads Docker container labels on remote hosts and publishes them to Redis so a single Traefik instance can route to services across multiple Docker nodes.

Stars
526
Forks
29
Open issues
1
Last commit
25 days ago

What is it?

traefik-kop is a discovery agent for running a multi-host Docker cluster without Swarm or Kubernetes behind one public-facing Traefik instance. Each worker node runs traefik-kop, which reads container labels from its local Docker daemon using the same logic as Traefik's Docker provider and publishes the resulting routing configuration to a shared Redis instance. The main Traefik node is configured with a Redis provider pointing at that same Redis, so it picks up routes for services on every node.

The agent handles the details that make cross-host routing work. It replaces container-internal IPs with a reachable bind IP, set by flag, environment variable, interface, or per-service label, and derives service ports from published host ports. It supports namespaces to target subsets of containers, load balancer merging across nodes, Redis TTL-based expiry with periodic renewal, Redis Sentinel, and TLS with optional mutual authentication. Docker events are watched in real time, with a configurable polling fallback.

Key features

  • 01Publishes Traefik Docker-provider routing config from each node to a shared Redis.
  • 02Selects bind IPs via label, flag, network interface, or auto-detection.
  • 03Filters containers with namespaces, including comma-separated multiple namespaces.
  • 04Merges load balancer entries for services running on multiple nodes.
  • 05Supports Redis TTL expiry, Redis Sentinel, and TLS with mutual authentication.

Use cases

  • Serving several standalone Docker hosts through one public Traefik entry point without Swarm or Kubernetes.
  • Running separate Traefik and traefik-kop instances side by side using label prefixes.
  • Keeping a Redis-backed routing table that expires stale entries when a node disappears.

Quick start

  1. 1

    Configure your Traefik node to use the Redis provider (traefik.yml)

  2. 2

    Run traefik-kop on each other Docker node with docker-compose, setting REDIS_ADDR and BIND_IP

  3. 3

    Add the traefik labels and a port binding to your target service

Things to know

  • Requires a running Redis instance that both Traefik and traefik-kop can reach.
  • Connects to Docker only through a unix socket; SSH and HTTP(S) Docker connections are not supported.
  • Load balancer merging is off by default and can leave dead IPs in place if a node's IP changes.

In collections

Topics

FAQ

What is traefik-kop?
A discovery agent that reads Docker container labels on remote hosts and publishes them to Redis so a single Traefik instance can route to services across multiple Docker nodes. traefik-kop is a discovery agent for running a multi-host Docker cluster without Swarm or Kubernetes behind one public-facing Traefik instance. Each worker node runs traefik-kop, which reads container labels from its local Docker daemon using the same logic as Traefik's Docker provider and publishes the resulting routing configuration to a shared Redis instance. The main Traefik node is configured with a Redis provider pointing at that same Redis, so it picks up routes for services on every node.
Is traefik-kop free to use? What license does it have?
traefik-kop is open source under the MIT license. Check the license terms before using it in commercial products.
Is traefik-kop still maintained?
Actively maintained. The last commit to traefik-kop was on Oct 13, 2026.
What can I use traefik-kop for?
Serving several standalone Docker hosts through one public Traefik entry point without Swarm or Kubernetes. Running separate Traefik and traefik-kop instances side by side using label prefixes. Keeping a Redis-backed routing table that expires stale entries when a node disappears.
How do I install traefik-kop?
Configure your Traefik node to use the Redis provider (traefik.yml) Run traefik-kop on each other Docker node with docker-compose, setting REDIS_ADDR and BIND_IP Add the traefik labels and a port binding to your target service
Where can I get traefik-kop?
The source code and installation instructions are on GitHub: https://github.com/jittering/traefik-kop

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects