banner
Shelken

Shelken

twitter
github
jike

在不使用Tailscale的情況下使用Tailscale

眾所周知,headscale 可以解決 Tailscale 的一些限制,例如設備數。但是 headscale 部署需要一個公網 IP。最近,Tailscale 的 Funnel 進入 beta 測試了,剛好又看到一個大佬寫了一篇利用 Tailscale 的 Funnel,將本地部署的 headscale 開放到公網的文章 Using Tailscale without using Tailscale。這意味著我們可以使用 Tailscale 讓人們通過互聯網訪問我們搭建的 headscale,並且只使用 headscale 來讓設備加入節點。感覺有點像背叛 Tailscale 官方啊,可憐三秒。

接下來簡單介紹一下操作步驟。

  1. 先在任意一台自己的本地機器上安裝最新穩定版的 Tailscale。

安裝命令

curl -fsSL https://tailscale.com/install.sh | sh
  1. 再起一個 headscale,這裡我使用 docker-compose 部署,這裡我大部分參考了官方的教程
    另外,單獨起了一個 webui 方便查看
version: '3.8'
services:
  headscale:
    image: 'headscale/headscale:latest'
    container_name: headscale
    volumes:
      - /data/docker/headscale/config:/etc/headscale/
    environment:
      - TZ=Asia/Shanghai
    ports:
      - '9090:9090'
      - '8080:8080'
    restart: always
    command: headscale serve
  headscale-webui:
    image: ghcr.io/ifargle/headscale-webui:latest
    container_name: headscale-webui
    restart: always
    ports:
      - '8083:5000'
    environment:
      - TZ=Asia/Shanghai
      - COLOR=red                              # 使用基本顏色(即,不使用 darken-3 等)-
      - HS_SERVER=http://headscale:8080    # Headscale 服務器的可訪問端點
      - DOMAIN_NAME=http://headscale-webui:5000  # 本容器的基本域名
      - SCRIPT_NAME=/admin                     # 這是應用程序的基本路徑(wsgi 需要名稱 "SCRIPT_NAME")。如果在根目錄下託管,則刪除此行 /
      - KEY=""             # 使用 "openssl rand -base64 32" 生成 - 用於加密磁盤上的密鑰。
      - AUTH_TYPE=                         # AUTH_TYPE 為 Basic 或 OIDC。無身份驗證則留空
      - LOG_LEVEL=info                         # 日誌級別。"DEBUG"、"ERROR"、"WARNING" 或 "INFO"。默認為 "INFO"
      # Basic Auth 的環境變量(僅在 AUTH_TYPE 為 "Basic" 時使用)。如果不使用 Basic Auth,可以省略這些變量
      - BASIC_AUTH_USER=user                   # 用於基本身份驗證
      - BASIC_AUTH_PASS=pass                   # 用於基本身份驗證
      # OIDC 的環境變量(僅在 AUTH_TYPE 為 "OIDC" 時使用)。如果不使用 OIDC,可以省略這些變量
      - OIDC_AUTH_URL=https://auth.$DOMAIN/.well-known/openid-configuration # OIDC 發行者的 well-known 端點的 URL
      - OIDC_CLIENT_ID=headscale-webui         # Headscale-WebUI 的 OIDC 發行者客戶端 ID
      - OIDC_CLIENT_SECRET=YourSecretHere      # Headscale-WebUI 的 OIDC 發行者密鑰
    volumes:
      - /data/docker/headscale/web-ui/data:/data                         # Headscale-WebUI 的存儲位置。確保 ./volume 可以被 UID 1000 讀取(chown 1000:1000 ./volume)
      - /data/docker/headscale/config/:/etc/headscale/:ro # Headscale 的配置存儲位置。用於讀取 Headscale 配置。
  1. 然後執行 Tailscale funnel 命令,將 headscale 開放到公網
tailscale serve tls-terminated-tcp:443 tcp://127.0.0.1:8080
tailscale funnel 443 on
# 證書認證
tailscale cert [分配的domain]
  1. 其他客戶端使用

iOS 端現在已經可以自定義 login-server,在設置中填入自己的 headscale 地址
其他端直接執行命令

tailscale login --login-server https://xxx.xxx.ts.net
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。