Zum Hauptinhalt springen

Referenz der Umgebungsvariablen

Alle Konfigurationen von PlantPulse beginnen an einem einzigen Punkt: den Umgebungsvariablen. Diese Seite ist eine Referenz, in der die Variablen, die bei Installation und Betrieb auftreten, nach Kategorien geordnet sind.

Diese Seite behandelt die Infrastruktur-/Deployment-Umgebungsvariablen (PP_* · DOCKER_PP_*). Für Anwendungseigenschaften (engine.*, websocket.* usw.) besuchen Sie bitte die Eigenschaften-Referenz.

1. Wo befinden sich die Konfigurationsdateien?​

Die Platform funktioniert als Docker Compose Stack, wobei die Werte an zwei Stellen definiert sind.

DefinitionsortWas befindet sich hierWer liest dies
plantpulse-platform-docker/bin/env.shAuf dem Host festgelegte Werte — Standard-Anmeldedaten, Docker-Runtime, Netzwerk, auf dem Host berechnete RessourcenwerteBetriebsskripte des Hosts
plantpulse-platform-docker/compose/docker-compose.ymlWerte, die der Container tatsächlich siehtContainer
App-Container lesen env.sh nicht

Die sechs Apps (plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua · plantpulse-plugin-aasx · plantpulse-ha) sourcen env.sh nicht. Der einzige Definitionsort, den die App sieht, ist compose.

Das bedeutet, ein Name, der nur in env.sh vorhanden ist, aber nicht in compose, erreicht die App nicht, und die App nutzt die im jar/WAR eingebetteten Standardwerte. Tatsächlich gab es einen Vorfall (2026-08-29), bei dem fünf Apps an einer Stelle weiterhin alte Namen verwendeten, obwohl die Kennung nur im Data Lake geändert worden war.

Die Art und Weise, wie Werte pro Tier bestimmt werden, unterscheidet sich.

TierWas bestimmt den Wert
plantpulse-datalakeVon compose übergebene Werte → pd des Containers empfängt sie als ${VAR:-기본값}. Der übergebene Wert gewinnt
Sechs AppsDie von compose übergebene Umgebungsvariable überschreibt die im jar/WAR eingebetteten Standardwerte
plantpulse-certsSieht nur PP_TLS_* von compose. Dateien werden nicht gesourct

Priorität — Was gewinnt gegen was​

Die Reihenfolge, in der bin/env.sh auf der Host-Seite von oben nach unten durchlaufen wird, entspricht der Priorität.

PrioritätQuelleGrund für den Sieg
1 (Höchste)/etc/kopens/plantpulse-platform.env (Secret Sidecar)export VAR=값 ist eine bedingungslose Zuweisung und überschreibt sogar Shell-Exports
2/etc/kopens/platform.node.env (Node-spezifisch)Wird nach dem Sidecar gesourct, ebenfalls bedingungslose Zuweisung
3export der aufrufenden ShellGewinnt gegen :- des Standardwerts — jedoch nur, wenn 1 und 2 diesen Namen nicht definiert haben
4 (Niedrigste)${VAR:-기본값} von bin/env.shNur wenn unset
Dass Nummer 1 die höchste Priorität hat, ist die häufigste Fehlerquelle

Auf einem fertig installierten Node wird PP_PG_PASSWORD=새값 bin/up.sh stillschweigend ignoriert, da der Sidecar diesen Namen bereits hält. Die einzige Möglichkeit, den Wert zu ändern, ist über bin/passwd.sh / bin/rotate-secret.sh.

🔑 Die Referenz für Geheimwerte liegt unter /etc/kopens/​

DB- · Messaging-Passwörter und API-Keys befinden sich im Sidecar, nicht in den oben genannten zwei Dateien

Die tatsächlichen Werte von Dienstkonto-Passwörtern (PP_PG_PASSWORD · PP_CASSANDRA_PASSWORD · PP_MQ_PASSWORD usw.) und API-Keys befinden sich in Sidecar-Dateien außerhalb des Repo-Baums.

