banner
Shelken

Shelken

twitter
github
jike

Tailscaleを使用せずにTailscaleを使用する

よく知られているように、headscale は Tailscale の制限(デバイス数など)を解決することができます。ただし、headscale の展開にはパブリック IP が必要です。最近、Tailscale の Funnel がベータテストに入ったため、Tailscale を使用せずに headscale をインターネット上で公開する方法についての記事「Using Tailscale without using 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_TYPEが "Basic"の場合にのみ使用されます)。 Basic認証を使用していない場合は省略できます
      - BASIC_AUTH_USER=user                   # 基本認証に使用されます
      - BASIC_AUTH_PASS=pass                   # 基本認証に使用されます
      # OIDCの環境変数(AUTH_TYPEが "OIDC"の場合にのみ使用されます)。 OIDCを使用していない場合は省略できます
      - OIDC_AUTH_URL=https://auth.$DOMAIN/.well-known/openid-configuration # OIDC発行者のウェルノウンエンドポイントの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 ファンネルコマンドを実行して、headscale をインターネット上で公開します。
tailscale serve tls-terminated-tcp:443 tcp://127.0.0.1:8080
tailscale funnel 443 on
# 証明書の認証
tailscale cert [割り当てられたドメイン]
  1. 他のクライアントの使用方法

iOS では、ログインサーバーをカスタマイズすることができるようになりました。設定で自分の headscale アドレスを入力します。
その他のプラットフォームでは、次のコマンドを使用します。

tailscale login --login-server https://xxx.xxx.ts.net
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。