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.comYou build the application.
We’ll find the way in.
Automatic discovery. Effortless HTTPS. One Go binary that turns your Docker labels into live routes.
GET /v1:443dr.host→api.example.comYour containers already know what they are.
Give them a hostname. Let discovery do the rest.
# 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"Declare your hostname and TLS preference alongside your app. Routing belongs with the service.
DockRouter watches Docker and updates the route table as containers start and stop.
Requests pass through TLS and middleware to the right container. Your next deploy is already connected.
The essentials of an ingress stack.
Already speaking Docker.
Built-in Let’s Encrypt support provisions and renews certificates. Bring your own certificates when you need to.
Explore automatic TLSDiscovery reacts to your Docker lifecycle. Add services and scale replicas without hand-editing a route table.
See label discoveryRound-robin, weighted, IP hash or least connections. Choose the strategy that fits each service.
Find your balanceRate limits, CORS and IP filtering.
Health checks, retries and circuit breakers.
Streaming responses and WebSockets.
Pure Go. No external Go packages.
Choose a service. Follow an example request.
See how a handful of labels becomes a route.
Watching Docker events
dr.enable: "true"
dr.host: "app.example.com"
dr.port: "80"
dr.tls: "auto"
dr.loadbalancer: "roundrobin"Your server. Your domain. Your containers.
One small router to bring them together.
Point your domain at your server.
Start DockRouter with your ACME email.
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 guideservices:
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:Made for the infrastructure you operate.
From a side project to a multi-service host.
Give a personal app its own domain and HTTPS without a second stack of routing configuration.
app.example.comRoute your frontend, API and real-time connections by hostname or path on a shared Docker host.
/web → /api → /liveRun your own edge, inspect its metrics and follow the source. No hosted control plane required.
your server → your rulesOpen source.
Open to your questions.
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.
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.
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.
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.
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.
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.
Your next container is ready for the world.
PURE GO. ZERO DEPENDENCIES. ENTIRELY YOURS.