【2026年版】ノートPCを閉じていてもAIが仕事を進めてくれる!「クラウド上のAIワーカー」構築術
先に結論を書きます(読む前に判断できるように)
VPSを1台借りて、tmux + systemd + Slack通知を組む。以上です。
月880円〜2,000円。「AIが動いてる間PCを開けっぱなし」問題は、これで完全に解消できます。
はっきり書いておくと、「スリープしないように設定する」とか「スクリーンセーバーをオフにする」方向で解決しようとするのは無理があります。自分もそこから入ったのでよくわかるんですが、結局PCが生きてるかどうかを監視する手段がないし、何かあったらリモートデスクトップで入り直さないといけない。それは全然「手放し」じゃない。「今PCどうなってるかな」が頭の片隅にずっと引っかかり続けます。
VPSに移してからようやく本当の意味で「あとはよろしく」ができるようになりました。この記事では、その構成を丸ごと書きます。
VPS選びの結論だけ先に出しておきます:
- まず試したい・使用時間が読めない → ConoHa VPS(時間課金)
- 月76時間以上使う・料金を固定したい → XServer VPS(830円〜固定)
- 「本当に使えるか週末2回で確認したい」 → KAGOYA(14日無料)
細かい理由は後ろで説明します。
PCを閉じたらAIも止まる——その悩みを解決する
Claude CodeやCursorを使って作業していると、「この処理が終わるまでPCを開けっぱなしにしないといけない」という状況に直面します。長時間のAIタスク、夜間バッチ処理、海外APIへの定期アクセス——すべてがPCの稼働に依存してしまいます。
正直に言うと、この問題をローカルPCで解決しようとするのは無理があります。 これはもう断言していいと思っています。
「寝る前にタスク投げて、起きたら確認すればいいか」でやってみたことがある人はわかると思うんですが、起きたら途中で止まってた、ということが普通に起きる。落ちたときのリカバリが全部手動。根本的な解決にならないんです。
ローカルPC依存の限界をまとめると:
- PCが落ちたら全部止まる。気づくのは次に開いたとき
- 「今どうなってるか」が気になって、本当の意味で手放しにならない
- 何かあったらリモートデスクトップで入り直さなきゃいけない。それは監視してるのと変わらない
VPSに「常時稼働のAI担当マシン」を持つのが、唯一まともな答えだと思っています。
クラウドAIワーカーとは何か
[あなたのPC/スマホ]
↓ SSH / Webhook / Slack
[VPS上のAIワーカー]
├─ tmux: セッション維持
├─ systemd: プロセス死活監視
├─ Pythonスクリプト: AI処理
└─ healthchecks.io: 死活監視
↓ 完了通知
[Slack / Discord]
要するに、VPSを「常時稼働のAI担当PC」として使うという発想です。
自分のイメージでは「夜間に仕事してくれるアルバイト」です。指示を出したら、あとは向こうが勝手に動いて、終わったらSlackで「できました」と報告してくれる。それがこの構成。「指示して、忘れて、通知を受け取る」。これができるようになると、AIツールの使い方が根本的に変わります。
必要なVPSスペック
| 項目 | 推奨値 | 理由 |
|---|---|---|
| CPU | 2〜4コア | AI処理の並行実行 |
| メモリ | 4〜8GB | Ollama使用時は8GB必須 |
| ストレージ | 50GB以上 | ログ・モデルの保存 |
| OS | Ubuntu 22.04 LTS | tmux/systemdが安定 |
一点だけ遠回しに言っても仕方ないので。Claude CodeやAPIベースのAIツールを動かすだけなら、GPUは絶対に不要です。
GPU付きVPSを勧めている記事をたまに見かけますが、Claude CodeはAPIを叩いてるだけなので、GPUがあっても何も速くなりません。自分の感覚では、GPU推しの記事はアフィリエイト報酬が高いプランに誘導したいだけの可能性が高い。月数万円のGPU VPSを借りる前に、本当にGPUが必要かどうか一度立ち止まって考えてください。
Ollamaでローカルモデルを動かしたい場合はメモリ8GBが必要ですが、それでもGPUではなくRAMの話です。「GPU VPSを借りないと動かない」は嘘です。
構築手順
Step 1: tmux で永続セッションを作る
SSHを切断してもプロセスが続くように、tmuxを使います。
sudo apt update && sudo apt install -y tmux
# 新しいセッションを作成(名前付き)
tmux new-session -d -s ai-worker
# セッション内でスクリプトを起動
tmux send-keys -t ai-worker "cd ~/ai-worker && source venv/bin/activate && python main.py" Enter
# セッション一覧を確認
tmux list-sessions
# セッションにアタッチ(作業状況を見たいとき)
tmux attach -t ai-worker
tmuxセッションはSSHを切っても生き続けます。VPSが再起動された場合のみ消えるため、再起動対策にはsystemdを組み合わせます。
自分がよくやるのは、tmux attach してしばらくログをぼーっと眺めてから「よし、ちゃんと動いてるな」と確認してSSHを抜けるパターンです。ログがスクロールしてるのを見るだけで妙な安心感があります。慣れたらこの確認すら不要になるんですが、最初のうちは眺めてみるのをおすすめします。
Step 2: systemd でプロセスを守る
クラッシュや再起動時にも自動復帰するよう、systemdサービスとして登録します。
sudo nano /etc/systemd/system/ai-worker.service
[Unit]
Description=Cloud AI Worker
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/ai-worker
ExecStart=/home/ubuntu/ai-worker/venv/bin/python main.py
Restart=always
RestartSec=30
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable ai-worker
sudo systemctl start ai-worker
# 状態確認
sudo systemctl status ai-worker
journalctl -u ai-worker -f
自分の結論としては、Restart=always と RestartSec=30 のこの2行が全体で一番大事です。スクリプトが何かの拍子にクラッシュしても、30秒後に自動で再起動してくれる。これがないと「起きたら止まってた」が普通に起きます。ここだけは絶対に省略しないでください。
Step 3: Webhook で外部から起動できるようにする
スマホのSlackやブラウザからAIワーカーにタスクを投げられる仕組みを作ります。
# webhook_server.py
from flask import Flask, request, jsonify
import subprocess
import threading
app = Flask(__name__)
API_KEY = "your-secret-key" # 認証キー(必ず設定)
def run_task(task_name: str, payload: dict):
"""タスクを非同期で実行"""
print(f"タスク開始: {task_name}")
# ここに実際のAI処理を記述
subprocess.run(["python", f"tasks/{task_name}.py"], capture_output=True)
@app.route("/webhook", methods=["POST"])
def webhook():
# 認証チェック
if request.headers.get("X-API-Key") != API_KEY:
return jsonify({"error": "Unauthorized"}), 401
data = request.get_json()
task = data.get("task")
if not task:
return jsonify({"error": "task is required"}), 400
# バックグラウンドで実行
thread = threading.Thread(target=run_task, args=(task, data))
thread.start()
return jsonify({"status": "accepted", "task": task})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
pip install flask
# 起動
python webhook_server.py
# 別端末からテスト
curl -X POST http://your-vps-ip:8080/webhook \
-H "Content-Type: application/json" \
-H "X-API-Key: your-secret-key" \
-d '{"task": "generate_report"}'
API_KEY の設定を絶対に忘れないでください。 your-secret-key のまま本番に出す人が一定数いますが、VPSのIPが公開状態だとそのまま外から叩けてしまいます。長めのランダム文字列を設定してください。この記事でセキュリティについてきつく言うのはここだけです。でも本当にここだけは絶対にやってください。
Step 4: healthchecks.io で死活監視を設定する
AIワーカーが正常に動いているかを外部から監視します。
# main.py に追加
import requests
HEALTHCHECK_URL = "https://hc-ping.com/your-uuid-here"
def heartbeat():
"""定期的に死活確認URLを叩く"""
try:
requests.get(HEALTHCHECK_URL, timeout=10)
except Exception as e:
print(f"Heartbeat failed: {e}")
healthchecks.ioの無料プランで、一定時間Pingがなければメールやスマホに通知が届きます。
これを入れておくと「動いてるかどうか確認しに行く」という行動が消えます。何かあれば向こうから知らせてくれるから、完全に忘れていられる。「確認しなきゃ」という頭の片隅のストレスがなくなるだけで、作業の質が変わります。これが本当の意味での手放しです。
Step 5: Slack で完了通知を送る
# notifier.py
import requests
import os
SLACK_WEBHOOK_URL = os.getenv("SLACK_WEBHOOK_URL")
def notify(message: str, status: str = "success"):
emoji = "✅" if status == "success" else "❌"
payload = {
"text": f"{emoji} AIワーカー通知\n{message}"
}
requests.post(SLACK_WEBHOOK_URL, json=payload)
# 使用例
notify("レポート生成が完了しました。Dropboxに保存済みです。")
スマホにSlackを入れておけば、外出先でも「終わりました」の通知が来ます。自分はこれが来るたびに地味に嬉しいです。「動いてくれてるな」という感覚があって、仕事してる感がある。AIに仕事を丸投げしてるのに「仕事してる感」があるのは少し不思議ですが、まあそういうものです。
運用コストの目安——1日あたり何円か
月1,000〜2,000円は「高い」とは全然思っていません。 1日あたりに換算すると33〜67円です。コーヒー1杯の半分以下で24時間働いてくれるAIワーカーが手に入ると考えれば、むしろ安いくらいです。
| 構成 | 月額 | 1日あたり | 向いているケース |
|---|---|---|---|
| ConoHa VPS 2GB | 約880円 | 約29円 | 軽いAPIコール・定期バッチ |
| XServer VPS 4GB | 約1,750円 | 約58円 | 並列処理・中規模タスク |
| XServer VPS 8GB | 約2,200円 | 約73円 | Ollama使用・重いAI処理 |
XServer vs ConoHa——正直なところどっちを選ぶべきか
と、XServerの月830円固定(2GBプラン)は無視できない選択肢です。
毎月いくらかかるか計算したくない人、「使った分だけ課金」の細かい管理が面倒な人には、固定料金のほうが精神的にラクです。自分もそのタイプなので気持ちはよくわかります。月末に「今月何時間使ったっけ」と計算するストレスがない。これは思ってるより重要です。
一方で、ConoHaの時間課金が向いているのは「まず試してみたい」「どれくらい使うか読めない」段階です。
損益分岐点で言うと、月76時間以上稼働させるならXServerの固定料金のほうが安くなります。
週換算で言うと週19時間。平日2〜3時間 + 週末少し、くらいのペースで使うなら固定のほうが得です。逆に週数時間しか使わない、という段階ならConoHaの時間課金のほうが確実に安い。
自分が思う一番損の少ない流れは:
- 最初はConoHaで試す(失敗しても損が少ない)
- 「これ毎月普通に使うな」と確信したらXServerに移行する
- Ollamaも使いたくなったらXServer 8GBプランに上げる
「本当に使えるか週末2回で確認したい」という人には、KAGOYAの14日無料お試しもありです。 14日あれば週末が2回入るので、平日は仕事で触れなくても、2回の週末でちゃんと動作確認できます。これは個人的に「よく考えられてるな」と思っている。1週間だと週末が1回しかないので、短すぎる。2週間は絶妙な設定です。
よくある質問
まとめ:あなたの使い方で選ぶ判断テーブル
VPS × tmux × systemdの3層構造で「PCを閉じてもAIが動き続ける環境」は実現できます。どのVPSを選ぶかは使い方次第なので、判断テーブルにまとめます。
| あなたの状況 | おすすめ | 月額の目安 | 判断の根拠 |
|---|---|---|---|
| まず試してみたい・使用時間が読めない | ConoHa VPS(時間課金) | 使った分だけ | 失敗しても損が少ない。試してから考えればいい |
| 月76時間以上使いそう・料金を固定したい | XServer VPS(830円〜固定) | 月830円〜 | 月いくらか計算しなくていい安心感。損益分岐は月76時間 |
| Ollamaでローカルモデルも動かしたい | XServer VPS 8GBプラン | 月2,200円前後 | メモリ8GBが必要。GPUは不要(騙されないで) |
| とにかく最安で軽いバッチだけ回したい | ConoHa VPS 2GB | 月880円・1日29円 | 軽い用途ならこれで十分。上げるのはいつでもできる |
| 「本当に使えるか」週末2回で確認したい | KAGOYA(14日無料) | 無料(14日間) | 週末が2回入るから、平日働いてても確認できる |
「PCが今どうなってるか、ずっと気になる」という状態から抜け出したいなら、VPSは必須です。 ローカルPCに依存してる限り、何かあったときにリモートデスクトップで入り直さなきゃいけない。それは「手放し」じゃなくて「目を離してるだけ」です。頭の片隅に引っかかったままなのは変わらない。
これは最終回答じゃないんだから、まずは安いプランで試してみてください。月880円で始めて、足りなければプランを上げればいい。構成が気に入らなければ別のVPSに乗り換えればいい。最初から完璧を目指さなくていいです。それだけの話です。