SSD Nodes Learn
ガイド Matt Connor著者 Matt Connor ・更新日 2026-07-24

OpenCodeをVPSで安全に動かす方法

GitHubで165,000 starsを獲得したOpenCodeをVPSへ導入する手順を解説します。tmuxを使用して接続断を防ぎつつ、非特権ユーザーでの実行とAPIキーの厳重な管理を行うことで、セキュリティを確保しながら長時間の大規模なコーディングタスクを自動化できます。

OpenCodeの概要とセットアップ内容

OpenCodeは、ターミナル向けに開発されたオープンソースのAIコーディングエージェントです。プロジェクトディレクトリ内で起動し、ターミナルユーザーインターフェース(TUI)を通じて、コードの読み取り、変更案の提示、ファイルの編集、コマンドの実行を行います。MITライセンスで提供されており、75以上のモデルプロバイダーに対応しています。2026年中盤時点で約165,000のGitHub starsを獲得しており、オープンソースのコーディングエージェントとして最も多くのスターを獲得しています。VPSでOpenCodeを実行するには、専用の非特権ユーザーにインストールし、モデルのAPIキーをプライベートファイルに保存した上で、接続断に備えてtmux内で起動する必要があります。本ガイドでは、この手順を順番に説明します。

名称に関する注意点があります。公式リポジトリはAnomalyチーム(旧称:SST)が管理するanomalyco/opencodeであり、以前はsst/opencodeで公開されていました。GitHubにはopencode-ai/opencodeという名前の無関係な古いリポジトリも存在するため、正しいプロジェクトのドキュメントを確認してください。公式サイトは opencode.ai です。

なぜ VPS で OpenCode を実行するのか

コーディングエージェントのセッションは長時間に及びます。OpenCode はリファクタリングやテストスイートの実行に数分間を費やすことがあります。ノートPCで実行している場合、蓋を閉じたり Wi-Fi が切断されたりすると、タスクの途中でセッションが終了してしまいます。VPS 上で tmux を使用すれば、接続を切断した後もエージェントは作業を継続します。後で再接続して、実行結果を確認できます。これは tmux を使用して VPS 上で Claude Code を実行する 場合と同じパターンであり、エージェントをローカルPCから移行する最大のメリットです。

2つ目の理由は、配置(placement)です。VPS はデプロイ先のコードに近い場所にあります。リポジトリ、ビルドツール、テスト用データベース、そして多くの場合、ステージング環境がすでにそこに、あるいは近くに存在しています。コードを編集しテストを実行するエージェントは、実際にテストが実行されるマシン上で動作させるのが最も効率的です。また、VPS は管理下にあるサーバーであるため、意図的に隔離された環境をエージェントに提供できます。これについては次のセクションで説明します。

ツールを検討中の場合は、VPS 上でコーディング AI エージェントを実行する が、Aider や Goose を含む幅広い比較を提供しています。

OpenCode専用のユーザーを作成する

基本的な考え方は以下の通りです。コーディングエージェントはファイルを編集し、コマンドを実行します。これがエージェントの役割ですが、同時にリスクでもあります。OpenCodeは、タスクに必要なビルド、テスト、およびシェルコマンドを実行します。モデルの判断は概ね正確ですが、完璧ではありません。エージェントが実行するアカウントの権限が、誤ったコマンドによる被害の最大範囲となります。そのため、rootユーザーとして実行しないでください。また、サーバーの管理者ユーザーと同じユーザーで実行しないでください。

バックグラウンドエージェントとは異なり、OpenCodeはインタラクティブに動作します。そのため、エージェントのユーザーには実際のshellとhome directoryが必要です。

sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencode

作業対象のプロジェクトは、そのユーザーによってcloneされた /home/opencode の下に配置してください。このアカウントにはsudo権限を与えないでください。エージェントが破壊的なコマンドを実行した場合でも、被害は当該アカウントが所有するファイルに限定されます。これは unprivileged userとしてサービスを実行する 場合と同じ理由です。また、必ずgit repository内で作業を行ってください。リポジトリを使用していれば、誤った編集が行われても git revert で済み、データの損失を防げます。

OpenCode のインストール

このプロジェクトには2つのインストール方法があります。インストールスクリプトを使用するのが最も速い方法です。opencode ユーザーとして実行すると、すべてのファイルはそのユーザーのホームディレクトリ内に保持されます。

curl -fsSL https://opencode.ai/install | bash

