给tailscale搭建derper服务器
前言:tailscale是一个非常不错的组网工具,不过其节点服务器最近的也要80ms上下,因此自建derper节点是一个不错的选择。本文选择cloudflare作为dns服务提供商,acme.sh来申请域名证书并自动续期。
参考了这篇知乎文章
0.前置条件
一台debian服务器
基本上其他linux系统也行,这里持久化运行使用的systemd,另外请使用root用户来操作,如果使用其他用户在执行下面的命令时需加上sudo
一个域名
默认使用ssl加密,所以需要用到域名
1.安装go语言环境
首先卸载旧版本(如果存在)
rm -rf /usr/local/go下载二进制文件
可以自己到https://go.dev/dl/选取版本
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz解压安装
同样的,如果安装了其他版本自行替换一下命令的版本就好
tar -C /usr/local -xzf ./go1.22.3.linux-amd64.tar.gz配置环境(之前配置过就不用管)
sh -c 'echo "export GOROOT=/usr/local/go\nexport GOPATH=/usr/local/gopath\nexport GOBIN=\$GOPATH/bin\nexport PATH=\$PATH:\$GOROOT/bin\nexport PATH=\$PATH:\$GOPATH/bin" >> /etc/profile'也可以自己把下面这段编辑进/etc/proflieexport GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin添加完成后执行以下命令使更改立即生效
source /etc/profile验证安装
go version如果输出如下截图内容即代表go语言环境安装完成

2.安装derper
创建目录
mkdir -p /usr/local/gopath/bin编译安装
国内环境需要配置代理 go env -w GOPROXY=https://goproxy.cn,directgo install tailscale.com/cmd/derper@latest验证
derper --version
3.申请证书
安装acme.sh
curl https://get.acme.sh | sh -s [email protected][email protected]替换为你自己的邮箱切换CA提供商(默认的zerossl也可以,习惯改用letsencrypt)
acme.sh --set-default-ca --server letsencrypt如果命令执行失败可以执行source ~/.bashrc更新环境获取dns api使用权限申请证书
参考acme.sh官方wiki,这里使用cf提供的全局权限,可能有一定的安全风险,选择安全的环境使用
export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4"
export CF_Email="[email protected]"申请证书
替换为自己的域名
acme.sh --issue --dns dns_cf -d derp.example.com -d *.derp.example.com证书安装
创建证书目录
mkdir /usr/local/cert安装
acme.sh --install-cert -d derp.example.com \
--key-file       /usr/local/cert/derp.example.com.key \
--fullchain-file /usr/local/cert/derp.example.com.crt4.使用systemd运行derper
创建derper.service
cat > /etc/systemd/system/derper.service << EOF
[Unit]
Description = derper server
After=network-online.target
Requires=network-online.target
[Service]
Type = simple
ExecStart = /usr/local/gopath/bin/derper -hostname derp.example.com -c=/usr/local/gopath/bin/derper.conf -a :8972 -http-port -1 -certdir /usr/local/cert -certmode manual -verify-clients -stun -stun-port 6783
Restart=on-failure
RestartSec=60
[Install]
WantedBy = multi-user.target
EOF其中8972是tcp端口,6783是udp端口,都需要自行开放,端口支持自定义,-stun-port 6783可以去掉,默认端口为3478,上面的代码更改好后直接复制到命令行窗口中执行就行启动并设置开机自启
systemctl start derper
systemctl enable derper停止服务并关闭自启
systemctl stop derper
systemctl disable derper查看运行状态
systemctl status derper查看日志输出,-f为实时刷新,替换-r则显示倒序
journalctl -u derper -f5.tailscale控制台添加节点
登录后顶栏选择Access Controls
"derpMap": {
    // OmitDefaultRegions 用来忽略官方的中继节点
    "OmitDefaultRegions": true,
    "Regions": {
        // 这里的 901 从 900 开始随便取数字
        "901": {
            // RegionID 和上面的相等
            "RegionID": 901,
            // RegionCode 自己取个易于自己名字
            "RegionCode": "qcloud",
            "RegionName": "上海",
            "Nodes": [
                {
                    // Name 多个服务器最好取不同数字,同一个RegionCode的Name不能一样
                    "Name":     "1",
                    // 这个也和 RegionID 一样
                    "RegionID": 901,
                    // 域名
                    "HostName": "<你的域名>",
                    // 端口号
                    "DERPPort": 8972
                    // STUN端口号没有自定义就不用填写
                    "STUNPort": 6783
                }
            ]
        }
    }
}
6.检查连接状态
tailscale netcheck
	
			
		
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com