DateiStatus
/etc/kopens/plantpulse-platform.envAktuelle Referenz — Gemeinsames Protokoll für die drei Produkte platform · ai · studio (plantpulse-<product>.env), Berechtigungen 0600
/opt/kopens/plantpulse-platform.envAlter Pfad (nur existiert von 2026-08-25 bis 08-29) — Wird weder gelesen noch geschrieben. Falls vorhanden, setzt das Installationsskript dies auf die Referenz zurück

Überprüfen Sie zuerst mit ls -l /etc/kopens/, ob eine Referenz vorhanden ist.

Der Sidecar gewinnt gegen bin/env.sh. In env.sh wird zuerst der Sidecar gesourct, und alle darunter liegenden Werte haben das Format ${VAR:-기본값}. Daher passiert nichts, wenn Sie nur das Passwort in env.sh ändern — der alte Wert des Sidecars gewinnt weiterhin.

Bei der Installation werden keine Zufallszahlen generiert

install.sh lädt die Standardwerte von bin/env.sh direkt in den Sidecar. Daher müssen diese während der Inbetriebnahme zwingend ersetzt werden → Initialpasswort

Da compose Passwörter als ${PP_X:?} anfordert, bootet der Stack gar nicht erst, wenn ein Wert leer ist, anstatt «halb konfiguriert» zu starten.

Passwörter und API-Keys nicht durch Dateibearbeitung ändern

Die Änderung des Sidecars allein reicht nicht aus. Bei Werten, bei denen das Serverkonto die Referenz ist (wie bei PostgreSQL · Aster TSDB), muss auch die Serverseite geändert werden. Wenn die Reihenfolge falsch ist, startet die Platform nicht.

Verwenden Sie das dedizierte Verfahren — Passwort ändern (Credential Rotation). Dies ist eine Aufgabe, die einmal bei der Inbetriebnahme abgeschlossen wird.

🔑 Kennzeichnet Geheimwerte. Geben Sie die Originalwerte nicht in git, Issues oder Chats ein.

1.5 Container-Runtime · Host-Ressourcen (DOCKER_*)​

Diese Werte werden von bin/env.sh festgelegt. Die folgenden Ressourcenwerte sind keine fixen Standardwerte, sondern werden basierend auf dem Host berechnet — bei Verwendung von Konstanten könnte der Start auf kleinen Hosts verweigert werden (Docker lehnt dies ab, wenn --cpus größer als die tatsächlichen Kerne ist) oder es kommt während des Bootens zu einem OOM-Kill. Die pro Box spezifizierten Werte gewinnen immer.

VariableWie sie festgelegt wird
DOCKER_CMDdocker (Podman ebenfalls möglich)
DOCKER_REGISTRYdocker.kopens.io/pp — Registry-Präfix der acht Stack-Images
PP_IMAGE_TAGlatest. Für Releases werden fixe Tags wie 2026.08 empfohlen
DOCKER_PP_CPUSnproc (bei Lesefehler 8)
DOCKER_PP_CLUSTER_CORESDOCKER_PP_CPUS - 2, mindestens 4 · maximal 30. Wird als PP_CLUSTER_CORES an den Container übergeben
DOCKER_PP_MEMORY90% des Host-RAM, mindestens 8G
DOCKER_DATALAKE_MEMORY96G — Dies ist der Mindestwert für den Data Lake Master. Da der Wert abgeschnitten wird, damit er 90% des Host-RAM nicht überschreitet, kann bei einem Host mit weniger als 107G keine Zuweisung von 96G erfolgen; ein solcher Host ist unterdimensioniert. 64G ist keine unterstützte Spezifikation (Systemanforderungen)
DOCKER_PW_MEMORY60G, bei kleinem Host 90% des RAM — Worker verwenden dasselbe Image wie der Master, aber da weniger Dienste laufen, wird dies separat festgelegt
DOCKER_PP_DATA_DISK_NAMERückverfolgung der tatsächlichen Disk hinter / über findmnt + lsblk (LVM/dm bis zur physischen Disk). Bei Fehler sda
DOCKER_PP_EXTERNAL_IPStandardmäßig leerer Wert. In NAT-Umgebungen die tatsächliche öffentliche IP
Geben Sie keine ungültigen IPs in DOCKER_PP_EXTERNAL_IP ein

