云服务器自建Tailscale节点方法

云服务器自建Tailscale节点方法

首先在服务器上安装tailscale(后面要用于验证是自己的机器,防止被偷流量): 在这里有每种Linux机型的安装代码 https://pkgs.tailscale.com/stable 对于腾讯云宝塔:

# Add the tailscale repository
sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/centos/8/tailscale.repo
# Install Tailscale
sudo dnf install tailscale
# Enable and start tailscaled
sudo systemctl enable --now tailscaled

登录:

sudo tailscale up

确认sock文件是否存在

ls /var/run/tailscale/tailscaled.sock

一键:

docker run -d --name tailscale-derp \
  -p 36666:36666 -p 3478:3478/udp \
  --restart=always \
  -v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
  javaow/tailscale-derp \
  ./derper -hostname derp.javaow.com -a :36666 -certmode manual -certdir /ssl --verify-clients

DockerFile:

# 编译
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

docker build -f dockerfile -t tailscale-derp

docker images

docker run -d --name tailscale-derp -p 36666:36666 -p 3478:3478/udp --restart=always tailscale-derp 主要注意点就是,随着版本更新cert.go文件中的代码行数可能发生变化,这时就需要修改dockerfile中的91,93d删除行数,只要保证把下面红框里的3行代码删除即可,这三行就是证书验证代码: if hi.Servername != m.hostname{

}

进入官方后台替换如下:

"derpMap": {
        "OmitDefaultRegions": false,
        "Regions": {
            "910": {
                "RegionID":   910,
                "RegionCode": "自建节点",
                "Nodes": [
                    {
                        "Name":             "910",
                        "RegionID":         910,
                        "HostName":         "xx.xx.xx.xx",
                        "InsecureForTests":     true,
                        "DERPPort":         36666,
                    },
                ],
                "RegionName": "自建节点",
            },
        },
    },

或者使用composefile:

services:
  tailscale-derp:
    image: javaow/tailscale-derp
    container_name: tailscale-derp
    ports:
      - "36666:36666"
      - "3478:3478/udp"
    volumes:
      - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
    command:
      - ./derper
      - -hostname
      - "derp.javaow.com"
      - -a
      - ":36666"
      - -certmode
      - manual
      - -certdir
      - "/ssl"
      - --verify-clients
    restart: always

放在docker-compose.yaml文件里,然后

docker compose up -d

最后检查自建节点是否出现即可:

tailscale netcheck
tailscale status
tailscale ping xxxx

测试节点: tailscale debug derp 910

相关文章

AI 工具 · 2026-07-08CodexPro 使用方法:把本地项目接到 ChatGPT 的轻量 MCP 服务AI 工具 · 2026-05-20Hermes 安装实战:WSL 代理配置、macOS proxychains 与多 Profile 克隆工具分享 · 2026-05-13我整理了一份 9.9 元的 AI 提效包