Zum Hauptinhalt springen

Service-Port-Map

Nach außen ist nur ein einziger Port offen​

Im AI-Stack belegt allein plantpulse-proxy (nginx) die Ports 80 / 443 des Hosts. Die Chat-Oberfläche, die Verwaltungskonsole und sämtliche APIs laufen über diesen Proxy. Auch den HTTPS-Port der Verwaltungskonsole (Standard 5960) nimmt dieser Proxy entgegen — siehe unten.

Der App-Container veröffentlicht Port 80 nicht

AI Chat Web ist nur innerhalb des Containers erreichbar (expose: 8080). Nach außen gibt es nur den Proxy — der Expositionspunkt wird an einer einzigen Stelle gebündelt, und dort werden Firewall, Audit und TLS abgewickelt.

Die Aufteilung erfolgt über den Hostnamen​

Der Proxy wählt das Backend anhand des Headers Host aus. Deshalb müssen die folgenden Namen im DNS auf die Proxy-IP zeigen, damit die jeweiligen Dienste erreichbar sind.

Die Backends entsprechen exakt den Containernamen — die Werte unten sind genau die Zeichenketten, die in set $upstream von nginx eingetragen werden, und dieselben Namen gelten auch für curl innerhalb des Containers.

HostBackend (Containername:Port)Was
alle übrigen (Standard)plantpulse-copilot-web:8080AI Chat Web — Chat-Oberfläche
admin.*plantpulse-admin-web:8080Verwaltungskonsole
llm.*plantpulse-litellm:4000LLM-Gateway (OpenAI-kompatibel)
rag.*plantpulse-rag-api:7115RAG-Such-API
timeseries.*plantpulse-timeseries-insight-api:8970Zeitreihen-Insights-API
parser.*plantpulse-document-understanding-api:7120Dokumenten-Parsing-API
vision.*plantpulse-vision-api:7130Vision-API

Pfade des Standard-Hosts — beim Betrieb mit nur einer Domain​

Damit keine weiteren Subdomains angelegt werden müssen, sind am Standard-Host (Chat-Oberfläche) zusätzlich die folgenden Pfade geöffnet. Mit einer Domain und einem Zertifikat erreichen Sie Gateway und MCP-Server.

PfadBackendWas
/mcp/gateway/plantpulse-mcp-gateway-api:7160/mcp/MCP Gateway — die Adresse, mit der sich externe MCP-Clients verbinden (Gateway-Schlüssel ppgw_…). Die Verwaltungs-REST-API /api/v1 wird nicht geöffnet
/llm/plantpulse-litellm:4000/LLM-Gateway (OpenAI-kompatibel) — base_url = "https://<호스트>/llm/v1"
/mcp/rag/plantpulse-rag-api:7115/mcp/RAG-MCP-Server
/mcp/timeseries/plantpulse-timeseries-insight-api:8970/mcp/Zeitreihen-Insights-MCP-Server
/mcp/parser/plantpulse-document-understanding-api:7120/mcp/Dokumenten-Parsing-MCP-Server
/mcp/vision/plantpulse-vision-api:7130/mcp/Vision-MCP-Server
  • Geben Sie den abschließenden Schrägstrich mit an. Fehlt er, wird automatisch auf 308 umgeleitet (der Body bleibt erhalten).
  • Als MCP-Transport ist ausschließlich Streamable HTTP möglich. /sse gibt es nicht.
  • Die Authentifizierung erfolgt im Backend, nicht im Proxy. Die vier MCP-Dienste antworten ohne X-API-Key: <PI_INBOUND_API_KEY> (oder Bearer) mit 401. Für /llm/ wird der Master-Key oder ein virtueller Key des Gateways verwendet.
  • Der Metrik-Pfad /metrics der einzelnen Backends ist kein neuer Port, sondern ein Pfad auf demselben Port, und liegt ebenfalls hinter dem Inbound-Key (Re-Release 2026.10) → Logs und Monitoring
Die LiteLLM-Verwaltungsoberfläche ist über /llm/ui nicht erreichbar

Da das Pfadpräfix beim Weiterleiten entfernt wird, stimmen die Asset-Links der Verwaltungsoberfläche nicht mehr. Öffnen Sie die Verwaltungsoberfläche über den Host llm.* oder direkt über :4000/ui.

Der Standard-Host ist bereits von außen erreichbar

Diese Pfade sind unmittelbar unter dem im Internet veröffentlichten Namen erreichbar. Ist PI_INBOUND_API_KEY leer, stoppt die Prüfung vor dem Start den Stack — der Platzhalter CHANGE_ME_… besteht diese Prüfung jedoch. Prüfen Sie unmittelbar nach der Installation unbedingt mit bin/doctor.sh, dass keine Platzhalter übrig geblieben sind.

