VPSでOpenCodeを実行する方法
OpenCodeをVPSにインストールし、非特権ユーザーでtmux実行する手順です。接続が切れてもセッションを維持し、APIキーを非公開ファイルで安全に管理します。
OpenCode の概要と今回の構成
OpenCode は、ターミナル向けに開発されたオープンソースの AI コーディングエージェントです。プロジェクトディレクトリ内で起動すると、ターミナルユーザーインターフェース(TUI)からコードを読み取り、変更を提案し、ファイルを編集してコマンドを実行します。MIT ライセンスで提供され、75 を超えるモデルプロバイダーに接続できます。2026 年半ばの時点で GitHub のスター数は約 165,000 に達しており、最もスター数の多いオープンソースのコーディングエージェントです。VPS で OpenCode を実行するには、専用の非特権ユーザーでインストールし、モデル API キーを非公開ファイルに保存して、接続が切れてもセッションが維持されるように tmux 内で起動します。このガイドでは、この順序で設定します。
名称について、混同を避けるために 1 点補足します。正式なリポジトリは anomalyco/opencode です。Anomaly チーム(以前は SST として知られていました)が管理しており、プロジェクトは以前 sst/opencode にありました。GitHub には opencode-ai/opencode という、これとは無関係の古いリポジトリも存在します。そのため、正しいプロジェクトのドキュメントを参照していることを確認してください。公式サイトは opencode.ai です。
VPS で OpenCode を実行する理由
コーディングエージェントのセッションは長時間に及びます。OpenCode はリファクタリングやテストスイートの実行に数分かけることがあり、ノートパソコン上で実行していると、蓋を閉じたり Wi-Fi 接続が切れたりしただけで、作業途中のセッションが終了します。tmux 内の VPS で実行すれば、接続を切った後もエージェントは作業を続けます。後で再接続して、実行結果を確認できます。これは tmux を使って VPS 上で Claude Code を実行する場合と同じ構成です。エージェントをノートパソコンから移す最大の利点は、この使い勝手の向上です。
2 つ目の理由は配置です。VPS はデプロイ先のコードに近い位置にあります。リポジトリ、ビルドツール、テスト用データベース、さらにステージング環境が、すでに VPS 上またはその近くに存在することがよくあります。コードを編集してテストを実行するエージェントは、テストが実際に実行されるマシン上で動かすのが最適です。また、そのマシンは自分で管理するサーバーなので、意図的に隔離した環境をエージェントに割り当てられます。次のセクションでは、その方法を説明します。
使用するツールをまだ選定中であれば、VPS 上でコーディング AI エージェントを実行するで、Aider や Goose を含む幅広い選択肢を比較しています。
OpenCode 専用のユーザーを作成する
まず、前提を明確にします。コーディングエージェントはファイルを編集し、コマンドを実行します。それが役割であり、同時にリスクでもあります。OpenCode は、タスクに必要と思われるビルド、テスト、各種 shell コマンドを実行します。モデルの判断は優れていますが、完全ではありません。エージェントが実行するアカウントは、悪意のあるコマンドが到達できる範囲の上限になります。そのため、root で実行してはいけません。また、サーバーを管理するユーザーと同じユーザーでも実行しないでください。
バックグラウンドエージェントとは異なり、OpenCode は対話的に動作します。そのため、実ユーザーの shell とホームディレクトリが必要です。
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodeOpenCode に操作させるプロジェクトは /home/opencode 配下に置き、そのユーザーで clone してください。このアカウントには sudo 権限を付与しません。エージェントが破壊的なコマンドを実行しても、このアカウントが所有するものだけが破壊されます。これは、権限のないユーザーでサービスを実行する場合と同じ考え方です。また、git リポジトリ内で作業してください。リポジトリがあれば、悪い編集も git revert に戻せるため、データの喪失を防げます。
OpenCode のインストール
プロジェクトでは、2 つのインストール方法を案内しています。インストールスクリプトを使う方法が最も簡単です。opencode ユーザーで実行すると、すべてのファイルをそのユーザーのホームディレクトリ内に収められます。
curl -fsSL https://opencode.ai/install | bashここでも、通常の curl | bash の習慣は他の場合と同じです。重要なサーバーでは、まずスクリプトをダウンロードして内容を確認し、その後で実行します。インストール後は新しいシェルを起動し、インストーラーが変更した PATH を反映させます。その後、バイナリが応答することを確認します。
opencode --versionパッケージマネージャーを使用したい場合で、すでにサーバーに Node.js がインストールされている場合は、npm を使う方法で同じツールをシステム全体にインストールできます。これにより、opencode バイナリがすべてのユーザーの PATH に追加されます。
sudo npm install -g opencode-aiどちらの方法でも確認方法は同じです。opencode --version を実行すると、バージョン番号が表示されます。スクリプトでインストールした後に command not found が表示される場合、現在のシェルが更新後の PATH をまだ読み込んでいません。opencode ユーザーでログアウトしてから、再度ログインしてください。
API key を非公開ファイルに保存する
OpenCode では、使用するモデルプロバイダーの API key が必要です。この key で料金が発生する可能性があるため、パスワードと同様に扱ってください。opencode ユーザーだけが読み取れる mode 600 のファイルを作成し、key をそこに保存します。コマンドに直接入力すると shell history に残るため、避けてください。
install -m 600 /dev/null ~/opencode.env
nano ~/opencode.envプロバイダーの環境変数をファイルに記述します。たとえば ANTHROPIC_API_KEY=...、または使用するプロバイダーに対応する変数を指定してください。OpenCode は標準のプロバイダー環境変数を読み取ります。agent を起動する前に、そのファイルを shell に読み込ませます。
set -a; source ~/opencode.env; set +aOpenCode には、対話的に設定する方法もあります。TUI 内の /connect コマンドを実行すると、プロバイダーの追加手順が表示され、認証情報がユーザーの home にある ~/.local/share/opencode/auth.json に保存されます。この方法を使う場合は、chmod 600 ~/.local/share/opencode/auth.json でファイルが非公開になっていることを確認してください。どちらの方法でも、key をコマンドラインに残さずに済みます。どちらか一方を選び、方法を統一してください。
tmux 内で OpenCode を起動する
tmux を使うことで、VPS 環境の利点を活かせます。SSH 接続が終了しても、tmux セッションは実行を続けます。セッションを起動し、プロジェクトへ移動して、エージェントを起動します。
tmux new -s opencode
cd ~/my-project
opencode画面下部にプロンプトが表示された TUI が開き、インターフェースにプロジェクト名が表示されます。平易な言葉でタスクを指示すると、ファイルの読み取りを開始し、変更案を提示します。離れるときは Ctrl-b を押してから d を押してデタッチします。ノート PC を閉じても、エージェントは作業を続けます。後で次のコマンドを実行すると再アタッチできます。
tmux attach -t opencodeセッション、会話、実行中のタスクは、すべて中断した場所から再開されます。SSH 接続が切れても状態は維持されますが、サーバーを再起動すると失われます。その場合は、同じ手順で新しい tmux セッションを起動します。2 つ目の tmux ウィンドウを開き、最初のエージェントと並行して別のエージェントを実行することもできます。ただし、OpenCode のセッションは互いに独立しています。一方、同じホスト上の Claude Code セッションは相互にメッセージを送信できます。これは、1 つの作業を 2 つに分担する別の方法です。
モデルを指定する
OpenCode はプロバイダーに依存しません。AI SDK と Models.dev カタログを使用して 75 以上のプロバイダーに対応するため、Anthropic、OpenAI、Google をはじめ、ローカルサーバーを含む多数のプロバイダーで同じツールを使用できます。手早く設定するには、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 には、Tab キーで切り替えられる 2 つのエージェントがあります。Build は完全なアクセス権を持つデフォルトのエージェントです。Plan は変更を加える機能を無効にしたエージェントです。新しいタスクは Plan で開始し、コードを読み込ませて方針を提案させます。その方針に同意してから Build に切り替えます。サーバーでは、最初に読み取り専用で確認すると、リスクを低く抑えられます。Claude Code では、同じ選択をエージェントではなく権限モードとして扱います。両方のツールを使用する場合は、デフォルトを自動モードに変更した経緯も確認してください。セッションの開始時に選択されるモードによって、監視していないエージェントが変更できる範囲が決まるためです。
正直なところ、影響範囲は限定されます
コーディングエージェントは受動的なツールではありません。そのため、この構成で防げることと、防げないことを明確にしておきます。ファイルの破損は防げます。opencode ユーザーは自身のホームディレクトリだけを所有し、それ以外は所有しないため、編集や削除はその境界内にとどまります。認証情報の露出も限定できます。鍵は mode 600 の単一ファイルに保存され、使用するアカウントも1つだけです。一方、このアカウントが正当に実行できる操作までは制限されません。プロジェクトディレクトリに本番デプロイ用の認証情報があれば、エージェントはそれを使用できます。そのため、認証情報はエージェントのアカウントから完全に分離して保管してください。
OpenClaw のようなゲートウェイエージェントとは異なり、OpenCode はデーモンではなく、対話型のターミナルプログラムです。待ち受けポートを開かず、長時間稼働するサービスも持たないため、エージェント用の systemd unit を作成する必要はなく、エージェント自体のポートをファイアウォールで許可する必要もありません。隔離の境界になるのはユーザーアカウントとプロジェクトディレクトリです。そのため、このガイドの最初のセクションが最も重要です。
それでも、周囲のサーバーには標準的な対策が必要です。コーディング用 VPS も公開サーバーであることに変わりはありません。root ログインを無効にした鍵認証のみの SSH を設定し、VPS の SSH 強化に従ってください。デフォルト拒否のファイアウォールを設定し、定期的に更新します。また、エージェントが生成した内容を確認してください。新しいコントリビューターからの pull request を読む場合と同じように、push する前に差分を確認します。結果をデプロイするのはあなた自身だからです。
最後に、ツール自体も最新に保ってください。OpenCode は頻繁にリリースされます。サーバー上でコマンドを実行するプログラムであるため、更新には重要な修正が含まれます。更新にはインストール時と同じ方法を使用します。opencode ユーザーとしてインストールスクリプトを再実行するか、npm 経由でインストールした場合は sudo npm update -g opencode-ai を実行し、その後 opencode --version で新しいバージョンを確認してください。ときどき1分ほど保守するほうが、数か月前のビルドですでに修正済みの動作を調査するよりも安上がりです。
FAQ
OpenCode は有料 API の代わりにローカルモデルを使用できますか?
はい。OpenCode は OpenAI 互換サーバーをプロバイダーとして扱うため、同じ VPS 上で Ollama が提供するモデルも使用できます。opencode.json でプロバイダーを宣言し、ローカルの baseURL と Ollama が報告するモデル名を指定します。注意点はハードウェアです。実際のコーディング作業に十分なモデルには大容量のメモリが必要になるため、ダウンロードする前にモデルに合わせてサーバーのリソースを確保してください。
ノートパソコンを閉じた後も OpenCode を実行し続けるにはどうすればよいですか?
VPS 上の tmux 内で実行してください。tmux new -s opencode で名前付きセッションを開始し、Ctrl-b に続けて d を押してデタッチします。SSH 接続が終了した後も、セッションはサーバー上で実行され続けます。tmux attach -t opencode でいつでも再接続でき、会話と実行中のタスクはそのまま残ります。サーバーを再起動するとセッションは終了するため、再起動後に新しいセッションを開始してください。
OpenCode に VPS 上でコマンドを実行させても安全ですか?
隔離すれば管理可能です。sudo 権限を持たない専用の非特権ユーザーを OpenCode に割り当て、すべての編集を元に戻せるようにプロジェクトを git で管理してください。API キーは mode 600 のファイルに保存し、Build エージェントに変更を許可する前に、Plan エージェントで読み取り専用の初回確認を行います。これにより、エージェントが変更できるのは自身のアカウントが所有する範囲だけになり、サーバーの他の部分にはアクセスできません。
OpenCode と Claude Code の違いは何ですか?
OpenCode は MIT ライセンスのオープンソースで、プロバイダーに依存せず、ローカルプロバイダーを含む 75 以上のモデルプロバイダーに 1 つのインターフェースから接続できます。Claude Code は Anthropic 独自のターミナルエージェントで、Anthropic のモデルを中心に構成されています。複数のプロバイダーで 1 つのツールを使いたい場合や、ローカルモデルを使う完全なセルフホスト構成を求める場合は OpenCode が適しています。どちらも同じ非特権ユーザー構成で、VPS 上の tmux 内で適切に実行できます。