docker_tailscale

在VPS上通过Docker安装Tailscale,推荐使用docker run命令行docker-compose两种方式。以下是完整步骤:

一、准备工作

1. 获取Tailscale认证密钥(Auth Key)

访问Tailscale管理后台(https://login.tailscale.com/admin/settings/authkeys),登录后点击"Generate auth key",勾选"Reusable"(建议勾选,避免90天过期),复制生成的密钥(格式如tskey-auth-xxxxx)。

2. 创建持久化目录(可选但推荐)

bash 复制代码
mkdir -p /opt/tailscale/data

此目录用于保存Tailscale状态,防止容器重启后需要重新认证。


二、安装方式一:docker run命令行部署(推荐)

执行以下命令启动容器(tskey-auth-xxxxx替换为你的实际密钥):

bash 复制代码
docker run -d \
  --name=tailscaled \
  --network=host \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  --restart=unless-stopped \
  -v /opt/tailscale/data:/var/lib/tailscale \
  -v /dev/net/tun:/dev/net/tun \
  -e TS_AUTHKEY=tskey-auth-xxxxx \
  -e TS_STATE_DIR=/var/lib/tailscale \
  tailscale/tailscale:latest

关键参数说明:

  • --network=host:使用主机网络模式,避免NAT问题
  • --cap-add=NET_ADMIN/RAW:授予网络管理权限
  • -v /opt/tailscale/data:/var/lib/tailscale:状态持久化挂载
  • -v /dev/net/tun:/dev/net/tun:挂载TUN设备(必需)
  • -e TS_AUTHKEY:认证密钥(必需)
  • -e TS_STATE_DIR:状态目录(需与挂载路径一致)

三、安装方式二:docker-compose部署(便于管理)

创建docker-compose.yml文件:

yaml 复制代码
version: '3.8'
services:
  tailscale:
    container_name: tailscaled
    image: tailscale/tailscale:latest
    network_mode: host
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./data:/var/lib/tailscale  # 相对路径,与yml同目录
      - /dev/net/tun:/dev/net/tun
    environment:
      - TS_AUTHKEY=tskey-auth-xxxxx  # 替换为你的密钥
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_HOSTNAME=omv    #填写主机名 例如 FnOS
      - TS_EXTRA_ARGS=--advertise-exit-node #对外节点,需要设置ip转发

启动服务:

bash 复制代码
docker-compose up -d

四、验证安装

1. 查看容器状态

bash 复制代码
docker ps | grep tailscale

2. 检查Tailscale连接状态

bash 复制代码
docker exec tailscaled tailscale status

如果输出显示"Connected"或设备列表,说明已成功加入网络。

3. 查看管理后台

访问 https://login.tailscale.com/admin/machines,确认VPS设备已出现在设备列表中。


五、高级配置(可选)

1. 配置子网路由(访问VPS所在局域网)

如果VPS需要作为网关访问其所在局域网的其他设备,在启动命令中添加:

bash 复制代码
-e TS_EXTRA_ARGS="--advertise-routes=192.168.1.0/24"  # 替换为实际网段

然后在Tailscale管理后台的对应设备中"Approve routes"。

2. 自定义主机名

添加环境变量:

bash 复制代码
-e TS_HOSTNAME=my-vps

3. 启用Exit Node(出口节点)

添加参数:

bash 复制代码
-e TS_EXTRA_ARGS="--advertise-exit-node"

注意:启用后其他Tailscale节点可通过此VPS上网,请谨慎使用。


六、常见问题

Q1:容器启动失败,权限不足?

  • 确认已添加NET_ADMINNET_RAW权限
  • 检查/dev/net/tun设备是否存在(ls /dev/net/tun

Q2:状态丢失,每次重启需重新认证?

  • 确认持久化目录挂载正确,且TS_STATE_DIR指向挂载路径

Q3:无法访问Tailscale网络?

  • 检查防火墙是否开放必要端口(UDP 41641)
  • 确认Auth Key有效且未过期

七、重要提醒

  1. Auth Key有效期:默认90天,建议生成时勾选"Reusable"或定期更新
  2. 网络模式 :必须使用host模式,否则无法正常工作
  3. 持久化存储:强烈建议配置,否则容器重启后需重新认证
  4. 安全考虑:VPS作为Tailscale节点后,确保系统防火墙和云服务商安全组配置正确

完成以上步骤后,你的VPS已成功加入Tailscale网络,可通过Tailscale分配的100.x.x.x地址访问,或通过Magic DNS(设备名.tailscale.ts.net)访问。

如需进一步配置(如自建DERP服务器、ACL策略等),可参考Tailscale官方文档。

相关推荐
人鱼传说2 小时前
docker desktop是一个好东西
运维·docker·容器
小章UPUP3 小时前
Kubernetes (K8s) 与 Podman 的比较
容器·kubernetes·podman
忆~遂愿4 小时前
CANN metadef 核心解析:计算图原型定义、算子元数据抽象与异构系统互操作机制
docker·容器
说实话起个名字真难啊4 小时前
用docker来安装openclaw
docker·ai·容器
恬静的小魔龙5 小时前
【群晖Nas】群晖Nas中实现SVN Server功能、Docker/ContainerManager等
docker·svn·容器
Zfox_5 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
春日见6 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
DARLING Zero two♡6 小时前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
liu****7 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
logocode_li8 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s