copliot ist der Repository-Name, der Container heißt copilot

Das Repository heißt plantpulse-ai-copliot-web (der Tippfehler hat sich verfestigt), der Containername lautet jedoch plantpulse-copilot-web. Mit der Schreibweise des Repositorys findet docker logs nichts.

Klären Sie, wo TLS terminiert wird

Der Proxy lauscht zwar auch auf 443, bei Deployments mit vorgelagertem Load Balancer oder Reverse Proxy wird TLS jedoch dort terminiert und der Proxy erhält Klartext. Wird er so konfiguriert, dass er die vorgelagerte Terminierung ignoriert, entstehen Redirect-Schleifen. Klären Sie zuerst, welche Variante vorliegt.

관리 콘솔은 포트로도 열립니다​

Interne Benutzer, die sich per IP verbinden, haben keinen Hostnamen und können die Verwaltungskonsole daher auf Port 443 nicht auswählen. Deshalb gibt es ab 2026.10 zwei portbasierte Zugänge zur Verwaltungskonsole.

AdresseEntgegennehmende SeiteKey (Standardwert)
http://<AI_SERVER_IP>:5959direkt zu plantpulse-admin-web:8080 (Klartext)PI_ADMIN_WEB_PORT (5959)
https://<AI_SERVER_IP>:5960Proxy terminiert TLS und leitet an plantpulse-admin-web:8080 weiterPI_ADMIN_WEB_TLS_PORT (5960)
  • Beide sind offen. Der Klartext-Zugang wird nicht auf HTTPS umgeleitet.
  • Das HTTPS-Zertifikat ist dasselbe wie bei 443 (das Zertifikat des Proxys). Die Konsole hält kein eigenes Zertifikat.
  • Zum Ändern der Ports passen Sie die beiden obigen Keys in der Host-env (/etc/kopens/plantpulse-ai.env) an und starten neu.
Port 9080 aus 2026.09 und früher entfällt

Ältere Versionen stellten die Verwaltungskonsole auf :9080 bereit. Ab 2026.10 sind es 5959 (HTTP) · 5960 (HTTPS), und da der Konsolen-Container als Non-Root-nginx läuft, hat sich der interne Port von 80 auf 8080 geändert. Passen Sie Lesezeichen und Firewall-Regeln entsprechend an.

Auch der Proxy läuft als Non-Root — die äußeren Ports bleiben, nur die inneren haben sich geändert​

plantpulse-proxy aus 2026.10 läuft nicht als root, sondern mit uid 10001 und gid 0 und öffnet innerhalb des Containers keine Ports unter 1024. Die vom Host (außen) sichtbaren Ports haben sich nicht geändert.

Host (außen)Proxy innenWas
808080HTTP (Klartext)
4439443HTTPS — Namensrouting für Chat-Oberfläche, admin.* usw.
PI_ADMIN_WEB_TLS_PORT (5960)8443Verwaltungskonsole HTTPS

Firewall, vorgelagerter Load Balancer und DNS können weiterhin auf 80, 443 und 5960 verweisen. Da die inneren Ports gemeinsam im selben Release von Compose und Proxy-Image geändert werden, führt ein Rollback allein des Proxy-Images auf eine ältere Version zu abgelehnten Verbindungen — setzen Sie bei einem Rollback den gesamten Stack auf dieselbe Version.

Wurde das Zertifikats-Volume (pp-proxy-certs) noch zu root-Zeiten angelegt, gehört der Key root allein und der Non-Root-Proxy kann ihn nicht lesen. bin/up.sh, restart.sh und update.sh korrigieren die Eigentumsrechte einmalig vor dem Start → Servicebetrieb


Direkt im LAN geöffnete Ports​

Diese Ports werden ohne Umweg über den Proxy unmittelbar am Host veröffentlicht. Sie sind nicht an 127.0.0.1 gebunden, sondern auf allen Interfaces offen — sperren Sie sie per Firewall, damit sie von außerhalb des Firmennetzes nicht erreichbar sind.

PortServiceWarum offen
80 / 443plantpulse-proxyeinziger Benutzerzugang
4000LiteLLMLLM-Gateway direkt (auch über llm.* erreichbar)
7115RAG-APIfür MCP-Clients (Claude Desktop o. Ä.) direkt
8970Zeitreihen-Insights-APIfür MCP-Clients direkt
5959Verwaltungskonsole (plantpulse-admin-web) — HTTPfür Betreiber. Auch über admin.* erreichbar
5960Verwaltungskonsole — HTTPS (entgegengenommen von plantpulse-proxy)für Betreiber. Zertifikat identisch mit 443
7474Neo4j BrowserVerwaltungs-UI der Graph-DB (plantpulse-neo4j — RAG-Wissensgraph)
7687Neo4j BoltAbfrageprotokoll der Graph-DB (dieselbe Instanz)
Es gibt zwei Neo4j — das für den Digital Thread ist nicht geöffnet

