Build This Now
Build This Now
クロード・コードとは何か?Claude Code のインストールClaude Code ネイティブインストーラーClaude Code で最初のプロジェクトを作る
Claude Code ベストプラクティスClaude Opus 4.7 ベストプラクティスVPS上でのClaude CodeGit 統合Claude Code レビューClaude Code WorktreesClaude CodeリモートコントロールClaude Code ChannelsClaude Code スケジュールタスクClaude Code権限管理Claude Code オートモードフィードバックループTodoワークフローClaude Code タスク管理プロジェクトテンプレートClaude Code の料金とトークン使用量
speedy_devvkoen_salo
Blog/Handbook/Workflow/Claude Code on a VPS

VPS上でのClaude Code

新規UbuntuのVPS上でClaude Codeを動かす。SSHのセキュリティ強化、Node.jsのインストール、Dockerによる分離、ヘッドレス認証、24時間365日稼働のサーバーに必要な監視コマンドを解説。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Published Feb 9, 2026Handbook hubWorkflow index

問題: Claude Codeはノートパソコン上では自然に使えるが、リモートサーバーとなると話が変わる。長時間ジョブのために24時間365日稼働させたい場合、複数のマシンから環境を持ち回ることなくアクセスしたい場合、あるいは重いAI処理をノートパソコンのバッテリーから切り離したい場合もあるだろう。

仕組みを理解すれば、VPS上でClaude Codeを動かすのはシンプルだ。必要な構成要素はSSH、Node.js、認証、そして分離のためのDocker(任意)。本ガイドでは、新規Ubuntuサーバーにそのままペーストできるコマンドとともに、全セットアップを順を追って解説する。

VPSの選択と必要なもの

Claude CodeはNode.jsの一般的なアプリより多くのリソースを必要とする。モデル自体はAnthropicのサーバー上で動くが、ローカルプロセスはコンテキスト管理、ファイル操作、ツール実行を担う。

VPSの最低スペック:

  • vCPU 2個(マルチエージェントのワークロードには4個推奨)
  • RAM 4 GB(8 GB推奨)
  • SSDストレージ 40 GB
  • Ubuntu 22.04 または 24.04 LTS

おすすめのプロバイダー: 主要なVPSホストはどれも問題なく動作する。AWS Lightsail、DigitalOcean、Hetzner、Linodeはいずれも月額10〜20ドルでこのスペックを満たすプランを提供している。Hetznerはヨーロッパの開発者にとってコストパフォーマンスが高い。AWSの中にいるなら、Lightsailが最も簡単だ。

開始前に用意するもの:

  • Anthropic APIキー(console.anthropic.comから取得)またはPro/Maxサブスクリプション
  • サーバーへのSSHアクセス
  • ドメイン名(任意、Remote Controlアクセス用)

SSHセットアップとセキュアアクセス

まっさらなUbuntuサーバーから始める。多くのプロバイダーはパスワード付きのrootとしてログインする状態で渡してくる。最初にやるべきことはセキュリティ強化だ。

# 新しいサーバーに接続
ssh root@your-server-ip
 
# rootでないユーザーを作成
adduser deploy
usermod -aG sudo deploy
 
# SSHキー認証を設定
mkdir -p /home/deploy/.ssh
# ローカルマシンから実行する公開鍵のコピー:
# ssh-copy-id deploy@your-server-ip
 
# パスワード認証を無効化
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

他のものをインストールする前に、基本的なファイアウォールを設定する:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

以降は常にrootでないユーザーとして接続する: ssh deploy@your-server-ip。

ヘッドレスサーバーへのClaude Codeインストール

Claude CodeにはNode.js 18以上が必要だ。現行LTSにはNodeSourceリポジトリを使う:

# Node.js 22 LTSをインストール
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
 
# インストールを確認
node --version  # v22.xと表示されるはず
npm --version
 
# Claude Codeをグローバルにインストール
npm install -g @anthropic-ai/claude-code
 
# Claude Codeのインストールを確認
claude --version

認証: ブラウザのないヘッドレスサーバーではAPIキーで認証する。

# AnthropicのAPIキーを設定
export ANTHROPIC_API_KEY="sk-ant-..."
 
# セッションをまたいで永続化するには、シェルのプロファイルに追加
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
source ~/.bashrc

Pro/MaxサブスクリプションでOAuth認証を使いたい場合は、claudeを一度実行して、表示された認証URLをコピーし、任意のデバイスのブラウザで開いてから、コードをターミナルに貼り付ける。

非インタラクティブモードでのClaude Code実行

