SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor

VPSでOpenCodeを実行する方法

OpenCodeをVPSにインストールし、非特権ユーザーでtmux実行する手順です。接続が切れてもセッションを維持し、APIキーを非公開ファイルで安全に管理します。

OpenCode とは何か、何を設定するのか

OpenCode は、ターミナル向けに作られたオープンソースの AI コーディングエージェントです。プロジェクトディレクトリ内で起動すると、ターミナルユーザーインターフェース(TUI)からコードを読み取り、変更を提案し、ファイルを編集してコマンドを実行します。MIT ライセンスで提供され、75 以上のモデルプロバイダーに接続できます。2026 年 10 月時点で GitHub のスター数は約 219,000 で、最も多くのスターを獲得しているオープンソースのコーディングエージェントです。VPS で OpenCode を実行するには、専用の非特権ユーザーでインストールし、モデル API キーを非公開ファイルに保存して、接続が切れてもセッションが維持されるよう tmux 内で起動します。このガイドでは、その順番で設定します。

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

VPS で OpenCode を実行する理由

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

2 つ目の理由は配置です。VPS はデプロイ先のコードに近い位置にあります。リポジトリ、ビルドツール、テスト用データベース、さらにステージング環境が、すでに VPS 上またはその近くに存在することがよくあります。コードを編集してテストを実行するエージェントは、テストが実際に実行されるマシン上で動かすのが最適です。また、そのマシンは自分で管理するサーバーなので、意図的に隔離した環境をエージェントに割り当てられます。次のセクションでは、その方法を説明します。

使用するツールをまだ選定中であれば、VPS 上でコーディング AI エージェントを実行するで、Aider や Goose を含む幅広い選択肢を比較しています。

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

まず、前提を明確にします。コーディングエージェントはファイルを編集し、コマンドを実行します。それが役割であり、リスクでもあります。OpenCode はビルド、テスト、およびタスクに必要と思われるシェルコマンドを実行します。モデルの判断は優れていますが、完全ではありません。エージェントが実行するアカウントは、悪意のあるコマンドが到達できる範囲の上限になります。そのため、root として実行せず、サーバーを管理するユーザーと同じユーザーとしても実行しないでください。

バックグラウンドエージェントとは異なり、OpenCode は対話的に動作します。そのため、実行ユーザーには通常のシェルとホームディレクトリが必要です。

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

OpenCode に作業させるプロジェクトは /home/opencode 配下に置き、そのユーザーで clone します。このアカウントには sudo 権限を与えないでください。エージェントが破壊的なコマンドを実行しても、このアカウントが所有するものだけが破壊されます。これは、サービスを非特権ユーザーで実行する場合と同じ考え方です。作業は git リポジトリ内で行い、エージェントにタスクを渡す前に commit してください。そうすれば、編集内容に問題があっても、失われるのではなく git revert または git restore で復元できます。commit していない変更は保護されません。

OpenCode のインストール

プロジェクトでは複数のインストール方法が説明されています。そのうち 2 つはサーバーに適しています。インストールスクリプトを使う方法が最も簡単です。opencode ユーザーとして実行すれば、すべてがそのユーザーのホームディレクトリ内に収まります。

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

ここでも通常の curl | bash の原則が適用されます。重要なサーバーでは、最初にスクリプトをダウンロードして内容を確認し、その後で実行してください。インストール後は新しいシェルを起動し、インストーラーが変更した PATH を反映させます。その後、バイナリが応答することを確認します。

opencode --version

パッケージマネージャーを使いたい場合で、サーバーに Node.js がすでにインストールされているなら、npm を使う方法で同じツールを npm のグローバルプレフィックスにインストールできます。

sudo npm install -g opencode-ai

システム全体に Node.js をインストールしている場合、そのプレフィックスは通常 /usr/local または /usr です。これらの bin ディレクトリは、すべてのユーザーの PATH に含まれています。バージョンマネージャーやカスタムプレフィックスを使う場合、バイナリの配置先は異なります。opencode を opencode ユーザーで見つける必要がある場合は、先に npm prefix -g を実行してください。

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

どちらのコマンドでも OpenCode 1.x 系がインストールされます。この系統は現在もリリースが提供されており、2026 年 10 月 16 日時点では 1.19.3 です。このガイドではこの系統を扱います。OpenCode 2 は別のインストールとして提供されています。https://opencode.ai/v2/install または npm パッケージ @opencode/cli からインストールできます。動作は異なります。ユーザーアカウントごとに共有バックグラウンドサーバーが 1 つ起動し、セッション、権限、ツール実行を管理します。ターミナルはそのサーバーに接続します。移行ガイドでは、2 をインストールする前にパッケージ管理された 1.x のインストールを削除するよう説明しています。どちらも 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 +a

