docker部署Tailscale的节点中继derper 纯 IP 无需域名

-
-
2025-07-04

 

参考:https://blog.csdn.net/god_sword_/article/details/129353427

Fork Tailscale 代码到自己仓库

https://github.com/tailscale/tailscale

注释服务端证书验证

查找getCertificate方法,注释前面的域名检查

func (m *manualCertManager) getCertificate(hi *tls.ClientHelloInfo) (*tls.Certificate, error) {
	//if hi.ServerName != m.hostname {
	//	return nil, fmt.Errorf("cert mismatch with hostname: %q", hi.ServerName)
	//}
	return m.cert, nil
}

编写创建自签名证书

通过以下build_cert.sh脚本

build_cert.sh 

编写 Dockerfile

将 MODIFIED_DERPER_GIT 的设置为自己的tailscale代码仓库git地址,BRANCH设置为代码分支

Dockerfile 

构建docker镜像

构建镜像可能需要科学上网,下载一些依赖包。

!!!注意build_cert.sh和Dockerfile应该在在同一目录下

进入Dockerfile所在目录下执行构建镜像命

docker buildx build --platform linux/amd64 --no-cache  -t derper:V1.0 .

导出镜像

docker save -o derper.tar derper:V1.0

上传到服务器

scp derper.tar tencentSh:~/

导入镜像

docker load -i derper.tar

编写docker-compose.yml

version: '3.8'

services:
  derper:
    image: derper:V1.0
    container_name: derper
    ports:
      - "4435:443"
      - "3478:3478/udp"
    restart: always

启动

docker compose up

查看启动是否有报错,正常启动应该是会有这些提示

2024/08/12 15:58:57 STUN server listening on [::]:3478
2024/08/12 15:58:57 derper: serving on :443 with TLS

配置tailscale客户端

在tailscale页面的Access Controls,配置添加的节点

"901": {
				// RegionID 和上面的相等
				"RegionID": 901,
				// RegionCode 自己取个易于自己名字
				"RegionCode": "tencentSh",
				"RegionName": "tencent shanghai",
				"Nodes": [
					{
						// Name 
						"Name": "tencentSh-1",
						// 这个也和 RegionID 一样
						"RegionID": 901,
						// 域名
						"HostName": "1.1.1.1",
						// 端口号
						"DERPPort":         4435,
						"InsecureForTests": true,
					},
				],
			}

记得InsecureForTests要设置成true


目录