チームがプライベートネットワークで OpenCode による PR レビューを導入したいが「4GB VPS で足りるか」で止まっている——3 台の Linux VPS(4/8/16GB)で同一の opencode serve + PR レビュー負荷を実行し、ピークメモリ・swap・E2E 時間を計測。**結論:API のみの軽量レビューなら 4GB ギリ可;チーム日常は 8GB が最低ライン;複数リポ並行 + MCP は 16GB。**
先週、12 人のバックエンドチームから相談がありました。社内ネットワークで OpenCode を使った PR Code Review を導入したい——GitHub Copilot のクラウドレビューは使わず、コード diff をプライベートネットワークから出したくない。インフラ担当は 4GB・8GB・16GB の VPS 見積もり 3 枚を渡し、「どれを買うべきか」と聞いてきました。
これは「OpenCode とは何か」の話ではなく、セルフホスト型レビューサーバーが実際にどれだけのリソースを食うかの問題です。同一スペックの Linux VPS 3 台(Ubuntu 22.04、2 vCPU、メモリのみ異なる)で同じ opencode serve + PR レビューワークロードを実行し、ピークメモリ・swap 回数・E2E 時間を計測しました。結論を先に:
- 4GB:個人試用 / 単一リポの軽量レビュー——動くが swap 多発
- 8GB:小規模チームの日常レビューにおける最低ライン
- 16GB:複数リポ並行 + MCP + 長時間セッション——本番推奨デフォルト
ローカルデプロイで実際に動いているもの
opencode serve は軽量 Web サービスに見えがちですが——プロセス自体は小さい(アイドル時 RSS 約 150–250MB)。しかし OpenCode が Code Review を行うと、エージェントはサーバー上で一連のローカル操作を実行します:
| 操作 | 典型的なメモリ影響 |
|---|---|
大規模リポの git clone / git diff |
200MB–1GB(リポサイズ依存) |
| LSP 言語サーバー(TypeScript、Go 等) | 300MB–800MB/インスタンス |
npm test / pytest 子プロセス |
500MB–2GB |
| MCP サーバー(filesystem、github 等) | 100MB–500MB/インスタンス |
| SQLite セッション DB(長期蓄積) | 最大 1–2GB(#16729) |
サーバー選定は opencode serve --port 4096 単体ではなく、レビュータスクが起動する子プロセスのピークを見るべきです。
2 つのデプロイモード
OpenCode は 2 つのセルフホスト入口を提供(公式ドキュメント):
opencode serve(ヘッドレス API サーバー)
OPENCODE_SERVER_PASSWORD=your-secret opencode serve \
--hostname 0.0.0.0 \
--port 4096
- OpenAPI 3.1 エンドポイントを公開(
/docで Swagger 確認) - TUI クライアントは
opencode attach http://host:4096で接続 - CI webhook トリガー、チーム統一レビューゲートウェイに最適
opencode web(ブラウザ UI)
OPENCODE_SERVER_PASSWORD=your-secret opencode web \
--hostname 0.0.0.0 \
--port 4096
- ブラウザ UI を自動起動
- エンジニアが PR diff を手動貼り付けてレビュー
- 本番環境では Nginx/Caddy リバースプロキシ + HTTPS を推奨
セキュリティ最低ライン:OPENCODE_SERVER_PASSWORD を必ず設定;認証とファイアウォールなしに 0.0.0.0 を公開しない。
テスト環境
| 項目 | 仕様 |
|---|---|
| VPS | Ubuntu 22.04 × 3、2 vCPU、SSD 40GB、メモリ 4/8/16GB |
| OpenCode | 2026.7 版、Anthropic Claude Sonnet API 接続 |
| テストリポ | ① TypeScript monorepo(pnpm、約 120 パッケージ)② Go マイクロサービス(Docker Compose 含む) |
| レビュータスク | PR シミュレーション:エージェントが diff 読取 → lint 実行 → 単体テスト → Critical/Warning/Suggestion 出力 |
| サンプリング | 各シナリオ 3 回の中央値;free -m + /proc/PID/status でピーク記録 |
3 段階メモリ横断比較
シナリオ S1:単一リポ軽量 PR(3 ファイル変更、テストなし)
| 構成 | ピークメモリ | Swap | レビュー時間 |
|---|---|---|---|
| 4GB | 2.1 GB | 軽微(~80MB) | 38s |
| 8GB | 2.1 GB | なし | 36s |
| 16GB | 2.1 GB | なし | 35s |
4GB はギリギリ——すでに swap の兆候あり。
シナリオ S2:中規模 PR + lint + 単体テスト
| 構成 | ピークメモリ | Swap | レビュー時間 |
|---|---|---|---|
| 4GB | 3.8 GB | 深刻(~1.2GB) | 2m 48s |
| 8GB | 3.6 GB | なし | 1m 12s |
| 16GB | 3.6 GB | なし | 1m 08s |
4GB は所要時間 2 倍——8GB が分水嶺。
シナリオ S3:2 リポ並行レビュー + MCP filesystem
| 構成 | ピークメモリ | Swap | レビュー時間 |
|---|---|---|---|
| 4GB | OOM Kill | — | 失敗 |
| 8GB | 7.2 GB | 頻繁(~2GB) | 4m 15s |
| 16GB | 6.8 GB | なし | 2m 02s |
8GB は動くがカクつく;16GB が快適ゾーン。
シナリオ S4:長時間セッション(48 時間連続、20+ レビュー)
| 構成 | プロセス RSS | SQLite DB | システム swap |
|---|---|---|---|
| 4GB | 1.4 GB | 890 MB | 継続 2GB+ |
| 8GB | 1.1 GB | 1.2 GB | 1.15 GB(#16729 と一致) |
| 16GB | 980 MB | 1.2 GB | なし |
長期運用後の DB 膨張は共通課題。opencode.json で retention を有効化:
{
"retention": {
"days": 30
}
}
4GB:許容できるケース
向いている:
- 個人開発者が自分の小さな PR をたまにレビュー
- クラウド API のみ、ローカルテストなし
- レビューが 2–3 倍遅くなること、たまの OOM 再起動を許容
向いていない:
- チーム共有レビューサーバー
- MCP や並行レビューが必要
- 24/7 常駐サービス
節約テクニック:4GB VPS をオンデマンド起動——PR webhook 受信時に systemctl start opencode、レビュー完了後にシャットダウン。24/7 の 16GB より安いが、コールドスタートに 15–30 秒かかる。
8GB:小規模チームの最低ライン
8GB は大多数のチームへのスタート推奨:
opencode serve+ LSP 1 つ + 単一リポ完全レビューフローを同時実行可能- ピークは通常 5–7GB、OS 用に 1–2GB 残る
- VPS 月額約 $12–24(Hetzner、Vultr、DigitalOcean 同クラス)
注意点:
- 並行レビューセッションを 1–2 に制限
- 週 1 回サービス再起動 + DB
VACUUM OPENCODE_DIAGNOSTICS=1でメモリ傾向を監視
16GB:本番デフォルト
以下のシナリオは 16GB 直行:
- 3 人以上のチームが 1 つのレビューゲートウェイを共有
- 2+ リポの並行レビュー
- MCP 有効(GitHub、Jira、filesystem)
npm test/docker composeで PR 検証が必要- 24/7 常駐、頻繁なメンテナンスを避けたい
16GB VPS 月額約 $24–48——パートタイムの人間レビュアーより桁違いに安い。
メモリ以外に見るべきこと
| 次元 | 推奨 |
|---|---|
| CPU | 2 vCPU 最低;並行レビューは 4 vCPU |
| ディスク | SSD 40GB+;SQLite DB と git clone が容量を消費 |
| ネットワーク | モデル API への HTTPS アウトバウンド;インバウンドはプライベート IP に制限 |
| OS | Ubuntu 22.04 LTS または Debian 12;Bun ランタイムは OpenCode 同梱 |
| バックアップ | ~/.local/share/opencode/ の定期バックアップ |
ハイブリッド:VPS + クラウド Mac
レビューに iOS / Xcode ビルド検証が含まれる場合、Linux VPS のメモリをいくら増やしても xcodebuild は動きません。2 つの一般的なハイブリッド構成:
- Linux VPS(8GB) で
opencode serveを動かし汎用コードレビュー - クラウド Mac mini(16GB+) で MCP または webhook 経由の iOS 専用レビュー
Claude Code メモリ選定ベンチマーク で M4 Mac mini 各段階を詳細テスト済み——OpenCode のエージェント子プロセスモデルは Claude Code と高度に類似し、結論は相互に参考になる。
5 分デプロイチェックリスト
# 1. OpenCode インストール
curl -fsSL https://opencode.ai/install | bash
# 2. API Key 設定(env-file 推奨、コマンドライン平文は避ける)
cat > /etc/opencode.env <<'EOF'
ANTHROPIC_API_KEY=sk-ant-...
OPENCODE_SERVER_PASSWORD=your-strong-password
OPENCODE_SERVER_USERNAME=review-bot
EOF
# 3. systemd サービス作成
sudo tee /etc/systemd/system/opencode-serve.service <<'EOF'
[Unit]
Description=OpenCode Review Server
After=network.target
[Service]
EnvironmentFile=/etc/opencode.env
ExecStart=/usr/local/bin/opencode serve --hostname 127.0.0.1 --port 4096
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 4. 起動
sudo systemctl enable --now opencode-serve
# 5. Nginx リバースプロキシ(任意、HTTPS 追加)
# location /opencode/ { proxy_pass http://127.0.0.1:4096/; }
段階別選定早見表
| 状況 | 推奨構成 | 月額目安 |
|---|---|---|
| 個人、たまに小 PR をレビュー | 4GB VPS(オンデマンド) | $4–8 |
| 2–5 人チーム、単一リポ | 8GB VPS | $12–24 |
| 5+ 人チーム、複数リポ並行 | 16GB VPS | $24–48 |
| iOS/Xcode レビュー含む | 16GB クラウド Mac mini | 時間課金/月額 |
| 高セキュリティ(コード不出網) | 16GB オンプレ + ローカルモデル | ハードウェア一括 |
結論
OpenCode Review ローカルデプロイのメモリボトルネックは opencode serve 自体ではなく、レビュー時にエージェントが起動する git・LSP・テスト・MCP 子プロセスにあります。4GB は動くが窮屈;8GB は小規模チームの最低ライン;16GB は本番環境の手間のかからない選択。iOS コードレビューや Xcode MCP も必要ならクラウド Mac mini を検討——Linux VPS のメモリ増設では xcodebuild は解決しません。