From 5b289e9a525aac6c3384cf7d27de19bcd17739ea Mon Sep 17 00:00:00 2001 From: host Date: Sat, 8 Aug 2026 19:58:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B7=D0=B0=D1=89=D0=B8=D1=89=D1=91=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20Docker=20Compose=20=D0=B4=D0=BB=D1=8F=20MCP-=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compose.yaml | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 compose.yaml diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..6665636 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,131 @@ +services: + proxmox-mcp-pve: + image: ghcr.io/rekklesna/proxmoxmcp-plus:latest + container_name: proxmox-mcp-pve + restart: unless-stopped + init: true + stop_grace_period: 30s + ports: + - "${MCP_BIND_ADDRESS:-192.168.31.100}:8811:8811" + environment: + PROXMOX_API_KEY: ${PROXMOX_PVE_API_KEY:?PROXMOX_PVE_API_KEY is required} + volumes: + - type: bind + source: ${MCP_CONFIG_ROOT:-/mnt/ssd/apps/mcp}/pve/config.json + target: /app/proxmox-config/config.json + read_only: true + read_only: true + tmpfs: + - /tmp:size=64m,noexec,nosuid,nodev + pids_limit: 128 + mem_limit: 256m + cpus: 0.5 + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + logging: &default-logging + driver: json-file + options: + max-size: "10m" + max-file: "3" + networks: + - mcp-network + + proxmox-mcp-kybinka: + image: ghcr.io/rekklesna/proxmoxmcp-plus:latest + container_name: proxmox-mcp-kybinka + restart: unless-stopped + init: true + stop_grace_period: 30s + ports: + - "${MCP_BIND_ADDRESS:-192.168.31.100}:8812:8811" + environment: + PROXMOX_API_KEY: ${PROXMOX_KYBINKA_API_KEY:?PROXMOX_KYBINKA_API_KEY is required} + volumes: + - type: bind + source: ${MCP_CONFIG_ROOT:-/mnt/ssd/apps/mcp}/kybinka/config.json + target: /app/proxmox-config/config.json + read_only: true + read_only: true + tmpfs: + - /tmp:size=64m,noexec,nosuid,nodev + pids_limit: 128 + mem_limit: 256m + cpus: 0.5 + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + logging: *default-logging + networks: + - mcp-network + + proxmox-mcp-pve1: + image: ghcr.io/rekklesna/proxmoxmcp-plus:latest + container_name: proxmox-mcp-pve1 + restart: unless-stopped + init: true + stop_grace_period: 30s + ports: + - "${MCP_BIND_ADDRESS:-192.168.31.100}:8813:8811" + environment: + PROXMOX_API_KEY: ${PROXMOX_PVE1_API_KEY:?PROXMOX_PVE1_API_KEY is required} + volumes: + - type: bind + source: ${MCP_CONFIG_ROOT:-/mnt/ssd/apps/mcp}/pve1/config.json + target: /app/proxmox-config/config.json + read_only: true + read_only: true + tmpfs: + - /tmp:size=64m,noexec,nosuid,nodev + pids_limit: 128 + mem_limit: 256m + cpus: 0.5 + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + logging: *default-logging + networks: + - mcp-network + + truenas-mcp: + build: + context: ./truenas + dockerfile: Dockerfile + container_name: truenas-mcp + restart: unless-stopped + init: true + stop_grace_period: 30s + ports: + - "${MCP_BIND_ADDRESS:-192.168.31.100}:8814:8000" + environment: + TRUENAS_URL: ${TRUENAS_URL:-http://192.168.31.100} + TRUENAS_API_KEY: ${TRUENAS_API_KEY:?TRUENAS_API_KEY is required} + TRUENAS_VERIFY_SSL: ${TRUENAS_VERIFY_SSL:-false} + TRUENAS_ENABLE_DESTRUCTIVE_OPS: ${TRUENAS_ENABLE_DESTRUCTIVE_OPS:-false} + TRUENAS_LOG_LEVEL: ${TRUENAS_LOG_LEVEL:-INFO} + volumes: + - type: bind + source: ${MCP_CONFIG_ROOT:-/mnt/ssd/apps/mcp}/truenas/config.json + target: /app/config.json + read_only: true + read_only: true + tmpfs: + - /tmp:size=64m,noexec,nosuid,nodev + pids_limit: 128 + mem_limit: 256m + cpus: 0.5 + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + logging: *default-logging + networks: + - mcp-network + +networks: + mcp-network: + name: mcp-network + driver: bridge