VPS Notes
VPS

Claude Code を VPS に常駐させてスマホから操作する (Remote Control + tmux + Tailscale)

ノート PC を閉じても Claude Code のタスクが止まらない環境を VPS に作ります。公式の Remote Control でスマホから操作する方法と、Tailscale 経由の SSH + tmux で画面ごと覗く方法を、実機の手順と使い分けつきでまとめました。再起動後の自動復帰まで。

claude-codetmuxtailscaleubuntuxserver-vps

本記事にはプロモーション (アフィリエイト広告) が含まれます。

Claude Code に長いタスクを任せたまま席を離れたい。ノート PC を閉じたら止まる、というのが唯一の不満でした。解決策は単純で、Claude Code を VPS で動かして、手元のデバイスは「見る・指示する」だけにする ことです。

この記事では、月 2,000 円台の VPS に Claude Code を常駐させ、スマホから操作できるようにします。方法は 2 つあり、目的で使い分けます。

方法 できること 向いている場面
A. Remote Control (公式) Claude アプリ / claude.ai/code から会話・承認・差分確認 普段使い。ポート開放不要で一番楽
B. SSH + tmux ターミナル画面そのものを見る。Claude Code 以外も操作できる 詰まったときの調査、サーバー自体の作業

A だけで日常は回ります。B は保険です。

そもそも VPS が要るか

先に正直に書いておくと、「スマホから Claude Code を使いたい」だけなら Claude Code on the web (Anthropic がクラウドで実行する) で足ります。VPS を選ぶ理由は次のどれかに当てはまるときです。

私はこの 3 つすべてに当てはまったので VPS にしました。

この記事で使う環境

XServer VPS クラウド
4GB / NVMe 50GB で月 2,480 円 (12 か月契約なら 2,068 円)。Claude Code の常駐に n8n を同居させても 4GB で足ります。Ollama も載せるなら 8GB を。
公式サイトを見る

Remote Control を起動した状態でのメモリはこうでした。

free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       703Mi       2.3Gi       5.1Mi       1.1Gi       3.1Gi
Swap:          2.0Gi          0B       2.0Gi

初期設定直後が 444MB だったので、Tailscale と Claude Code で 260MB ほど 増えた計算です。4GB のうち 3.1GB が空いているので、n8n や Ollama を同居させる余裕は十分あります。

1. Claude Code を VPS に入れる

作業用ユーザー (この記事では deploy) で SSH し、公式のインストーラーを使います。Node.js は不要です。

curl -fsSL https://claude.ai/install.sh | bash
Setting up Claude Code...

✔ Claude Code successfully installed!

  Version: 2.1.271

  Location: ~/.local/bin/claude

⚠ Setup notes:
  ● Native installation exists but ~/.local/bin is not in your PATH. Run:

    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc

~/.local/bin に入り、PATH に追加するよう案内されるので、その通りにします。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
claude --version

この記事の時点のバージョンは 2.1.271 です。Claude Code は更新が速いので、claude update で追いかけられます。

ログイン

claude を起動して /login を実行します。VPS にはブラウザがないので、ターミナルに認証用の URL が表示されます。

claude
/login

流れはこうです。

  1. ターミナルに URL が表示される。SSH クライアントがリンクとして認識するので、クリックするか、コピーして手元の Mac のブラウザで開く
  2. ブラウザで claude.ai にログインする
  3. ログイン後に認証コードが表示されるので、それを VPS のターミナルに貼り付ける

これでログイン完了です。認証情報は VPS の ~/.claude に保存されるので、以降は聞かれません。

2. tmux で「閉じても消えない」ターミナルを作る

SSH を切ると、その上で動いていたプロセスも終わります。tmux の中で動かせば、SSH を切っても (スマホの画面を閉じても) 動き続けます。

sudo apt install -y tmux

XServer のイメージには最初から入っていました (3.4)。

作業ディレクトリを作り、claude という名前のセッションを立てます。

mkdir -p ~/workspace/test-project && cd ~/workspace/test-project
tmux new -s claude