サーバーで便利なのはヘッドレスモードであり、インタラクティブなチャットではない。自動化がここから始まる。

単一コマンドの実行:

# 1つのタスクを実行して終了
claude -p "Review the codebase in /opt/apps/myproject and list any security issues"
 
# 処理のための入力をパイプ
cat error-log.txt | claude -p "Analyze these errors and suggest fixes"

-pフラグ(プリントモード)はClaude Codeを非インタラクティブに実行する。プロンプトを読み込み、結果を出力して終了する。チャットUIも、入力待ちもない。

リモート管理のためにSSHと組み合わせる: VPSにホストされたClaude Codeの真価がここで発揮される。ローカルマシンから:

# ノートパソコンからサーバー上のClaude Codeを実行
ssh deploy@your-server "cd /opt/apps/myproject && claude -p 'Run the test suite and fix any failures'"

Remote Controlを使えば、スマートフォンや別のデバイスから実行中のインタラクティブセッションに飛び込むこともできる。長時間のエージェント実行を監視するときに便利だ。

Dockerデプロイのワークフロー

Dockerは分離性と再現性を加える。何か壊れたら、コンテナを削除して新しいものを起動する。汚染されたサーバーをクリーンアップする必要はない。

Claude Codeワークスペース用の**docker-compose.ymlを作成する**:

version: "3.8"
services:
  claude-workspace:
    image: node:22-slim
    container_name: claude-code
    working_dir: /workspace
    volumes:
      - ./projects:/workspace
      - claude-cache:/home/node/.claude
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
      - NODE_ENV=production
    command: >
      bash -c "
        npm install -g @anthropic-ai/claude-code &&
        tail -f /dev/null
      "
    restart: unless-stopped
 
volumes:
  claude-cache:

ワークスペースを起動して使う:

# コンテナを起動
docker compose up -d
 
# コンテナ内でClaude Codeを実行
docker exec -it claude-code claude -p "List all files in the workspace"
 
# インタラクティブセッションを開く
docker exec -it claude-code claude
 
# コンテナのログを表示
docker logs claude-code

tail -f /dev/nullの行はコンテナを生かしておくので、好きなだけexecできる。claude-cacheボリュームはコンテナ再起動をまたいでClaudeの認証とセッションデータを保持する。

プロジェクト固有のコンテナには、プロジェクトごとに別のcomposeファイルを使う。それぞれが必要なファイルだけをマウントした分離された環境を持つ。

監視とログ管理

VPS上で長時間稼働するClaude Codeセッションは目を光らせておく必要がある。午前3時にプロセスが静かにクラッシュするのは避けたい。

SSH切断後もセッションが生き続けるようtmuxまたはscreenを使う:

# 新しいtmuxセッションを開始
tmux new -s claude-session
 
# tmux内でClaude Codeを実行
cd /opt/apps/myproject
claude
 
# デタッチ: Ctrl+B, 次にD
# 後で再アタッチ:
tmux attach -t claude-session

常時稼働のClaude Codeワーカー用のsystemdサービス:

# /etc/systemd/system/claude-worker.service
[Unit]
Description=Claude Code Worker
After=network.target
 