OpenCode には、対話的に設定する方法もあります。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-5-5"
}

プロバイダーが現在も提供しているモデルを選択してください。Anthropic は 15 June 2026 に 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 directory 外のファイルを編集することを拒否します。ただし、Plan は完全な読み取り専用ではありません。shell command は実行でき、shell command によってファイルが変更される可能性があるためです。新しいタスクを Plan で開始し、コードを読み取らせて方針を提案させます。方針に同意してから Build に切り替えてください。最初の調査を確実に読み取り専用にしたい場合は、opencode.json で Plan の編集と shell command を拒否します。OpenCode では deny がアクションをブロックし、ask は承認を求めるだけだからです。

{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "plan": {
      "permission": { "edit": "deny", "bash": "deny" }
    }
  }
}

サーバーでは、何も変更できない状態で最初の調査を行うと、低コストでリスクを抑えられます。Claude Code は同じ判断をエージェントではなく権限モードとして扱います。両方のツールを使用する場合は、デフォルトを auto mode に変更する説明を読む価値があります。セッション開始時のモードによって、監視していないエージェントが変更できる範囲が決まるためです。

影響範囲を正しく把握する

コーディングエージェントは受動的なものではありません。この構成で隔離できるものと、できないものを明確に理解してください。ファイルへの変更や削除は隔離できます。opencode ユーザーは自身のホームディレクトリだけを所有し、それ以外は所有しないため、変更や削除はその境界で止まります。認証情報の公開も範囲を限定できます。鍵は、1 つのアカウント内にある mode 600 の 1 ファイルに保存します。ただし、そのアカウントが正当に実行できる操作までは制限されません。プロジェクトディレクトリに本番デプロイ用の認証情報がある場合、エージェントはそれを使用できます。そのため、認証情報はエージェントのアカウントから完全に分離してください。

OpenClaw のようなゲートウェイエージェントとは異なり、OpenCode 1.x はデーモンではなく対話型のターミナルプログラムです。デフォルトでは待ち受けポートを開きません。TUI が待ち受けるのは --port、--hostname、または --mdns フラグを指定した場合だけです。また、長時間稼働するサービスもないため、エージェント用の systemd unit を作成する必要はなく、エージェント自体のポートをファイアウォールで制限する必要もありません。OpenCode 2 では共有バックグラウンドサーバーが導入され、この点が変わります。移行前に必ず再確認してください。隔離の境界になるのはユーザーアカウントとプロジェクトディレクトリです。そのため、このガイドの最初のセクションが最も重要です。

ただし、サーバー全体には標準的な対策が必要です。コーディング用 VPS も公開サーバーだからです。VPS の SSH 強化と同様に、鍵認証のみを使用して root ログインを無効にし、デフォルト拒否のファイアウォールを設定し、定期的に更新してください。エージェントが生成した内容も確認します。新しいコントリビューターからの pull request を確認するのと同じように、push する前に差分を読んでください。結果をデプロイするのはあなた自身だからです。

最後に、ツール自体を最新に保ってください。OpenCode は頻繁にリリースされます。サーバー上でコマンドを実行するプログラムでは、更新に含まれる修正が重要です。更新にはインストール時と同じ方法を使用します。opencode ユーザーとしてインストールスクリプトを再実行するか、npm 経由でインストールした場合は sudo npm update -g opencode-ai を実行し、その後 opencode --version で新しいバージョンを確認します。どちらの方法でも 1.x 系列が維持されます。OpenCode 2 への移行は別途必要です。ときどき 1 分だけ保守するほうが、数か月前のビルドですでに修正された問題を調査するより安上がりです。

FAQ

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

はい。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 で管理し、各タスクの前に commit して不適切な編集をロールバックできるようにします。API key は mode 600 のファイルに保存します。また、変更を許可する前に Plan agent で初回確認を行います。編集と shell コマンドを deny に設定すれば、その確認を厳密に読み取り専用で実行できます。これにより、エージェントが変更できるのは自身のアカウントが所有する範囲だけになり、サーバーの他の部分にはアクセスできません。

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

OpenCode はオープンソース(MIT)で、プロバイダーに依存せず、1 つのインターフェースからローカルプロバイダーを含む 75 以上のモデルプロバイダーに接続できます。Claude Code は Anthropic 独自のターミナルエージェントで、Anthropic のモデルを中心に構築されています。複数のプロバイダーで 1 つのツールを使いたい場合や、ローカルモデルを使用する完全なセルフホスト構成を求める場合は、OpenCode が適しています。どちらも、同じ非特権ユーザー構成で VPS 上の tmux 内で問題なく実行できます。