|
厌倦了滚动浏览相同的帖子?当您创建帐户后,您将始终回到您离开的地方。使用帐户,不仅可以享受无广告的清爽界面!
您需要 登录 才可以下载或查看,没有账号?注册
×
网上教程太复杂,又是域名 又是装golang,而且还没有Docker版本
国内机器没有北岸无法解析域名,也就没办法使用官方直接搭建,需要下载源码去除证书验证重新编译才可以
偷懒
用我直接打包好的镜像即可,支持Amd64和Arm64,甲骨文Arm服务器也可直接使用
- docker run -d --name tailscale-derp -p 36666:36666 -p 3478:3478/udp --restart=always javaow/tailscale-derp
复制代码
教程
多阶段dockerfile构建,编译打包一体
1.打开一个dockerfile文件
2.把如下内容复制到dockerfile
注意1:最好使用国外服务器,国内github和docker连通性不是很好
注意2:此版本是Amd架构,如果要在Arm架构打包需要把 RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 这一行注释或者删除(此行为了解决Amd架构下alpine镜像无法执行二进制问题)
注意3:随着版本更新,cert.go文件中的代码行数可能发生变化,当前版本是注释91~93行这3行即可,编译前最好去官方仓库看下,否则编译不通过
- # 编译
- FROM golang:alpine AS builder
- # 切换模块源为中国Go模块代理服务器
- # RUN go env -w GOPROXY=https://goproxy.cn,direct
- # 拉取代码
- RUN go install tailscale.com/cmd/derper@latest
- # 去除域名验证(删除cmd/derper/cert.go文件的91~93行)
- RUN find /go/pkg/mod/tailscale.com@*/cmd/derper/cert.go -type f -exec sed -i '91,93d' {} +
- # 编译
- RUN derper_dir=$(find /go/pkg/mod/tailscale.com@*/cmd/derper -type d) && \
- cd $derper_dir && \
- go build -o /etc/derp/derper
- # 生成最终镜像
- FROM alpine:latest
- WORKDIR /apps
- COPY --from=builder /etc/derp/derper .
- RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
- && echo 'Asia/Shanghai' > /etc/timezone
- ENV LANG C.UTF-8
- # 创建软链接 解决二进制无法执行问题 Amd架构必须执行,Arm不需要执行
- RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
- # 添加源
- RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
- # 安装openssl
- RUN apk add openssl && mkdir /ssl
- # 生成自签10年证书
- RUN openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /ssl/derp.javaow.com.key -out /ssl/derp.javaow.com.crt -subj "/CN=derp.javaow.com" -addext "subjectAltName=DNS:derp.javaow.com"
- CMD ./derper -hostname derp.javaow.com -a :36666 -certmode manual -certdir /ssl
复制代码
3.编译镜像
- docker build -f dockerfile -t tailscale-derp
复制代码
编译完成后即可查看本地生成的镜像
启动
- docker run -d --name tailscale-derp -p 36666:36666 -p 3478:3478/udp --restart=always tailscale-derp
复制代码
4.添加节点
进入官方后台,替换如下,HostName填写IP,DERPPort填写端口
- "derpMap": {
- "OmitDefaultRegions": false,
- "Regions": {
- "910": {
- "RegionID": 910,
- "RegionCode": "自建节点",
- "Nodes": [
- {
- "Name": "910",
- "RegionID": 910,
- "HostName": "xx.xx.xx.xx",
- "InsecureForTests": true,
- "DERPPort": 36666,
- },
- ],
- "RegionName": "自建节点",
- },
- },
- },
复制代码
5.后话
自己打包镜像后可以上传到DockerHub上,让其他机器直接拉取使用,不用再重新编译了
主要注意点就是,随着版本更新cert.go文件中的代码行数可能发生变化,这时就需要修改dockerfile中的91,93d删除行数,只要保证把下面红框里的3行代码删除即可,这三行就是证书验证代码
https://github.com/tailscale/tai ... /cmd/derper/cert.go
|
|