Ab 2026.10 startet zusätzlich ein eigenes Neo4j für den Digital Thread (plantpulse-digital-thread-neo4j). Dieses veröffentlicht keine Ports — nur plantpulse-digital-thread-api verbindet sich innerhalb des Compose-Netzwerks. Die obigen Ports 7474 und 7687 gehören zum seit jeher vorhandenen plantpulse-neo4j (Wissensgraph von LightRAG) → Digital Thread

Auf 4000 liegt eine Verwaltungsoberfläche mit Benutzeranmeldung

:4000/ui ist die LiteLLM-Verwaltungsoberfläche, der Zugang erfolgt über PI_LITELLM_UI_USERNAME · PI_LITELLM_UI_PASSWORD (Standard admin / admin123!). Da sie im LAN offen ist, ändern Sie das Passwort beim Commissioning → Initiales Passwort ändern

Nur bei aktiviertem Profil​

Diese Dienste sind im Standardstart nicht enthalten und starten nur, wenn sie mit dem jeweiligen Compose-Profil hochgefahren werden.

PortServiceProfil
5000lokale Image-Registryregistry
LOCAL_REGISTRY_UI_PORT (Standard 5080)Registry-Verwaltungs-UIregistry
(nicht veröffentlicht — innen 8000)Mitschnitt-vLLM plantpulse-asrmedia
(kein Netzwerk)Mitschnitt-Audiobibliothek plantpulse-asr-audio — einmaligmedia

registry dient dazu, Images im Air-Gap-Netzwerk intern zu beziehen → Air-Gap-Installation. media ist für Video- und Audiomitschnitte gedacht. Der Profilname wird nicht von Hand angegeben, sondern mit einer einzigen Zeile PI_MEDIA_ENABLED=true in der Host-env aktiviert — das Betriebsskript hängt das Profil anhand dieses Werts an → Video- und Audioerfassung

Phoenix startet, wird aber nicht am Host geöffnet

Arize Phoenix (Trace-UI · OTLP-Erfassung, 6006) startet standardmäßig — ein Profil muss dafür nicht aktiviert werden. Allerdings wird ab 2026.09 kein Host-Port mehr veröffentlicht. Phoenix hat keine Authentifizierung und speichert die Inhalte von Fragen und Antworten (einschließlich Anlagen-ID und Tag aus den Werkzeugargumenten). Die Statusprüfung der Verwaltungskonsole greift auf die containerinterne Adresse zu und ist daher nicht betroffen. Für die Diagnose können Sie den Port über „Diagnoseports" unten vorübergehend öffnen.

Die beim Umbau 2026-07 entfallenen Dienste Langflow (7860) und Jupyter (3500) wurden tatsächlich entfernt und lassen sich nicht reaktivieren.

Diagnoseports — PP_DEBUG_PORTS=1​

Normalerweise geschlossene Ports lassen sich nur für die Diagnose wie früher öffnen (Overlay compose/docker-compose.debug.yml).

cd /opt/kopens/plantpulse-ai-docker
PP_DEBUG_PORTS=1 bin/compose-up.sh
PortService
9081Backend der Verwaltungskonsole (admin-api)
8000 · 8003 · 8004vLLM Generierung · Embedding · Reranking
8005Mitschnitt-vLLM (nur bei aktiviertem Profil media)
5001docling
8980Zeitreihen-Inferenzserver
9400DCGM Exporter
6333Qdrant
6006Phoenix
Diese Ports haben keine Authentifizierung

Starten Sie nach Abschluss der Diagnose ohne PP_DEBUG_PORTS neu, um sie wieder zu schließen.


Nur intern (nicht veröffentlicht)​

Diese Dienste sind ausschließlich über den Servicenamen innerhalb des Compose-Netzwerks erreichbar. Dass vom Host aus ein Test mit nc -z keine Antwort liefert, ist normal.

