Debian 配置 Tailscale 组网

本文记录一种较直接的做法:使用 Docker Compose 在 Debian 上运行 tailscale/tailscale 容器,把当前机器加入你的 Tailscale 网络,便于后续远程访问、内网互通或跨设备组网。

1. 目标

完成后你将得到:

  • 一套可复用的 compose.yml
  • Tailscale 容器开机自启
  • 当前 Debian 主机加入 tailnet
  • 可通过命令查看 Tailscale 状态与分配到的组网 IP

2. 前提条件

执行前请先确认:

  • 系统为 Debian,且已安装 Docker 与 Docker Compose
  • 主机可以正常访问外网
  • 你已登录 Tailscale 管理后台
  • 已准备好一个可用的 auth key

获取 auth key

3. 创建目录与配置文件

先准备数据目录:

sudo mkdir -p /volume1/docker/tailscale

然后新建 compose.yml

services:
  tailscale:
    container_name: tailscale
    image: tailscale/tailscale:latest
    network_mode: host
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - /volume1/docker/tailscale:/var/lib/tailscale
      - /dev/net/tun:/dev/net/tun
    environment:
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_USERSPACE=false
      - TS_AUTHKEY=<你的key>

4. 配置项说明

上面这份配置里,关键项含义如下:

  • network_mode: host 让容器直接使用宿主机网络,Tailscale 组网场景下通常更直接。
  • restart: unless-stopped 机器重启后会自动恢复运行,适合作为常驻网络组件。
  • NET_ADMINNET_RAW 允许容器配置网络相关能力,否则 Tailscale 通常无法正常工作。
  • /dev/net/tun:/dev/net/tun 提供 TUN 设备给容器使用,这是 Tailscale 建立虚拟网络接口所需的关键条件。
  • TS_STATE_DIR=/var/lib/tailscale 指定状态目录,用于保存登录状态与节点信息。
  • TS_USERSPACE=false 表示使用内核 TUN 模式,而不是 userspace networking。
  • TS_AUTHKEY=<你的key> 首次启动时用于自动登录并加入 tailnet,注意官方 key 有效期最长为90天,过期需重新申请。

5. 启动容器

compose.yml 所在目录执行:

sudo docker compose up -d

如果需要查看容器是否已正常起来,可执行:

sudo docker ps
sudo docker logs tailscale

6. 查看状态与组网 IP

启动后,执行以下命令确认节点是否已经加入网络:

# 查看当前状态
docker exec -it tailscale tailscale status

# 查看本机的 Tailscale IP
docker exec -it tailscale tailscale ip

如果配置成功,tailscale status 一般会列出:

  • 当前节点名称
  • 已登录账号
  • tailnet 中的其他节点
  • 各节点对应的 100.x.x.x 组网 IP

tailscale ip 则会直接返回当前设备在 Tailscale 网络中的地址。

7. 常用运维命令

重启容器:

sudo docker compose restart

停止容器(无法恢复):

sudo docker compose down

查看实时日志:

docker logs -f tailscale

进入容器执行命令:

docker exec -it tailscale sh