tailscale について
tailscaleは、ローカルCLIとtailnet全体を操作するAPIを通じてTailscaleを管理するスキルです。接続診断に加え、デバイス、DNS、キーの管理に対応します。
主な機能
- 01ステータスとネットワーク診断の確認
- 02ピアへのPingと接続管理
- 03ファイル転送とサービス公開
- 04tailnetデバイスの一覧・管理
- 05DNS、ACL、認証キーの管理
活用シーン
- 01オンライン中のtailnetデバイスの確認
- 02ピア接続が中継かどうかの判定
- 03別のデバイスへのファイル送信
- 04サーバー用認証キーの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jmagar/ claude-homelab --skill tailscaleインストール後、Claude Code で/tailscaleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
load-env.shREADME.mdreferences/api-endpoints.mdquick-reference.mdtroubleshooting.mdscripts/ts-api.sh詳細
Tailscale スキル
⚠️ スキルの呼び出しは必須です ⚠️
ユーザーが次のいずれかのトリガーに言及した場合、このスキルを必ず呼び出してください(任意ではありません)。
- 「Tailscale のステータス」、「tailnet デバイス」、「VPN のステータス」
- 「Tailscale ピア」、「接続中のユーザー」、「出口ノード」
- 「Tailscale を確認」、「tailnet の監視」、「Tailscale」
- Tailscale または VPN ネットワーク管理への言及
トリガーが発生したときにこのスキルを呼び出さないと、運用要件に違反します。
目的
Tailscale CLI(ローカルマシンでの操作)と Tailscale API(tailnet 全体の管理)の両方を使用するハイブリッドスキルです。読み書き可能(安全) — 破壊的な操作はありません。書き込みには認証キーの作成やネットワーク機能の切り替えが含まれます。
| 操作の種類 | 方法 | API キーが必要 |
|---|---|---|
| ステータス、ping、netcheck、whois | CLI | いいえ |
| Serve、funnel、ファイル転送、SSH | CLI | いいえ |
| 全デバイスの一覧、ユーザー管理、DNS | API | はい |
| 認証キーの作成/取り消し | API | はい |
セットアップ
API 設定(任意。tailnet 全体の操作で使用)は ~/.claude-homelab/.env に保存されています。
TAILSCALE_API_KEY="tskey-api-k..."
TAILSCALE_TAILNET="-"
API キーの取得先:Tailscale Admin Console → Settings → Keys → Generate API Key
TAILSCALE_TAILNET には -(自動検出)、組織名、またはメールドメインを指定できます。
ローカル操作(CLI)
これらは現在のマシンでのみ動作します。
ステータスと診断
# Current status (peers, connection state)
tailscale status
tailscale status --json | jq '.Peer | to_entries[] | {name: .value.HostName, ip: .value.TailscaleIPs[0], online: .value.Online}'
# Network diagnostics (NAT type, DERP, UDP)
tailscale netcheck
tailscale netcheck --format=json
# Get this machine's Tailscale IP
tailscale ip -4
# Identify a Tailscale IP
tailscale whois 100.x.x.x
接続
# Ping a peer (shows direct vs relay)
tailscale ping <hostname-or-ip>
# Connect/disconnect
tailscale up
tailscale down
# Use an exit node
tailscale up --exit-node=<node-name>
tailscale exit-node list
tailscale exit-node suggest
ファイル転送(Taildrop)
# Send files to a device
tailscale file cp myfile.txt <device-name>:
# Receive files (moves from inbox to directory)
tailscale file get ~/Downloads
tailscale file get --wait ~/Downloads # blocks until file arrives
サービスの公開
# Share locally within tailnet (private)
tailscale serve 3000
tailscale serve https://localhost:8080
# Share publicly to internet
tailscale funnel 8080
# Check what's being served
tailscale serve status
tailscale funnel status
SSH
# SSH via Tailscale (uses MagicDNS)
tailscale ssh user@hostname
# Enable SSH server on this machine
tailscale up --ssh
tailnet 全体の操作(API)
tailnet 全体を管理します。API キーが必要です。
全デバイスの一覧表示
./scripts/ts-api.sh devices
# With details
./scripts/ts-api.sh devices --verbose
デバイスの詳細
./scripts/ts-api.sh device <device-id-or-name>
オンライン状態の確認
# Quick online check for all devices
./scripts/ts-api.sh online
デバイスの承認/削除
./scripts/ts-api.sh authorize <device-id>
./scripts/ts-api.sh delete <device-id>
デバイスのタグとルート
./scripts/ts-api.sh tags <device-id> tag:server,tag:prod
./scripts/ts-api.sh routes <device-id>
認証キー
# Create a reusable auth key
./scripts/ts-api.sh create-key --reusable --tags tag:server
# Create ephemeral key (device auto-removes when offline)
./scripts/ts-api.sh create-key --ephemeral
# List keys
./scripts/ts-api.sh keys
DNS 管理
./scripts/ts-api.sh dns # Show DNS config
./scripts/ts-api.sh dns-nameservers # List nameservers
./scripts/ts-api.sh magic-dns on|off # Toggle MagicDNS
ACL
./scripts/ts-api.sh acl # Get current ACL
./scripts/ts-api.sh acl-validate <file> # Validate ACL file
よくあるユースケース
「今オンラインなのは誰ですか?」
./scripts/ts-api.sh online
「このファイルを自分のスマートフォンに送って」
tailscale file cp document.pdf my-phone:
「開発サーバーを公開して」
tailscale funnel 3000
「新しいサーバー用のキーを作成して」
./scripts/ts-api.sh create-key --reusable --tags tag:server --expiry 7d
「接続は直接ですか、それとも中継されていますか?」
tailscale ping my-server
🔧 エージェントツールの使用要件
重要: zsh-tool 経由でこのスキルのスクリプトを呼び出すときは、必ず pty: true を使用してください。
PTY モードを使用しないと、コマンドは正常に実行されても出力が表示されません。
正しい呼び出しパターン:
<invoke name="mcp__plugin_zsh-tool_zsh-tool__zsh">
<parameter name="command">./skills/SKILL_NAME/scripts/SCRIPT.sh [args]</parameter>
<parameter name="pty">true</parameter>
</invoke>