Serviceinterne Adresse (Containername:Port)Rolle
AI Chat Webplantpulse-copilot-web:8080Chat-Oberfläche (Standard-Backend des Proxys)
Backend der Verwaltungskonsoleplantpulse-admin-apimaßgebliche Instanz für die Authentifizierung. Wird von nginx in plantpulse-admin-web weitergeleitet
Dokumenten-Parsing-APIplantpulse-document-understanding-api:7120Backend von parser.*
Vision-APIplantpulse-vision-api:7130Backend von vision.*
LightRAGplantpulse-lightrag:9621RAG-Engine. Dokumentenverwaltungs-WebUI (/webui)
Qdrantplantpulse-qdrant:6333Vektor-DB
Doclingplantpulse-docling-serve:5001Dokumentenkonvertierung
vLLM (Generierung)plantpulse-llm:8000lokale LLM-Inferenz
vLLM (Embedding)plantpulse-emb:8000Embedding
vLLM (Reranking)plantpulse-rerank:8000Reranking
Zeitreihen-Inferenzplantpulse-timeseries-insight-server:8980Serving der Insight-Modelle
Mitschnitt-vLLMplantpulse-asr:8000Sprache → Text. Startet nur beim Profil media
DCGM Exporterplantpulse-dcgm:9400GPU-Metriken
Phoenixplantpulse-phoenix:6006Trace-UI · OTLP-Erfassung (Standardstart, nicht veröffentlicht)
Digital-Thread-APIplantpulse-digital-thread-api:7140Konnektor-Register · Spiegel des Werksgraphen · thread_-Werkzeug für den Chat. Wird von Verwaltungskonsole und MCP Gateway aufgerufen
Digital-Thread-Neo4jplantpulse-digital-thread-neo4j:7474Speicher für den Spiegel des Werksgraphen. Nur die Digital-Thread-API verbindet sich
Engineering-Berechnungs-APIplantpulse-engcalc-api:7150eng_-Werkzeug für den Chat (MCP /mcp/). Wird nur vom MCP Gateway aufgerufen
MCP Gatewayplantpulse-mcp-gateway-api:7160Eine einzige Adresse (/mcp/), die Plattform-, eingebaute und externe MCP-Server bündelt, plus Verwaltungs-REST (/api/v1). Wird von Copilot und Verwaltungskonsole aufgerufen. Speicher ist das Schema gw in der Plattform-PG pi (2026.10 Re-Release (2026-10-20))
Zwei Altdienste wurden archiviert

plantpulse-mcp-server (50000) und plantpulse-ontology (8888) existieren nicht mehr als eigenständige Dienste. MCP- und Ontologie-Werkzeuge stellt das integrierte MCP von server-web der Platform bereit (/api/v5/mcp, Authentifizierung per api_key).


Von der Platform mitgenutzte Dienste​

PostgreSQL (5432) · Aster TSDB (9042) · Redis/Valkey (6379) · RustFS (9000/9001) werden nicht vom AI-Stack gestartet. Genutzt wird gemeinsam die Installation der PlantPulse Platform. Firewall und Konten dieser Ports richten sich nach den Sicherheitseinstellungen der Platform.


Portstatus prüfen​

Gesamtstatus prüfen​

cd /opt/kopens/plantpulse-ai-docker/bin
./status.sh

health.sh prüft auch die Health-Endpunkte der einzelnen Dienste. Ein laufender Container und ein tatsächlich antwortender Dienst sind zweierlei — verwenden Sie bei der Störungsanalyse daher diese Variante.

Einzelne Ports prüfen​

# 특정 포트 리스닝 확인
nc -z 127.0.0.1 <port> && echo "OK" || echo "DOWN"

# 포트 사용 프로세스 확인
ss -tlnp | grep <port>

In der Firewall zu öffnen​

ZielZu öffnende Ports
alle Benutzer80 / 443 (Proxy)
Betreiber (Firmennetz)5959 · 5960 Verwaltungskonsole, 7474 Neo4j Browser
MCP-Clients (Firmennetz)7115 RAG, 8970 TimeSeries

Der Installer (install.sh) öffnet die Firewall und meldet anschließend als Warnung, welche dieser Ports bereits von Prozessen außerhalb dieses Stacks belegt sind — bleibt das unbeachtet, startet das erste bin/up.sh den Stack nur halb und bricht mit «address already in use» ab. Geben Sie den betreffenden Port frei oder ändern Sie die drei verschiebbaren Keys (PI_LITELLM_PORT · PI_ADMIN_WEB_PORT · PI_ADMIN_WEB_TLS_PORT) in der Host-env. Die übrigen Ports sind in Compose fest vorgegeben.

Alle weiteren Ports müssen auch innerhalb des Firmennetzes nicht geöffnet werden. Die Datenbankports (5432 · 9042 · 6333 · 6379 · 7687 · 9000) dürfen unter keinen Umständen nach außen exponiert werden.