Dieser Wert fließt über PP_SERVICE_IP in den SAN des TLS-Zertifikats. Wenn auch nur eine IP in einem falschen Format enthalten ist, lehnt openssl die gesamte Erweiterungsdatei ab, sodass kein einziges Zertifikat generiert wird.

Netzwerk​

VariableStandardwertBeschreibung
DOCKER_PP_NETWORKpp-netName des Docker-Netzwerks
DOCKER_SUBNET10.99.0.0/24Subnetz (darf sich nicht mit anderen Containernetzen überschneiden)
DOCKER_GATEWAY10.99.0.1Gateway
DOCKER_PP_IP10.99.0.100Fixe IP des Data Lake

Speicherlimits pro App — festgelegt durch compose​

Die Bereitstellung separater mem_limit für jede App ist der primäre Zweck der Container-Trennung (OOM-Isolierung). Selbst wenn eine App ihr Limit erreicht, bleiben andere Apps und die Infrastruktur stabil.

VariableStandardwertDienst
DOCKER_SERVER_MEMORY / DOCKER_SERVER_HEAP14g / 8gplantpulse-server-web
DOCKER_BATCH_MEMORY / DOCKER_BATCH_HEAP4g / 3gplantpulse-batch-web
DOCKER_WAREHOUSE_MEMORY8gplantpulse-warehouse-web
DOCKER_OPCUA_MEMORY3gplantpulse-plugin-opcua
DOCKER_AASX_MEMORY3gplantpulse-plugin-aasx
DOCKER_HA_MEMORY2gplantpulse-ha
DOCKER_DATALAKE_MEMORY96gplantpulse-datalake

Volumes​

VariableStandardwertVerwendungszweck
DOCKER_PP_DATA_VOLUMEpp-dataPermanente Datenspeicherung
DOCKER_PP_TEMP_VOLUMEpp-tempTemporäre Daten
DOCKER_PP_BACKUP_VOLUMEpp-backupBackup-Speicher
DOCKER_PP_SECURITY_VOLUMEpp-securityTLS-Material
DOCKER_PP_PROXY_CERTS_VOLUME—Variable existiert nicht. Das Volume für Proxy-Zertifikate pp-proxy-certs ist direkt in compose per Name eingetragen

install.sh Einmaloptionen​

VariableEffekt
SKIP_OS=1Überspringt OS-Setup
SKIP_LOGIN=1Überspringt Registry-Login
SKIP_FW=1Überspringt Firewall-Konfiguration
DOCKER_DATA_DIRPfad zum Docker data-root (Standard /data1/docker-data)

2. Mindestprüfung​

Bei einer Neuinstallation auf einem einzelnen Server müssen nur wenige Dinge manuell angepasst werden, da die Ressourcenwerte basierend auf dem Host berechnet werden.

WasWoBemerkung
🔑 Verschiedene *_PASSWORD · API-Keysbin/passwd.sh / bin/rotate-secret.shZwingend bei Inbetriebnahme ersetzen. Ändert sich nicht durch Dateibearbeitung
PP_LANGbin/env.shBei Betrieb in Korea ko (Standard en)
PP_TZbin/env.shFür Betrieb in Korea Asia/Seoul beibehalten
DOCKER_PP_EXTERNAL_IPbin/env.shNur hinter NAT. Ansonsten leer lassen
DOCKER_DATALAKE_MEMORYbin/env.shStandard 96G. Wird bei kleinen Hosts automatisch gesenkt
Die PP_* nach §3 sind «Namen, die der Container sieht»