他の多くのケースと同様に、curl | bash の原則に従ってください。重要なサーバーでは、まずスクリプトをダウンロードして内容を確認してから実行してください。インストール完了後、インストーラーによる PATH の変更を反映させるために、新しいシェルを起動してください。その後、以下のコマンドでバイナリを確認します。

opencode --version

パッケージマネージャーを使用し、すでに Node.js がインストールされている場合は、npm を使用してください。この方法ではツールがシステム全体にインストールされ、すべてのユーザーの PATH に opencode バイナリが追加されます。

sudo npm install -g opencode-ai

どちらの方法でも、確認方法は同じです。opencode --version を実行してバージョン番号が表示されるか確認してください。スクリプトによるインストール後に command not found が発生した場合、現在のシェルに更新された PATH が読み込まれていません。その場合は、opencode ユーザーとしてログアウトし、再度ログインしてください。

API keyをプライベートファイルに保存する

OpenCodeを使用するには、利用するモデルプロバイダーのkeyが必要です。このkeyは課金に直結するため、パスワードと同様に扱ってください。コマンド履歴にkeyが残らないよう、直接入力する代わりに、mode 600でopencodeユーザーのみが読み取れるファイルを作成して保存します。

install -m 600 /dev/null ~/opencode.env
nano ~/opencode.env

OpenCodeは標準的なプロバイダー環境変数を読み取ります。そのため、ファイル内にはANTHROPIC_API_KEY=...、または利用するプロバイダーの同等の変数名を記述してください。エージェントを開始する前に、以下のコマンドでファイルをシェルに読み込みます。

set -a; source ~/opencode.env; set +a

OpenCodeには対話的な方法もあります。TUI内で/connectコマンドを実行すると、プロバイダーの追加手順が表示され、認証情報はユーザーのホームディレクトリにある~/.local/share/opencode/auth.jsonに保存されます。この方法を使用した場合は、chmod 600 ~/.local/share/opencode/auth.jsonでファイルがプライベートであることを確認してください。どちらの方法でも、コマンドラインにkeyを残さずに済みます。一方の方法を選択し、統一して使用してください。

tmux内でOpenCodeを開始する

tmuxを使用すると、SSH接続が切断されてもtmux sessionが継続されるため、VPSの運用が非常に効率的になります。tmuxを開始し、プロジェクトディレクトリへ移動して、agentを起動してください。

tmux new -s opencode
cd ~/my-project
opencode

画面下部にプロンプトが表示され、インターフェースにプロジェクト名が表示されていれば、TUIが正常に起動しています。タスクを自然言語で入力すると、agentがファイルの読み取りと変更案の提示を開始します。作業を中断する場合は、Ctrl-b を押した後に d を押してdetachしてください。ノートPCを閉じても、agentはバックグラウンドで動作を継続します。後で再開するには、以下のコマンドを使用します。

tmux attach -t opencode

session、会話履歴、および実行中のタスクは、中断した状態のまま保持されます。これらは接続切れには耐えられますが、サーバーの再起動には耐えられません。サーバーを再起動した後は、同様の手順で新しいtmux sessionを開始してください。

モデルを指定する

OpenCodeはプロバイダーに依存しません。AI SDKとModels.devカタログを使用しているため、Anthropic、OpenAI、Google、およびローカルサーバーを含む75以上のプロバイダーをサポートしています。最も簡単な方法は、TUI内で/connectコマンドを使用することです。これにより、プロバイダーのリスト表示と認証情報の処理が行われます。設定をコミットして再現できるようにするには、プロジェクトのルートにopencode.jsonを配置し、モデルをprovider/model-idに設定してください。

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-20250514"
}

OpenAI互換のサーバーであればプロバイダーとして宣言できるため、ローカルモデルも同じファイルで動作します。同じVPS上のOllamaでモデルを起動している場合、設定はローカルAPIを指し、モデル名はollama listがマシン上で表示するものになります。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "your-model-name": { "name": "Local coding model" } }
    }
  }
}

初日から導入すべき習慣があります。OpenCodeには2つのエージェントが搭載されており、Tabキーで切り替え可能です。デフォルトのエージェントである「Build」はフルアクセス権を持ち、「Plan」は変更機能が無効化されます。まずPlanモードで新しいタスクを開始し、コードを読み込ませてアプローチを提案させます。その計画に同意できた場合にのみ、Buildモードに切り替えてください。サーバー運用において、最初に読み取り専用のパスを実行することは、安全策として有効です。