[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/apps/myproject
Environment=ANTHROPIC_API_KEY=sk-ant-...
ExecStart=/usr/bin/claude -p "Analyze /var/log/app.log for errors since the last check and write a summary to /opt/apps/myproject/issues/latest-report.md"
Restart=always
RestartSec=3600
 
[Install]
WantedBy=multi-user.target
sudo systemctl enable claude-worker
sudo systemctl start claude-worker
 
# ステータスを確認
sudo systemctl status claude-worker
 
# ログを表示
journalctl -u claude-worker -f

よくあるエラーと実際の解決策

「EACCES: permission denied, mkdir '/usr/lib/node_modules'」

rootでNode.jsをインストールしたため、npmがグローバルインストールの書き込みアクセスを求めている。修正:

sudo chown -R $(whoami) /usr/lib/node_modules
# または、より良い方法: nvmのようなNodeバージョンマネージャーを使う

「Error: Unable to open browser for authentication」

ヘッドレスサーバーでは正常。上記のAPIキー方式を使うか、別のデバイスのブラウザに認証URLを貼り付ける。

OOM(メモリ不足)によるClaude Codeプロセスのkill

VPSのRAMが不足している。多数のサブエージェントを生成するマルチエージェントセッションはエージェントごとにメモリを消費する。解決策:

# 現在のメモリ使用量を確認
free -h
 
# スワップ領域がなければ追加
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

長時間のClaude CodeセッションでSSH接続が切断される

ローカルマシンでSSHキープアライブを設定する:

# ~/.ssh/config
Host your-server
    HostName your-server-ip
    User deploy
    ServerAliveInterval 60
    ServerAliveCountMax 3

あるいはtmux内で実行する(上記参照)。そうすればSSHが切断してもセッションは継続する。

セキュリティの考慮事項

実際の認証情報を保持するサーバー上でAIコーディングエージェントを動かすには、特別な注意が必要だ。

APIキーは絶対にコミットしない。環境変数またはシークレットマネージャーを使う:

# gitignoreされた.envファイルを使う
echo "ANTHROPIC_API_KEY=sk-ant-..." > /opt/apps/myproject/.env
 
# シェルで読み込む
set -a; source /opt/apps/myproject/.env; set +a

自動タスクではClaude Codeのファイルアクセスを制限する。--sandboxフラグでファイルシステムとネットワークアクセスを制限できる:

claude --sandbox -p "Analyze this codebase for security issues"

Fail2banでSSHへのブルートフォース攻撃をブロックする:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

サーバーを常に最新の状態に保つ:

sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y

次のステップ

VPSにホストされたClaude Codeは、ローカルマシンではできないワークフローを可能にする。24時間365日稼働、眠っている間に動くスケジュールタスク、ノートパソコンのバッテリーを消費しないマルチエージェントセッション。gitのworktreeと組み合わせてブランチごとの分離された作業を実現したり、Remote Controlでスマートフォンからセッションを操作したりすることもできる。

小さく始めよう。SSHで基本的なVPS上でClaude Codeを動かすことから始める。分離が必要になったらDockerを加える。自動化が必要になったらsystemdサービスを加える。そこから拡張していく。

Continue in Workflow

  • Claude Code ベストプラクティス
    Claude Codeで成果を出すエンジニアを分ける5つの習慣: PRD、モジュラーなCLAUDE.mdのルール、カスタムスラッシュコマンド、/clearリセット、そしてシステム進化の思考法。
  • Claude Code オートモード
    2つ目の Sonnet モデルが、Claude Code のすべてのツール呼び出しを実行前に審査します。オートモードがブロックするもの・許可するもの、そして settings.json に追加される許可ルールについて解説します。
  • Claude Code Channels
    プラグイン MCPサーバーを使って Claude Code を Telegram、Discord、iMessage に接続する方法。セットアップの手順と、接続する価値のある非同期モバイルワークフローを解説します。
  • Claude Opus 4.7 ベストプラクティス
    Claude Code で Claude Opus 4.7 を最大限に活用する: 最初のターン、effort設定、アダプティブシンキング、ツールプロンプト、サブエージェント、セッションリセット、トークン管理。
  • Claude Code レビュー
    並列 Claude エージェントがすべての PR でバグを調査し、指摘事項を相互確認し、精度の高いコメントを一件投稿する。検出内容、コスト、有効化の方法。
  • フィードバックループ
    コードを書き、テストまたは開発コマンドを実行し、出力を読み取り、壊れたものを修正し、スイートがグリーンになるまでループするプロンプトをClaude Codeに一つ渡す。

More from Handbook

  • エージェントの基礎
    Claude Codeでスペシャリストエージェントを構築する5つの方法:タスクサブエージェント、.claude/agents YAML、カスタムスラッシュコマンド、CLAUDE.mdペルソナ、パースペクティブプロンプト。
  • エージェントパターン
    オーケストレーター、ファンアウト、バリデーションチェーン、スペシャリストルーティング、プログレッシブリファインメント、ウォッチドッグ。Claude Code のサブエージェントを組み合わせる6つのオーケストレーション形状。
  • エージェントチームのベストプラクティス
    Claude Code エージェントチームの実証済みパターン。コンテキストが豊富なスポーンプロンプト、適切なサイズのタスク、ファイルオーナーシップ、デリゲートモード、v2.1.33〜v2.1.45 の修正内容。
  • エージェントチームのコントロール
    デリゲートモード、表示モード、プラン承認、ファイル境界、CLAUDE.md ルールを設定して、Claude Code のチームリードがコーディングではなくコーディネートに専念できるようにします。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

On this page

VPSの選択と必要なもの
SSHセットアップとセキュアアクセス
ヘッドレスサーバーへのClaude Codeインストール
非インタラクティブモードでのClaude Code実行
Dockerデプロイのワークフロー
監視とログ管理
よくあるエラーと実際の解決策
セキュリティの考慮事項
次のステップ

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。