准备一个域名并添加到cloudflare中
这里就偷懒不写了
使用certbot生成证书,需要暂时关闭服务器占用80端口的服务……其实用cloudflare生成的证书也可以
bash
# 安装certbot
sudo snap install --classic certbot
# 生成证书 --standalone 选项告诉 Certbot 运行一个临时的 Web 服务器来进行认证
sudo certbot certonly --standalone
# 填写邮箱和域名
启动容器
bash
docker run -d -p 0.0.0.0:3478:3478/udp -p 0.0.0.0:50443:50443 \
-v /etc/letsencrypt/live/derper.example.com/fullchain.pem:/app/certs/derper.example.com.crt \
-v /etc/letsencrypt/live/derper.example.com/privkey.pem:/app/certs/derper.example.com.key \
-e DERP_DOMAIN=derper.example.com \
-e DERP_ADDR=:50443 \
-e DERP_CERT_MODE=manual \
--name derper --restart=always \
fredliang/derper浏览器访问看看服务是否启动成功
https://derper.example.com:50443/

配置ACL
浏览器登录账号选择Access controls,添加下面的derpMap

bash
"derpMap": {
"OmitDefaultRegions": true, // 不使用官方的derp服务器
"Regions": {
"900": {
"RegionID": 900, // tailscale 900-999 是保留给自定义 derper 的
"RegionCode": "myderp",
"RegionName": "HongKong",
"Nodes": [
{
"Name": "900",
"RegionID": 900,
"HostName": "derper.example.com", // 域名
"DERPPort": 50443, // 端口
}
]
}
}
}客户端验证
bash
tailscale netcheck
延迟比官方的香港节点快了5倍

防止白嫖
需要在服务器上也安装tailscale客户端并登录
bash
# 安装tailscale客户端
curl -fsSL https://tailscale.com/install.sh | sh
# 获取登录链接复制到浏览器里登录
tailscale up添加两个参数 -e DERP_VERIFY_CLIENTS=true -v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock重新启动容器
bash
docker run -d -p 0.0.0.0:3478:3478/udp -p 0.0.0.0:50443:50443 \
-v /etc/letsencrypt/live/derper.example.com/fullchain.pem:/app/certs/derper.example.com.crt \
-v /etc/letsencrypt/live/derper.example.com/privkey.pem:/app/certs/derper.example.com.key \
-e DERP_DOMAIN=derper.example.com \
-e DERP_ADDR=:50443 \
-e DERP_CERT_MODE=manual \
-e DERP_VERIFY_CLIENTS=true \
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
--name derper --restart=always \
fredliang/derper或者使用compose.yml
powershell
services:
derper:
ports:
- 0.0.0.0:3478:3478/udp
- 0.0.0.0:50443:50443
volumes:
- /etc/letsencrypt/live/derper.example.com/fullchain.pem:/app/certs/derper.example.com.crt
- /etc/letsencrypt/live/derper.example.com/privkey.pem:/app/certs/derper.example.com.key
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
environment:
- DERP_DOMAIN=derper.example.com
- DERP_ADDR=:50443
- DERP_CERT_MODE=manual
- DERP_VERIFY_CLIENTS=true
container_name: derper
restart: always
image: fredliang/derper迁移到另一台机器上
更改域名的DNS记录指向新的机器
备份证书文件夹到本地
/etc/letsencrypt/live/derper.example.combashtsz /etc/letsencrypt/live/derper.example.com/fullchain.pem tsz /etc/letsencrypt/live/derper.example.com/privkey.pem上传证书文件到新机器
bashtrz mkdir -p /etc/letsencrypt/live/derper.example.com cp ./*.pem /etc/letsencrypt/live/derper.example.com/关闭当前机器的容器
退出当前客户端的登录(可选)
bashtailscale down在新机器上安装客户端(可选) (命令参考上面内容)
在新机器上启动容器 (命令参考上面内容)
客户端验证 (命令参考上面内容)
参考链接
Custom DERP Servers · Tailscale Docs