在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_ADMIN和NET_RAW权限 - 检查
/dev/net/tun设备是否存在(ls /dev/net/tun)
Q2:状态丢失,每次重启需重新认证?
- 确认持久化目录挂载正确,且
TS_STATE_DIR指向挂载路径
Q3:无法访问Tailscale网络?
- 检查防火墙是否开放必要端口(UDP 41641)
- 确认Auth Key有效且未过期
七、重要提醒
- Auth Key有效期:默认90天,建议生成时勾选"Reusable"或定期更新
- 网络模式 :必须使用
host模式,否则无法正常工作 - 持久化存储:强烈建议配置,否则容器重启后需重新认证
- 安全考虑:VPS作为Tailscale节点后,确保系统防火墙和云服务商安全组配置正确
完成以上步骤后,你的VPS已成功加入Tailscale网络,可通过Tailscale分配的100.x.x.x地址访问,或通过Magic DNS(设备名.tailscale.ts.net)访问。
如需进一步配置(如自建DERP服务器、ACL策略等),可参考Tailscale官方文档。