Werte wie PP_HOST_IP · PP_DATA_DIR · PP_CLUSTER_CORES sind Namen, die innerhalb des Containers gelten. Die Festlegung dieser Werte auf dem Host erfolgt durch compose und DOCKER_* von bin/env.sh (§1.5). Beispielsweise wird die Kernanzahl von DOCKER_PP_CLUSTER_CORES berechnet und als PP_CLUSTER_CORES an den Container übergeben.

Erwarten Sie keine Wirkung, wenn Sie nur PP_CLUSTER_CORES auf dem Host ändern — wenn der Wert nicht übergeben wird, vertraut Kyuubi auf 30 Kerne, die auf einer 16-vCPU-Box gar nicht existieren, und startet niemals.

3. Platform Basis / Netzwerk / Ressourcen​

VariableStandardwertBeschreibung
PP_HOME/opt/kopens/plantpulse-platformInstallationsroot (identisch im Container)
PP_SCHEMEPPDeployment-Identifikationsschema
PP_MODEMASTERNode-Rolle (MASTER / Worker) — Achse für Clustering (horizontale Skalierung)
PP_OPTIONS{}Spezielles JSON zum Ein-/Ausschalten einzelner Dienste (siehe §3.1 unten)
PP_HOST_IP127.0.0.1IP dieses Nodes
PP_SERVICE_IP127.0.0.1Service-Bind-IP
PP_MASTER_IP127.0.0.1Master(Data Lake)-IP, die Worker/APP-Tiers anvisieren. Dient auch als Quelle für Kafka advertised.listeners. Wird bei Installation des DATALAKE Tiers automatisch auf Host-IP erkannt, falls nicht spezifiziert
PP_PUBLIC_IP127.0.0.1Extern公開 IP (NAT-Umgebung)
PP_DATA_DIR/data1/pp-dataData-Root
PP_TEMP_DIR/data1/pp-tempRoot für temporäre Dateien
PP_BACKUP_DIR/data1/pp-backupBackup-Root
PP_DATA_DISK_NAMEsdbGerätebezeichnung der Datenplatte
PP_CLUSTER_CORES30Anzahl verwendeter Kerne
PP_CLUSTER_MEMORY_BY_CORE2GSpeicherzuweisung pro Kern
PP_LANGenStandardsprache
PP_TZAsia/SeoulZeitzone (automatisch auf alle Java-Prozesse angewendet)

3.1 PP_OPTIONS — Einzelne Dienste an/aus​

PP_OPTIONS ist ein JSON zum Ein- und Ausschalten einzelner Komponenten. Der Standardwert ist {}; nicht spezifizierte Keys werden als true (aktiv) betrachtet.

Bsp. Um das integrierte Valkey auszuschalten und ein extern verwaltetes Redis zu verwenden:

export PP_OPTIONS='{"enable-valkey":false}'

Verfügbare enable-* Keys (alle Standard true):

enable-messaging · enable-valkey · enable-postgres · enable-cassandra · enable-spark · enable-rustfs · enable-tse · enable-cep · enable-workflow · enable-data-gateway · enable-sql · enable-hive · enable-gravitino · enable-kyuubi · enable-grafana · enable-monitor

4. Datenspeicher​

VariableStandardwertBeschreibung
PP_REDIS_HOST / PP_REDIS_PORTplantpulse-datalake / 6379Valkey/Redis (TLS Listener 6380)
PP_REDIS_USER / 🔑 PP_REDIS_PASSWORDredis / —Redis-Konto
PP_POSTGRES_HOST / PP_POSTGRES_PORTplantpulse-datalake / 5432PostgreSQL 18 (Percona)
PP_PG_USER / 🔑 PP_PG_PASSWORDplantpulse / —PostgreSQL-Konto
PP_CASSANDRA_HOST / PP_CASSANDRA_PORTplantpulse-datalake / 9042Aster TSDB
PP_CASSANDRA_USER / 🔑 PP_CASSANDRA_PASSWORDcassandra / —Aster TSDB-Konto
PP_CASSANDRA_PORT9042Aster TSDB Port, den Storage-Layer-Clients wiederverwenden. Eine Variable PP_STORAGE_PORT existiert nicht
PP_S3_HOST / PP_S3_PORTplantpulse-datalake / 9000RustFS Objektspeicher
PP_S3_USER / 🔑 PP_S3_PASSWORDrustfs / —RustFS-Konto
PP_S3_BUCKETplantpulseStandard-Bucket — Iceberg-Daten · Backup
PP_S3_UPLOAD_BUCKETuploadUpload-Bucket. Wird nur in plantpulse-server-web bereitgestellt (geht absichtlich nicht an Worker). Die Trennung der Buckets dient dazu, dass Aufbewahrungsregeln einer Seite nicht auf die andere wirken
PP_DB_NAMEppPostgreSQL Datenbankname
PP_KEYSPACEppAster TSDB Keyspace-Name
PP_HIVE_DBhive-metastore-230Hive Metastore DB

