Warnung: Wenn dies ein Ordner ist, wird der gesamte Inhalt einschließlich Unterordner und Dokumente gelöscht.
Definieren Sie pfadbasierte Zugriffsregeln für Bereiche Ihres Wikis. Regeln werden in der Reihenfolge ausgewertet. Die erste Übereinstimmung gewinnt.
Erstellen und verwalten Sie Backups Ihrer Wiki-Daten. Backups umfassen alle Dokumente, Bilder und Konfigurationsdateien.
Sammel-Stack aus mehreren MCP-Servern (Model Context Protocol), die Docker-Hosts und einen Proxmox-Cluster für MCP-fähige Clients (z.B. Cherry Studio) zugänglich machen. Der Docker-Zugriff läuft über einen abgesicherten Docker-Socket-Proxy, der Proxmox-Zugriff read-only über einen PVEAuditor-Token.
/var/run/docker.sock erreichbartcp://192.168.x.z:2375)config.json für proxmoxmcp-plusMCP_API_KEY für den Proxmox-MCP-Server (selbst generiert, siehe unten)mkdir /syno/proxmox-mcp
mkdir /syno/proxmox-mcp/proxmox-config
Im Docker-Ordner folgende Verzeichnisstruktur anlegen:
proxmox-mcp
proxmox-mcp/proxmox-config
Note
Der Docker-Socket-Proxy und die einzelnen mcp-docker-Instanzen benötigen keine eigenen Verzeichnisse — sie speichern keine persistenten Daten. Lediglich für mcp-proxmox wird eine config.json benötigt (siehe unten).
Dieser Token ist der Wert für auth.token_value in der config.json und stammt direkt aus Proxmox VE.
mcp@pve)readonly)auth.token_valueWarning
Das Token Secret wird nur einmalig beim Erstellen angezeigt. Es muss sofort gesichert werden (siehe Notizen).
Note
Der MCP_API_KEY wird nicht in Proxmox erstellt. Er ist laut Projekt-Dokumentation bewusst unabhängig von den Proxmox-Zugangsdaten und schützt ausschließlich den /mcp-Endpunkt von ProxmoxMCP-Plus per Bearer-Authentifizierung.
openssl rand -hex 32
MCP_API_KEY in die Umgebungsvariablen des mcp-proxmox-Services eintragenAuthorization: Bearer <MCP_API_KEY> mitsendenWarning
Ist MCP_API_KEY nicht gesetzt, bleibt der Streamable-HTTP-Endpunkt aus Kompatibilitätsgründen unauthentifiziert (mit Sicherheitswarnung beim Start). Für den produktiven Einsatz sollte der Key gesetzt sein.
In proxmox-config/ muss vor dem ersten Start eine config.json für proxmoxmcp-plus mit den Zugangsdaten zum Proxmox-Cluster (PVEAuditor-Token) abgelegt werden.
{
"proxmox": {
"host": "192.168.x.c",
"port": 8006,
"verify_ssl": false
},
"auth": {
"user": "mcp@pve",
"token_name": "readonly",
"token_value": "<token-value>"
},
"logging": {
"level": "INFO",
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
},
"security": {
"dev_mode": true
}
}
Warning
token_value ist im obigen Auszug durch einen Platzhalter ersetzt — siehe Notizen.
Note
security.dev_mode: true deaktiviert zusätzliche Sicherheitsprüfungen und ist für den produktiven Einsatz zu prüfen.
services:
docker-socket-proxy:
image: tecnativa/docker-socket-proxy:latest
container_name: docker-socket-proxy
restart: unless-stopped
environment:
POST: 0
CONTAINERS: 1
IMAGES: 1
NETWORKS: 1
VOLUMES: 1
INFO: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- mcp-docker
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:2375/_ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
# erster Host
mcp-docker:
image: ghcr.io/astral-sh/uv:python3.12-bookworm-slim
container_name: mcp-docker
restart: unless-stopped
depends_on:
- docker-socket-proxy
environment:
DOCKER_HOST: tcp://docker-socket-proxy:2375
command: >
uvx --with "mcp<2" mcp-proxy --host 0.0.0.0 --port 8933 --pass-environment
-- uvx --with "mcp<2" mcp-server-docker
ports:
- "192.168.x.y:8933:8933"
networks:
- mcp-docker
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8933/status', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# 2ter Host
mcp-docker-syno:
image: ghcr.io/astral-sh/uv:python3.12-bookworm-slim
container_name: mcp-docker-syno
restart: unless-stopped
environment:
DOCKER_HOST: tcp://192.168.x.z:2375
command: >
uvx --with "mcp<2" mcp-proxy --host 0.0.0.0 --port 8934 --pass-environment
-- uvx --with "mcp<2" mcp-server-docker
ports:
- "192.168.x.y:8934:8934"
networks:
- mcp-docker
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8934/status', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# 3.Host
mcp-docker-prod:
image: ghcr.io/astral-sh/uv:python3.12-bookworm-slim
container_name: mcp-docker-prod
restart: unless-stopped
environment:
DOCKER_HOST: tcp://192.168.x.a:2375
command: >
uvx --with "mcp<2" mcp-proxy --host 0.0.0.0 --port 8935 --pass-environment
-- uvx --with "mcp<2" mcp-server-docker
ports:
- "192.168.x.y:8935:8935"
networks:
- mcp-docker
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8935/status', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# 4.Host
mcp-docker-paperless:
image: ghcr.io/astral-sh/uv:python3.12-bookworm-slim
container_name: mcp-docker-paperless
restart: unless-stopped
environment:
DOCKER_HOST: tcp://192.168.x.b:2375
command: >
uvx --with "mcp<2" mcp-proxy --host 0.0.0.0 --port 8936 --pass-environment
-- uvx --with "mcp<2" mcp-server-docker
ports:
- "192.168.x.y:8936:8936"
networks:
- mcp-docker
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8936/status', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# Proxmox-Cluster (read-only über PVEAuditor-Token)
mcp-proxmox:
image: ghcr.io/rekklesna/proxmoxmcp-plus:0.5.14
container_name: mcp-proxmox
restart: unless-stopped
environment:
PROXMOX_MCP_MODE: mcp-http
MCP_HOST: 0.0.0.0
MCP_PORT: "8937"
MCP_TRANSPORT: STREAMABLE_HTTP
MCP_API_KEY: <mcp-api-key>
volumes:
# Für die Proxmox-VM verwenden
- /syno/proxmox-mcp/proxmox-config/config.json:/app/proxmox-config/config.json:ro
# Für die Synology verwenden
# Volume-Nummer ggf. anpassen
- /volume2/docker/proxmox-mcp/proxmox-config/config.json:/app/proxmox-config/config.json:ro
ports:
- "192.168.x.y:8937:8937"
networks:
- mcp-docker
healthcheck:
test: ["CMD", "python3", "-c", "import socket; socket.create_connection(('localhost', 8937), 3).close()"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
networks:
mcp-docker:
driver: bridge
Warning
Der MCP_API_KEY ist im obigen Stack durch einen Platzhalter ersetzt — siehe Notizen.
| Service | Port | Zweck |
|---|---|---|
| mcp-docker | 8933 (gebunden an 192.168.x.y) |
MCP-Zugriff auf den 1. Docker-Host |
| mcp-docker-syno | 8934 (gebunden an 192.168.x.y) |
MCP-Zugriff auf den 2. Docker-Host (Synology) |
| mcp-docker-prod | 8935 (gebunden an 192.168.x.y) |
MCP-Zugriff auf den 3. Docker-Host (Prod) |
| mcp-docker-paperless | 8936 (gebunden an 192.168.x.y) |
MCP-Zugriff auf den 4. Docker-Host (Paperless) |
| mcp-proxmox | 8937 (gebunden an 192.168.x.y), Endpunkt /mcp, mit Authorization: Bearer <MCP_API_KEY> |
MCP-Zugriff auf den Proxmox-Cluster (read-only) |
Note
Alle Healthchecks sind in diesem Stack bereits vollständig angegeben und geprüft, kein zusätzlicher Bedarf.
| Oberfläche | Service | Host-Pfad | Container-Pfad | Zweck |
|---|---|---|---|---|
| — | docker-socket-proxy | /var/run/docker.sock |
/var/run/docker.sock (ro) |
Zugriff auf den lokalen Docker-Daemon, read-only |
| Proxmox-VM | mcp-proxmox | /syno/proxmox-mcp/proxmox-config/config.json |
/app/proxmox-config/config.json (ro) |
Konfiguration mit Proxmox-API-Zugangsdaten |
| Synology | mcp-proxmox | /volume2/docker/proxmox-mcp/proxmox-config/config.json |
/app/proxmox-config/config.json (ro) |
Konfiguration mit Proxmox-API-Zugangsdaten |
| Variable | Wert | Bedeutung |
|---|---|---|
POST |
0 |
Schreibende Docker-API-Aufrufe deaktiviert |
CONTAINERS |
1 |
Zugriff auf Container-Informationen erlaubt |
IMAGES |
1 |
Zugriff auf Image-Informationen erlaubt |
NETWORKS |
1 |
Zugriff auf Netzwerk-Informationen erlaubt |
VOLUMES |
1 |
Zugriff auf Volume-Informationen erlaubt |
INFO |
1 |
Zugriff auf allgemeine Docker-Info erlaubt |
| Variable | Wert | Bedeutung |
|---|---|---|
DOCKER_HOST |
tcp://docker-socket-proxy:2375 bzw. tcp://192.168.x.z|a|b:2375 |
Adresse des jeweiligen Docker-Daemons |
| Variable | Wert | Bedeutung |
|---|---|---|
PROXMOX_MCP_MODE |
mcp-http |
Betriebsmodus des MCP-Servers |
MCP_HOST |
0.0.0.0 |
Bind-Adresse |
MCP_PORT |
8937 |
Port des MCP-Servers |
MCP_TRANSPORT |
STREAMABLE_HTTP |
Transport-Protokoll |
MCP_API_KEY |
(siehe Notizen) | Selbst generierter Bearer-Token zur Absicherung des /mcp-Endpunkts, unabhängig von den Proxmox-Zugangsdaten |
| Feld | Wert | Bedeutung |
|---|---|---|
proxmox.host |
192.168.x.c |
Adresse des Proxmox-Clusters |
proxmox.port |
8006 |
API-Port von Proxmox VE |
proxmox.verify_ssl |
false |
SSL-Zertifikatsprüfung deaktiviert |
auth.user |
mcp@pve |
Proxmox-API-User |
auth.token_name |
readonly |
Name des API-Tokens (Token ID) |
auth.token_value |
(siehe Notizen) | Token Secret des API-Tokens (PVEAuditor-Rolle) |
logging.level |
INFO |
Log-Level |
logging.format |
%(asctime)s - %(name)s - %(levelname)s - %(message)s |
Log-Format |
security.dev_mode |
true |
Entwicklungsmodus aktiv (zusätzliche Sicherheitsprüfungen deaktiviert) |
Netzwerk: eigenes Bridge-Netzwerk mcp-docker (alle Services)
Neustart-Verhalten: unless-stopped (alle Services)