[软件服务] 在韩国 Moack 部署私有 Tailscale DERP 中转站全记录
date
Feb 24, 2026
slug
newsoftware- tailscale-derp-中转接电
status
Published
summary
新软件-
tags
software
service
type
Post
URL
🚀 打造极致低延迟:在韩国 Moack 部署私有 Tailscale DERP 中转站全记录📍 核心配置摘要一、 前置准备:域名与证书自动化1. Cloudflare DNS 配置2. NPM 证书申领二、 突破网络:宿主机 Tailscale 安装三、 容器化部署:DERP Server四、 路由下发:Tailscale ACL 配置五、 自愈与报警:Telegram 监控脚本📈 结果验证
这份文档是为你精心整理的最终技术博文版。它不仅记录了操作步骤,还复盘了我们在韩国 Moack 环境下遇到的网络坑位及解决方案。你可以直接全选并粘贴到 Notion 中。
🚀 打造极致低延迟:在韩国 Moack 部署私有 Tailscale DERP 中转站全记录
背景:为了优化从上海办公室或北美远程访问家中星核电脑的体验,我们需要在地理位置优越的韩国首尔部署私有 DERP 中转站。本文记录了从突破网络封锁安装 Tailscale 到实现 Telegram 自动化报警的全过程。
📍 核心配置摘要
- 服务器:Moack 韩国 VPS (Ubuntu 20.04 Focal)
- 专属域名:
kr-derp.nxxxxxxa.com
- 核心端口:TCP
3443(HTTPS) / UDP3478(STUN)
- 延迟表现:从 ~200ms (官方节点) 降低至 103.5ms
一、 前置准备:域名与证书自动化
为了实现安全的 HTTPS 连接,我们利用 Nginx Proxy Manager (NPM) 处理证书。
1. Cloudflare DNS 配置
- A 记录:
kr-derp指向韩国 VPS IP。
- ⚠️ 关键点:代理状态必须设为 DNS Only (灰色云朵),否则会拦截 Tailscale 的 UDP 打洞流量。
2. NPM 证书申领
- 通过 DNS Challenge 模式,配合 Cloudflare API Token 申请
kr-derp.nxxxxxxa.com的证书。
- 证书路径确认:经核实,物理文件存放于
/data/npm_nginx_proxy_manager/letsencrypt/live/npm-30/。
二、 突破网络:宿主机 Tailscale 安装
由于 Moack 韩国线路到官方源及部分国内镜像站存在 404 或 TCP 阻断问题,最终采用 山东大学镜像站 手动安装。
Bash
# 1. 下载绝对存在的 .deb 安装包
wget https://mirrors.sdu.edu.cn/spark-store/store/network/tailscale/tailscale_1.94.2_amd64.deb
# 2. 本地强制安装并入网
sudo dpkg -i tailscale_1.94.2_amd64.deb
sudo tailscale up- 注:入网是为了生成
/var/run/tailscale/tailscaled.sock,用于 DERP 容器的客户端白名单验证。
- 持久化:在 Admin Console 将该机器设为 Disable Key Expiry。
三、 容器化部署:DERP Server
创建
docker-compose.yml,精准挂载 NPM 证书与系统套接字。YAML
version: '3.8'
services:
derper:
image: fredliang/derper
container_name: tailscale-derp-kr
restart: always
ports:
- "3443:443"
- "3478:3478/udp"
environment:
- DERP_DOMAIN=kr-derp.nxxxxxxa.com
- DERP_CERT_MODE=manual
- DERP_ADDR=:443
- DERP_VERIFY_CLIENTS=true # 开启安全验证
volumes:
- /data/npm_nginx_proxy_manager/letsencrypt/live/npm-30/fullchain.pem:/app/certs/kr-derp.nxxxxxxa.com.crt:ro
- /data/npm_nginx_proxy_manager/letsencrypt/live/npm-30/privkey.pem:/app/certs/kr-derp.nxxxxxxa.com.key:ro
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
networks:
- default
networks:
default:
name: npm_nginx_proxy_manager-network
external: true启动命令:
docker compose down; docker-compose up -d; sleep 1s; docker-compose logs -f四、 路由下发:Tailscale ACL 配置
在控制台的
Access Controls 顶部加入私有节点信息。JSON
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"902": {
"RegionID": 902,
"RegionCode": "kr-vps",
"RegionName": "Korea Seoul Station",
"Nodes": [
{
"Name": "n1",
"RegionID": 902,
"HostName": "kr-derp.nxxxxxxa.com",
"DERPPort": 3443,
"STUNPort": 3478
}
]
}
}
}五、 自愈与报警:Telegram 监控脚本
为了保证高可用性,部署 Bash 脚本每 5 分钟检查一次容器状态,宕机时发送 TG 提醒并自动重启。
脚本位置:
~/data/tailscale-derp/check_derp.shBash
#!/bin/bash
CONTAINER_NAME="tailscale-derp-kr"
COMPOSE_DIR="/root/data/tailscale-derp"
TG_URL="https://api.telegram.org/bot1577714372:AAHTPb1MJ7ZZtWBcXa0Fj7qHzLY8hT/sendMessage?chat_id=-10013009&text=kr-derp-tailscale-is-down-at-moack-now"
if [ "$(docker inspect -f '{{.State.Running}}' $CONTAINER_NAME 2>/dev/null)" != "true" ]; then
# 触发报警
curl -s -m 10 "$TG_URL" > /dev/null
# 重启容器
cd "$COMPOSE_DIR" && docker compose down && docker-compose up -d
fiCron 任务:
/5 * * * * /bin/bash /root/data/tailscale-derp/check_derp.sh
📈 结果验证
运行
tailscale netcheck 后,显示:- Nearest DERP: Korea Seoul Station
- Latency: 103.5ms
结论:通过在韩国部署私有节点,我们不仅获得了极致的响应速度,还通过双重验证和自动化监控确保了链路的安全性与稳定性。
这就是今天的全部战斗成果!如果未来你想在温哥华或多伦多再加一个节点,只需要把这篇文档里的
902 ID 和域名改一下,10 分钟内就能复刻一个