准备工作
- 一台能够跑Docker的服务器
- 服务器能开放stun的端口
UDP/3478
- 一个域名
- (可选)SSL证书
本文假设服务器发行版为普通 Debian 12
Docker 近期国内访问困难,以下是截止本文发布时可用的镜像:
- docker.1panel.live
- dockerhub.icu
关于 Docker 及 Docker Compose 安装本文不再赘述,请自行查阅其他文档。
防火墙放行端口
iptables/nftables和服务器安全组都要放行以下端口:
<PORT>
请改为一个你需要的端口
(可选)安装 Tailscale
此步骤用于鉴权,若你搭建的是公开 DERP 服务,那么可以跳过。
1
| curl -fsSL https://tailscale.com/install.sh | sh
|
写入 Docker Compose
创建 Derper 文件夹:
1 2
| mkdir -p /opt/derper mkdir -p /opt/derper/cert
|
请将 <PORT>
替换为你希望的 DERP 端口,<HOST>
替换为你希望的 DERP 连接域名。
本文假设你需要 SSL,故写入证书相关。关于证书请继续往下。若不需要 SSL,请自行移除 -certdir=/cert/ -certmode=manual
部分。
如果需要搭建的为公共 DERP,请移除 -verify-clients
部分。
1 2 3 4 5 6 7 8 9 10 11 12
| services: derper: image: qctt/derper container_name: derper restart: unless-stopped ports: - "<PORT>:443" - "3478:3478/udp" volumes: - /opt/derper/cert/:/cert/ - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock command: /derper -stun -a 0.0.0.0:443 -hostname <HOST> -certdir=/cert/ -certmode=manual -verify-clients
|
关于证书
证书及私钥文件名为:
如果你和我一样使用 1Panel 申请和管理证书,那么你可以在证书申请的配置中勾选 推送证书到本地目录
和 申请证书之后执行脚本
,并填入:
推送证书到本地目录:
申请证书之后执行脚本:
1 2
| mv /opt/derper/cert/fullchain.pem /opt/derper/cert/<HOST>.crt mv /opt/derper/cert/privkey.pem /opt/derper/cert/<PORT>.key
|
启动 Derper 服务
1 2
| cd /opt/derper docker-compose up -d
|
添加到Tailscale
在你的Tailscale管理界面找到 Access Controls
(点我直达 )
在其中插入片段,示例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| { "acls": [ ], "ssh": [ ], "derpMap": { "Regions": { "900": { "RegionID": 900, "RegionCode": "cni-zj-nb", "RegionName": "中国-湖北", "Nodes": [ { "Name": "zj-nb-1", "RegionID": 900, "HostName": "xxxxx.xxx", "DERPPort": 12345, }, ], }, }, }, }
|
使用 tailscale netcheck
检查,发现多出自建DERP,成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Report: * UDP: true * IPv4: yes, xxx.xxx.xxx.xxx:xxxxx * IPv6: no, but OS has support * MappingVariesByDestIP: true * PortMapping: * CaptivePortal: false * Nearest DERP: 中国-湖北-崇阳 * DERP latency: - cni-hb-cy: 41.4ms (中国-湖北-崇阳) - cni-zj-nb: 59.6ms (中国-浙江-宁波) - lax: 239.7ms (Los Angeles) - sfo: 245.8ms (San Francisco) - sea: 251.3ms (Seattle) - den: 255.6ms (Denver) - tor: 267ms (Toronto) - dfw: 269ms (Dallas) - ord: 269.5ms (Chicago) - hnl: 271.7ms (Honolulu) - nyc: 278.9ms (New York City) - mia: 286.8ms (Miami) - tok: 336.3ms (Tokyo) - lhr: 343.1ms (London) - cnh: 361ms (中国香港) - par: 361.5ms (Paris) - fra: 364ms (Frankfurt) - mad: 366.2ms (Madrid) - syd: 370.7ms (Sydney) - ams: 377.1ms (Amsterdam) - waw: 380.1ms (Warsaw) - hkg: 386.6ms (Hong Kong) - sin: 400ms (Singapore) - sao: 404ms (São Paulo) - blr: 463.2ms (Bangalore) - dbi: 466.5ms (Dubai) - nai: 509.7ms (Nairobi) - jnb: 518.5ms (Johannesburg) - usa: (美国)
|