Currently, Tailscale Funnel is limited to 3 ports (443, 8443, 10000) which limits public exposure to only 3
services per machine. However, many Docker orchestration platforms like Dokploy come with reverse proxies (Traefik,
Nginx Proxy Manager, etc.) already configured.
Proposed Solution
Add support for a "reverse proxy mode" where DockTail can:
- Detect an existing reverse proxy container (Traefik, Nginx, etc.)
- Configure a single funnel pointing to the reverse proxy
- Configure the reverse proxy to route to multiple services using:
- Path-based routing: https://host.ts.net/service1, https://host.ts.net/service2
- Host header routing: https://service1.host.ts.net, https://service2.host.ts.net
e.g. tailwhale.sh seems to do this, however docktail seems to cater better to the usecase in general.
Benefits
- Bypass 3-port limitation: Expose unlimited services publicly through a single funnel port
- Leverage existing infrastructure: Use the reverse proxy already configured in platforms like Dokploy
- Better resource utilization: One funnel port handles multiple services
- Standard web patterns: Path-based or subdomain routing is familiar to most users
Use Case
In Dokploy environments, Traefik is already configured and manages routing for all containers. Instead of:
- Service 1 → Funnel port 443
- Service 2 → Funnel port 8443
- Service 3 → Funnel port 10000
- Service 4+ → ❌ Can't expose publicly
We could have:
- Traefik → Funnel port 443
- /service1 → Service 1
- /service2 → Service 2
- /service3 → Service 3
- /service4 → Service 4
Proposed Implementation
New label options:
services:
myapp:
labels:
- "docktail.service.enable=true"
- "docktail.service.name=myapp"
- "docktail.funnel.proxy-mode=true" # NEW: Enable reverse proxy mode
- "docktail.funnel.proxy-path=/myapp" # NEW: Path for routing
# OR
- "docktail.funnel.proxy-subdomain=myapp" # NEW: Subdomain for routing
DockTail would then:
- Configure the reverse proxy (via Docker labels or API) to route the specified path/subdomain to the service
- Use a single funnel pointing to the reverse proxy
Alternative Approach
If automatic reverse proxy configuration is too complex, provide documentation/examples for manual configuration
with Traefik, Nginx Proxy Manager, and Caddy.
Environment
- Platform: Dokploy (with Traefik)
- DockTail version: latest
- Tailscale version: 1.52+
Related
This addresses the common question: "How do I expose more than 3 services publicly?"
Currently, Tailscale Funnel is limited to 3 ports (443, 8443, 10000) which limits public exposure to only 3
services per machine. However, many Docker orchestration platforms like Dokploy come with reverse proxies (Traefik,
Nginx Proxy Manager, etc.) already configured.
Proposed Solution
Add support for a "reverse proxy mode" where DockTail can:
- Path-based routing: https://host.ts.net/service1, https://host.ts.net/service2
- Host header routing: https://service1.host.ts.net, https://service2.host.ts.net
e.g. tailwhale.sh seems to do this, however docktail seems to cater better to the usecase in general.
Benefits
Use Case
In Dokploy environments, Traefik is already configured and manages routing for all containers. Instead of:
We could have:
Proposed Implementation
New label options:
services:
myapp:
labels:
- "docktail.service.enable=true"
- "docktail.service.name=myapp"
- "docktail.funnel.proxy-mode=true" # NEW: Enable reverse proxy mode
- "docktail.funnel.proxy-path=/myapp" # NEW: Path for routing
# OR
- "docktail.funnel.proxy-subdomain=myapp" # NEW: Subdomain for routing
DockTail would then:
Alternative Approach
If automatic reverse proxy configuration is too complex, provide documentation/examples for manual configuration
with Traefik, Nginx Proxy Manager, and Caddy.
Environment
Related
This addresses the common question: "How do I expose more than 3 services publicly?"