自建 Tailscale Derp(需域名)
前置准备
域名解析:确保 dp.abc.com 已经解析到你服务器的公网 IP。
端口放开:确保所需要的端口防火墙已放开,本文使用了两个端口 8443/tcp 和 3478/udp
准备证书文件
重命名证书: 为了让程序能自动识别,证书文件名必须严格对应你的域名。请将你的证书重命名为:
dp.abc.com.crt
dp.abc.com.key
上传到服务器: 部署目录是 /opt/docker/derper。建立一个 certs 文件夹并将文件放进去。
mkdir -p /opt/docker/derper/certs
# 将你的两个文件上传到 /opt/docker/derper/certs/ 目录下上传后,目录结构应该是这样的:
/opt/docker/derper/
├── certs/
│ ├── dp.abc.com.crt
│ └── dp.abc.com.key
└── docker-compose.yml (稍后创建)编写 Docker Compose
services:
derper:
image: fredliang/derper:latest
container_name: derper
restart: always
ports:
# HTTPS 端口 (TCP)
- "8443:443"
# STUN 端口 (UDP)
- "3478:3478/udp"
environment:
- DERP_DOMAIN=dp.abc.com
- DERP_ADDR=:443
- DERP_CERT_MODE=manual # 手动模式
- DERP_VERIFY_CLIENTS=false # 取消鉴权
volumes:
# 挂载证书目录到容器内部
- ./certs:/app/certs
# -------------------------------------------------------
# 【按需使用】挂载 NPM 的证书文件
# 注意:这里使用 NPM 申请的泛域名证书,当 NPM 自动续签证书后只需要重启 derper 容器即可
# 注意:请将映射路径替换为 NPM 下泛域名证书的真实路径
# -------------------------------------------------------
# 映射公钥 (fullchain.pem -> dp.abc.com.crt)
- /opt/nginx-proxy-manager/letsencrypt/live/npm-1/fullchain.pem:/app/certs/dp.abc.com.crt:ro
# 映射私钥 (privkey.pem -> dp.abc.com.key)
- /opt/nginx-proxy-manager/letsencrypt/live/npm-1/privkey.pem:/app/certs/dp.abc.com.key:ro启动容器:
docker compose up -d验证服务是否正常
在浏览器中访问 https://dp.abc.com:8443。
你应该能看到一段简单的文字,类似
DERP或者Tailscale DERP Server。如果看到这个页面,说明 HTTPS (TCP) 链路是通的。
在 Tailscale 控制台添加 ACL
进入 Access Controls
在 JSON 配置中添加 derpMap 部分
{
// ... 其他配置 ...
"derpMap": {
"OmitDefaultRegions": false, // 是否忽略官方节点,建议 false,仅作补充
"Regions": {
"900": { // RegionID,建议选 900-999 之间的数字
"RegionID": 900,
"RegionCode": "MyDerp",
"RegionName": "Aliyun Config",
"Nodes": [
{
"Name": "900a",
"RegionID": 900,
"HostName": "dp.abc.com",
"IPv4": "你的公网IP", // 可选,建议填上以防 DNS 解析慢
"DERPPort": 8443 //
}
]
}
}
}
}最终测试
在任意一台连接了 Tailscale 的客户端上(例如你的 PC),运行命令:
tailscale netcheck查看输出结果,寻找 Region 900(或者你设定的 ID)。
你应该能看到类似于
Latency: xx ms的数据。如果显示具体的延迟数字,说明 TCP 连接成功。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Zephyr's Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果