Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Tailscale DERP Relay Server 部署教程

一、安装 Tailscale

执行以下命令安装 Tailscale:

curl -fsSL https://tailscale.com/install.sh | sh

安装完成后可检查版本:

tailscale version

二、安装 Go 环境

DERP 服务需要使用 Go 编译安装。

1) 下载 Go

下载 Go 1.26.5:

wget https://go.dev/dl/go1.26.5.linux-amd64.tar.gz

2) 安装 Go

删除旧版本:

rm -rf /usr/local/go

解压到 /usr/local

tar -C /usr/local -xzf go1.26.5.linux-amd64.tar.gz

3) 配置 Go 环境变量

创建环境变量配置文件:

sudo tee /etc/profile.d/go.sh > /dev/null <<'EOF'
export PATH=$PATH:/usr/local/go/bin
export PATH="$PATH:$(go env GOPATH)/bin"
EOF

立即生效:

source /etc/profile.d/go.sh

检查 Go:

go version

示例:

go version go1.26.5 linux/amd64

三、创建自签名证书

  1. 创建证书目录:
mkdir -p /usr/local/cert
cd /usr/local/cert
  1. 生成私钥(RSA 4096):
openssl genrsa -out derper.key 4096

生成后文件位于 /usr/local/cert/derper.key

  1. 生成自签名证书:
openssl req -x509 -new -nodes \
  -key derper.key \
  -sha256 \
  -days 3650 \
  -out derper.crt

过程中会询问以下项:

  • Country Name (2 letter code) [XX]
  • State or Province Name
  • Locality Name
  • Organization Name
  • Common Name

其中 Common Name (CN) 建议填写设备的 IP 地址或域名。


四、安装 DERP 服务

1) 配置 Go 代理

设置国内 Go Module 镜像(可选):

go env -w GOPROXY=https://goproxy.cn,direct

检查:

go env GOPROXY

2) 编译安装 derper

执行:

go install tailscale.com/cmd/derper@main

安装完成后可在 $(go env GOPATH)/bin(通常为 /root/go/bin)找到 derper 可执行文件。

检查:

ls $(go env GOPATH)/bin

五、创建 DERP 启动脚本

1) 创建启动脚本

文件:

/usr/local/bin/derper-run

内容示例:

#!/bin/sh

DERPER_DIR="$(go env GOPATH)/bin"

cd "$DERPER_DIR" || exit 1

if [ -f derper.pid ] && kill -0 "$(cat derper.pid)" 2>/dev/null; then
    echo "derper is already running"
    exit 1
fi

nohup ./derper \
-hostname {设备的IP地址} \
-c=derper.conf \
-a :56473 \
-http-port -1 \
-certmode manual \
-certdir /usr/local/cert \
-verify-clients \
-stun \
-stun-port 56474 \
> console.log 2>&1 &

echo $! > derper.pid

添加执行权限:

chmod +x /usr/local/bin/derper-run

2) 创建停止脚本

文件:

/usr/local/bin/derper-stop

内容示例:

#!/bin/sh

DERPER_DIR="$(go env GOPATH)/bin"
PID_FILE="$DERPER_DIR/derper.pid"

if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")

    if kill -0 "$PID" 2>/dev/null; then
        kill "$PID"
        echo "derper stopped"
    else
        echo "derper process not found"
    fi

    rm -f "$PID_FILE"
else
    echo "pid file not found"
fi

添加执行权限:

chmod +x /usr/local/bin/derper-stop

六、配置 systemd 服务

创建服务文件:

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

写入:

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

[Service]
Type=forking

ExecStart=/usr/local/bin/derper-run
ExecStop=/usr/local/bin/derper-stop

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

七、启动 DERP 服务

重新加载 systemd:

systemctl daemon-reload

设置开机启动:

systemctl enable derper

启动:

systemctl start derper

查看状态:

systemctl status derper

八、查看 DERP 日志

日志文件示例:

/root/go/bin/console.log

查看实时日志:

tail -f /root/go/bin/console.log

九、端口开放

DERP 需要开放以下端口:

端口 协议 用途
56473 TCP DERP Relay
56474 UDP STUN 服务

About

Tailscale DERP Relay Server 部署教程

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors