Ir al contenido

Configuración

Toda la configuración reside en el archivo .env en la raíz del proyecto. Este archivo está en gitignore — nunca se incluye en los commits.

El contenedor soporta dos modos de autenticación mutuamente excluyentes (en orden de prioridad):

  • Proxy LiteLLM — establezca LITELLM_BASE_URL y LITELLM_API_KEY para enrutar a través de un proxy LiteLLM (ver más abajo).
  • Modo OAuth — establezca únicamente CLAUDE_CODE_OAUTH_TOKEN (ver más abajo).

No combine los modos — use exactamente uno.

VariableDescripciónEjemplo
CLAUDE_CODE_OAUTH_TOKENToken OAuth de una suscripción Claude Maxsk-ant-oat01-...

Cuando se establece, Claude Code se autentica directamente con Anthropic usando OAuth — no se necesita clave API ni proxy. Obtenga su token desde la configuración de Claude Code o la consola de Anthropic.

Si su proxy LiteLLM (u otro) ya habla la API nativa de Mensajes de Anthropic — incluyendo web_search, streaming y uso de herramientas — establezca LITELLM_BASE_URL con el dominio del proxy. El contenedor deriva automáticamente las URLs específicas del proveedor:

  • Endpoint de Anthropic → ${LITELLM_BASE_URL}/anthropic (usado por Claude Code)
  • Endpoint compatible con OpenAI → ${LITELLM_BASE_URL}/openai/v1
VariableDescripciónEjemplo
LITELLM_BASE_URLDominio de su proxy LiteLLM (sin sufijo de ruta)https://litellm.example.com
LITELLM_API_KEYClave API para autenticación del proxyyour-api-key o por defecto litellm-proxy

Los usuarios solo necesitan establecer el dominio — los sufijos de ruta del proveedor se añaden automáticamente. En tiempo de ejecución, el punto de entrada deriva ANTHROPIC_API_KEY de LITELLM_API_KEY para que Claude Code pueda consumir la credencial del proxy sin requerir una variable separada orientada al usuario.

Los nombres de modelo no se remapean en este modo. Claude Code envía sus identificadores de modelo estándar (por ejemplo, claude-sonnet-4-6) y LiteLLM los enruta a su backend configurado.

Por defecto, Node.js valida los certificados TLS para todas las conexiones HTTPS. Si su proveedor de API upstream usa un certificado autofirmado (común con proxies internos de Open WebUI o LiteLLM), puede desactivar la validación añadiendo esto a su archivo .env:

NODE_TLS_REJECT_UNAUTHORIZED=0

Esto no se recomienda para uso en producción. Solo establezca esto cuando confíe en la ruta de red entre el contenedor y su endpoint de API.

El contenedor incluye varios agentes de codificación con IA además de Claude Code:

AgenteComandoProveedor
CodexcodexCompatible con OpenAI
PipiMulti-proveedor (configurar en tiempo de ejecución)
Oh-My-PiompMulti-proveedor (configurar en tiempo de ejecución)

Pi y Oh-My-Pi se instalan como paquetes npm globales. Codex es un binario independiente que se actualiza automáticamente en tiempo de ejecución.

El contenedor ejecuta una pila de pantalla virtual para observar e interactuar con navegadores con interfaz gráfica. Consulte Pantalla Remota (noVNC) para instrucciones de conexión y variables de entorno (ENABLE_VNC, VNC_RESOLUTION, DISPLAY, NOVNC_HOST_PORT).

El contenedor incluye un servidor Chrome DevTools MCP preconfigurado para automatización de navegador headless. Claude Code puede navegar páginas web, tomar capturas de pantalla e inspeccionar el DOM sin ninguna configuración adicional. Consulte Chrome DevTools MCP para más detalles.

VariableDescripciónCómo Establecer
GIT_AUTHOR_NAMENombre para commits de gitgit config user.name
GIT_AUTHOR_EMAILEmail para commits de gitgit config user.email

Si git está configurado en su host, rellene automáticamente ambos valores:

Ventana de terminal
echo "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .env
echo "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env
VariableDescripciónCómo Establecer
SSH_PRIVATE_KEYClave privada codificada en Base64base64 < ~/.ssh/id_ed25519
VariableDescripciónCómo Establecer
GH_TOKENToken de acceso personal de GitHub para el CLI gh y git HTTPSgh auth token (si gh está instalado localmente)

Cuando GH_TOKEN se establece en .env, el CLI gh se autentica automáticamente — no es necesario ejecutar gh auth login. El punto de entrada también ejecuta gh auth setup-git, que configura el asistente de credenciales de git para que git clone y git push por HTTPS funcionen sin claves SSH.

Si gh está instalado y autenticado en su máquina host, extraiga el token directamente:

Ventana de terminal
echo "GH_TOKEN=$(gh auth token)" >> .env

De lo contrario, cree un token de acceso personal y añádalo manualmente. Tanto los tokens de granularidad fina (recomendados) como los tokens clásicos funcionan. Los tokens de granularidad fina le permiten limitar el acceso a repositorios específicos. Los tokens clásicos requieren el scope repo para acceso a repositorios privados.

Para verificar la autenticación dentro del contenedor:

Ventana de terminal
gh auth status

Cada runtime de lenguaje, CLI y herramienta se instala directamente en el Dockerfile en tiempo de compilación de la imagen. La imagen precompilada se publica en ghcr.io/f5-sales-demo/devcontainer:latest con cada push a main, por lo que la mayoría de los usuarios nunca necesitan compilar localmente.

Ejecutar docker compose up -d descarga la imagen precompilada automáticamente. Para compilar localmente después de personalizar el Dockerfile, pase el archivo de compilación explícitamente:

Ventana de terminal
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build

Consulte Desarrollo Local para más detalles.

El Dockerfile usa una compilación en dos etapas optimizada para el caché de capas de Docker. Consulte Desarrollo Local — Arquitectura de Compilación en Dos Etapas para el desglose completo de capas y detalles del caché de compilación.

Reconocimiento de Herramientas de Claude Code

Sección titulada «Reconocimiento de Herramientas de Claude Code»

El contenedor incluye configuración incorporada que evita que Claude Code confunda los nombres de herramientas. El reconocimiento de herramientas se instala en dos niveles de memoria para defensa en profundidad:

  • Política administrada (/etc/claude-code/CLAUDE.md) — instalada en tiempo de compilación de Docker. Este es el nivel de mayor prioridad en la jerarquía de memoria de Claude Code y siempre se carga, incluso cuando existe un CLAUDE.md de proyecto grande en el directorio de trabajo.
  • Memoria de usuario (~/.claude/CLAUDE.md) — sembrada por el punto de entrada en el primer inicio. Proporciona una capa de respaldo y una copia visible y personalizable para los usuarios.

Claude Code carga instrucciones desde múltiples niveles de memoria (de mayor a menor prioridad):

  1. Política administrada (/etc/claude-code/) — Siempre se carga, no puede ser excluida
  2. Memoria de proyecto (./CLAUDE.md) — Se carga por directorio de proyecto
  3. Memoria de usuario (~/.claude/CLAUDE.md) — Se carga globalmente para todas las sesiones
  4. Memoria local (./CLAUDE.local.md) — Sobreescrituras personales por proyecto

Sin el nivel de Política administrada, el reconocimiento de herramientas en la Memoria de usuario puede ser desprioritizado cuando compite con un CLAUDE.md grande a nivel de proyecto, causando que Claude pierda el reconocimiento de sus nombres de herramientas en PascalCase. El nivel Administrado garantiza que el reconocimiento de herramientas siempre se cargue con la mayor prioridad.

Ejecute la auto-prueba incorporada para verificar la configuración:

Ventana de terminal
claude-self-test

Esto verifica que todos los archivos de configuración estén en su lugar y contengan las referencias de herramientas esperadas.

Para añadir herramientas a la imagen, edite el Dockerfile y recompile localmente. Consulte Desarrollo Local — Añadir Herramientas para instrucciones sobre cómo añadir paquetes APT, herramientas npm, herramientas pip y descargas de binarios.

Las extensiones se configuran en .devcontainer/devcontainer.json bajo customizations.vscode.extensions y se instalan automáticamente al abrir en VS Code.

Todos los datos residen en volúmenes con nombre — no se montan directorios del host:

VolumenPunto de MontajeContenido
workspace/workspaceSus repositorios clonados y archivos de proyecto
home/home/vscodeHistorial del shell, configuraciones de herramientas, cachés, claves SSH

Ambos persisten a través de reinicios y reconstrucciones del contenedor. Ejecute docker compose pull para obtener la última imagen precompilada antes de reiniciar.

AcciónDatos
docker compose downPreservados
docker compose down -vEliminados
HostContenedorServicio
127.0.0.1:${NOVNC_HOST_PORT:-6080}6080Pantalla remota noVNC (solo localhost, sobreescriba con NOVNC_HOST_PORT)

Los puertos están vinculados a 127.0.0.1 para que solo sean accesibles desde su máquina, no desde la red.