Deploy with Traefik (Standalone)
Run Middleware Manager directly against Traefik without Pangolin.
Use this when Traefik is your only provider and you want Middleware Manager to own dynamic config and plugins/mTLS.
Container layout (summary)
traefik: exposes API/dashboard (secure appropriately), watches/rulesfor dynamic config, static config at/etc/traefik/traefik.yml.middleware-manager: writes overrides toapi(mounted to Traefikhttp endpoint) and stores state in/data/middleware.db.
Required volumes and env
traefik:
volumes:
- ./traefik_config/static:/etc/traefik
- ./traefik_config/rules:/rules
- ./traefik_config/letsencrypt:/letsencrypt
- ./traefik_config/plugins:/plugins-storage
middleware-manager:
volumes:
- ./middleware_manager_data:/data
- ./traefik_config/rules:/conf
- ./traefik_config/static:/etc/traefik
- ./middleware_manager_config:/app/config
environment:
- ACTIVE_DATA_SOURCE=traefik
- TRAEFIK_API_URL=http://traefik:8080
- TRAEFIK_CONF_DIR=/conf
- TRAEFIK_STATIC_CONFIG_PATH=/etc/traefik/traefik.yml
- DB_PATH=/data/middleware.db
- PORT=3456Steps
- Prepare directories:
./traefik_config/static,./traefik_config/rules,./traefik_config/letsencrypt,./traefik_config/plugins,./middleware_manager_data,./middleware_manager_config. - Ensure Traefik static config includes the HTTP provider pointing to Middleware Manager:
- Update your static configuration (e.g.,
traefik.yml):
Troubleshooting Connection: If the container nameproviders: file: directory: /rules http: endpoint: "http://middleware-manager:3456/api/v1/traefik-config" pollInterval: 5smiddleware-manageris not reachable (e.g., DNS issues), find the container's IP address: Then use the IP in your config:docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' middleware-managerendpoint: "http://172.17.1.3:3456/api/v1/traefik-config" - Update your static configuration (e.g.,
- Start containers:
docker compose up -d. - Open UI at
http://<host>:3456and set Active Data Source → Traefik. - Validate with Traefik Explorer (routers/services/middlewares) and a test middleware assignment.
Port/health
- Middleware Manager:
:3456(UI/API),GET /health. - Traefik dashboard/API: typically
:8080; keep access restricted.
Screenshot placeholder — standalone Traefik deployment diagram / docker-compose.