Tailscale DERP 及客户端 Docker 部署

Sliots 2024-11-27
发布于:2024-11-27|最后更新: 2024-11-27|
type
status
date
slug
summary
tags
category
icon
password
网络上有关于 Tailscale DERP 的部署教程已经很多了,但鲜有将客户端及 DERP 同时通过容器进行部署的例子。这对于 all in docker 党非常不友好,因此这里简单分享一下个人的部署案例。
 

环境

  • Debian 12.x
  • Docker 27.x
 

部署

  • 新建一个 docker-compose.yml 文件

yaml

services: tailscale: image: tailscale/tailscale:latest container_name: tailscale network_mode: host restart: unless-stopped volumes: - /dev/net/tun:/dev/net/tun - tailscale-sock:/var/run/tailscale - tailscale-state:/var/lib/tailscale cap_add: - net_admin - sys_module environment: - TS_AUTHKEY=${TS_AUTHKEY} - TS_HOSTNAME=${TS_HOSTNAME} - TS_NO_LOGS_NO_SUPPORT=true - TS_STATE_DIR=/var/lib/tailscale # 存储 tailscaled 状态 - TS_SOCKET=/var/run/tailscale/tailscaled.sock # Unix socket derper: image: fredliang/derper container_name: derper restart: unless-stopped ports: - ${DERP_PORT}:443 - ${STUN_PORT}:3478/udp environment: - DERP_DOMAIN=${DERP_DOMAIN} - DERP_CERT_MODE=manual - DERP_CERT_DIR=/app/certs - DERP_VERIFY_CLIENTS=true # 验证客户端,防止其他人使用 - DERP_HTTP_PORT=-1 volumes: - tailscale-sock:/var/run/tailscale - ${CRT_DIR}:/app/certs/${DERP_DOMAIN}.crt - ${KEY_DIR}:/app/certs/${DERP_DOMAIN}.key volumes: tailscale-sock: tailscale-state:
YAML

yaml

TS_AUTHKEY= # 填你在上面步骤获得的 KEY TS_HOSTNAME= # 填名字,方便辨认 DERP_PORT= # DERP的端口 STUN_PORT= # STUN的端口 DERP_DOMAIN= # 注意如果你是国内的服务器,使用的域名需要在所在服务商备案 CRT_DIR= # 证书crt路径 KEY_DIR= # 证书key路径
YAML
  • 最后 docker compose up -d 即可启动~

ACL配置

都是大同小异,建议参考其他人的

附注

  • state 和 sock 没有映射到主机中(因为觉得没必要),而是直接用了 docker volume,并且没有直接映射 .sock。这是因为同时启动时会被默认创建为目录,因此映射了上一级的目录。

参考文章

如果你想通过IP部署,可以参考这篇
 
 
Tailscale DERP 及客户端 Docker 部署Tailscale DERP 及客户端 Docker 部署
Loading...