🌍 English | Español | Français | Italiano | Português | Deutsch | Русский | हिन्दी | 中文 | 日本語 | 한국어
OpenCode がコンテナ内で動作し、すべてが事前にインストール済み。50以上の開発ツール、10以上のAIプロバイダー、ヘッドレスブラウザ、永続状態。どのマシンにでも展開して、止めたところから正確に再開できます。
Claude サブスクリプションで動作します。 Claude Auth プラグインを有効にして、既存の Claude Max/Pro プランを使用してください。別の API キーは不要です。
マルチエージェントオーケストレーション内蔵。 oh-my-openagent を有効にして、OpenCode を並列実行による協調エージェントシステムに変えましょう。
環境の復元に1時間かけるつもりだったはずです。それとも docker compose up を実行するだけにしますか。
セルフホストしたくない場合は? HolyCode Cloud が登場します。同じツール、ゼロセットアップ。アーリーアクセスは無料です。
おなじみの流れです。開発環境を完璧に整えます。そして別のマシンに移ります。あるいはコンテナを再構築します。あるいはシステムが今日で終わりと判断します。
突然、ツールを再インストールしています。設定ファイルを探しています。APIキーを再入力しています。なぜ ripgrep が PATH にないのか首をかしげています。Docker がコンテナに 64MB の共有メモリしか与えないから Chromium が起動しない理由を調べています。次に Xvfb が設定されていません。次にコンテナ内の UID がホストと一致せず、あちこちで permission denied になります。
HolyCode は、これらすべての問題を解決した上で構築したコンテナです。
OpenCode をラップしています。OpenCode は組み込み Web UI を持つ AI コーディングエージェントです。設定、セッション、MCP 設定、プラグイン、ツール履歴はすべてコンテナ外のバインドマウントに保存されます。再構築、更新、新しいマシンへの移行。状態はすぐに戻ります。
HolyClaude と同じコンセプトですが、Claude Code の代わりに OpenCode をラップしています。そして重要な点として、OpenCode は特定のプロバイダーに縛られていません。Anthropic、OpenAI、Google Gemini、Groq、AWS Bedrock、Azure OpenAI に向けることができます。同じコンテナで、モデルはあなたが選びます。
30以上の開発ツール、2つの言語ランタイム、ヘッドレスブラウザスタック、プロセス監視。すべて配線済み、初回起動から使用可能。私は自分のサーバーで動かし続けています。すべてのバグはすでに踏んで、診断して、修正済みです。
プルします。実行します。ブラウザを開きます。構築します。
| セクション | |
|---|---|
| 1 | クイックスタート |
| 2 | HolyCode Cloud |
| 3 | プラットフォームサポート |
| 4 | なぜ HolyCode か |
| 5 | プロバイダーサポート |
| 6 | Docker Compose - クイック |
| 7 | Docker Compose - フル |
| 8 | 環境変数 |
| 9 | 中身は何か |
| 10 | バンドルサービス |
| 11 | アーキテクチャ |
| 12 | CLI の使い方 |
| 13 | データと永続化 |
| 14 | パーミッション |
| 15 | アップグレード |
| 16 | トラブルシューティング |
| 17 | ローカルビルド |
| 18 | コントリビュート |
| 19 | サポート |
| 20 | ライセンス |
ステップ 1. イメージをプルします。
docker pull coderluii/holycode:latestステップ 2. docker-compose.yaml を作成します。
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g
ports:
- "4096:4096"
volumes:
- ./data/opencode:/home/opencode
- ./local-cache/opencode:/home/opencode/.cache/opencode
- ./workspace:/workspace
environment:
- PUID=1000
- PGID=1000
- ANTHROPIC_API_KEY=your-key-here
ステップ 3. 起動します。
docker compose up -dhttp://localhost:4096 を開きます。準備完了です。
同梱の
docker-compose.yamlは${ANTHROPIC_API_KEY}構文を使用しており、シェル環境または.envファイルから読み込みます。.env.exampleを.envにコピーして API キーを入力してください。
セルフホストしたくない場合は?HolyCode のマネージドバージョンを構築中です。
同じ 30以上のツール。同じ 10以上のプロバイダー。同じ永続状態。Docker 不要。ターミナル不要。ブラウザを開くだけでコーディングできます。
Cloud で得られるもの:
- ゼロセットアップ。Docker も設定ファイルもターミナルコマンドも不要。
- あらゆるデバイスで動作。ラップトップ、タブレット、スマートフォン。ブラウザを開くだけ。
- 常に最新。最新の OpenCode、最新のツール。私たちが管理します。
- 状態がついてきます。セッション、設定、MCP 設定が使用間で保存されます。
アーリーアクセスは無料。 クレジットカード不要。
| プラットフォーム | アーキテクチャ | ステータス |
|---|---|---|
| Linux | amd64 | サポート済み |
| Linux | arm64 | サポート済み |
| macOS (Docker Desktop) | amd64 / arm64 | サポート済み |
| Windows (WSL2) | amd64 | サポート済み |
毎回同じセットアップを繰り返すことに疲れたので作りました。OpenCode のインストール、ヘッドレスブラウザの配線、パーミッション問題の修正、プロセス監視のデバッグ。毎。回。
だからすべてをこなすコンテナを作りました。そして可能なすべてのバグを踏んだので、あなたが踏まなくて済むようになっています。
| HolyCode | 自分でやる場合 | |
|---|---|---|
| 最初の作業セッションまでの時間 | 2分以内 | 30〜60分 |
| Chromium + Xvfb ヘッドレスブラウザ | 事前設定済み | 自分で調査、インストール、デバッグ |
| 開発ツール一式(ripgrep、fzf、lazygit など) | 事前インストール済み | 一つずつ探してインストール |
| 再構築をまたいだ状態の永続化 | バインドマウントで自動 | 手動のバインドマウント、設定ミスしやすい |
| UID/GID ファイルパーミッションのリマッピング | 組み込み PUID/PGID | Dockerfile での chmod ハック |
| マルチアーキテクチャサポート | amd64 + arm64 をそのまま | 自分でビルドしてプッシュ |
| アップデート | docker pull + compose up |
スクラッチから再構築、何も壊れないことを祈る |
OpenCode はプロバイダーに依存しません。使用する API キーを設定するだけです。
| プロバイダー | 環境変数 | 備考 |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY |
Claude モデル |
| OpenAI | OPENAI_API_KEY |
GPT モデル |
| Google Gemini | GEMINI_API_KEY |
Gemini モデル |
| Groq | GROQ_API_KEY |
高速推論 |
| AWS Bedrock | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION |
3つすべて設定 |
| Azure OpenAI | AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, AZURE_OPENAI_API_VERSION |
3つすべて設定 |
| GitHub | GITHUB_TOKEN |
OpenAI 互換エンドポイント経由の GitHub Copilot |
| Vertex AI | (OpenCode 経由で設定) | Google Vertex AI モデル |
| GitHub Models | (OpenCode 経由で設定) | GitHub ホスティングのモデル |
| Ollama | (OpenCode 経由で設定) | Ollama 経由のローカルモデル |
実際に使用するプロバイダーのキーだけ設定すればOKです。それ以外はオプションで無視されます。
Vertex AI、GitHub Models、Ollama は OpenCode のプロバイダーシステムで設定します。コンテナ内で opencode providers login を実行してください。
最小限の設定。コピーして、キーを入れて、実行するだけ。
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g # Required for Chromium stability
ports:
- "4096:4096" # OpenCode web UI
volumes:
- ./data/opencode:/home/opencode
- ./local-cache/opencode:/home/opencode/.cache/opencode
- ./workspace:/workspace # Your project files
environment:
- PUID=1000
- PGID=1000
- ANTHROPIC_API_KEY=your-key-here # Or swap for any provider key
すべてのオプションが文書化されています。docker-compose.yaml にコピーして必要なものをコメント解除してください。
# HolyCode - Full Configuration Reference
# Copy this file to docker-compose.yaml and customize.
# All options documented. Uncomment what you need.
services:
holycode:
image: coderluii/holycode:latest
container_name: holycode
restart: unless-stopped
shm_size: 2g
ports:
- "4096:4096" # OpenCode web UI
volumes:
# --- Persistent state (all OpenCode data under home dir) ---
- ./data/opencode:/home/opencode # Config, sessions, plugins, all XDG paths
# --- Cache isolation (keeps plugin cache on local disk, avoids CIFS/SMB symlink issues) ---
- ./local-cache/opencode:/home/opencode/.cache/opencode
# --- Workspace ---
- ./workspace:/workspace # Your project files
environment:
# --- Container user ---
- PUID=1000 # Match your host UID for file permissions
- PGID=1000 # Match your host GID for file permissions
# --- Git identity (used on first boot) ---
# - GIT_USER_NAME=Your Name
# - GIT_USER_EMAIL=you@example.com
# --- AI provider API keys (add the ones you use) ---
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
# - OPENAI_API_KEY=${OPENAI_API_KEY:-}
# - GEMINI_API_KEY=${GEMINI_API_KEY:-}
# - GROQ_API_KEY=${GROQ_API_KEY:-}
# - GITHUB_TOKEN=${GITHUB_TOKEN:-}
# --- AWS Bedrock (uncomment all 3 for Bedrock) ---
# - AWS_ACCESS_KEY_ID=
# - AWS_SECRET_ACCESS_KEY=
# - AWS_REGION=us-east-1
# --- Azure OpenAI (uncomment all 3 for Azure) ---
# - AZURE_OPENAI_ENDPOINT=
# - AZURE_OPENAI_API_KEY=
# - AZURE_OPENAI_API_VERSION=
# --- OpenCode behavior (set by default in image, override if needed) ---
# - OPENCODE_DISABLE_AUTOUPDATE=true
# - OPENCODE_DISABLE_TERMINAL_TITLE=true
# - OPENCODE_MODEL=claude-sonnet-4-6
# - OPENCODE_PERMISSION=auto
# - OPENCODE_DISABLE_LSP_DOWNLOAD=true
# - OPENCODE_DISABLE_AUTOCOMPACT=true
# - OPENCODE_ENABLE_EXA=true
# --- Web UI Security (basic auth for opencode web) ---
# - OPENCODE_SERVER_PASSWORD=your-password
# - OPENCODE_SERVER_USERNAME=opencode
# --- Claude Auth (use Claude subscription instead of API key) ---
# Reads credentials from ./data/opencode/.claude/.credentials.json
# NOTE: May violate Anthropic TOS. Use at your own risk.
# Toggle on/off with docker compose down && up -d
# - ENABLE_CLAUDE_AUTH=true
# --- oh-my-openagent (multi-agent orchestration for OpenCode) ---
# Installs automatically on first boot when enabled
# Toggle on/off with docker compose down && up -d
# - ENABLE_OH_MY_OPENAGENT=true
| 変数 | デフォルト | 目的 |
|---|---|---|
PUID |
1000 |
コンテナユーザーUID、正しいファイル所有権のためホストと一致させる |
PGID |
1000 |
コンテナユーザーGID、正しいファイル所有権のためホストと一致させる |
GIT_USER_NAME |
HolyCode User |
初回起動時に設定される Git ID |
GIT_USER_EMAIL |
noreply@holycode.local |
初回起動時に設定される Git ID |
ANTHROPIC_API_KEY |
(なし) | Anthropic Claude |
OPENAI_API_KEY |
(なし) | OpenAI GPT モデル |
GEMINI_API_KEY |
(なし) | Google Gemini |
GROQ_API_KEY |
(なし) | Groq 高速推論 |
GITHUB_TOKEN |
(なし) | GitHub CLI 認証と Copilot |
AWS_ACCESS_KEY_ID |
(なし) | AWS Bedrock - 3つの AWS 変数をすべて設定 |
AWS_SECRET_ACCESS_KEY |
(なし) | AWS Bedrock |
AWS_REGION |
(なし) | AWS Bedrock リージョン(例:us-east-1) |
AZURE_OPENAI_ENDPOINT |
(なし) | Azure OpenAI - 3つの Azure 変数をすべて設定 |
AZURE_OPENAI_API_KEY |
(なし) | Azure OpenAI |
AZURE_OPENAI_API_VERSION |
(なし) | Azure OpenAI API バージョン |
OPENCODE_DISABLE_AUTOUPDATE |
true |
OpenCode がコンテナ内で自己更新するのを防止 |
OPENCODE_DISABLE_TERMINAL_TITLE |
true |
OpenCode がターミナルタイトルを変更するのを防止 |
OPENCODE_MODEL |
(なし) | デフォルトモデルを上書き |
OPENCODE_PERMISSION |
(なし) | パーミッションプロンプトをスキップするには auto に設定 |
OPENCODE_DISABLE_LSP_DOWNLOAD |
(なし) | LSP サーバーの自動ダウンロードを無効化 |
OPENCODE_DISABLE_AUTOCOMPACT |
(なし) | コンテキストの自動圧縮を無効化 |
OPENCODE_ENABLE_EXA |
(なし) | Exa Web 検索統合を有効化 |
OPENCODE_SERVER_PASSWORD |
(なし) | Basic 認証で Web UI を保護 |
OPENCODE_SERVER_USERNAME |
opencode |
Web UI の Basic 認証ユーザー名 |
ENABLE_CLAUDE_AUTH |
(なし) | APIキーの代わりに Claude サブスクリプションを使用するには true に設定 |
ENABLE_OH_MY_OPENAGENT |
(なし) | マルチエージェントオーケストレーションプラグインを有効化するには true に設定 |
ENABLE_PAPERCLIP |
(なし) | Paperclip ダッシュボードとエージェントボードを起動するには true に設定 |
PAPERCLIP_PORT |
3100 |
Paperclip が使用するコンテナポートを上書き |
PAPERCLIP_INSTANCE_ID |
default |
分離された状態のためのローカル Paperclip インスタンス名 |
ENABLE_HERMES |
(なし) | Hermes をバンドルされたメタエージェント API として起動するには true に設定 |
HERMES_PORT |
8642 |
Hermes が使用するコンテナポートを上書き |
HOLYCODE_PLUGIN_UPDATE |
manual |
プラグイン更新モード:manual(不足時にインストール)または auto(起動時にインストールと更新) |
プラグインのトグル(
ENABLE_CLAUDE_AUTH、ENABLE_OH_MY_OPENAGENT)はコンテナの再起動時に有効になります。env var を設定してdocker compose down && up -dを実行してください。
HOLYCODE_PLUGIN_UPDATEはプラグインパッケージの更新を制御します。manual(デフォルト)は有効なプラグインが不足している場合のみインストールします。autoは不足しているプラグインをインストールし、起動のたびに有効なプラグインを更新します。これは OpenCode 自体にのみ影響するOPENCODE_DISABLE_AUTOUPDATEとは別です。
ENABLE_OH_MY_OPENAGENT=trueはプラグインを有効にし、組み込みの/oh-my-openagent-setupスキルを公開します。スキルはプラグインが有効な場合のみ表示されます。~/.config/opencode/oh-my-openagent.jsoncのプラグイン専用設定ファイルを作成または更新するために使用してください。
HolyCode のデフォルトピッカーポリシー:表示:
sisyphus、hephaestus、prometheus、atlas;非表示サブエージェント:oracle、librarian、explore、metis、momus、multimodal-looker、sisyphus-junior。新しいプロバイダーを追加してデフォルトの表示モデルが古く見える場合は、/oh-my-openagent-setupを再実行してから:docker exec -it holycode bash -c "bunx oh-my-opencode doctor"とdocker exec -it holycode bash -c "bunx oh-my-opencode refresh-model-capabilities"を実行してください。
ENABLE_PAPERCLIP=trueはコンテナ内のポート3100で Paperclip を起動します。ダッシュボードを開き、会社を作成し、そこから OpenCode バックのエージェントを雇用してください。Paperclip は自動的に~/.paperclipに永続化されます。
ENABLE_HERMES=trueはコンテナ内のポート8642で Hermes を起動します。Hermes は~/.hermesに永続化し、すでにインストールされているopencodeバイナリを使用し、コード作業を HolyCode に委任しながら OpenAI 互換 API を公開できます。
GIT_USER_NAMEとGIT_USER_EMAILは初回起動時のみ適用されます。再適用するにはセンチネルファイルを削除して再起動してください:docker exec holycode rm /home/opencode/.config/opencode/.holycode-bootstrappedの後docker compose restart。
コアツール
| ツール | 目的 |
|---|---|
git |
バージョン管理 |
ripgrep |
高速ファイル内容検索 |
fd |
高速ファイル検索 |
fzf |
ファジーファインダー |
bat |
シンタックスハイライト付き Cat |
eza |
モダンな ls の代替 |
lazygit |
ターミナル git UI |
delta |
より良い git diff |
gh |
GitHub CLI |
htop |
プロセスモニター |
tar |
アーカイブの作成と展開 |
tree |
ディレクトリツリーの可視化 |
less |
ページ付きファイルビューアー |
vim |
ターミナルテキストエディター |
tmux |
ターミナルマルチプレクサー |
言語ランタイム
| ランタイム | バージョン |
|---|---|
| Node.js | 22 (LTS) |
| npm | Node.js 22 にバンドル |
| Python | 3(システム) |
| pip | Python 3 にバンドル |
開発ツール
| ツール | 目的 |
|---|---|
curl |
HTTP リクエスト |
wget |
ファイルダウンロード |
jq |
JSON 処理 |
unzip / zip |
アーカイブツール |
ssh |
リモートアクセス |
build-essential + pkg-config |
ネイティブ npm アドオンのコンパイル |
python3-venv |
Python 仮想環境 |
procps |
プロセスツール:ps、top |
iproute2 |
ネットワークツール:ip、ss |
lsof |
開いているファイルの診断 |
| OpenSSL | 暗号化と証明書ツール(ベースイメージ経由) |
ブラウザスタック
| コンポーネント | 目的 |
|---|---|
| Chromium | ヘッドレスブラウザエンジン |
| Xvfb | 仮想フレームバッファディスプレイサーバー |
| Playwright | ブラウザ自動化フレームワーク |
ブラウザスタックはそのままヘッドレスモードで動作します。ディスプレイサーバー不要、GPU 不要、追加設定不要。Playwright と Puppeteer のスクリプトは期待通りに動作します。
正しいページレンダリングとスクリーンショットのために Liberation、DejaVu、Noto、Noto Color Emoji フォントを含みます。
バンドルサービス
| サービス | 目的 |
|---|---|
| Hermes Agent | MCP、メッセージングアダプター、OpenCode 委任を備えた自己改善型メタエージェント |
| Paperclip | OpenCode ワーカーを雇用してハートビートで起動するローカルエージェントボード |
| Claude Code CLI | ENABLE_CLAUDE_AUTH による Claude サブスクリプション認証フロー用にインストール済み |
プロセス管理
| コンポーネント | 目的 |
|---|---|
| s6-overlay v3 | プロセススーパーバイザーと init システム |
| カスタムエントリーポイント | UID/GID リマッピング、git 設定、ブートストラップ |
s6-overlay が OpenCode と Xvfb を監視します。プロセスがクラッシュすると自動的に再起動します。スーパーバイザーが内部で処理するため、コンテナの再起動ポリシーは クリーンに保たれます。
HolyCode は OpenCode の上に2つのオプションレイヤーを同梱するようになりました。コンテナを使用するためにこれらは必要ありません。環境変数を切り替え、コンテナを再起動すると、通常の Web UI と並んでサービスが起動します。
Hermes は「よりスマートな頭脳」オプションです。バンドルされたメタエージェントとして動作し、ポート 8642 で OpenAI 互換 API を公開し、HolyCode がすでに同梱しているローカルの opencode バイナリを呼び出してコーディング作業を委任します。
有効にするには:
environment:
- ENABLE_HERMES=true
- HERMES_PORT=8642Hermes の状態は /home/opencode/.hermes に保存され、HolyCode の他の部分と同じ永続化の仕組みに従います。
Paperclip は「エージェントボード」オプションです。ポート 3100 のローカルダッシュボードで会社を作成し、エージェントを雇用し、スケジュールに従ってエージェントを起動させることができます。内部では opencode run プロセスを起動するため、ワーカーは引き続き HolyCode です。
有効にするには:
environment:
- ENABLE_PAPERCLIP=true
- PAPERCLIP_PORT=3100Paperclip の状態は /home/opencode/.paperclip に保存されます。ダッシュボードを開き、会社を設定し、そこから OpenCode バックの従業員を雇用してください。
graph TD
A[docker compose up -d] --> B[entrypoint.sh]
B --> C[UID/GID Remap]
C --> D[Plugin Toggles]
D --> E{First Boot?}
E -->|Yes| F[bootstrap.sh]
E -->|No| G[s6-overlay /init]
F --> G
G --> H[Xvfb :99]
G --> I[opencode web :4096]
I --> J[Web UI]
J --> K[Your Browser]
I --> L[CLI Access]
L --> M[docker exec -it holycode bash]
M --> N[opencode TUI]
M --> O[opencode run 'message']
M --> P[opencode attach localhost:4096]
エントリーポイントはユーザーリマッピング、プラグイントグル、オプションのバンドルサービストグル、初回起動セットアップを処理します。s6-overlay が Xvfb、OpenCode Web サーバー、および有効にしたオプションのバンドルサービスを監視します。監視対象のプロセスがクラッシュすると、s6 が自動的に再起動します。ポート 4096 で Web UI にアクセスするか、コンテナに exec してフル CLI 体験を得てください。
ポート 4096 の Web UI がメインインターフェースです。ただし、コンテナ内のコマンドラインから直接 OpenCode を使用することもできます。
docker exec -it holycode bash
opencodeWeb バージョンと同じ機能を持つ OpenCode のフルターミナル UI が開きます。
TUI に入らずに単一プロンプトを実行:
docker exec -it holycode bash -c "opencode run 'explain this codebase'"すでに実行中の OpenCode Web サーバーにローカル TUI セッションを接続:
docker exec -it holycode bash -c "opencode attach http://localhost:4096"Web UI と同じセッションを共有します。一方での変更は他方にも反映されます。
コンテナ内から AI プロバイダーを一覧表示・設定:
docker exec -it holycode bash -c "opencode providers list"
docker exec -it holycode bash -c "opencode providers login"ENABLE_OH_MY_OPENAGENT=true を有効にすると、/oh-my-openagent-setup スキルが利用可能になります。プラグイン専用設定を作成または更新するために使用してください:
/oh-my-openagent-setup
新しいプロバイダーを追加してデフォルトの表示モデルが古く見える場合は、/oh-my-openagent-setup を再実行してから:
docker exec -it holycode bash -c "bunx oh-my-opencode doctor"
docker exec -it holycode bash -c "bunx oh-my-opencode refresh-model-capabilities"| コマンド | 機能 |
|---|---|
opencode |
TUI を起動 |
opencode run 'message' |
ワンショットプロンプト |
opencode attach <url> |
実行中のサーバーに TUI をアタッチ |
opencode web --port 4096 |
Web サーバーを起動(s6 経由で既に実行中) |
opencode serve |
ヘッドレス API サーバー |
opencode providers list |
設定済みプロバイダーを表示 |
opencode providers login |
プロバイダーを追加または切り替え |
bunx oh-my-opencode doctor |
oh-my-openagent 設定とモデル解決を診断 |
bunx oh-my-opencode refresh-model-capabilities |
プロバイダー/モデル能力キャッシュを更新 |
opencode models |
利用可能なモデルを一覧表示 |
opencode models <provider> |
特定プロバイダーのモデルを一覧表示 |
opencode stats |
トークン使用量とコストを表示 |
opencode session list |
過去のセッションを一覧表示 |
opencode export <sessionID> |
セッションを JSON でエクスポート |
opencode plugin <module> |
プラグインをインストール |
opencode upgrade |
OpenCode をアップグレード(コンテナでデフォルト無効) |
すべての OpenCode の状態は ./data/opencode の単一バインドマウントに保存されます。コンテナはステートレスです。バインドマウントに重要なものがすべて入っています。
| ホストパス | コンテナパス | 内容 |
|---|---|---|
./data/opencode/.config/opencode |
/home/opencode/.config/opencode |
設定、エージェント、MCP 設定、テーマ、プラグイン |
./data/opencode/.local/share/opencode |
/home/opencode/.local/share/opencode |
SQLite セッションデータベース、MCP OAuth トークン |
./data/opencode/.local/state/opencode |
/home/opencode/.local/state/opencode |
Frecency データ、モデルキャッシュ、キーバリューストア |
./local-cache/opencode |
/home/opencode/.cache/opencode |
プラグインの node_modules、自動インストール済み依存関係 |
いつでもコンテナを再構築できます。docker compose pull && docker compose up -d を実行すれば、セッション、設定、設定ファイルが自動的に戻ります。
SQLite WAL に関する注意。 セッションデータベースは Write-Ahead Logging を使用しています。コンテナが実行中に .db ファイルをコピーしないでください。データベースファイルのバックアップや移行が必要な場合は、先にコンテナを停止してください。
ネットワークストレージに関する注意。 ./data/opencode が CIFS/SMB ネットワークマウント(NAS、Synology、TrueNAS)上にある場合、SMB がデフォルトでバイトレンジロックをサポートしていないため、SQLite WAL モードが失敗する可能性があります。HolyCode は起動時にこれを検出し、修正方法を警告として表示します。以下のトラブルシューティングセクションを参照してください。
HolyCode は PUID と PGID を使用して、コンテナ内部のユーザーをホストユーザーに合わせてリマッピングします。これにより、./workspace に書き込まれたファイルは root ではなくあなたが所有します。
Linux と macOS で ID を確認:
id -u # PUID
id -g # PGIDほとんどのシステムでは 1000:1000 です。macOS では 501:20 が多いです。compose ファイルで設定:
environment:
- PUID=501
- PGID=20これをスキップすると、ワークスペースのファイルが root 所有になり、ホストから編集するには sudo が必要になる場合があります。
最新イメージをプルしてコンテナを再作成します。データはそのまま残ります。
docker compose pull
docker compose up -d以上です。ワンコマンド。セッション、設定、設定ファイルはバインドマウントにあるので何も失われません。
Chromium がクラッシュするかブラウザ自動化が失敗する
最も一般的な原因は共有メモリの不足です。Chromium が安定して動作するには少なくとも 1-2 GB の /dev/shm が必要です。
compose ファイルに shm_size: 2g があることを確認してください:
services:
holycode:
shm_size: 2gこれがないと、Chromium はサイレントにクラッシュするか、壊れたスクリーンショットを生成します。
ワークスペースファイルで Permission denied
PUID と PGID がホストユーザーと一致していません。ID を確認:
id -u && id -g一致するように compose の environment セクションを更新:
environment:
- PUID=1001 # replace with your actual UID
- PGID=1001 # replace with your actual GIDコンテナを再作成:docker compose up -d --force-recreate
ポート 4096 がすでに使用中
マシン上の別のプロセスがポート 4096 を使用しています。別のホストポートにリマップ:
ports:
- "4097:4096" # access via http://localhost:4097または競合するプロセスを見つけて停止:
# Linux / macOS
lsof -i :4096
# Windows
netstat -ano | findstr :4096コンテナが起動するが Web UI がロードされない
コンテナのログを確認:
docker compose logs -f holycodeOpenCode は初期化に数秒かかります。docker compose up -d 後、ブラウザを開く前に 10-15 秒待ってください。それでもダメな場合、ログが理由を教えてくれます。
HolyCode に SYS_ADMIN や seccomp=unconfined が不要な理由
Chromium はコンテナ内で --no-sandbox で実行されますが、これはコンテナ化されたブラウザセットアップの標準です。これにより、他の Docker ブラウザセットアップが必要とする SYS_ADMIN 機能や seccomp=unconfined が不要になります。コンテナ自体が隔離の境界を提供します。
Chromium の組み込みサンドボックスを使用したい場合は、compose ファイルに以下を追加し、CHROMIUM_FLAGS 環境変数から --no-sandbox を削除してください:
cap_add:
- SYS_ADMIN
security_opt:
- seccomp=unconfinedSQLite WAL が CIFS/SMB ネットワークマウントで失敗する(NAS)
./data/opencode ディレクトリが CIFS/SMB ネットワーク共有にある場合、OpenCode が
次のエラーで失敗する可能性があります:
Failed to run the query 'PRAGMA journal_mode = WAL'
OpenCode はセッションデータベースに SQLite の Write-Ahead Logging(WAL)を使用します。 WAL にはバイトレンジロックが必要ですが、CIFS/SMB はデフォルトでこれをサポートしていません。HolyCode は起動時にこれを検出します。
修正: /etc/fstab の CIFS マウントオプションに nobrl,mfsymlinks を追加してください:
# 修正前
//192.168.1.100/share /mnt/share cifs credentials=/etc/smbcreds,uid=1000,gid=1000 0 0
# 修正後(nobrl,mfsymlinks を追加)
//192.168.1.100/share /mnt/share cifs credentials=/etc/smbcreds,uid=1000,gid=1000,nobrl,mfsymlinks 0 0
その後、再マウント:
sudo umount /mnt/share
sudo mount /mnt/shareHolyCode を再起動: docker compose up -d --force-recreate
リポジトリをクローンし、イメージをビルドし、compose ファイルで差し替えます。
git clone https://github.com/coderluii/holycode.git
cd holycode
docker build -t holycode:local .docker-compose.yaml でイメージを差し替え:
image: holycode:local- リポジトリをフォーク
- ブランチを作成:
git checkout -b feature/your-feature - 変更をコミット:
git commit -m "feat: your feature" - プッシュ:
git push origin feature/your-feature - プルリクエストを開く
完全なガイドラインは CONTRIBUTING.md を参照。
HolyCode が環境設定のもう1時間を節約してくれたなら、ここに恩返しの方法があります。
- GitHub でリポジトリにスターを付ける
- 役立ちそうな人にシェアする
- Buy Me A Coffee
- PayPal
- GitHub Sponsors
MIT ライセンス - LICENSE を参照。