5. Messaging​

VariableStandardwertBeschreibung
PP_MQ_USER / 🔑 PP_MQ_PASSWORDmq / —Kafka·MQTT gemeinsames Konto (es gibt kein Kafka-exklusives Konto)
PP_TOPIC_PREFIXppKafka-Topic-Präfix (pp-tag-point usw.)
PP_KAFKA_HOST / PP_KAFKA_PORTPP_MASTER_IP / 9092Kafka Broker
PP_KAFKA_TLS_PORT9094Kafka externer TLS
PP_KAFKA_CONTROLLER_PORT9093Kafka KRaft Controller
PP_MQTT_HOST / PP_MQTT_PORTPP_MASTER_IP / 1883MQTT (HiveMQ)
PP_MQTT_TLS_PORT1884MQTT TLS
STOMP(ActiveMQ) wurde eingestellt

Da der Browser-Realtime-Push auf SSE umgestellt wurde, wurde der STOMP-Broker aus dem Data Lake Image entfernt. Die Variable PP_STOMP_* und die Ports 61000/61004 werden nicht mehr bedient. Falls diese noch in alten Firewall-Regeln existieren, entfernen Sie diese bitte.

6. Verarbeitung · Zeitreihe · Analyse · Workflow​

VariableStandardwertBeschreibung
PP_CEP_HOST / PP_CEP_PORT / PP_CEP_TLS_PORTplantpulse-datalake / 7400 / 7401CEP-Server
PP_CEP_PROTOCOLhttpCEP-Zugriffsprotokoll. Für verteilt/Container wird https empfohlen
PP_CEP_CONNECT_PORT(abgeleitet)Zugriffsport server-web→CEP. Automatisch nach Protokoll ausgerichtet (http→7400, https→7401). Bei expliziter Angabe hat dieser Wert Priorität
PP_DATA_GATEWAY_HOST / PP_DATA_GATEWAY_PORT / PP_DATA_GATEWAY_TLS_PORTplantpulse-datalake / 5500 / 5501Data Gateway
PP_DATA_GATEWAY_PROTOCOLhttpDGW-Zugriffsprotokoll (interner Loopback Standard http)
PP_DATA_GATEWAY_CONNECT_PORT(abgeleitet)DGW-Zugriffsport. Automatisch nach Protokoll ausgerichtet (http→5500, https→5501). Bei expliziter Angabe hat dieser Wert Priorität
PP_TSE_HOST / PP_TSE_PORT / PP_TSE_TLS_PORTplantpulse-datalake / 7800 / 7801Zeitreihen-Engine(TSE). Server listen sowohl auf http 7800 als auch https 7801
PP_TSE_PROTOCOLhttpTSE-Client-Zugriffsprotokoll. Standard ist Klartext http, da interne Kommunikation — getrennt vom TLS-Masterswitch(PP_TLS_ENABLED) (2026-08)
PP_TSE_CONNECT_PORT(nicht gesetzt)Administrator-Override-Hook, der nicht von env.sh exportiert wird. Das Template nutzt ${PP_TSE_CONNECT_PORT:7800} als Fallback
PP_TSE_JDBC_SCHEME—Variable existiert nicht. Da das jdbc.tse.url Template ts hartcodiert, kann das Schema nicht geändert werden
PP_TSE_USER / 🔑 PP_TSE_PASSWORDtse / —TSE-Konto
PP_ANALYTICS_USER / 🔑 PP_ANALYTICS_PASSWORDspark / —Analyse(Spark/Kyuubi Client)-Konto. Separate Anmeldedaten, getrennt vom internen Metastore von Kyuubi(PP_HIVE_*)
PP_HIVE_HOST / PP_HIVE_PORTPP_MASTER_IP / 9083Hive Metastore
PP_HIVE_USER / 🔑 PP_HIVE_PASSWORDhive / —Hive-Konto
PP_SPARK_HOST / PP_SPARK_PORTPP_MASTER_IP / 7077Spark Master
PP_KYUUBI_PORT10000Kyuubi SQL Gateway
PP_GRAVITINO_USER / 🔑 PP_GRAVITINO_PASSWORDgravitino / —Gravitino Katalog
PP_TEMPORAL_HOST / PP_TEMPORAL_PORTplantpulse-datalake / 7233Temporal Engine (Web UI 8233)
PP_TEMPORAL_USER / 🔑 PP_TEMPORAL_PASSWORDtemporal / —Temporal-Konto
PP_KESTRA_HOST / PP_KESTRA_PORTplantpulse-datalake / 8380Kestra Scheduler
PP_KESTRA_ADMIN_EMAIL / 🔑 PP_KESTRA_ADMIN_PASSWORDadmin@plantpulse.io / —Kestra Administrator
PP_KESTRA_DB_USER / 🔑 PP_KESTRA_DB_PASSWORDkestra / —Kestra Meta DB

