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

相关推荐
功德+n1 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭2 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿2 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher3 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家5 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR5 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆5 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104666 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999996 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊7 小时前
Docker 入门之网络基础
网络·docker·php