画面の下に緑のステータスバーが出て、[claude] 0:bash* と表示されていれば tmux の中にいます。

tmux のセッションに入った状態

この中で次の手順の Remote Control を起動します。tmux から抜けるときは Ctrl-b のあと d です。戻るときは tmux attach -t claude です。

3. 方法 A: Remote Control でスマホから操作する

Remote Control は、VPS 上で動く Claude Code のセッションに、Claude アプリや claude.ai/code から接続する公式機能です。通信はすべて Anthropic の API 経由 (TLS) なので、VPS 側でポートを開ける必要がありません。ufw は初期設定のまま (SSH だけ) で動きます。

サーバーモードで起動する

tmux の中で実行します。

cd ~/workspace/test-project
claude remote-control

初回は次のように確認されるので y を入力します。

Take this session with you and pick up right where you left off on any device.
Open the Code tab in the Claude mobile app, or visit claude.ai/code in a browser.

The session keeps running on this machine. Use your other devices as a remote
control. Press Ctrl+C to stop.

Enable Remote Control? (y/n)

起動すると、接続状態とセッション URL が表示されます。

·✔︎· Connected · test-project · HEAD
    Capacity: 1/32 · New sessions will be created in the current directory
    vpsnotes-001-zesty-gizmo

Continue coding in the Claude mobile app or https://claude.ai/code?environment=env_xxxxxxxx
space to show QR code

Capacity: 1/32 とあるように、この 1 つのサーバーで最大 32 セッションを扱えます。スマホ側で新しいセッションを作ると、このディレクトリで始まります。セッション名は指定しなければ ホスト名-形容詞-名詞 の形で自動で付きます。test-project · HEAD は、作業ディレクトリが git リポジトリとして認識されていることを示していて、後述の差分表示に使われます。

QR コードはスペースキーで表示されます。

スマホから繋ぐ

Claude アプリで QR コードを読むと、その環境が登録されてセッションが開きます。私は Pixel 7a で試しました。一度読めばアプリの「Code」タブのセッション一覧に残るので、次からは QR なしで一覧から開けます。あとは普段の Claude Code と同じで、指示を送る、ツール実行の承認をする、git の差分を見る、といった操作がスマホからできます。

試しに「hello.txt を作って」と送ってみました。流れはこうです。

  1. スマホに「hello.txt を書き込みすることを許可しますか?」と承認を求める表示が出る
  2. 「このセッションでは常に許可」を選ぶ (1 回だけなら「許可」)
  3. 「hello.txt を作成しました」と返り、VPS の作業ディレクトリに Hello! と書かれたファイルができている

手元の PC で Claude Code を使うときと同じ承認の流れが、そのままスマホで動きます。「このセッションでは常に許可」を選ぶと、同じ種類の操作は以降聞かれなくなります。

PC を閉じても動くことを確かめる

この記事の目的はここです。VPS のターミナルで Ctrl-bd を押して tmux から抜け、SSH も切ります。

[detached (from session claude)]

この状態でスマホから「hello.txt に 1 行追記して」と送ると、「Hello again! の行を追記しました」と返ってきました。SSH が切れていても、tmux の中で Claude Code が動き続けています。戻るときは SSH で入って tmux attach -t claude です。

作業ディレクトリが git リポジトリなら、スマホ側の diff ペインに未コミットの差分が出ます。何をされたかを確認してから承認できるので、これが使えると安心感がまったく違います。

名前をつけて複数セッションを扱う

セッション名は --name で指定できます。指定しないと ホスト名-形容詞-名詞 のような名前が自動でつきます。プロジェクトごとに tmux のウィンドウを分けて、それぞれで claude remote-control --name <プロジェクト名> を立てておくと、スマホ側で切り替えやすいです。

落ちたときの復帰

Ctrl+C で止めた場合、約 4 時間以内なら claude remote-control を同じディレクトリで実行し直すだけで、提供していたセッションが戻ります。VPS 側のネットワークが 10 分以上切れるとサーバーモードは自動終了するので、その場合も同じコマンドで復帰します。

