diff --git a/proxmox-mcp-open-webui-setup.md b/proxmox-mcp-open-webui-setup.md index 85131e3..f82e3ec 100644 --- a/proxmox-mcp-open-webui-setup.md +++ b/proxmox-mcp-open-webui-setup.md @@ -12,14 +12,12 @@ ## Шаг 1. Создать API-токен на каждом Proxmox-узле -На каждом Proxmox-сервере отдельно открой **Datacenter → Permissions → API Tokens** и создай токен. +На каждом Proxmox-сервере открой **Datacenter → Permissions → API Tokens** и создай токен. - User: `root@pam`; -- Token ID должен точно совпадать со значением `auth.token_name` соответствующего `config.json`; +- Token ID должен совпадать со значением `auth.token_name` соответствующего `config.json`; - сохрани Secret, который показывается только один раз. -Повтори операцию для `kybinka` и `pve1`. - --- ## Шаг 2. Подготовить конфиги на TrueNAS @@ -30,7 +28,7 @@ mkdir -p /mnt/ssd/apps/mcp/{pve,kybinka,pve1} ``` -Для самоподписанных сертификатов Proxmox используй `verify_ssl: false` и `security.dev_mode: true`. +Для самоподписанных сертификатов Proxmox используются `verify_ssl: false` и `security.dev_mode: true`. ### Конфигурация `pve` @@ -115,10 +113,10 @@ python3 -m json.tool /mnt/ssd/apps/mcp/kybinka/config.json python3 -m json.tool /mnt/ssd/apps/mcp/pve1/config.json ``` -Важное различие: +Важно: -- `auth.token_value` — Secret API-токена Proxmox, он хранится в `config.json`; -- `PROXMOX_API_KEY` — отдельный ключ защиты OpenAPI-сервера, он задаётся в compose/Dockge и используется в Open WebUI как Bearer-токен. +- `auth.token_value` — Secret API-токена Proxmox из `config.json`; +- `PROXMOX_API_KEY` — отдельный ключ OpenAPI из compose/Dockge, который используется в Open WebUI как Bearer-токен. --- @@ -168,13 +166,13 @@ services: - /mnt/ssd/apps/mcp/pve1/config.json:/app/proxmox-config/config.json:ro ``` -Для каждого сервиса используй отдельный ключ. Сгенерировать ключ можно командой: +Для каждого сервиса используй отдельный ключ. Ключ можно сгенерировать командой: ```bash openssl rand -hex 32 ``` -Замени значения `СГЕНЕРИРОВАТЬ_ОТДЕЛЬНЫЙ_КЛЮЧ_*` в Dockge, нажми **Save**, затем **Down** и **Deploy/Up**. +В Dockge нажми **Save**, затем **Down** и **Deploy/Up**. --- @@ -186,86 +184,101 @@ curl -f http://192.168.31.100:8812/livez curl -f http://192.168.31.100:8813/livez ``` -Проверка OpenAPI для `pve` выполняется с ключом из переменной `PROXMOX_API_KEY` сервиса `proxmox-mcp-pve`: +Проверка OpenAPI для `pve`: ```bash curl -H "Authorization: Bearer КЛЮЧ_ИЗ_PROXMOX_API_KEY_PVE" \ http://192.168.31.100:8811/health ``` -Ожидаемый ответ: - -```json -{"status":"ok"} -``` - --- ## Шаг 5. Подключить к Open WebUI -В Open WebUI перейди по пути: +В Open WebUI перейди: ```text Настройки → Интеграции → External Tool Servers → «+» ``` -Добавь сервер `pve`: +> Важно: в основном поле **URL** указывается только базовый адрес сервера. Не добавляй к нему `/openapi.json`, потому что Open WebUI добавляет путь спецификации отдельно. + +### Сервер `pve` ```text Название: Proxmox pve -URL: http://192.168.31.100:8811/openapi.json +URL: http://192.168.31.100:8811 Авторизация: Bearer Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-pve в Dockge +Спецификация OpenAPI: openapi.json ``` -Добавь сервер `kybinka`: +Итоговый адрес спецификации должен быть: + +```text +http://192.168.31.100:8811/openapi.json +``` + +### Сервер `kybinka` ```text Название: Proxmox kybinka -URL: http://192.168.31.100:8812/openapi.json +URL: http://192.168.31.100:8812 Авторизация: Bearer Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-kybinka в Dockge +Спецификация OpenAPI: openapi.json ``` -Добавь сервер `pve1`: +Итоговый адрес: + +```text +http://192.168.31.100:8812/openapi.json +``` + +### Сервер `pve1` ```text Название: Proxmox pve1 -URL: http://192.168.31.100:8813/openapi.json +URL: http://192.168.31.100:8813 Авторизация: Bearer Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-pve1 в Dockge +Спецификация OpenAPI: openapi.json ``` -Не используй для авторизации значение `auth.token_value` из `config.json`. Это другой Secret — он нужен MCP-серверу для подключения к Proxmox, а не Open WebUI. +Итоговый адрес: -После сохранения открой новый чат, нажми значок инструментов и включи нужный сервер, например `Proxmox pve`. +```text +http://192.168.31.100:8813/openapi.json +``` + +Не используй для авторизации значение `auth.token_value` из `config.json`. Это секрет подключения MCP-сервера к Proxmox, а не ключ OpenAPI. + +После сохранения открой новый чат, нажми значок инструментов и включи нужный сервер. --- ## Диагностика -Если появляется ошибка: +Если Open WebUI формирует адрес вида: ```text -Invalid API key +http://192.168.31.100:8811/openapi.json/openapi.json ``` -проверь, что Bearer-токен в Open WebUI полностью совпадает с `PROXMOX_API_KEY` соответствующего контейнера в Dockge. - -Если появляется ошибка: +замени URL сервера на базовый: ```text -Insecure TLS configuration blocked +http://192.168.31.100:8811 ``` -проверь наличие блока: +а в поле спецификации оставь только: -```json -"security": { - "dev_mode": true -} +```text +openapi.json ``` -Если появляется `McpError: Connection closed`, сначала ищи выше в логе первичную ошибку конфигурации. +Если появляется `Invalid API key`, Bearer-токен Open WebUI не совпадает с `PROXMOX_API_KEY` соответствующего контейнера Dockge. + +Если появляется `McpError: Connection closed`, сначала ищи выше в логе первичную ошибку. > Не публикуй реальные значения `PROXMOX_API_KEY` и `auth.token_value` в чат или репозиторий. Если они были опубликованы, их следует заменить.