TailscaleのTaildriveでフォルダを共有

先日Taildropを紹介しましたが、Tailscaleには似たような機能としてTaildriveがあります。こちらは、一言で言えば「Tailscaleネットワーク(Tailnet)内で、自分のPCのフォルダを『ネットワークドライブ』として他端末に共有できる機能」です。Taildropが「ファイルを送る」機能なのに対し、Taildriveは「離れた場所にあるフォルダを、まるで自分のPC内にあるかのように直接覗く・編集する」機能です。

Taildriveの機能

Taildriveで出来る事はおもに次の3つですね。

  • ネットワーク共有: 自分のUbuntu上の特定のフォルダ(例:~/Public)を、Tailscale上の他のスマホやPCからマウント(接続)できます。
  • 直接編集: ファイルを転送することなく、リモートから直接書き換えたり、動画をストリーミング再生したりできます。
  • OS標準の操作: Windowsの「エクスプローラー」やMacの「ファインダー」から、ネットワークドライブとして普通に操作できます。

Taildropとの違い

Taildropとの違いを簡単にまとめると次のようになります。

機能操作感向いている用途
Taildrop転送単発の写真やドキュメントの送受信
Taildriveフォルダを繋ぐ(共有)大量のデータ管理、リモート作業

Sambaとの違い

Sambaと比較した際のメリット・デメリットを簡潔にまとめます。

Sambaより優れている点

  • 設定が圧倒的に楽: 複雑な設定ファイル(smb.conf)の編集や、ルーターのポート開放、ファイアウォールの穴あけが一切不要です。
  • どこでも繋がる: 外出先のカフェやスマホの回線からでも、VPNを意識せずに自宅のフォルダにアクセスできます。
  • セキュリティ: Tailscaleの暗号化通信(WireGuard)に乗るため、Sambaを直接インターネットに公開するようなリスクがありません。

Sambaに劣る点

  • 速度: 常に暗号化されるため、同一LAN内(同じ家の中)での大容量転送は、生粋のSamba(非暗号化)より少し遅くなる場合があります。
  • 導入の手間: アクセスする側のデバイスすべてにTailscaleアプリが入っている必要があります(SambaはOS標準機能だけで繋げることが多い)。
  • ベータ版: まだ機能として新しいため、Sambaほどの枯れた安定性や、詳細すぎる権限設定(ユーザーごとの細かなフォルダ制限など)は不得意です。

結論

  • 家の中だけで爆速で使いたいなら:Samba
  • 設定が面倒・外出先からも使いたいなら:Taildrive

といった形でしょうか。個人的には枯れた技術であるSambaを利用したほうが良いと思いますが。
ここからは、Taildriveを使用する方法を紹介します。

Tailscaleの管理コンソールでTaildriveを有効化

まずはTailscale管理コンソールのAccess controlsページを開きます。
Access Controlメニューを開き、以下のコードを nodeAttrs セクションに追加して保存します。

"nodeAttrs": [
    {
        "target": ["autogroup:member"],
        "attr": ["drive:share", "drive:access"]
    }
]

これにより、ネットワーク内の全デバイスで共有機能が有効になります。

ビジュアルエディタで設定

ビジュアルエディタで行ったほうが失敗がなくて良いでしょう。

  1. Tailscale管理コンソール → Access controls を開く。
  2. Node attributes」タブを選択。
  3. Add node attribute」ボタンを押す。
  4. フォームで以下を設定:
    • Targets:対象デバイス(例: autogroup:member * など)
    • Attributes:ここに drive:sharedrive:access を選択
      (例: 誰でもアクセスさせたい場合は両方、共有だけ制限したい場合は分けてもOK)
    • (任意)Note:メモを書いておくと後でわかりやすい
    • IP Pools:Taildriveでは通常不要
  5. 右側の「JSON preview」で確認(自動でnodeAttrsの形になります)。
  6. Save node attribute」を押して保存。

書き込み可能(rw)にするためにポリシーを設定

書き込み許可はgrantsセクションで別途指定が必要です。

"grants": [
  {
    "src": ["*"],          // または "autogroup:member" など
    "dst": ["*"],
    "app": {
      "tailscale.com/cap/drive": [
        {
          "shares": ["*"],   // すべての共有フォルダ対象
          "access": "rw"     // ← これで書き込み可能!
        }
      ]
    }
  }
]
  • 自分だけrw、他はroにしたい場合はsrcやsharesを細かく指定してください。
  • 保存後、Save → 数秒待ってからクライアント側で再接続。

ビジュアルエディタで設定する

こちらもビジュアルエディタで設定出来ます。

  1. General access rules」タブを選択
  2. Add rule」ボタンを押す(既存のルールは触りません)。
  3. 新しいルールで以下を設定:
    • Source: *(または autogroup:member など)
    • Destination: *
    • Port and protocol: そのまま(All ports)
    • Advanced options を開く
    • App capabilities で:
      • Capability: tailscale.com/cap/drive
      • 配列に追加:
{
     "shares": ["*"],
     "access": "rw"
}

右側のJSON preview で確認すると、grants配列に2つ目のオブジェクトが追加されます。問題なければ保存します。

{
"src": ["*"],
"dst": ["*"],
"ip": ["*"],

"app": {
"tailscale.com/cap/drive": [
{
"access": "rw",
"shares": ["*"],
},
],
},
}

対象フォルダの準備

共有するフォルダを作成して書き込み可能にします。

# ディレクトリ作成(存在しなければ)
sudo mkdir -p /opt/lxd-data/taildrive

# 権限設定(rootでTaildriveサーバーが動くのでこれで十分)
sudo chown -R root:root /opt/lxd-data/taildrive
sudo chmod -R 775 /opt/lxd-data/taildrive   # 必要に応じて777にしてもOK

フォルダを共有する

Tailscaleが起動している状態で実行します。

# 共有名「taildrive」で共有(共有名は自由に付けられます)
sudo tailscale drive share taildrive /opt/lxd-data/taildrive

確認コマンド。

# 現在共有中のフォルダ一覧
tailscale drive list

解除したい場合。

sudo tailscale drive unshare taildrive

他の端末からアクセスする

iPhone / Android の場合

  1. Tailscaleアプリを開き、自分のUbuntuマシンを選択します。
  2. Browse Files」(または「Taildrive」)という項目をタップすると、中のファイルが見えます。

Windows の場合

  1. エクスプローラーのアドレスバーに以下を入力してエンター。
    \\100.100.100.100 (またはマシンのTailscale IP)
  2. 共有フォルダが表示されます。

Mac の場合

  1. Finderで Cmd + K(サーバへ接続)を押します。
  2. http://100.100.100.100:8080 を入力して接続します。

もし同じフォルダを Samba でも共有している場合、ポートや権限設定が複雑になることがあります。まずはTailscale単体で動作確認することをおすすめします。

タイトルとURLをコピーしました