# Troubleshooting Этот документ помогает быстро проверить типовые проблемы при запуске и работе Crank. ## Веб-интерфейс открывается, но данные не загружаются Проверьте `admin-api`: ```bash curl http://127.0.0.1:3001/health docker compose logs -f admin-api ``` Типовые причины: - `admin-api` не подключился к PostgreSQL; - неверные `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_USER`, `POSTGRES_PASSWORD`; - reverse proxy не проксирует `/api/admin/`; - браузерная сессия истекла. ## `502 Bad Gateway` через nginx Проверьте, на каком адресе опубликованы контейнеры: ```bash docker compose ps ``` Если nginx работает на другом host, в `.env` нужно: ```env CRANK_PUBLISH_BIND=0.0.0.0 ``` Если nginx работает на том же host, обычно достаточно: ```env CRANK_PUBLISH_BIND=127.0.0.1 ``` ## MCP-клиент получает `401 Unauthorized` Проверьте: - API-ключ создан именно для нужного агента; - ключ передается как `Authorization: Bearer `; - ключ не был удален или отозван; - MCP URL содержит правильные `workspace_slug` и `agent_slug`. ## MCP-клиент не видит инструмент Проверьте: - операция опубликована; - операция привязана к агенту; - агент опубликован; - ключ выдан на этого агента; - прошел интервал `CRANK_MCP_REFRESH_MS`. Для demo seed ожидаемый инструмент: ```text frankfurter_latest_rate ``` ## Тест операции возвращает ошибку внешнего API Откройте preview запроса в wizard-е и проверьте: - `base_url`; - `path_template`; - HTTP method; - query/path/body mapping; - auth profile; - статические заголовки. Для Frankfurter рабочий запрос: ```text GET https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR ``` ## Секрет не виден после создания Это ожидаемое поведение. Crank шифрует секрет и больше не возвращает его значение через UI или API. Если значение нужно заменить, используйте **Ротировать**. ## После обновления не появился demo-пример Проверьте: ```env CRANK_DEMO_SEED=true ``` Затем перезапустите `admin-api`: ```bash docker compose up -d admin-api ``` Seed идемпотентный: он не создает дубликаты, но поддерживает Frankfurter-пример. ## Контейнеры не стартуют из-за занятых портов Проверьте, кто занимает порт: ```bash docker ps --format 'table {{.Names}}\t{{.Ports}}' sudo ss -ltnp ``` Чаще всего конфликтуют: - `3000` - UI; - `3001` - Admin API; - `3002` - MCP server; - `5432` - PostgreSQL, если включен profile `local-db`. ## PostgreSQL недоступен Проверьте доступность из контейнера: ```bash docker compose exec admin-api sh -lc 'nc -vz "$POSTGRES_HOST" "$POSTGRES_PORT"' ``` Проверьте переменные: ```bash docker compose exec admin-api env | grep POSTGRES ``` ## Где смотреть логи ```bash docker compose logs -f admin-api docker compose logs -f mcp-server docker compose logs -f ui ``` Для подробных логов временно укажите: ```env CRANK_LOG_LEVEL=debug ```