# Claude Wrapper Proxy — Docker ## Расположение | Item | Value | |------|-------| | Путь | `~/Docker/claude-wrapper-proxy/` | | Compose | `docker-compose.yml` | | Dockerfile | `Dockerfile` | | Env | `.env` — содержит `CLAUDE_CODE_OAUTH_TOKEN` | | Порт | 3457 (хостовый на 3456) | ## Основа ChrisCross3/claude-proxy-full — самый продвинутый форк с MCP injection, Isolated mode, Caller-Dispatched Tools. ## Проблемы ### "Not logged in" при старте **Причина**: OAuth токен expired. `~/.claude/.credentials.json` имеет `expiresAt`, который истекает. Claude CLI не может обновить через read-only volume. **Решение**: передать `CLAUDE_CODE_OAUTH_TOKEN` в `.env`. Токен берётся из живой сессии Claude CLI или из `.hermes/.env`. ### Node.js на Alpine не отвечает на внешние запросы **Причина**: `index.js` слушает на `127.0.0.1` внутри контейнера. Docker port mapping не перенаправляет с `0.0.0.0` на `127.0.0.1`. **Решение**: в Dockerfile пропатчен `index.js` — `host` заменён с `127.0.0.1` на `0.0.0.0`. ### JsonWebTokenError при старте **Причина**: пустой OAuth токен. Claude CLI внутри контейнера требует `CLAUDE_CODE_OAUTH_TOKEN` в env. **Решение**: токен передан через `.env` + env_file в docker-compose. ## Сборка и запуск ```bash cd ~/Docker/claude-wrapper-proxy docker-compose build docker-compose up -d ``` Проверка: `curl http://localhost:3457/v1/health` → должен вернуть `Hello.` ## Использование в Hermes В `~/.hermes/config.yaml`: ```yaml providers: claude: base_url: http://localhost:3457/v1 ```