55 lines
1.9 KiB
Markdown
55 lines
1.9 KiB
Markdown
# 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
|
||
```
|