Meet DockRouterYour containers. A hostname. A clear path to HTTPS.InstallationRun a Docker container or build one native Go binary.Labels & discoveryKeep routing close to the application it belongs to.Automatic TLSA secure first connection, with a little less certificate administration.Load balancingChoose the right path through your replicas.Security at the edgeExplicit access decisions. Private administration. Trusted proxy boundaries.Dashboard & metricsFollow routes, certificates and requests from the same router.Inside the routerOne process, from incoming connection to container backend.Configuration referenceGlobal environment variables and service-level middleware labels.
Documentation, without the detour.ESC to close
v1.2.0Small binary. Clear direction.
THE DOCKER-NATIVE INGRESS ROUTER

Stop configuring.
Start shipping.

You build the application.
We’ll find the way in.

Automatic discovery. Effortless HTTPS. One Go binary that turns your Docker labels into live routes.

Pure GoZero dependenciesMIT licensed
One small router.A clear way in.
HTTPS requestGET /v1:443
DockRouterTHE DOCKER-NATIVE EDGE
TLS, handled.
dr.host→api.example.com
Incoming requestA little less to configure.
  1. 01Receive
  2. 02Secure
  3. 03Match
  4. 04Route
Interactive example · choose a service to follow its route.
LESS TO CONFIGURE.
MORE TO SHIP.
Docker-nativeAutomatic TLSLabel-based routesLive discovery
A LITTLE LESS BETWEEN YOU AND LIVE

Three labels.
A clear path forward.

Your containers already know what they are.
Give them a hostname. Let discovery do the rest.

Understand the routing
compose.ymlYOUR APPLICATION
# A few labels. That’s your route.
services:
  web:
    image: my-app:latest
    labels:
      dr.enable: "true"
      dr.host: "app.example.com"
      dr.tls: "auto"
Less ceremony. More application.
01

Label it.

Declare your hostname and TLS preference alongside your app. Routing belongs with the service.

02

Discover it.

DockRouter watches Docker and updates the route table as containers start and stop.

03

Ship it.

Requests pass through TLS and middleware to the right container. Your next deploy is already connected.

SMALL FOOTPRINT. FULL TOOLKIT.

Good infrastructure
gets out of your way.

The essentials of an ingress stack.
Already speaking Docker.

01 / HTTPS, HANDLED

A secure welcome.

Built-in Let’s Encrypt support provisions and renews certificates. Bring your own certificates when you need to.

Explore automatic TLS
02 / ALWAYS IN THE LOOP

Containers change. Routes follow.

Discovery reacts to your Docker lifecycle. Add services and scale replicas without hand-editing a route table.

See label discovery
03 / SHARE THE LOAD

Every replica has a role.

Round-robin, weighted, IP hash or least connections. Choose the strategy that fits each service.

Find your balance

Your edge. Your rules.

Rate limits, CORS and IP filtering.

Room to recover.

Health checks, retries and circuit breakers.

Keep the conversation going.

Streaming responses and WebSockets.

One cohesive runtime.

Pure Go. No external Go packages.

FROM HOSTNAME TO HEALTHY CONTAINER

A route you can follow.
At every step.

Choose a service. Follow an example request.
See how a handful of labels becomes a route.

Meet the dashboard
ROUTE EXPLORERINTERACTIVE EXAMPLE 3 routes discovered
DOCKER SERVICES

Watching Docker events

https://app.example.com/TLS
RequestDockRouterweb:80
CONTAINER LABELS
dr.enable: "true"
dr.host: "app.example.com"
dr.port: "80"
dr.tls: "auto"
dr.loadbalancer: "roundrobin"
Choose a route. Follow a request.
Illustrative data. Requests run locally as a visual simulation.NO BACKEND CONNECTION
YOUR NEXT DEPLOY STARTS HERE

From Docker Compose
to “it’s live.”

Your server. Your domain. Your containers.
One small router to bring them together.

01

Point your domain at your server.

02

Start DockRouter with your ACME email.

03

Label your app. Let the router handle it.

Use a Linux Docker host with ports 80 and 443 reachable. Replace the example domain and email with yours. Keep DockRouter and your services on a shared Docker network.

Read the deployment guide
compose.yml
services:
  dockrouter:
    image: dockrouter/dockrouter:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - dockrouter-data:/data
    environment:
      DR_ACME_EMAIL: you@example.com
  web:
    image: nginx:alpine
    labels:
      dr.enable: "true"
      dr.host: "app.example.com"
      dr.tls: "auto"
volumes:
  dockrouter-data:
ONE BINARY. MANY GOOD REASONS.

Build your stack.
Keep your freedom.

Made for the infrastructure you operate.
From a side project to a multi-service host.

01
THE SIDE PROJECT

A proper home for your next idea.

Give a personal app its own domain and HTTPS without a second stack of routing configuration.

app.example.com
02
THE SERVICE STACK

Different services. One front door.

Route your frontend, API and real-time connections by hostname or path on a shared Docker host.

/web → /api → /live
03
THE SELF-HOSTED SETUP

Infrastructure that stays yours.

Run your own edge, inspect its metrics and follow the source. No hosted control plane required.

your server → your rules
A FEW THINGS, ROUTED CLEARLY

Good questions.
Direct answers.

Open source.
Open to your questions.

Let’s talk on GitHub
01What is DockRouter?

A Docker-native ingress router written in Go. It discovers labeled containers, terminates TLS and forwards HTTP and WebSocket traffic to your services. Run it on your own infrastructure as a Docker container or a single binary.

02Do I need a separate configuration file?

Routing lives in your Docker labels. Set dr.enable and dr.host on your services; add labels for TLS, middleware and load balancing when needed. Global settings such as your ACME email use environment variables or CLI flags.

03What do I need for automatic HTTPS?

A domain that resolves to your Docker host, publicly reachable ports 80 and 443, an ACME email and persistent storage for certificates. DockRouter uses the Let's Encrypt HTTP-01 challenge. It also supports manually supplied certificates.

04Can I use it with Docker Compose?

Yes. Run DockRouter and your application services on a shared network, mount the Docker socket and add routing labels to your services. The quick start below provides a complete Compose example.

05Is the dashboard public?

The admin listener binds to 127.0.0.1 by default. If you expose it, configure DR_ADMIN_BIND deliberately and set DR_ADMIN_USER and DR_ADMIN_PASS. Keep the admin port behind a private network or authenticated access.

06Can I use DockRouter commercially?

Yes. DockRouter is open source under the MIT license. You can use, modify and distribute it commercially subject to the license terms. The source, issues and releases are available on GitHub.

GREAT APPLICATIONS DESERVE A CLEAR PATH.

Less routing around.
More getting there.

Your next container is ready for the world.

PURE GO. ZERO DEPENDENCIES. ENTIRELY YOURS.