VPS は unattended-upgrades の自動再起動や、事業者側のメンテナンスで再起動することがあります。そのとき tmux も Claude Code も消えるので、再起動後に自動で立ち上げたいなら、cron の @reboot で tmux ごと起動しておきます。@reboot は「起動時に 1 回」を意味する cron の特殊指定で、0 4 * * * のような時刻指定の代わりに使えます。起動直後はネットワークが上がりきっていないことがあるので、sleep 20 で少し待たせています。

crontab -e
@reboot sleep 20 && tmux new -d -s claude -c /home/deploy/workspace/test-project '/home/deploy/.local/bin/claude remote-control'

cron から起動するときは ~/.bashrc が読まれず、~/.local/bin に PATH が通っていないので、claude はフルパスで書きます。行の位置はどこでも構いません。保存後に crontab -l で確認できます。

実際に sudo reboot して確かめました。1 分ほどで SSH できるようになり、tmux ls にセッションがあります。

tmux ls
claude: 1 windows (created Tue Sep 15 09:23:08 2026)

tmux attach -t claude で中を見ると、Remote Control が Connected で立ち上がっていました。初回の確認 (y/n) は一度通してあるので、cron からでも対話なしで起動します。しかも環境 ID (env_...) が再起動前と同じなので、スマホに登録した環境はそのまま使えます。QR を読み直す必要はありません。

スマホの Claude アプリに通知を出すには、アプリを一度開いてプッシュトークンを登録しておく必要があります。/config で「No mobile registered」と出る場合はそれが原因です。

4. 方法 B: SSH + tmux で画面ごと見る

Remote Control で見えるのは Claude との会話です。Claude Code 自体が固まった、VPS の様子を見たい、別のコマンドを打ちたい、という場面ではターミナルそのものが要ります。そこで、スマホから SSH で入って tmux attach します。

問題は「外出先からどうやって VPS の SSH に届くか」です。22 番をインターネットに開けたままにするのは避けたいので、Tailscale を使います。VPS とスマホを同じプライベートネットワークに入れ、SSH はその中だけで通します。VPS 側の設定は Tailscale の記事 で済ませてある前提です。あちらで SSH をインターネットから閉じてあるので、届く経路は Tailscale だけになっています。

スマホから繋ぐ

  1. スマホに Tailscale アプリを入れ、同じアカウントでログインして接続を ON にする
  2. SSH クライアントを入れる。Android には標準で入っていないので、Termius (無料版で十分) か JuiceSSH を Google Play から。iPhone なら Termius か Blink Shell
  3. ホスト vpsnotes-001、ユーザー deploy、ポート 22 で接続する。ホスト名は MagicDNS が解決してくれるので IP を覚える必要はありません。認証は Tailscale SSH が処理するので、鍵もパスワードも設定しなくて繋がります
  4. 入ったら tmux attach -t claude

Pixel 7a の Termius から入ったところです。Remote Control のサーバー画面がそのまま見えています。

Termius から tmux attach した画面。Remote Control のサーバーが動いている

Termius にはキーボードの上に Ctrl Esc shift tab などのキーが並ぶので、tmux の Ctrl-b や Claude Code の操作もスマホでできます。横向きにすると TUI が読みやすくなります。

5. おまけ: スマートグラスに映す

Even Realities の Even G2 には Terminal Mode という機能があり、Claude Code のセッション状態をレンズに表示できます。VPS で動かす場合は、ホスト側の even-terminal にスマホから届く経路が要るので、ここでも Tailscale が効きます。持っている人向けに、別の記事で扱います。

セキュリティで気をつけること

VPS はインターネットに直接置かれたマシンです。手元の PC と同じ感覚で動かすと事故になります。

かかる費用

つまずいた点

インストールから再起動後の復帰確認まで、1 時間ほどでした。Remote Control 自体は 10 分で動きます。

次にやること

まとめ

XServer VPS クラウド
この記事の検証環境。Claude Code と n8n の同居なら 4GB、Ollama も載せるなら 8GB。
公式サイトを見る