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

相关推荐
一只懒鱼a2 小时前
docker部署nacos (版本2.3.2)
运维·docker
青衫客367 小时前
浅谈Kubernetes在systemd cgroup模式下的Slice/Scope组织结构
云原生·容器·kubernetes
王九思7 小时前
Podman 介绍
docker·云原生·kubernetes·podman
运维螺丝钉10 小时前
docker安装应用
运维·docker·容器
optimistic_chen10 小时前
【Docker入门】cgroups 资源控制
linux·运维·ubuntu·docker·容器·cgroup
林九生10 小时前
【MySQL/PostgreSQL】MySQL 到 PostgreSQL 数据迁移:Docker + pgloader
mysql·docker·postgresql
芥子沫11 小时前
书签管理工具使用:Readeck-Docker部署和使用技巧
运维·docker·容器·书签管理
ba_pi11 小时前
每天写点什么2026-01-19-docker如何使用GPU
运维·docker·容器
Gold Steps.12 小时前
K8S基于 Argo Rollouts 的高级版本发布实践
云原生·容器·kubernetes