影響範囲について

Coding agentは受動的な存在ではありません。このセットアップの範囲を明確に示します。ファイルへのダメージは発生する可能性があります。opencode ユーザーは自身のホームディレクトリのみを所有するため、編集や削除の影響はその境界で止まります。認証情報の漏洩リスクはあります。鍵は mode 600 の単一ファイルとして、単一のアカウント内に保存されます。このセットアップでは、そのアカウントが正当に行える操作までは制限できません。プロジェクトディレクトリに本番環境へのデプロイ用認証情報がある場合、agentはそれらを使用できます。そのため、認証情報はagentのアカウントから完全に排除してください。

OpenClaw のような gateway agent とは異なり、OpenCode はインタラクティブな terminal プログラムであり、daemon ではありません。リスニング port を開かず、常駐サービスも持ちません。そのため、作成すべき systemd unit も、agent 自体のために設定すべき firewall port もありません。封じ込め範囲はユーザーアカウントとプロジェクトディレクトリです。そのため、本ガイドの最初のセクションが最も重要になります。

ただし、VPS 自体には標準的な管理が必要です。Coding VPS は公開サーバーであるためです。SSH hardening on a VPS にあるように、root login を無効にした key-only SSH、default-deny 設定の firewall、および定期的なアップデートを行ってください。また、agent が生成した内容は必ず確認してください。新しいコントリビューターからの pull request を確認するように、push する前に diff を読み取ってください。最終的にデプロイするのはあなた自身だからです。

最後に、ツール自体を常に最新の状態に保ってください。OpenCode は頻繁にリリースされ、アップデートにはサーバー上でコマンドを実行するプログラムにとって重要な修正が含まれています。アップデート方法はインストール時と同じです。opencode ユーザーとして install script を再実行するか、npm でインストールした場合は sudo npm update -g opencode-ai を実行し、その後 opencode --version で新しいバージョンを確認してください。定期的なわずかなメンテナンスは、数ヶ月前のビルドですでに修正されている問題のデバッグよりも低コストで済みます。

FAQ

有料APIの代わりにローカルモデルをOpenCodeで使用できますか?

はい。OpenCodeはOpenAI互換のサーバーをプロバイダーとして扱います。そのため、同じVPS上のOllamaで提供されているモデルも使用可能です。opencode.jsonにローカルのbaseURLとOllamaが報告するモデル名を指定してください。注意点はハードウェアです。実用的なコーディングに耐えうるモデルには十分なメモリが必要です。モデルをダウンロードする前に、サーバーのスペックがモデルに見合っているか確認してください。

ノートPCを閉じてもOpenCodeを動作させ続けるにはどうすればよいですか?

VPS上のtmux内で実行してください。tmux new -s opencodeを使用して、名前付きセッションでエージェントを開始します。Ctrl-b を押した後に d を押してデタッチすると、SSH接続が終了した後もサーバー上でセッションが継続されます。tmux attach -t opencodeを使用すればいつでも再接続でき、会話や実行中のタスクは保持されます。サーバーの再起動によりセッションは終了するため、再起動後は新しいセッションを開始してください。

OpenCodeにVPS上でコマンドを実行させるのは安全ですか?

制限を設ければ管理可能です。OpenCodeにはsudo権限のない専用の非特権ユーザーを割り当ててください。すべての編集を元に戻せるよう、プロジェクトはgitで管理してください。APIキーはmode 600のファイルに保存してください。また、Build agentに変更を許可する前に、まずPlan agentを使用して読み取り専用のパスを実行させてください。これにより、エージェントが破壊できるのは自身のユーザーが所有するファイルのみに限定され、サーバーの他の部分は保護されます。

OpenCodeとClaude Codeの違いは何ですか?

OpenCodeはオープンソース(MIT)であり、プロバイダーに依存しません。一つのインターフェースを通じて、ローカルモデルを含む75以上のモデルプロバイダーに接続できます。Claude CodeはAnthropicのモデル向けに構築された、Anthropic独自のターミナルエージェントです。多くのプロバイダーを一つのツールで扱いたい場合や、ローカルモデルを用いた完全なセルフホスト環境が必要な場合は、OpenCodeが適しています。どちらも、同じ非特権ユーザーの設定を行い、VPS上のtmux内で動作させるのが最適です。