Skip to Content

Docker

Zwei Docker-Images fuer den Standalone-Betrieb ohne eigene Anwendung.

Voraussetzungen

Fuer den Zugriff auf die Docker-Images ist ein Login am ProcessCube Marketplace erforderlich:

echo "IHR_API_KEY" | docker login marketplace.processcube.io -u processcube --password-stdin

Den API-Key finden Sie in Ihrer ProcessCube-Rechnung. Details siehe Docker-Images verwenden.

Such-Server

docker run -d \ -v qmd-data:/data \ -p 3001:3001 \ -e QMD_API_KEY=mein-geheimer-key \ marketplace.processcube.io/processcube-io/qmd-search-server

Endpoints

  • GET /api/search?q=... — Suche
  • GET /api/collections — Collections
  • GET /health — Health-Check

Umgebungsvariablen

VariableDefaultBeschreibung
QMD_INDEX_PATH/data/index.sqlitePfad zur Datenbank
QMD_SEARCH_MODEftsfts oder hybrid
QMD_EMBED_PROVIDERnonenone, openai, voyage
QMD_API_KEY(leer)API-Key fuer Auth (leer = kein Auth)
QMD_MCP_ENABLEDfalseMCP-Endpoint aktivieren
PORT3001Server-Port

Indexer

Der Indexer erstellt/aktualisiert den Such-Index. Konfiguration ueber eine JSON-Datei.

docker run --rm \ -v ./config.json:/app/config.json \ -v qmd-data:/data \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ marketplace.processcube.io/processcube-io/qmd-search-indexer

config.json

{ "collections": [ { "name": "docs", "path": "/content/docs", "pattern": "**/*.md", "context": "Projekt-Dokumentation", "group": "Allgemein" } ], "contentSources": [ { "plugin": "github", "config": { "collection": "changelogs", "files": [ { "owner": "org", "repo": "repo", "branch": "main", "path": "CHANGELOG.md", "outputName": "repo.md" } ] } } ] }

Umgebungsvariablen

VariableDefaultBeschreibung
QMD_CONFIG/app/config.jsonPfad zur Config
QMD_INDEX_PATH/data/index.sqlitePfad zur Datenbank
QMD_EMBED_PROVIDERnoneEmbedding-Provider
SKIP_EMBEDfalseEmbeddings ueberspringen
GITHUB_TOKEN(leer)Fuer GitHub-Plugin

Env-Var-Syntax in der Config (${GITHUB_TOKEN}) wird beim Laden aufgeloest.

Kubernetes

CronJob (Indexer)

apiVersion: batch/v1 kind: CronJob metadata: name: qmd-indexer spec: schedule: "*/30 * * * *" jobTemplate: spec: template: spec: containers: - name: indexer image: marketplace.processcube.io/processcube-io/qmd-search-indexer env: - name: GITHUB_TOKEN valueFrom: secretKeyRef: name: github-token key: token volumeMounts: - name: index mountPath: /data - name: config mountPath: /app/config.json subPath: config.json volumes: - name: index persistentVolumeClaim: claimName: qmd-index - name: config configMap: name: qmd-config restartPolicy: OnFailure

Deployment (Server)

apiVersion: apps/v1 kind: Deployment metadata: name: qmd-search spec: replicas: 1 template: spec: containers: - name: server image: marketplace.processcube.io/processcube-io/qmd-search-server ports: - containerPort: 3001 env: - name: QMD_API_KEY valueFrom: secretKeyRef: name: qmd-secret key: api-key volumeMounts: - name: index mountPath: /data readOnly: true livenessProbe: httpGet: path: /health port: 3001 readinessProbe: httpGet: path: /health port: 3001 volumes: - name: index persistentVolumeClaim: claimName: qmd-index