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官方文档。

相关推荐
武子康1 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
2601_961875244 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj4 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵4 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏4 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主4 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang4 天前
Docker 使用完整指南
运维·docker·容器
正经教主4 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
CodeStats4 天前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker