Repolode
marvinvr

marvinvr/docktail

通过 docktail.* 标签把 Docker 容器暴露为 Tailscale Services,无需为每个容器占用 Tailscale 设备名额。

可替代:TSDProxy

Star
1,402
Fork
51
未关闭 Issue
12
最近提交
前天

这是什么?

DockTail 监听 Docker 容器,读取 docktail.* 标签,并把匹配的容器发布为原生 Tailscale Services。默认情况下应用无需发布 Docker 端口,DockTail 直接代理到容器在 Docker 网络中的 IP。

它支持 HTTP、HTTPS、TCP 以及 TLS 终止的 TCP 服务,可选开启 PROXY protocol,让后端看到 tailnet 客户端 IP,也支持通过 Tailscale Funnel 对公网开放。同一个容器可以暴露多个服务,容器重启或 IP 变化时会自动同步。凭据可使用 OAuth 或 API key,项目可以以容器、静态二进制的形式运行,也提供 Compose、Podman、Swarm 和 Kubernetes 的部署说明。

DockTail 使用 Go 编写,采用 AGPL-3.0 许可证。可选的 DockTail Cloud 托管面板在设置对应密钥后可接收代理上报的元数据,未设置时不会建立任何外连。

核心功能

  • 01根据 docktail.* 标签自动发现容器。
  • 02使用 OAuth 或 API key 凭据自动创建 Tailscale 服务。
  • 03支持 HTTP、HTTPS、TCP 以及 TLS 终止的 TCP。
  • 04可选 PROXY protocol,让后端获取 tailnet 客户端 IP。
  • 05通过 Tailscale Funnel 提供公网访问。
  • 06单个容器可暴露多个服务,并在重启后自动同步。

适用场景

  • 在家庭实验室中通过 Tailscale HTTPS 发布 Web 应用,无需开放主机端口。
  • 让 tailnet 内的客户端通过 TCP 访问数据库。
  • 运行需要通过 PROXY protocol 获取真实 tailnet 客户端 IP 的反向代理。
  • 借助 Tailscale Funnel 把 webhook 端点开放到公网。

快速上手

  1. 1

    在 compose 文件中添加 docktail 服务(挂载 Docker 套接字并设置 Tailscale OAuth 变量),并为应用容器添加标签

  2. 2

    启动服务栈

    docker compose up -d
  3. 3

    从你的 tailnet 访问应用

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

使用前须知

  • 采用 AGPL-3.0 许可证,这是一种 copyleft 许可证,修改后用于网络服务时需要公开源代码。
  • Docker 主机必须已连接 Tailscale,并被允许发布服务。
  • 自动创建服务需要 Tailscale OAuth 或 API 密钥凭据。
  • 挂载 Docker 套接字会让容器访问宿主机的 Docker 守护进程。

收录于专题

标签

常见问题

docktail 是什么?
通过 docktail.* 标签把 Docker 容器暴露为 Tailscale Services,无需为每个容器占用 Tailscale 设备名额。 DockTail 监听 Docker 容器,读取 docktail.* 标签,并把匹配的容器发布为原生 Tailscale Services。默认情况下应用无需发布 Docker 端口,DockTail 直接代理到容器在 Docker 网络中的 IP。
docktail 可以免费使用吗?用的什么许可证?
docktail 以 AGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
docktail 还在维护吗?
活跃维护中。docktail 最近一次提交是在 2026年11月5日。
docktail 适合用来做什么?
在家庭实验室中通过 Tailscale HTTPS 发布 Web 应用,无需开放主机端口。 让 tailnet 内的客户端通过 TCP 访问数据库。 运行需要通过 PROXY protocol 获取真实 tailnet 客户端 IP 的反向代理。 借助 Tailscale Funnel 把 webhook 端点开放到公网。
docktail 怎么安装和运行?
在 compose 文件中添加 docktail 服务(挂载 Docker 套接字并设置 Tailscale OAuth 变量),并为应用容器添加标签 启动服务栈: docker compose up -d 从你的 tailnet 访问应用: curl http://myapp.your-tailnet.ts.net
在哪里获取 docktail?
源代码和安装说明在 GitHub 上:https://github.com/marvinvr/docktail

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目