VPS 自建 Tailscale DERP 中继节点并与 Trojan 代理兼容
在一些网络环境下,Tailscale 的官方 DERP 中继可能不稳定或者延迟较高。本文介绍如何在 VPS 上部署 自建 DERP 节点,以便通过 Tailscale 提供更快更稳定的中继服务,并实现 Trojan 代理共存。
前置准备
- Tailscale 账户(用于身份认证和管理)
- 域名(纯 IP DERP 中继无法防止白嫖)
- Let’s Encrypt / acme.sh 证书(用于 HTTPS)
Step 1:在 VPS 上安装 Tailscale
首先,在 VPS 上安装并启动 Tailscale
# 安装 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# 启动并登录
tailscale up
Step 2:使用 Docker 安装 Derper
可以选择 docker run 或 docker compose 两种方式部署
方法一:使用默认 Docker
docker run \
--name derper \
-e DERP_DOMAIN=123.com \
-e DERP_CERT_MODE=manual \
-e DERP_STUN=true \
-e DERP_VERIFY_CLIENTS=true \
-v /root/.acme.sh/123.com_ecc/:/app/certs \
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
-p 23443:443 \
-p 2380:80 \
-p 3478:3478/udp \
fredliang/derper
参数说明:
DERP_DOMAIN你的域名
DERP_CERT_MODE=manual手动证书模式
DERP_STUN=true开启 STUN
DERP_VERIFY_CLIENTS=true验证客户端身份,防止被白嫖
-v证书路径、Tailscale socket
-p端口映射:3478(UDP 最好不要修改),Derper 必须要443和80端口,而这些端口很容易被网站、Trojan 代理占用,所以使用 Docker 部署,可以自定义为23443、2380或其他
方法二:使用 Docker Compose
services:
derper:
image: fredliang/derper
environment:
- DERP_DOMAIN=123.com
- DERP_CERT_MODE=manual
- DERP_STUN=true
- DERP_VERIFY_CLIENTS=true
volumes:
- /root/.acme.sh/123.com_ecc/:/app/certs
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
ports:
- 12443:443
- 1280:80
- 3478:3478/udp
启动服务: docker compose up -d
注意:容器内 derper 默认会找 xxx.crt 和 xxx.key,但实际可能只有 .cer 文件
解决方法: 先找到 fullchain.cer 位置
ls -l /root/.acme.sh/123.com_ecc/
再进行软连接:
ln -s fullchain.cer 123.com.crt
再次启动容器
Step 3: 进入 Tailscale 控制台 - Access controls,选择 JSON editor 模式,修改 或 新增 derpMap
记得提前保存 Tailscale ACL 原配置,以防 bug
"derpMap": {
"OmitDefaultRegions": true, // 设置为 True 则丢弃所有 Tailscale 官方中转节点
"Regions": {
"900": {
"RegionID": 900, // tailscale 900-999 是保留给自定义 derper
"RegionCode": "HK", // 随便命名
"RegionName": "HK123", // 随便命名
"Nodes": [
{
"Name": "AAA", // 随便命名
"RegionID": 900,
"Hostname": "123.com", // 你的 VPS 域名
"DERPPort": 23443, //上面 Docker 自定义的端口
"InsecureForTests": true, // 因为是自签名证书,所以客户端不做校验
},
],
},
},
},
测试
tailscale netcheck
看到自己的 VPS RegionName 即可
也可以 tailscale ping xxxx 测试一下