5
0
0

服务器部署Tailscale Derper

2026-08-22
2026-08-22

准备工作

  • 公网服务器(Linux系统),IP与自己常住的地区越近越好

  • 域名,解析到公网服务器,如derper.example.com,申请SSL证书

  • 防火墙开放端口

    • TCP 8443 用于DEPR服务

    • UDP 3478 用于STUN打洞

  • 注册Tailscale账户

  • [acme.sh需求] 腾讯云【这个根据你的域名服务商决定】API密钥,需要授权完整的DNS操作权限

官网说要开放80端口和443端口,如果你的服务器只部署derper的话就可以占用这两个端口,即80端口用来自动申请SSL证书,443端口用来走derp的信息。

Derper中继服务器部署

安装Go [Ref]

  1. 下载Go安装包(根据自己的系统、架构选择)

wget https://golang.google.cn/dl/go1.27.0.linux-amd64.tar.gz
  1. 移除已安装的Go(如果存在,可能需要sudo权限)

 rm -rf /usr/local/go && tar -C /usr/local -xzf go1.27.0.linux-amd64.tar.gz
  1. 添加Go到环境变量中

echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile
source ~/.profile
  1. 添加Go工具路径到环境变量中

echo "export PATH=$PATH:$(go env GOPATH)/bin" >> ~/.bashrc # 假设目录为/home/ubuntu/go/bin
source ~/.bashrc
  1. 检验Go是否安装成果

go version

部署Derper服务器 [Ref]

  1. 安装Derper

go install tailscale.com/cmd/derper@latest
  1. 安装Tailscale【可选】

curl -fsSL https://tailscale.com/install.sh | sh
  1. 登录tailscale【可选】

sudo tailscale up # 会出现一个链接,复制到浏览器打开并登录即可
  1. 创建SSL证书目录

mkdir ~/.certs
  1. 上传SSL证书

    • derper.example.com.crt

    • derper.example.com.key

注意前缀必须与域名保持一致

  1. 创建systemd服务

sudo vim /etc/systemd/system/derper.service

写入以下内容

[Unit]
Description=Tailscale DERP Server
After=network-online.target tailscaled.service
Wants=network-online.target
Requires=tailscaled.service

[Service]
# 注意这里的derper路径必须写绝对路径,即包含Go工具路径,可以通过go env GOPATH命令获取
ExecStart=/home/ubuntu/go/bin/derper \
  -a=:8443 \
  -certmode=manual \
  -hostname=derper.example.com \
  -certdir=/home/ubuntu/.certs \
  -http-port=-1 \
  -verify-clients # 这个参数需要完成步骤3,如果没有登录tailscale记得删掉这行,并删掉上一行最后的\
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
ReadOnlyPaths=/home/ubuntu/.certs

[Install]
WantedBy=multi-user.target
  1. 启动derper

sudo systemctl daemon-reload
sudo systemctl enable --now derper

部署acme.sh实现ssl证书自动获取并部署 [Ref]

  1. 安装acme.sh

curl https://get.acme.sh | sh -s email=换成你的邮箱
source ~/.bashrc
  1. 申请证书

根据dnsapi 查看需要的环境变量名是什么,腾讯云是Tencent_SecretIdTencent_SecretKey

export Tencent_SecretId="你的SecretId"
export Tencent_SecretKey="你的SecretKey"

acme.sh --issue --dns dns_tencent -d derper.example.com --server letsencrypt
  1. derper免sudo密码执行

sudo tee /etc/sudoers.d/derper-reload << 'EOF'
ubuntu ALL=(root) NOPASSWD: /bin/systemctl restart derper
EOF
sudo chmod 440 /etc/sudoers.d/derper-reload

注意ubuntu是你的服务器登录用户名

  1. 部署证书+自动重启derper

acme.sh --install-cert -d derper.randd.icu \
  --fullchain-file /home/ubuntu/.certs/derper.example.com.crt \
  --key-file       /home/ubuntu/.certs/derper.example.com.key \
  --reloadcmd      "sudo systemctl restart derper"

如果没配置第3步,就没办法自动重启derper,需要在更新SSL证书后手动执行

Tailscale管理端配置

  1. 打开https://console.tailscale.com/admin/acls/file [Access controls > JSON Editor]

  2. 在配置文件末尾添加

{
/// ……其他已有的配置
  "derpMap": {
		"OmitDefaultRegions": false, // 保留官方服务器作为备用

		"Regions": { // RegionID需要在900-999之间
			"901": { // 跟RegionID保持一致
				"RegionID": 901,
				"RegionCode": "selfhost", // 自己设置,别用中文
				"RegionName": "Custom Derper", // 自己取名字,别用中文就行

				"Nodes": [
					{
						"Name": "1",
						"RegionID": 901,
						"HostName": "derper.randd.icu", // 你的域名
						"DERPPort": 8443, // 如使用自定义端口,修改此处
						"STUNPort": 3478, // 如使用自定义端口,修改此处
						"STUNOnly": false,
					},
				],
			},
		},
	},
/// 结尾
}
  1. 测试derper(自己电脑上安装tailscale并登录后用命令行执行)

tailscale netcheck

显示

Report:
        * Time: 2026-08-22 03:50:23.8337719+08:00
        * UDP: true
        * IPv4: yes, 112.2.252.30:57612
        * IPv6: no, but OS has support
        * MappingVariesByDestIP: false
        * PortMapping: UPnP, NAT-PMP, PCP
        * CaptivePortal: false
        * Nearest DERP: Nanjing Derp
        * DERP latency:
                - selfhost: 5.9ms (Custom Derper)
                - hkg: 64.7ms     (Hong Kong)
                - tok: 69.8ms     (Tokyo)
                - sin: 76ms       (Singapore)
                - blr: 110.6ms    (Bengaluru)

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!