Исправил шаг запуска Proxmox MCP для Dockge
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
TrueNAS отдельно — это **не Proxmox**, и ProxmoxMCP-Plus с ним не работает. Управлять TrueNAS через тот же чат — отдельная задача (нужен другой MCP-сервер, для TrueNAS API). Ниже — только про Proxmox-узлы, но покажу, где ты потом можешь добавить TrueNAS-инструмент рядом.
|
TrueNAS отдельно — это **не Proxmox**, и ProxmoxMCP-Plus с ним не работает. Управлять TrueNAS через тот же чат — отдельная задача (нужен другой MCP-сервер, для TrueNAS API). Ниже — только про Proxmox-узлы, но покажу, где ты потом можешь добавить TrueNAS-инструмент рядом.
|
||||||
|
|
||||||
Разворачивать контейнеры удобнее всего **на TrueNAS** — там уже крутится Open WebUI, сервер работает постоянно, и можно поднимать Docker-контейнеры через встроенный интерфейс Apps.
|
Разворачивать контейнеры удобнее всего **на TrueNAS** — там уже крутится Open WebUI, сервер работает постоянно, и можно поднимать Docker-контейнеры через Dockge.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -67,14 +67,21 @@ EOF
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Шаг 3. Запустить три контейнера (по одному на узел)
|
## Шаг 3. Запустить три контейнера через Dockge
|
||||||
|
|
||||||
Проще всего — через **docker-compose** прямо в шелле TrueNAS (TrueNAS 25.10 поддерживает Docker нативно).
|
Вместо запуска через Shell создай один Stack (стек) в веб-интерфейсе **Dockge**. Все три контейнера будут управляться из одного стека.
|
||||||
|
|
||||||
Создай файл `docker-compose.yml`:
|
1. Открой Dockge в браузере.
|
||||||
|
2. Нажми **Create Stack** (или **+**).
|
||||||
|
3. Введи имя стека, например `proxmox-mcp`.
|
||||||
|
4. В качестве рабочей директории стека укажи:
|
||||||
|
|
||||||
```bash
|
`/mnt/ssd/apps/mcp`
|
||||||
cat > /mnt/ssd/apps/mcp/docker-compose.yml << 'EOF'
|
|
||||||
|
Если Dockge уже использует собственную корневую директорию для стеков, выбери или создай каталог, соответствующий этому пути. Важно, чтобы каталоги `pve`, `kybinka` и `pve1` с файлами `config.json` находились внутри рабочей директории стека.
|
||||||
|
5. В редакторе compose-файла вставь следующий конфиг:
|
||||||
|
|
||||||
|
```yaml
|
||||||
services:
|
services:
|
||||||
proxmox-mcp-pve:
|
proxmox-mcp-pve:
|
||||||
image: ghcr.io/rekklesna/proxmoxmcp-plus:latest
|
image: ghcr.io/rekklesna/proxmoxmcp-plus:latest
|
||||||
@@ -83,7 +90,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "8811:8811"
|
- "8811:8811"
|
||||||
environment:
|
environment:
|
||||||
- PROXMOX_API_KEY=ключ-для-pve-придумай-любой-длинный
|
PROXMOX_API_KEY: ключ-для-pve-придумай-любой-длинный
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/ssd/apps/mcp/pve/config.json:/app/proxmox-config/config.json:ro
|
- /mnt/ssd/apps/mcp/pve/config.json:/app/proxmox-config/config.json:ro
|
||||||
|
|
||||||
@@ -94,7 +101,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "8812:8811"
|
- "8812:8811"
|
||||||
environment:
|
environment:
|
||||||
- PROXMOX_API_KEY=ключ-для-kybinka-придумай-любой-длинный
|
PROXMOX_API_KEY: ключ-для-kybinka-придумай-любой-длинный
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/ssd/apps/mcp/kybinka/config.json:/app/proxmox-config/config.json:ro
|
- /mnt/ssd/apps/mcp/kybinka/config.json:/app/proxmox-config/config.json:ro
|
||||||
|
|
||||||
@@ -105,39 +112,45 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "8813:8811"
|
- "8813:8811"
|
||||||
environment:
|
environment:
|
||||||
- PROXMOX_API_KEY=ключ-для-pve1-придумай-любой-длинный
|
PROXMOX_API_KEY: ключ-для-pve1-придумай-любой-длинный
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/ssd/apps/mcp/pve1/config.json:/app/proxmox-config/config.json:ro
|
- /mnt/ssd/apps/mcp/pve1/config.json:/app/proxmox-config/config.json:ro
|
||||||
EOF
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Замени `ключ-для-*` на свои сгенерированные ключи, например так:
|
6. Замени значения `ключ-для-*` на собственные длинные ключи. Ключи можно сгенерировать заранее командой:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
openssl rand -hex 32
|
openssl rand -hex 32
|
||||||
```
|
```
|
||||||
|
|
||||||
Выполни для каждого сервиса свой ключ, вставь в файл. Запусти всё:
|
Команду можно выполнить на любом компьютере, где установлен OpenSSL. Для каждого контейнера используй отдельный ключ.
|
||||||
|
7. Нажми **Save**.
|
||||||
|
8. Нажми **Deploy** / **Up** / **Start** — название кнопки зависит от версии Dockge.
|
||||||
|
|
||||||
```bash
|
После запуска в Dockge должны появиться три контейнера:
|
||||||
cd /mnt/ssd/apps/mcp
|
|
||||||
docker compose up -d
|
- `proxmox-mcp-pve` — порт `8811`;
|
||||||
```
|
- `proxmox-mcp-kybinka` — порт `8812`;
|
||||||
|
- `proxmox-mcp-pve1` — порт `8813`.
|
||||||
|
|
||||||
|
> Если Dockge не может найти `config.json`, проверь, что рабочая директория стека действительно `/mnt/ssd/apps/mcp`, а файлы находятся по адресам `/mnt/ssd/apps/mcp/pve/config.json`, `/mnt/ssd/apps/mcp/kybinka/config.json` и `/mnt/ssd/apps/mcp/pve1/config.json`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Шаг 4. Проверить, что контейнеры работают
|
## Шаг 4. Проверить, что контейнеры работают
|
||||||
|
|
||||||
|
Проверку можно выполнить через встроенный Terminal/Shell TrueNAS или другим компьютером в сети:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -f http://localhost:8811/livez # pve
|
curl -f http://192.168.31.100:8811/livez # pve
|
||||||
curl -f http://localhost:8812/livez # kybinka
|
curl -f http://192.168.31.100:8812/livez # kybinka
|
||||||
curl -f http://localhost:8813/livez # pve1
|
curl -f http://192.168.31.100:8813/livez # pve1
|
||||||
```
|
```
|
||||||
|
|
||||||
Каждый должен ответить `200 OK`. Дальше проверь авторизованный доступ (подставь свой ключ и порт):
|
Каждый должен ответить `200 OK`. Дальше проверь авторизованный доступ (подставь свой ключ и порт):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -H "Authorization: Bearer ключ-для-pve" http://localhost:8811/health
|
curl -H "Authorization: Bearer ключ-для-pve" http://192.168.31.100:8811/health
|
||||||
```
|
```
|
||||||
|
|
||||||
Если видишь `{"status":"ok"}` (или похожее) — контейнер видит Proxmox API.
|
Если видишь `{"status":"ok"}` (или похожее) — контейнер видит Proxmox API.
|
||||||
@@ -173,8 +186,8 @@ curl -H "Authorization: Bearer ключ-для-pve" http://localhost:8811/health
|
|||||||
| Симптом | Причина |
|
| Симптом | Причина |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Инструмент не появляется в Open WebUI | Проверь, что URL заканчивается на `/openapi.json`, а не просто на `/docs` |
|
| Инструмент не появляется в Open WebUI | Проверь, что URL заканчивается на `/openapi.json`, а не просто на `/docs` |
|
||||||
| 401 Unauthorized | Ключ Bearer в Open WebUI не совпадает с `PROXMOX_API_KEY` в docker-compose |
|
| 401 Unauthorized | Ключ Bearer в Open WebUI не совпадает с `PROXMOX_API_KEY` в compose-файле Dockge |
|
||||||
| Контейнер падает при старте | Опечатка в `config.json` (проверь `docker compose logs proxmox-mcp-pve`) |
|
| Контейнер падает при старте | Опечатка в `config.json` (проверь логи контейнера в Dockge) |
|
||||||
| Модель "не видит" VM | Токен Proxmox создан с "Privilege Separation" — права токена ограничены, пересоздай без этой галки или явно выдай права в Datacenter → Permissions |
|
| Модель "не видит" VM | Токен Proxmox создан с "Privilege Separation" — права токена ограничены, пересоздай без этой галки или явно выдай права в Datacenter → Permissions |
|
||||||
|
|
||||||
## Что дальше
|
## Что дальше
|
||||||
|
|||||||
Reference in New Issue
Block a user