7.8 KiB
Установка Proxmox MCP-сервера и подключение к Open WebUI
Инструкция под инфраструктуру: pve (192.168.31.2), kybinka (192.168.1.10), pve1 (192.168.31.4), TrueNAS (192.168.31.100, там же работает Open WebUI).
Используется проект ProxmoxMCP-Plus с OpenAPI-интерфейсом для Open WebUI.
Архитектура
Узлы pve, kybinka и pve1 — независимые Proxmox-серверы. Для каждого узла запускается отдельный MCP-контейнер с отдельным портом.
Шаг 1. Создать API-токен на каждом Proxmox-узле
На каждом Proxmox-сервере открой Datacenter → Permissions → API Tokens и создай токен.
- User:
root@pam; - Token ID должен совпадать со значением
auth.token_nameсоответствующегоconfig.json; - сохрани Secret, который показывается только один раз.
Шаг 2. Подготовить конфиги на TrueNAS
Создай каталоги:
mkdir -p /mnt/ssd/apps/mcp/{pve,kybinka,pve1}
Для самоподписанных сертификатов Proxmox используются verify_ssl: false и security.dev_mode: true.
Конфигурация pve
cat > /mnt/ssd/apps/mcp/pve/config.json << 'EOF'
{
"proxmox": {
"host": "192.168.31.2",
"port": 8006,
"verify_ssl": false
},
"auth": {
"user": "root@pam",
"token_name": "openwebui-token",
"token_value": "СЕКРЕТНЫЙ_ТОКЕН_PVE"
},
"logging": {
"level": "INFO"
},
"security": {
"dev_mode": true
}
}
EOF
Конфигурация kybinka
cat > /mnt/ssd/apps/mcp/kybinka/config.json << 'EOF'
{
"proxmox": {
"host": "192.168.1.10",
"port": 8006,
"verify_ssl": false
},
"auth": {
"user": "root@pam",
"token_name": "open-webui",
"token_value": "СЕКРЕТНЫЙ_ТОКЕН_KYBINKA"
},
"logging": {
"level": "INFO"
},
"security": {
"dev_mode": true
}
}
EOF
Конфигурация pve1
cat > /mnt/ssd/apps/mcp/pve1/config.json << 'EOF'
{
"proxmox": {
"host": "192.168.31.4",
"port": 8006,
"verify_ssl": false
},
"auth": {
"user": "root@pam",
"token_name": "open-webui",
"token_value": "СЕКРЕТНЫЙ_ТОКЕН_PVE1"
},
"logging": {
"level": "INFO"
},
"security": {
"dev_mode": true
}
}
EOF
Проверь JSON-файлы:
python3 -m json.tool /mnt/ssd/apps/mcp/pve/config.json
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-токен.
Шаг 3. Запустить три контейнера через Dockge
В Dockge создай один Stack proxmox-mcp с рабочей директорией:
/mnt/ssd/apps/mcp
Используй один compose-файл:
services:
proxmox-mcp-pve:
image: ghcr.io/rekklesna/proxmoxmcp-plus:latest
container_name: proxmox-mcp-pve
restart: unless-stopped
ports:
- "8811:8811"
environment:
PROXMOX_API_KEY: "СГЕНЕРИРОВАТЬ_ОТДЕЛЬНЫЙ_КЛЮЧ_PVE"
volumes:
- /mnt/ssd/apps/mcp/pve/config.json:/app/proxmox-config/config.json:ro
proxmox-mcp-kybinka:
image: ghcr.io/rekklesna/proxmoxmcp-plus:latest
container_name: proxmox-mcp-kybinka
restart: unless-stopped
ports:
- "8812:8811"
environment:
PROXMOX_API_KEY: "СГЕНЕРИРОВАТЬ_ОТДЕЛЬНЫЙ_КЛЮЧ_KYBINKA"
volumes:
- /mnt/ssd/apps/mcp/kybinka/config.json:/app/proxmox-config/config.json:ro
proxmox-mcp-pve1:
image: ghcr.io/rekklesna/proxmoxmcp-plus:latest
container_name: proxmox-mcp-pve1
restart: unless-stopped
ports:
- "8813:8811"
environment:
PROXMOX_API_KEY: "СГЕНЕРИРОВАТЬ_ОТДЕЛЬНЫЙ_КЛЮЧ_PVE1"
volumes:
- /mnt/ssd/apps/mcp/pve1/config.json:/app/proxmox-config/config.json:ro
Для каждого сервиса используй отдельный ключ. Ключ можно сгенерировать командой:
openssl rand -hex 32
В Dockge нажми Save, затем Down и Deploy/Up.
Шаг 4. Проверить контейнеры
curl -f http://192.168.31.100:8811/livez
curl -f http://192.168.31.100:8812/livez
curl -f http://192.168.31.100:8813/livez
Проверка OpenAPI для pve:
curl -H "Authorization: Bearer КЛЮЧ_ИЗ_PROXMOX_API_KEY_PVE" \
http://192.168.31.100:8811/health
Шаг 5. Подключить к Open WebUI
В Open WebUI перейди:
Настройки → Интеграции → External Tool Servers → «+»
Важно: в основном поле URL указывается только базовый адрес сервера. Не добавляй к нему
/openapi.json, потому что Open WebUI добавляет путь спецификации отдельно.
Сервер pve
Название: Proxmox pve
URL: http://192.168.31.100:8811
Авторизация: Bearer
Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-pve в Dockge
Спецификация OpenAPI: openapi.json
Итоговый адрес спецификации должен быть:
http://192.168.31.100:8811/openapi.json
Сервер kybinka
Название: Proxmox kybinka
URL: http://192.168.31.100:8812
Авторизация: Bearer
Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-kybinka в Dockge
Спецификация OpenAPI: openapi.json
Итоговый адрес:
http://192.168.31.100:8812/openapi.json
Сервер pve1
Название: Proxmox pve1
URL: http://192.168.31.100:8813
Авторизация: Bearer
Токен: значение PROXMOX_API_KEY из сервиса proxmox-mcp-pve1 в Dockge
Спецификация OpenAPI: openapi.json
Итоговый адрес:
http://192.168.31.100:8813/openapi.json
Не используй для авторизации значение auth.token_value из config.json. Это секрет подключения MCP-сервера к Proxmox, а не ключ OpenAPI.
После сохранения открой новый чат, нажми значок инструментов и включи нужный сервер.
Диагностика
Если Open WebUI формирует адрес вида:
http://192.168.31.100:8811/openapi.json/openapi.json
замени URL сервера на базовый:
http://192.168.31.100:8811
а в поле спецификации оставь только:
openapi.json
Если появляется Invalid API key, Bearer-токен Open WebUI не совпадает с PROXMOX_API_KEY соответствующего контейнера Dockge.
Если появляется McpError: Connection closed, сначала ищи выше в логе первичную ошибку.
Не публикуй реальные значения
PROXMOX_API_KEYиauth.token_valueв чат или репозиторий. Если они были опубликованы, их следует заменить.