メインコンテンツへスキップ
見出し画像

Tailscaleで自宅GPUを「持ち歩ける」ようにしたら、画像生成がタダになった

    一行でいうと:自宅のWindows PC(RTX 5070 / WSL2)に、MacからTailscale経由でどこからでもSSHできるようにしました。

    これで何が嬉しいかというと、

    • 画像生成がタダで使い放題(月額サブスクにもAPI従量課金にも払わない。電気代だけ)

    • ローカルLLMも自宅GPUで回せる。外出先のカフェからでも

    • Macは身軽なまま。重い処理は全部自宅の「工場」に投げる

    クラウドGPUを借りるか迷っている人、画像生成サービスの月額をなんとなく払い続けている人には、けっこう効く構成だと思います。


    実際どれくらい使えているか

    一番使っているのは画像生成です。自宅のWSL2でComfyUIを常駐させて、MacからSSH越しにジョブを投げています。

    体感はこんな感じ。

    • SDXLの1344x768で、1枚10〜20秒(RTX 5070)

    • サムネ用に3案出して選ぶ、みたいな使い方が気軽にできる

    • このnoteに載せているサムネも全部これで生成

    画像

    Claude Codeと組み合わせると「こんな画像作って」と日本語で頼む→プロンプト変換→自宅GPUで生成→Macに保存、まで自動で流れます。生成し放題なのに請求が来ないのは、一度体験すると戻れません。


    なぜやったか

    手元のMacは持ち運べるけどGPUが非力。ローカルLLMも画像生成もつらい。

    かといってクラウドGPU / VPSは常時起動だと高い。

    自宅にはRTX 5070を積んだWSL2マシンがある。これを外からも使えれば最強では?

    そこでTailscaleでつなぎました。


    Tailscaleとは

    一言でいうと:離れた場所にある自分のPC同士に、インターネット越しで「専用のトンネル」を勝手に掘ってくれるサービス。トンネルでつながった端末は、まるで同じ家のLANにいるかのように直接やり取りできます。技術的にはWireGuardベースのメッシュ型VPN。

    仕組みのキモだけ押さえると:

    • WireGuardの上に作られている … 暗号化は実績あるWireGuardが担当。軽くて速い

    • トンネルは端末同士で直結(P2P) … 中央サーバーは「相手探しと鍵交換」だけ。通信データはサーバーを経由せず端末間を直接流れる(直結できないときだけDERPという暗号リレー経由)

    • NAT越えを自動でやる … ルーターのポート開放も固定IPも不要。生のWireGuardで一番つらい部分を全部やってくれる

    • 既存アカウントでログインするだけ … Google / GitHubなどでサインインした端末同士が自動でつながる

    • 各端末に変わらない専用IP … `100.x.y.z` の固定IPが振られる。MagicDNSなら名前でもアクセス可

    • 個人利用なら無料プランで十分

    画像

    会社でよくある「VPNサーバーに全員ぶら下がる」型と違って端末同士が直接つながるので、遅くなりにくいのもポイントです。


    構成

    画像
    • Tailscaleがつながると、WSL2に固定のTailscale IP(`100.x.y.z`)が振られる。そこへ `ssh` するだけ

    • tmuxを両側で使うので、回線が切れてもセッションは生きたまま。電車で切れても、着いたら `tmux a` で続きから


    セットアップ手順

    ⚠️ 一番大事な前提:MacとWSL2は「同じTailscaleアカウント」でログインすること。 別々のアカウントだと別々のTailnetになり、お互いが見えません。最後に `tailscale status` でお互いが一覧に出ていれば成功です。

    ① 自宅PC(WSL2)側の準備 — 「つながれる側」を作る

    ここは全部、🏠 自宅PCのWSL2ターミナルでの作業です(この時点ではまだ外から入れないので、自宅で直接触ります)。

    手順1: Tailscaleをインストールする
    やること: この端末を自分の仮想ネットワーク(Tailnet)に参加できるようにする準備。

    curl -fsSL https://tailscale.com/install.sh | sh

    手順2: 常駐デーモンを起動する
    やること: トンネルを維持する本体プロセスを常時動かす。これが動いていないと外から見えません。

    # systemd を有効にした WSL2 なら
    sudo systemctl enable --now tailscaled
    # systemd なしなら: sudo tailscaled &

    手順3: 自分のアカウントでログインする
    やること: この端末を「自分のTailnet」に登録する。表示されるURLは、WSL2にブラウザがないので 💻 Macやスマホのブラウザで開いてOK。Google / GitHubなどでログインします。

    sudo tailscale up

    手順4: SSHの受け口を用意する
    やること: あとでMacから `ssh` で入ってくるための入り口を開けておく。

    sudo apt install -y openssh-server && sudo service ssh start
    # または Tailscale 組み込み SSH(鍵管理不要): sudo tailscale up --ssh

    手順5: この端末のTailscale IPを控える
    やること: Macから接続するときの「宛先」を確認。`100.x.y.z` 形式のIPが出ます。

    tailscale ip -4

    ② Mac側の準備 — 「つなぐ側」を作る

    ここは全部、💻 手元のMacのターミナルでの作業です。

    手順6: Tailscaleをインストールして起動する
    やること: Mac側も同じTailnetに参加させる。起動したらメニューバーのアイコンからログイン。★WSL2と同じアカウントを選ぶのがすべての肝です(違うアカウントだと永遠につながりません)。

    brew install --cask tailscale   # App Store 版でも可
    open -a Tailscale

    手順7: つながったか確認する
    やること: 同じTailnetにWSL2が見えているかチェック。一覧に出ていれば準備完了。

    alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale"
    tailscale status

    ③ 接続する

    ここからは 💻 Macから。自宅にいなくても、カフェでも電車でもつながります。

    ssh smith@100.x.y.z    # 手順5で控えたIP。MagicDNS なら ssh smith@wsl2 でもOK

    `~/.ssh/config` に書いておくと毎回ラク:

    Host wsl2
      HostName 100.x.y.z
      User smith

    これで `ssh wsl2` 一発。あとは `tmux a` でいつものセッションに戻るだけ。ComfyUIのGUIを見たいときはポートフォワード(`ssh -L 8188:localhost:8188 wsl2`)でMacのブラウザから開けます。


    つまずいているところ:コピペ(yank)がMacまで届かない

    WSL2側のtmuxで `y` してコピーしても、手元のMacで ⌘V しても貼られません。tmuxのコピーはリモート側のバッファに入るだけで、SSH越しにMacのクリップボードまでは渡らないんですよね。

    方向性としてはOSC52(`set -g set-clipboard on` + 対応ターミナル)か `pbcopy` への橋渡し。ここはまだ運用でカバー中です。解決したら追記します。


    まとめ

    Tailscaleを一枚かませるだけで、自宅のGPUマシンが「持ち歩ける開発リソース」になりました。

    • クラウドGPUを借りるより安い(というか0円)

    • 画像生成もローカルLLMも使い放題

    • Macは身軽なまま

    同じ悩みの人にはかなりおすすめです。

    ちなみにこの環境でガンガン画像を作りながら開発しているのが「だれでもLP」というLP作成サービスです。テンプレートを選んで入力するだけでLPが作れて、無料で1ページ作れます。よかったらこちらもどうぞ。

    次回予告:このマシン同士のファイル共有はSyncthingでやっています。その話もそのうち書きます。

     
     
    Web開発のお仕事をやっています 開発日記や制作物の宣伝を投稿していきます

    あなたへのおすすめ