
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でやっています。その話もそのうち書きます。