Claude Code を格安VPS で常駐させた実設定ログ — 月1,100円でローカルを解放する設計

「Macを閉じても Claude Code が動き続けてほしい」——これは Claude Code を日常運用している個人開発者・副業者がほぼ全員一度は考える設計課題です。
この記事は、その「ローカルを解放する設計」を2つのアプローチで実装した実設定ログです。1つは格安VPS(月1,100円前後)にClaude Code CLIを常駐させる方法、もう1つは Claude Code on the Web(以下CCR)のscheduled routineで同じ目的を実現する方法です。
きれいにまとめた比較表ではなく、設定の順番・詰まりポイント・どちらを選んだかの判断基準を、実際に両方を運用している立場から書きます。
結論
「Macを閉じていたい」という目的に対して、現時点で現実的な選択肢は2つです。
| 設計 | 月額の目安 | 設定コスト | 得意領域 |
|---|---|---|---|
| 格安VPS + Claude Code CLI | ¥1,000〜1,500(VPS代)+ Claude API費 | 中(ssh/systemd設定が必要) | 長時間実行・大規模並列・API費用を自分でコントロールしたい |
| CCR scheduled routine | Claude Pro/Max サブスク内(追加費用ゼロ) | 低(ブラウザ+CLAUDE.md設定のみ) | 中〜短時間の定期タスク・設定工数を最小化したい |
この記事を読んでいる方が「まず動かす」ことを優先するなら、CCRのscheduled routineから始めることを勧めます。VPSは、CCRで解決できない規模感になってから足すのが現実的です。
この記事の前提
- masatoman.net で記事自動生成・SNS自動投稿を毎日運用中
- VPS常駐設計は 第5回 Claude Code ラボ で実装済み
- CCR(Claude Code on the Web)のscheduled routineはこの記事の生成を含む毎日02:00 JSTの定期実行で稼働中——つまりこの記事自体がCCR上で書かれている
- スタック: Node.js / Next.js 16 / TypeScript / Vercel
この記事はClaude Code on the Web(CCR)の scheduled routine として 2026-08-19 02:00 JST に自動起動したセッションが書いています。「CCRって本当に動くの?」という疑問への、もっとも端的な答えがこれです。
読者のよくある詰まり
Claude Code を夜間自動実行したいと思ったとき、たいていこの3つで詰まります。
- 認証切れ問題: Claudeの認証はセッション単位。VPSに入れても数時間で「ログインし直してください」になる
- systemdが難しい: Node.jsアプリをLinuxサービスとして動かす設定、久々に書くと詰まる
- 「CCRってVPS代わりになるの?」: scheduled routineが何者なのか、自分の用途に使えるのか判断できない
順番に整理します。
格安VPSにClaude Code CLIを常駐させる手順
1. VPS選定:最小スペックで十分
Claude Code CLIはNode.jsアプリです。VPSのスペック基準は次のとおりです。
- CPU: 1〜2コア(並列エージェントを走らせるなら2コア以上)
- メモリ: 2GB(Node.js + Claude Code + リポジトリのクローン)
- ストレージ: 20GB以上(ログやキャッシュが積み上がる)
- 月額目安: 日本VPSサービスで¥1,000〜1,500、Hetzner等の海外サービスで€3〜5(¥500〜900)
さくらのVPS・ConoHa VPS・Hetzner CX11など、どれでも動きます。日本リージョンにこだわりがなければHetznerがコスパ優秀です。
2. Claude Code CLIのインストールと認証設定
VPSにssh接続後、次の手順でインストールします。
# Node.js 20以上が必要(nvmで入れるのが楽)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
# Claude Code CLIをグローバルインストール
npm install -g @anthropic-ai/claude-code
# バージョン確認
claude --version
認証永続化がポイント。VPSではブラウザが使えないため、claude コマンド初回実行時に表示されるURLを手元のブラウザで開き、認証トークンをVPSに貼り付ける必要があります。これはClaude Code CLIのOAuth認証フローです。一度認証すると ~/.config/claude/ に認証情報が保存され、以降はログイン不要になります。
# 初回認証(ブラウザが開けないのでURL方式で認証)
claude auth login --print-url
# → URLが表示される。手元のブラウザでアクセスしてOAuth認証
# → 完了後にターミナルに戻ると認証済みになる
3. systemdサービス化(常駐設定)
毎日定時に特定コマンドを実行したい場合、cronかsystemd timerを使います。シンプルなcronの例を示します。
# crontabを編集
crontab -e
# 毎日午前2時(UTC: 17:00前日)に実行する例
# JSTで02:00 = UTC 17:00
0 17 * * * /home/ubuntu/.nvm/versions/node/v20.x.x/bin/claude \
--allowedTools "Bash,Read,Write,Edit" \
-p "プロンプトをここに書く" \
>> /home/ubuntu/logs/claude-run.log 2>&1
注意点は、claude コマンドのフルパスを指定することです。nvmで入れたNode.jsの場合、cronの実行環境には $PATH が引き継がれないため、フルパスが必要です。which claude で確認してください。
4. ログ監視とSlack通知
常駐設定の最大のリスクは「動いているか分からない」状態になることです。最低限、実行結果をSlackに送る仕組みを足してください。
# 実行スクリプトの末尾に追記(例)
RESULT=$(claude --allowedTools "Read,Write" -p "タスク内容" 2>&1)
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-type: application/json' \
--data "{\"text\": \"✅ Claude定期実行完了\n\`\`\`${RESULT:0:500}\`\`\`\"}"
CCR(Claude Code on the Web)のscheduled routineで代替する設計
CCRとは何か
Claude Code on the Web(CCR)は、ブラウザとGitHubリポジトリだけでClaude Codeを実行できる環境です。scheduled routineを設定すると、指定した時刻に自動でセッションが起動し、CLAUDE.mdに書かれた指示に従ってタスクを実行します。
この記事を生成しているのが、まさにそのscheduled routineです。
CCRの特徴:
- GitHub接続とClaude Pro/Maxのサブスクがあれば追加費用ゼロ
- VPSのセットアップ・認証管理・サービス監視が不要
- 実行環境はAnthropic管理のコンテナ(Fedora Linux)で毎回クリーン
- 長時間実行・並列処理はトークン上限で制限される
CCR scheduled routineの設定手順
- claude.ai/code にアクセス
- リポジトリをソースとして接続(GitHubとの認証)
- 「Schedules」からCron式で実行時刻を指定
- プロンプトにタスク内容を記述(またはCLAUDE.mdに委譲)
設定の核はプロンプト(またはCLAUDE.md)の設計です。VPSと違い、コンテナは毎回クリーンな状態から起動するため、「前回の状態をどこかに保存しておく」必要があります。masatoman.netの運用ではSupabaseのテーブル(content_briefs)をセッション間の状態管理に使っています。
CCRで詰まった場所は「Skillファイルが読めない」という制約でした。ローカルの ~/.claude/skills/ はクラウドルーチンから参照不可です。詳細は別記事「Claude Code on the WebでSkillを作っても呼ばれない」に書きました。
VPS vs CCR:どちらを選ぶか
実際に両方を使ってみての判断基準は3軸です。
軸1: API費用をどれだけコントロールしたいか
VPS + Claude Code CLI を使う場合、Claude APIを直接使います(Claude Code CLIはAPIコール)。費用は使った分だけ、上限設定も自分でコントロールできます。
CCR(Claude Pro/Max)はサブスク内のトークン枠を使います。大量のAPI呼び出しが必要な処理(数万トークン規模の並列処理など)ではCCRのトークン上限に当たる可能性があります。
→ API費用を自分で細かく管理したい → VPS有利
軸2: どれだけ「インフラ」を持ちたいか
VPSを持つということは、OS更新・ログローテーション・認証の再設定・障害対応を自分でやるということです。一度設定すれば半年以上放置できますが、何かあったときは自力で直す必要があります。
CCRはAnthropic側がインフラを管理します。「GitHub接続が切れた」「ルーティンが動かない」といった問題は設定UIで直せるものがほとんどです。
→ インフラ管理を最小化したい → CCR有利
軸3: 処理の規模と実行時間
単発で30分以内に完了するタスク(記事生成・SNS投稿・データ集計など)はCCRで問題なく動きます。
数時間かかるバッチ処理・大量ファイルの並列変換・継続的なWebソケット接続が必要な処理はVPSの方が向いています。
→ 定型タスクの自動化 → まずCCRで試す → 規模が大きくなったらVPSを足す
今日やること(3つ以内)
- まずCCRを試す: claude.ai/code でGitHubリポジトリを接続し、scheduled routineを1本設定する。最初のプロンプトは「リポジトリのREADMEを読んでファイル一覧をSlackに通知する」程度のシンプルなもので十分
- VPSが必要と感じたら: さくらのVPS・ConoHa VPS・Hetznerのいずれかで最小プランを契約し、
npm install -g @anthropic-ai/claude-codeと認証設定(claude auth login --print-url)の2ステップだけ完了させる - Slack通知を最初から入れる: VPS・CCR問わず、実行完了と失敗をSlackに飛ばす設定を最初から足す。「動いているか分からない」が常駐設計の最大のストレスになるため