Neues Dokument erstellen

Der Titel Ihres Dokuments (wird als H1 angezeigt)
URL-freundlicher Name (keine Leerzeichen, Bindestriche verwenden)
Pfad, unter dem das Dokument erstellt werden soll (optional, verwenden Sie Schrägstriche, um Unterverzeichnisse zu erstellen)

Dokument verschieben/umbenennen

Aktueller Speicherort des Dokuments
Neuer Pfad für das Dokument (einschließlich des Slugs)
Dies ändert nur den Pfad des Dokuments und nicht den Titel des Dokuments (H1-Überschrift).

Dokument löschen

Sind Sie sicher, dass Sie dieses Dokument löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.

Warnung: Wenn dies ein Ordner ist, wird der gesamte Inhalt einschließlich Unterordner und Dokumente gelöscht.

Message

Message content goes here.

Confirm Action

Are you sure?

Anhänge

Erlaubte Dateitypen: jpg, jpeg, png, gif, svg, webp, txt, log, csv, sfd, zip, pdf, docx, xlsx, pptx, mp4 (Max: 10MB)

Dokumentdateien

Angehängte Dateien werden geladen...

Dokumentverlauf

Frühere Versionen

Loading versions...

Vorschau

Wählen Sie eine Version zur Vorschau

Wiki-Einstellungen

Sprache für die Benutzeroberfläche
Bestimmt, welche Protokollmeldungen in die Konsole geschrieben werden (debug, info, warn, error)
Anzahl der zu speichernden Versionen pro Dokument. Auf 0 setzen, um die Versionierung zu deaktivieren.
Maximal erlaubte Dateigröße für Uploads in MB.

Benutzerverwaltung

Neuen Benutzer hinzufügen

Leer lassen, um das aktuelle Passwort beizubehalten
Benutzer in diesen Gruppen können auf eingeschränkte Bereiche zugreifen.

Definieren Sie pfadbasierte Zugriffsregeln für Bereiche Ihres Wikis. Regeln werden in der Reihenfolge ausgewertet. Die erste Übereinstimmung gewinnt.

Aktive Regeln

Markdown-Dateien aus einem ZIP-Archiv importieren. Dateien werden verarbeitet und in der entsprechenden Dokumentstruktur gespeichert. Die Verzeichnisstruktur in der ZIP-Datei (Kategorie/Unterkategorie) wird im Wiki beibehalten.

Laden Sie ein ZIP-Archiv hoch, das Markdown-Dateien (.md) zum Importieren enthält.

Erstellen und verwalten Sie Backups Ihrer Wiki-Daten. Backups umfassen alle Dokumente, Bilder und Konfigurationsdateien.

Verfügbare Backups

Lade Backups...

Zugriffsregel hinzufügen/bearbeiten

Ausgewählt: /

Spalte hinzufügen

MCP-Docker & MCP-Proxmox

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.


Voraussetzungen


Verzeichnisse anlegen

Proxmox-VM

mkdir /syno/proxmox-mcp
mkdir /syno/proxmox-mcp/proxmox-config

Synology

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).


Proxmox-API-Token erstellen (für config.json)

Dieser Token ist der Wert für auth.token_value in der config.json und stammt direkt aus Proxmox VE.

  1. In der Proxmox-Weboberfläche zu Datacenter → Permissions → API Tokens navigieren
  2. Add klicken
  3. Als User einen dedizierten Benutzer wählen bzw. anlegen (z.B. mcp@pve)
  4. Als Token ID einen Namen vergeben (z.B. readonly)
  5. Privilege Separation aktiviert lassen (empfohlen)
  6. Den erzeugten Token Secret sofort notieren (wird nur einmal angezeigt) → das ist auth.token_value
  7. Unter Datacenter → Permissions dem Token die Rolle PVEAuditor zuweisen, um ausschließlich Lesezugriff zu gewähren

Warning

Das Token Secret wird nur einmalig beim Erstellen angezeigt. Es muss sofort gesichert werden (siehe Notizen).


MCP_API_KEY erstellen (für den MCP-HTTP-Endpunkt)

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.

  1. Einen zufälligen Schlüssel lokal generieren:
openssl rand -hex 32
  1. Den erzeugten Wert als MCP_API_KEY in die Umgebungsvariablen des mcp-proxmox-Services eintragen
  2. MCP-Clients müssen bei jeder Anfrage den Header Authorization: Bearer <MCP_API_KEY> mitsenden

Warning

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.


Konfigurationsdatei vorbereiten

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.


Konfigurationsdatei (config.json)

{
  "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.


Compose-Stack

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.


Web-Zugriff

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.


Volumes

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

Umgebung

docker-socket-proxy

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

mcp-docker / mcp-docker-syno / mcp-docker-prod / mcp-docker-paperless

Variable Wert Bedeutung
DOCKER_HOST tcp://docker-socket-proxy:2375 bzw. tcp://192.168.x.z|a|b:2375 Adresse des jeweiligen Docker-Daemons

mcp-proxmox

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

config.json (mcp-proxmox)

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)


Suchergebnisse