准备一个域名并添加到cloudflare中
这里就偷懒不写了
使用certbot生成证书,需要暂时关闭服务器占用80端口的服务……其实用cloudflare生成的证书也可以
1 2 3 4 5
| sudo snap install --classic certbot
sudo certbot certonly --standalone
|
启动容器
1 2 3 4 5 6 7 8
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| "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, // 端口 } ] } } }
|
客户端验证
延迟比官方的香港节点快了5倍
防止白嫖
需要在服务器上也安装tailscale客户端并登录
1 2 3 4
| 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
重新启动容器
1 2 3 4 5 6 7 8 9 10
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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.com
1 2
| tsz /etc/letsencrypt/live/derper.example.com/fullchain.pem tsz /etc/letsencrypt/live/derper.example.com/privkey.pem
|
上传证书文件到新机器
1 2 3
| trz mkdir -p /etc/letsencrypt/live/derper.example.com cp ./*.pem /etc/letsencrypt/live/derper.example.com/
|
关闭当前机器的容器
退出当前客户端的登录(可选)
在新机器上安装客户端(可选) (命令参考上面内容)
在新机器上启动容器 (命令参考上面内容)
客户端验证 (命令参考上面内容)
参考链接
Custom DERP Servers · Tailscale Docs
fredliang/derper - Docker Image | Docker Hub
Tailscale docker自建derp服务器 自定义端口_tailscale自建服务器-CSDN博客