4.3 KiB
EasyMCP / SapB1Mcp — Installation (Kunden-Deployment)
Der Stack wird direkt aus der öffentlichen Registry von git.kraemerweb.de
installiert und aktualisiert — es wird kein Installationspaket kopiert.
Voraussetzungen
- Linux-Host, x86_64 (getestet: Debian 12/13)
- Docker Engine ≥ 24 mit Compose-Plugin v2 (
docker compose version) — alternativ ein vorhandenesdocker-compose-Binary curl- HTTPS-Zugriff auf
git.kraemerweb.de(Release-Dateien + Container-Registry) - Ein Reverse Proxy mit TLS (z. B. Caddy, nginx, Traefik) vor dem Stack. HTTPS ist Pflicht: der MCP-Server validiert OAuth-Tokens nur gegen einen HTTPS-Issuer.
- Erreichbarer SAP Business One Service Layer (
https://<sap-host>:50000/b1s/)
Installation
-
Setup-Skript holen (z. B. nach
/opt/sapb1mcp):mkdir -p /opt/sapb1mcp && cd /opt/sapb1mcp curl -fsSLO https://git.kraemerweb.de/kraemerweb/easymcp-release/raw/branch/main/setup.sh bash setup.shbash setup.sh <version>installiert eine bestimmte Version (Tags siehe Release-Repo); ohne Angabe wirdlatestverwendet. Das Skript lädtdocker-compose.yml,hydra.ymlund.env.example, erzeugtsecrets/creds_keyund eine.envmit fertigen Zufalls-Secrets. -
.envanpassen — Pflichtwerte:Variable Bedeutung PUBLIC_ISSUERöffentliche HTTPS-URL des OAuth-Issuers (vHost → Port 4444) LOGIN_URLöffentliche HTTPS-URL des Login-Dienstes (vHost → Port 8081) MCP_RESOURCE_URLöffentliche HTTPS-URL des MCP-Servers (vHost → Port 8080) SL_BASE_URLSAP Service Layer, trailing /b1s/ist PflichtSL_COMPANYDBSAP-Firmendatenbank ADMIN_SAP_USERSAP-Benutzer mit Zugang zum Admin-UI (Port 8082) MCP_ALLOWED_USERSSAP-Benutzer mit MCP-Dauerzugriff (Allowlist, default-deny) PG_PASSWORD,SECRETS_SYSTEM,APP_VERSIONundPROJECT_DIRhatsetup.shbereits gesetzt.SL_INSECURE=truenur bei self-signed SAP-Zertifikat.MCP_REQUIRED_SCOPEbleibt im Regelfall leer: claude.ai und ChatGPT gewähren denmcp-Scope im Consent nicht — mit gesetztem Wert enden deren Tool-Calls mit 403. Nur setzen, wenn ausschließlich Clients zugreifen, die den Scope explizit anfordern. -
Stack starten:
docker compose pull docker compose up -d -
Verifizieren:
docker compose ps # alle Dauerläufer "healthy" curl -s http://127.0.0.1:8080/.well-known/oauth-protected-resource
Reverse Proxy
Alle Dienste binden per Default nur an 127.0.0.1. Läuft der Reverse Proxy
auf einem anderen Host, in .env BIND_ADDR/ADMIN_BIND auf die interne
Host-IP setzen — nie 0.0.0.0.
| vHost (Beispiel) | Backend-Port | Dienst |
|---|---|---|
mcp.<domain> |
8080 | MCP-Resource-Server |
mcp-oauth.<domain> |
4444 | Hydra (OAuth-Issuer) |
mcp-login.<domain> |
8081 | Login/Consent |
mcp-admin.<domain> (intern!) |
8082 | Admin-UI |
Der Proxy muss X-Forwarded-Proto: https setzen (TLS-Terminierung).
Das Admin-UI gehört NICHT ins öffentliche Internet.
Update auf eine neue Version
Weg 1 — über das Admin-UI (empfohlen): Seite Update öffnen, optional
eine Zielversion eintragen (leer = latest), „Update starten" klicken. Der
Stack holt die neuen Images aus der Registry und erneuert alle Dienste selbst
(.env, secrets/ und die Datenbank bleiben erhalten). Dabei startet auch
das Admin-UI neu — danach neu anmelden.
Weg 2 — manuell per SSH:
bash setup.sh [version] # aktualisiert Deployment-Dateien + APP_VERSION
docker compose pull
docker compose up -d
Rollback
Wie ein Update, nur mit einer älteren Versionsnummer als Zielversion
(Admin-UI-Feld „Zielversion" bzw. bash setup.sh <version>).
Backup
- Docker-Volume
sapb1mcp_pgdata(Postgres: Benutzer, Audit, Hydra-Clients) secrets/creds_key— ohne diese Datei sind gespeicherte SAP-Zugangsdaten unwiederbringlich verloren.env(enthältSECRETS_SYSTEM— nach Inbetriebnahme nie ändern)
Support / Troubleshooting
Für Support-Mitarbeiter ohne Server-Zugang gibt es den separaten Leitfaden
SUPPORT.md — Störungsdiagnose komplett über das
Admin-Webinterface, ohne Kommandozeile.