コンテンツにスキップ

設定

すべての設定はプロジェクトルートの .env ファイルに記述します。このファイルは gitignore されているため、コミットされることはありません。

コンテナは2つの相互排他的な認証モードをサポートしています(優先順位順):

  • LiteLLMプロキシLITELLM_BASE_URLLITELLM_API_KEY を設定してLiteLLMプロキシ経由でルーティングします(下記参照)。
  • OAuthモードCLAUDE_CODE_OAUTH_TOKEN のみを設定します(下記参照)。

モードを組み合わせないでください — いずれか1つのみを使用してください。

変数説明
CLAUDE_CODE_OAUTH_TOKENClaude Maxサブスクリプションからの OAuthトークンsk-ant-oat01-...

設定すると、Claude CodeはOAuthを使用してAnthropicに直接認証します — APIキーやプロキシは不要です。トークンはClaude Codeの設定または Anthropicコンソール から取得できます。

LiteLLM(またはその他の)プロキシがネイティブのAnthropic Messages API(web_search、ストリーミング、ツール使用を含む)に対応している場合、LITELLM_BASE_URL にプロキシドメインを設定します。コンテナはプロバイダー固有のURLを自動的に導出します:

  • Anthropicエンドポイント → ${LITELLM_BASE_URL}/anthropic(Claude Codeが使用)
  • OpenAI互換エンドポイント → ${LITELLM_BASE_URL}/openai/v1
変数説明
LITELLM_BASE_URLLiteLLMプロキシのドメイン(パスサフィックスなし)https://litellm.example.com
LITELLM_API_KEYプロキシ認証用のAPIキーyour-api-key またはデフォルトで litellm-proxy

ユーザーはドメインのみを設定すれば、プロバイダーのパスサフィックスは自動的に付加されます。 実行時にエントリポイントが LITELLM_API_KEY から ANTHROPIC_API_KEY を導出するため、Claude Codeは別のユーザー向け変数を必要とせずにプロキシ認証情報を使用できます。

このモードではモデル名のリマッピングは行われません。Claude Codeは標準的なモデル識別子(例:claude-sonnet-4-6)を送信し、LiteLLMが設定されたバックエンドにルーティングします。

デフォルトでは、Node.jsはすべてのHTTPS接続に対してTLS証明書を検証します。上流のAPIプロバイダーが自己署名証明書を使用している場合(内部のOpen WebUIやLiteLLMプロキシでよく見られます)、.env ファイルに以下を追加して検証を無効にできます:

NODE_TLS_REJECT_UNAUTHORIZED=0

これは本番環境での使用は推奨されません。コンテナとAPIエンドポイント間のネットワークパスを信頼できる場合にのみ設定してください。

コンテナにはClaude Codeに加えて、いくつかのAIコーディングエージェントが含まれています:

エージェントコマンドプロバイダー
CodexcodexOpenAI互換
Pipiマルチプロバイダー(実行時に設定)
Oh-My-Piompマルチプロバイダー(実行時に設定)

PiとOh-My-Piはグローバルnpmパッケージとしてインストールされます。Codexは実行時に自動更新するスタンドアロンバイナリです。

コンテナは、GUIブラウザの監視と操作のための仮想ディスプレイスタックを実行します。接続方法と環境変数(ENABLE_VNCVNC_RESOLUTIONDISPLAYNOVNC_HOST_PORT)については リモートディスプレイ(noVNC) を参照してください。

コンテナには、ヘッドレスブラウザ自動化用に事前設定された Chrome DevTools MCP サーバーが含まれています。Claude Codeは追加のセットアップなしにWebページのナビゲーション、スクリーンショットの取得、DOMの検査が可能です。詳細は Chrome DevTools MCP を参照してください。

変数説明設定方法
GIT_AUTHOR_NAMEgitコミット用の名前git config user.name
GIT_AUTHOR_EMAILgitコミット用のメールアドレスgit config user.email

ホストでgitが設定されている場合、両方の値を自動的に取得できます:

Terminal window
echo "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .env
echo "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env
変数説明設定方法
SSH_PRIVATE_KEYBase64エンコードされた秘密鍵base64 < ~/.ssh/id_ed25519
変数説明設定方法
GH_TOKENgh CLIおよびHTTPS git用のGitHubパーソナルアクセストークンgh auth token(ローカルに gh がインストールされている場合)