7. Plugin · Monitoring · Web-Layer​

VariableStandardwertBeschreibung
PP_OPCUA_TCP_PORT11004OPC-UA opc.tcp Protokollport
PP_OPCUA_TLS_PORT11005OPC-UA TLS
PP_AAS_SERVER_PORT8090AAS(BaSyx V3) API. UI ist 8091, Registry/AAS-Ports(4800/4801) sind im Code fixiert und werden nicht durch env geändert
PP_GRAFANA_DB_USER / 🔑 PP_GRAFANA_DB_PASSWORDgrafana / —Zugriff auf PlantPulse Dashboard Speicher(PostgreSQL). Wenn leer, führt pd start zu exit 3. Eine Variable zur Festlegung des Administratorkontos existiert nicht
Es gibt Variablen, die Ports «nicht» ändern können

Die folgenden können nicht über env geändert werden — selbst wenn Werte eingetragen werden, passiert nichts.

WasPortWarum
PlantPulse Dashboard3000Ist als Zahl in ports: von compose eingetragen(PP_GRAFANA_PORT existiert nicht)
WebSocket Push—PP_WEBSOCKET_PORT · PP_WEBSOCKET_PORT_SSL · PP_WEBSOCKET_USER · PP_WEBSOCKET_SERVER_PASSWORD existieren nirgendwo im Repository
AAS Registry/AAS4800 · 4801Im Code fixiert

PP_OPCUA_PORT existiert ebenfalls nicht — OPC-UA hat nur PP_OPCUA_TCP_PORT.

Mail-Server und Konsolen- · Vor-Ort-App-Adressen sind keine Umgebungsvariablen. PP_MAIL_SMTP_* wird nicht gelesen, Werte werden in pp.mm_config eingetragen — Mail-Konfiguration · Adress-Konfiguration.

8. TLS / SSL​

