Repolode
marvinvr

marvinvr/docktail

Exposes Docker containers as Tailscale Services using docktail.* labels, without per-container Tailscale devices or published ports.

Open-source alternative to:TSDProxy

Stars
1,402
Forks
51
Open issues
12
Last commit
yesterday

What is it?

DockTail watches Docker containers, reads docktail.* labels, and publishes matching containers as native Tailscale Services. Apps do not need published Docker ports by default, because DockTail proxies directly to their Docker network IPs.

It supports HTTP, HTTPS, TCP and TLS-terminated TCP services, optional PROXY protocol so backends can see the tailnet client IP, and Tailscale Funnel for public access. A single container can expose several services, and DockTail reconciles them automatically when containers restart or their IPs change. Credentials are provided through OAuth or an API key, and the project can run as a container, a static binary, or in Compose, Podman, Swarm and Kubernetes setups described in its docs.

DockTail is written in Go and licensed under AGPL-3.0. An optional hosted DockTail Cloud dashboard can receive metadata from the agent when a key is set; without that variable, the agent makes no outbound connection for it.

Key features

  • 01Discovers containers automatically from docktail.* labels.
  • 02Creates Tailscale services using OAuth or API key credentials.
  • 03Supports HTTP, HTTPS, TCP and TLS-terminated TCP.
  • 04Offers optional PROXY protocol so backends see the tailnet client IP.
  • 05Provides Tailscale Funnel for public internet access.
  • 06Lets one container expose multiple services and reconciles them on restart.

Use cases

  • Publishing a homelab web app over Tailscale HTTPS without opening host ports.
  • Exposing a database to tailnet clients over TCP.
  • Running a reverse proxy that needs the real tailnet client IP via PROXY protocol.
  • Making a webhook endpoint reachable publicly through Tailscale Funnel.

Quick start

  1. 1

    Add a docktail compose service with the Docker socket and Tailscale OAuth variables, and label your app containers

  2. 2

    Start the stack

    docker compose up -d
  3. 3

    Open the app from your tailnet

    curl http://myapp.your-tailnet.ts.net

Things to know

  • Licensed under AGPL-3.0, a copyleft license that requires source disclosure for modified network services.
  • Requires the Docker host to be connected to Tailscale and allowed to advertise services.
  • Automatic service creation needs Tailscale OAuth or API key credentials.
  • Mounting the Docker socket gives the container access to the host's Docker daemon.

In collections

Topics

FAQ

What is docktail?
Exposes Docker containers as Tailscale Services using docktail.* labels, without per-container Tailscale devices or published ports. DockTail watches Docker containers, reads docktail.* labels, and publishes matching containers as native Tailscale Services. Apps do not need published Docker ports by default, because DockTail proxies directly to their Docker network IPs.
Is docktail free to use? What license does it have?
docktail is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
Is docktail still maintained?
Actively maintained. The last commit to docktail was on Nov 5, 2026.
What can I use docktail for?
Publishing a homelab web app over Tailscale HTTPS without opening host ports. Exposing a database to tailnet clients over TCP. Running a reverse proxy that needs the real tailnet client IP via PROXY protocol. Making a webhook endpoint reachable publicly through Tailscale Funnel.
How do I install docktail?
Add a docktail compose service with the Docker socket and Tailscale OAuth variables, and label your app containers Start the stack: docker compose up -d Open the app from your tailnet: curl http://myapp.your-tailnet.ts.net
Where can I get docktail?
The source code and installation instructions are on GitHub: https://github.com/marvinvr/docktail

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

Related projects