.envGH_TOKEN を設定すると、gh CLIは自動的に認証されます — gh auth login を実行する必要はありません。エントリポイントは gh auth setup-git も実行し、git認証ヘルパーを設定するため、HTTPS での git clonegit push がSSHキーなしで動作します。

ホストマシンに gh がインストールされ認証済みの場合、トークンを直接取得できます:

Terminal window
echo "GH_TOKEN=$(gh auth token)" >> .env

それ以外の場合は、パーソナルアクセストークンを作成 して手動で追加してください。きめ細かいトークン(推奨)とクラシックトークンの両方が使用できます。きめ細かいトークンでは特定のリポジトリへのアクセスをスコープ指定できます。クラシックトークンではプライベートリポジトリへのアクセスに repo スコープが必要です。

コンテナ内で認証を確認するには:

Terminal window
gh auth status

すべての言語ランタイム、CLI、ツールはイメージのビルド時に Dockerfile 内で直接インストールされます。ビルド済みイメージは main へのプッシュごとに ghcr.io/f5-sales-demo/devcontainer:latest に公開されるため、ほとんどのユーザーはローカルでビルドする必要はありません。

docker compose up -d を実行すると、ビルド済みイメージが自動的にプルされます。Dockerfileをカスタマイズした後にローカルでビルドするには、ビルドファイルを明示的に指定します:

Terminal window
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build

詳細は ローカル開発 を参照してください。

Dockerfileは、Dockerレイヤーキャッシュに最適化された2段階ビルドを使用しています。レイヤーの完全な内訳とビルドキャッシュの詳細については、ローカル開発 — 2段階ビルドアーキテクチャ を参照してください。

コンテナには、Claude Codeがツール名を混同するのを防ぐビルトイン設定が含まれています。ツール認識は多層防御のために2つのメモリ階層にインストールされています:

  • マネージドポリシー (/etc/claude-code/CLAUDE.md) — Dockerビルド時にインストールされます。これはClaude Codeのメモリ階層で最も優先度が高く、作業ディレクトリにプロジェクトの CLAUDE.md が存在する場合でも常にロードされます。
  • ユーザーメモリ (~/.claude/CLAUDE.md) — 初回起動時にエントリポイントによってシードされます。バックアップレイヤーと、ユーザーがカスタマイズ可能な表示コピーを提供します。

Claude Codeは複数のメモリ階層から命令をロードします(優先度の高い順):

  1. マネージドポリシー (/etc/claude-code/) — 常にロードされ、除外不可
  2. プロジェクトメモリ (./CLAUDE.md) — プロジェクトディレクトリごとにロード
  3. ユーザーメモリ (~/.claude/CLAUDE.md) — すべてのセッションでグローバルにロード
  4. ローカルメモリ (./CLAUDE.local.md) — プロジェクトごとの個人的なオーバーライド

マネージドポリシー階層がなければ、ユーザーメモリ内のツール認識は大きなプロジェクトレベルの CLAUDE.md と競合した際に優先度が下がり、ClaudeがPascalCaseのツール名の認識を失う可能性があります。マネージド階層により、ツール認識が常に最高優先度でロードされることが保証されます。

ビルトインのセルフテストを実行して設定を確認します:

Terminal window
claude-self-test

これにより、すべての設定ファイルが所定の場所にあり、期待されるツール参照が含まれていることが確認されます。

イメージにツールを追加するには、Dockerfile を編集してローカルでリビルドします。APTパッケージ、npmツール、pipツール、バイナリダウンロードの追加方法については、ローカル開発 — ツールの追加 を参照してください。

拡張機能は .devcontainer/devcontainer.jsoncustomizations.vscode.extensions で設定され、VS Codeで開くと自動的にインストールされます。

すべてのデータは名前付きボリュームに保存されます — ホストディレクトリはマウントされません:

ボリュームマウントポイント内容
workspace/workspaceクローンしたリポジトリとプロジェクトファイル
home/home/vscodeシェル履歴、ツール設定、キャッシュ、SSHキー

どちらもコンテナの再起動やリビルドをまたいで永続化されます。再起動前に docker compose pull を実行して最新のビルド済みイメージを取得してください。

操作データ
docker compose down保持
docker compose down -v削除
ホストコンテナサービス
127.0.0.1:${NOVNC_HOST_PORT:-6080}6080noVNCリモートディスプレイ(localhostのみ、NOVNC_HOST_PORT でオーバーライド可能)

ポートは 127.0.0.1 にバインドされているため、ネットワークからではなくお使いのマシンからのみアクセス可能です。