VariableStandardwertBeschreibung
PP_TLS_ENABLEDtrueTLS Master-Switch — bestimmt das Standardprotokoll des Service-Clients
PP_TLS_CERT_DIR/var/security/plantpulseZertifikatsverzeichnis
PP_TLS_DOMAINplantpulse.ioZertifikatsdomain
🔑 PP_TLS_KEYSTORE_PASSWORD / 🔑 PP_TLS_TRUSTSTORE_PASSWORD—keystore/truststore Passwort (muss auf allen Nodes identisch sein)
PP_TLS_VALID_DAYS3650Zertifikatsgültigkeit (Tage)
PP_TLS_SAN_IPSPP_HOST_IP,…,127.0.0.1Zertifikats-SAN-IP. Im Betrieb muss zwingend die externe Zugriffs-IP (z.B. öffentliche IP) enthalten sein
PP_TLS_SAN_DNSlocalhost,<hostname>,<domain>Zertifikats-SAN-DNS
PP_TLS_NODE_NAMESmaster worker-1 … worker-5Cluster-Node-Name
PP_TLS_FORCE_REGENERATEfalseErzwingt Zertifikatsregeneration bei true

9. API-Key / AI-Gateway​

Alle haben Standardwerte für die Entwicklung (fallback). Im Betrieb/bei Kundenlieferung zwingend über Docker -e oder export ersetzen.

VariableBeschreibung
🔑 PP_API_KEYInterner Plattform-API-Key (Authentifizierung Server ↔ Edge-Agent)
🔑 PP_DATA_GATEWAY_API_KEYserver-web → data-gateway JDBC Authentifizierung
🔑 PP_CEP_API_KEYserver-web → CEP-Server X-API-Key (muss mit CEP-Server cep.api.key übereinstimmen)
🔑 PP_FLOW_WEBHOOK_API_KEYFlow Engine externer Webhook Authentifizierung
🔴 AI wird nicht mehr über Umgebungsvariablen konfiguriert

PP_AI_OPENAI_ENABLED · PP_AI_OPENAI_BASE_URL · PP_AI_OPENAI_API_KEY · PP_AI_OPENAI_MODEL haben ab dem 18.09.2026 keine Wirkung mehr. Sie werden ohne Fehler oder Warnung stillschweigend ignoriert, obwohl es im Server so aussieht, als wären sie konfiguriert.

Die Referenz für AI-Konfigurationen ist die PostgreSQL-Tabelle pp.mm_config, und der Key-Name wurde in ai.openai.* zu ai.llm.* geändert. Die Werte werden über die Einstellungsmaske der Konsole(/env) oder über die Tabelle eingegeben — Eigenschaften-Referenz — AI-Konfiguration.

10. Verfahren zur Anwendung nach Änderung​

vi /etc/kopens/plantpulse-platform.env # 사이드카 — 여기를 고칩니다
cd /opt/kopens/plantpulse-platform-docker/bin
./restart.sh # 준비될 때까지 대기 (종료 코드 0 = 쓸 수 있다)
Ändern Sie nichts innerhalb des Installationsbaums

Werte, die in bin/env.sh eingetragen wurden, gehen bei Neuinstallation oder Upgrade verloren. Da das Installationsskript den gesamten Installationsbaum löscht und neu lädt, überlebt nur der Sidecar, da er außerhalb dieses Baums liegt.

Wenn Sie Werte ändern müssen, die der Container sieht, ändern Sie compose/docker-compose.yml und starten Sie in derselben Weise neu. Die Konfigurationsvorlage ist über einen Bind-Mount mit /etc/kopens/conf des Hosts verbunden, sodass sie direkt auf dem Host bearbeitet werden kann und auch bei Neuinstallationen erhalten bleibt.

Falls Variablen geändert wurden, aber nicht wirksam sind, prüfen Sie bitte in dieser Reihenfolge:

PrüfungInhalt
① Gewinnt der Sidecar?Wenn im gleichen Namen in /etc/kopens/plantpulse-platform.env vorhanden, verlieren sowohl env.sh als auch Shell-Exports → Priorität
② Erreicht der Name die App?Die sechs Apps lesen env.sh nicht. Wenn es nicht in compose steht, erreicht es die App nicht
③ Wurde neu gestartet?Die meisten Werte, einschließlich Locale und Zeitzone, werden nur zum Zeitpunkt des Bootens übernommen
④ Ist es ein Passwort?Passwörter werden nicht durch Dateibearbeitung geändert → Passwortrotation

Weitere Einzelheiten entnehmen Sie bitte dem Startguide.