メインコンテンツまでスキップ

環境変数リファレンス

PlantPulse のすべての設定は 環境変数の一箇所 から始まります。このページは、インストールおよび運用時に使用する変数をカテゴリー別に整理したリファレンスです。

このページでは インフラ/配備環境変数(PP_* · DOCKER_PP_*) を扱います。アプリケーションの動作プロパティ(engine.*, websocket.* など)については プロパティリファレンス を参照してください。

1. 設定ファイルはどこにありますか?​

Platform は Docker Compose スタック で動作し、値の 定義箇所は2つ あります。

定義箇所何がここにあるか誰が読むか
plantpulse-platform-docker/bin/env.shホストで決定される値 — 認証情報のデフォルト値、docker ランタイム、ネットワーク、ホストで 計算される リソース値ホストの運用スクリプト
plantpulse-platform-docker/compose/docker-compose.ymlコンテナが実際に参照する値コンテナ
アプリコンテナは env.sh を読みません

アプリ6種(plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua · plantpulse-plugin-aasx · plantpulse-ha)は env.sh を source しません。 アプリが参照する定義箇所は compose のみ です。

つまり env.sh にのみ存在し compose にない名前はアプリに 届かず 、アプリは jar/WAR 内蔵のデフォルト値で動作します。実際にデータレイクでのみ識別子を変更したサイトで、アプリ5種が旧名称を使い続けた事故がありました(2026-08-29)。

ティアごとに値が決定される方式が異なります。

ティア何が値を決定するか
plantpulse-datalakecompose が渡した値 → コンテナの pd が ${VAR:-기본값} として受け取ります。 渡した値が優先されます
アプリ6種compose が渡した環境変数が jar/WAR 内蔵のデフォルト値を上書きします
plantpulse-certscompose の PP_TLS_* のみを参照します。ファイルを source しません

優先順位 — 何が何を上書きするか​

ホスト側で bin/env.sh が上から下へ実行される順序がそのまま優先順位となります。

優先順位出典優先される理由
1 (最上位)/etc/kopens/plantpulse-platform.env (シークレットサイドカー)export VAR=값 無条件代入 であるため、シェル export も上書きします
2/etc/kopens/platform.node.env (ノード別)サイドカーの次に source され、同様に無条件代入となります
3呼出シェルの exportデフォルト値の :- より優先されます — ただし 1・2 にその名前が記載されていない場合のみ
4 (最下位)bin/env.sh の ${VAR:-기본값}unset の場合のみ
1番が最上位であるという点が最も間違いやすい箇所です

インストールが完了したノードで PP_PG_PASSWORD=새값 bin/up.sh は 静かに無視されます。 サイドカーが既にその名前を保持しているためです。値を変更する方法は bin/passwd.sh / bin/rotate-secret.sh のみです。

🔑 機密値の正本は /etc/kopens/ 以下にある​

DB · メッセージングのパスワードと API キーは上記2つのファイルではなくサイドカーにある

サービスアカウントのパスワード(PP_PG_PASSWORD · PP_CASSANDRA_PASSWORD · PP_MQ_PASSWORD など)と API キーの実際の値は repo ツリー外 のサイドカーファイルにあります。

ファイル状態
/etc/kopens/plantpulse-platform.env現行正本 — platform · ai · studio の3製品共通規約(plantpulse-<product>.env), 権限 0600
/opt/kopens/plantpulse-platform.env旧パス (2026-08-25 ~ 08-29 のみ存在) — 読み書きしません。残っている場合はインストールスクリプトが正本に戻します

ls -l /etc/kopens/ で正本があるかまず確認してください。

サイドカーが bin/env.sh より優先されます。 env.sh は最上位でサイドカーを先に source し、その下の値がすべて ${VAR:-기본값} 形式であるためです。そのため env.sh のパスワードだけを変更しても 何も起こりません — サイドカーの旧値が優先され続けます。

インストール時に乱数を生成しません

install.sh は bin/env.sh のデフォルト値をそのままサイドカーに格納します。そのため、 コミッショニング時に必ず交換 する必要があります → 初期パスワード

compose はパスワードを ${PP_X:?} として要求するため、値が空の場合、スタックは «中途半端に設定された状態で起動» せず、 起動しません。

パスワード・API キーをファイルの編集で変更しないでください

サイドカーを修正するだけでは反映されません。PostgreSQL · Aster TSDB のように サーバーアカウントが正本 である値はサーバー側も同時に変更する必要があり、 順序を間違えると Platform が起動しません。

専用の手順を使用してください — パスワード変更 (クレデンシャルローテーション)。 コミッショニング時に一度 変更して完了させる作業です。

🔑 表示は 機密値 です。git・Issue・チャットに原文を記載しないでください。

1.5 コンテナランタイム · ホストリソース (DOCKER_*)​

bin/env.sh が決定する値です。以下のリソース値は 固定デフォルト値ではなく、ホストを確認して計算されます — 定数を使用すると、小規模なホストで起動自体が拒否されるか(--cpus が実際のコア数より大きい場合、docker が拒否します)、起動中に OOM-kill されるためです。 ボックスごとに指定した値が常に優先されます。

| 変数 | 決定方法 | |---|---|---| | DOCKER_CMD | docker (podman も可能) | | DOCKER_REGISTRY | docker.kopens.io/pp — スタックイメージ8種のレジストリ prefix | | PP_IMAGE_TAG | latest. リリース時は 2026.08 のような固定タグを推奨します | | DOCKER_PP_CPUS | nproc (読み込み失敗時は 8) | | DOCKER_PP_CLUSTER_CORES | DOCKER_PP_CPUS - 2, 最小 4 · 最大 30. コンテナに PP_CLUSTER_CORES として伝達 | | DOCKER_PP_MEMORY | ホスト RAM の 90%, 最小 8G | | DOCKER_DATALAKE_MEMORY | 96G — データレイクマスターの 最小値 です。ホスト RAM の 90% を超えないように制限されるため、ホストが 107G 未満であれば 96G を割り当てることができず、そのホストは要件未達となります。64G はサポート仕様ではありません (システム要件) | | DOCKER_PW_MEMORY | 60G, ホストが小規模な場合は RAM の 90% — ワーカーはマスターと同じイメージですが、動作するサービスが少ないため 別途 設定します | | DOCKER_PP_DATA_DISK_NAME | / を支える実際のディスクを findmnt + lsblk で逆追跡 (LVM/dm も物理ディスクまで)。失敗時は sda | | DOCKER_PP_EXTERNAL_IP | デフォルトは空値. NAT 環境のみ実際の公認 IP |

DOCKER_PP_EXTERNAL_IP に無効な IP を入力しないでください

この値は PP_SERVICE_IP を経て TLS 証明書の SAN に組み込まれます。形式が正しくない IP が一つでも含まれていると、openssl が拡張ファイル全体を拒否し、 証明書が一枚も生成されません。

ネットワーク​

変数デフォルト値説明
DOCKER_PP_NETWORKpp-netdocker network 名
DOCKER_SUBNET10.99.0.0/24サブネット (他のコンテナネットワークと重複しないように)
DOCKER_GATEWAY10.99.0.1ゲートウェイ
DOCKER_PP_IP10.99.0.100データレイクの固定 IP

アプリ別メモリ制限 — compose が決定します​

アプリごとに mem_limit を設けることが コンテナ分離の第一目的(OOM 隔離) です。一つのアプリが制限に達しても、他のアプリとインフラは生存します。

変数デフォルト値サービス
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

ボリューム​

変数デフォルト値用途
DOCKER_PP_DATA_VOLUMEpp-dataデータ永続保存
DOCKER_PP_TEMP_VOLUMEpp-temp一時データ
DOCKER_PP_BACKUP_VOLUMEpp-backupバックアップストレージ
DOCKER_PP_SECURITY_VOLUMEpp-securityTLS 資材
DOCKER_PP_PROXY_CERTS_VOLUME—存在しない変数です。 プロキシ証明書ボリューム pp-proxy-certs は compose に名前で固定されています

install.sh 一回性オプション​

変数効果
SKIP_OS=1OS セットアップ省略
SKIP_LOGIN=1レジストリログイン省略
SKIP_FW=1ファイアウォール設定省略
DOCKER_DATA_DIRDocker data-root パス (デフォルト /data1/docker-data)

2. 最低限ここだけは確認してください​

新規の単一サーバーインストールで実際に操作する箇所はわずかです。リソース値はインストール時にホストを確認して計算されるためです。

何をどこで備考
🔑 各種 *_PASSWORD · API キーbin/passwd.sh / bin/rotate-secret.shコミッショニング時に 必ず交換. ファイル編集では変更されません
PP_LANGbin/env.sh韓国語運用の場合は ko (デフォルト en)
PP_TZbin/env.sh韓国運用は Asia/Seoul を維持
DOCKER_PP_EXTERNAL_IPbin/env.shNAT 配下の場合のみ. それ以外は空値のまま
DOCKER_DATALAKE_MEMORYbin/env.shデフォルト 96G. ホストが小規模な場合は自動的に低くなります
以下 §3 以降の PP_* は «コンテナが参照する名前» です

PP_HOST_IP · PP_DATA_DIR · PP_CLUSTER_CORES などの値はコンテナ内で通じる名前であり、 ホストでその値を決定するのは compose と bin/env.sh の DOCKER_* です(§1.5)。例えば、コア数は DOCKER_PP_CLUSTER_CORES が計算し、コンテナに PP_CLUSTER_CORES として伝達されます。

ホストで PP_CLUSTER_CORES だけを修正して反映されることを期待しないでください — 渡されなければ、16 vCPU ボックスに存在しない 30 コアを信じて Kyuubi が永久に起動しません。

3. プラットフォーム基本 / ネットワーク / リソース​

変数デフォルト値説明
PP_HOME/opt/kopens/plantpulse-platformインストールルート (コンテナ内部で同一)
PP_SCHEMEPP配備識別スキーム
PP_MODEMASTERノード役割 (MASTER / ワーカー) — クラスタリング(水平拡張)の軸
PP_OPTIONS{}個別サービス on/off 専用 JSON (以下 §3.1 参照)
PP_HOST_IP127.0.0.1このノードの IP
PP_SERVICE_IP127.0.0.1サービスバインド IP
PP_MASTER_IP127.0.0.1ワーカー/APP ティアが参照する マスター(データレイク) IP. Kafka advertised.listeners のソースでもある。 DATALAKE ティアインストール時に未指定ならホスト IP で自動検知
PP_PUBLIC_IP127.0.0.1外部公開 IP (NAT 環境)
PP_DATA_DIR/data1/pp-dataデータルート
PP_TEMP_DIR/data1/pp-temp一時ファイルルート
PP_BACKUP_DIR/data1/pp-backupバックアップルート
PP_DATA_DISK_NAMEsdbデータディスクデバイス名
PP_CLUSTER_CORES30使用コア数
PP_CLUSTER_MEMORY_BY_CORE2Gコアあたりメモリ割り当て
PP_LANGen基本言語
PP_TZAsia/Seoulタイムゾーン (すべての java プロセスに自動適用)

3.1 PP_OPTIONS — 個別サービス on/off​

PP_OPTIONS は 個別コンポーネントをオン/オフにする JSON です。デフォルト値は {} であり、未指定のキーはすべて true(有効) とみなされます。

例) 外部管理型 Redis を使用して内蔵 Valkey をオフにする場合:

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

利用可能な enable-* キー (すべてデフォルト 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. データストア​

変数デフォルト値説明
PP_REDIS_HOST / PP_REDIS_PORTplantpulse-datalake / 6379Valkey/Redis (TLS リスナー 6380)
PP_REDIS_USER / 🔑 PP_REDIS_PASSWORDredis / —Redis アカウント
PP_POSTGRES_HOST / PP_POSTGRES_PORTplantpulse-datalake / 5432PostgreSQL 18 (Percona)
PP_PG_USER / 🔑 PP_PG_PASSWORDplantpulse / —PostgreSQL アカウント
PP_CASSANDRA_HOST / PP_CASSANDRA_PORTplantpulse-datalake / 9042Aster TSDB
PP_CASSANDRA_USER / 🔑 PP_CASSANDRA_PASSWORDcassandra / —Aster TSDB アカウント
PP_CASSANDRA_PORT9042ストレージ層クライアントが再利用する Aster TSDB ポート. PP_STORAGE_PORT という変数は 存在しません
PP_S3_HOST / PP_S3_PORTplantpulse-datalake / 9000RustFS オブジェクトストレージ
PP_S3_USER / 🔑 PP_S3_PASSWORDrustfs / —RustFS アカウント
PP_S3_BUCKETplantpulseデフォルトバケット — Iceberg データ · バックアップ
PP_S3_UPLOAD_BUCKETuploadアップロード物バケット. plantpulse-server-web にのみ格納されます(ワーカーには意図的に送りません)。バケットを分けた理由は、一方の保存規則が他方に影響しないようにするためです
PP_DB_NAMEppPostgreSQL データベース名
PP_KEYSPACEppAster TSDB キースペース名
PP_HIVE_DBhive-metastore-230Hive メタストア DB

5. メッセージング​

変数デフォルト値説明
PP_MQ_USER / 🔑 PP_MQ_PASSWORDmq / —Kafka・MQTT 共用アカウント (Kafka 専用アカウントは存在しません)
PP_TOPIC_PREFIXppKafka トピック接頭辞 (pp-tag-point など)
PP_KAFKA_HOST / PP_KAFKA_PORTPP_MASTER_IP / 9092Kafka ブローカー
PP_KAFKA_TLS_PORT9094Kafka 外部 TLS
PP_KAFKA_CONTROLLER_PORT9093Kafka KRaft コントローラー
PP_MQTT_HOST / PP_MQTT_PORTPP_MASTER_IP / 1883MQTT (HiveMQ)
PP_MQTT_TLS_PORT1884MQTT TLS
STOMP(ActiveMQ)は引退しました

ブラウザのリアルタイムプッシュが SSE に変更されたため、STOMP ブローカーがデータレイクイメージから除外されました。 PP_STOMP_* 変数と 61000/61004 ポートは これ以上サービスされません。 旧ファイアウォールルールに残っている場合は整理してください。

6. 処理 · 時系列 · 分析 · ワークフロー​

変数デフォルト値説明
PP_CEP_HOST / PP_CEP_PORT / PP_CEP_TLS_PORTplantpulse-datalake / 7400 / 7401CEP サーバー
PP_CEP_PROTOCOLhttpCEP 接続プロトコル. 分散/コンテナは https を推奨
PP_CEP_CONNECT_PORT(派生)server-web→CEP 接続ポート. プロトコルに自動整合 (http→7400, https→7401). 明示すればその値が優先
PP_DATA_GATEWAY_HOST / PP_DATA_GATEWAY_PORT / PP_DATA_GATEWAY_TLS_PORTplantpulse-datalake / 5500 / 5501Data Gateway
PP_DATA_GATEWAY_PROTOCOLhttpDGW 接続プロトコル (内部 loopback デフォルト http)
PP_DATA_GATEWAY_CONNECT_PORT(派生)DGW 接続ポート. プロトコルに自動整合 (http→5500, https→5501). 明示すればその値が優先
PP_TSE_HOST / PP_TSE_PORT / PP_TSE_TLS_PORTplantpulse-datalake / 7800 / 7801時系列エンジン(TSE). サーバーは http 7800・https 7801 の両方を listen
PP_TSE_PROTOCOLhttpTSE クライアント接続プロトコル. 内部区間通信のため平文 http が基本 — TLS マスタースイッチ(PP_TLS_ENABLED)と分離(2026-08)
PP_TSE_CONNECT_PORT(未設定)env.sh が export しない運用者明示オーバーライドフック. テンプレートが ${PP_TSE_CONNECT_PORT:7800} フォールバックとして消費
PP_TSE_JDBC_SCHEME—存在しない変数です。 jdbc.tse.url テンプレートが ts をハードコーディングしているため、スキームは変更できません
PP_TSE_USER / 🔑 PP_TSE_PASSWORDtse / —TSE アカウント
PP_ANALYTICS_USER / 🔑 PP_ANALYTICS_PASSWORDspark / —分析(Spark/Kyuubi クライアント)アカウント. Kyuubi 内部メタストア(PP_HIVE_*)と分離された別個の認証情報
PP_HIVE_HOST / PP_HIVE_PORTPP_MASTER_IP / 9083Hive メタストア
PP_HIVE_USER / 🔑 PP_HIVE_PASSWORDhive / —Hive アカウント
PP_SPARK_HOST / PP_SPARK_PORTPP_MASTER_IP / 7077Spark マスター
PP_KYUUBI_PORT10000Kyuubi SQL ゲートウェイ
PP_GRAVITINO_USER / 🔑 PP_GRAVITINO_PASSWORDgravitino / —Gravitino カタログ
PP_TEMPORAL_HOST / PP_TEMPORAL_PORTplantpulse-datalake / 7233Temporal エンジン (Web UI 8233)
PP_TEMPORAL_USER / 🔑 PP_TEMPORAL_PASSWORDtemporal / —Temporal アカウント
PP_KESTRA_HOST / PP_KESTRA_PORTplantpulse-datalake / 8380Kestra スケジューラ
PP_KESTRA_ADMIN_EMAIL / 🔑 PP_KESTRA_ADMIN_PASSWORDadmin@plantpulse.io / —Kestra 管理者
PP_KESTRA_DB_USER / 🔑 PP_KESTRA_DB_PASSWORDkestra / —Kestra メタ DB

7. プラグイン · 観測 · ウェブ階層​

変数デフォルト値説明
PP_OPCUA_TCP_PORT11004OPC-UA opc.tcp プロトコルポート
PP_OPCUA_TLS_PORT11005OPC-UA TLS
PP_AAS_SERVER_PORT8090AAS(BaSyx V3) API. UI は 8091, Registry/AAS ポート(4800/4801)はコードに固定されており env で変更されません
PP_GRAFANA_DB_USER / 🔑 PP_GRAFANA_DB_PASSWORDgrafana / —PlantPulse Dashboard ストレージ(PostgreSQL)接続. 空の場合 pd start が exit 3. 管理者アカウントを決定する変数は 存在しません
ポートを変更する変数が «ない» ものがあります

以下は env で変更できません — 値を記載しても何も起こりません。

対象ポート理由
PlantPulse Dashboard3000compose の ports: に数値で固定されています(PP_GRAFANA_PORT は存在しません)
WebSocket プッシュ—PP_WEBSOCKET_PORT · PP_WEBSOCKET_PORT_SSL · PP_WEBSOCKET_USER · PP_WEBSOCKET_SERVER_PASSWORD は ストレージのどこにもありません
AAS Registry/AAS4800 · 4801コード固定

PP_OPCUA_PORT もありません — OPC-UA は PP_OPCUA_TCP_PORT のみです。

メールサーバーとコンソール・現場アプリのアドレスは環境変数ではありません。 PP_MAIL_SMTP_* は指定しても読み込まれず、値は pp.mm_config に設定します — メール設定 · アドレス設定。

8. TLS / SSL​

変数デフォルト値説明
PP_TLS_ENABLEDtrueTLS マスタースイッチ — サービスクライアントの基本プロトコルを決定
PP_TLS_CERT_DIR/var/security/plantpulse証明書ディレクトリ
PP_TLS_DOMAINplantpulse.io証明書ドメイン
🔑 PP_TLS_KEYSTORE_PASSWORD / 🔑 PP_TLS_TRUSTSTORE_PASSWORD—keystore/truststore パスワード (全ノード同一であること)
PP_TLS_VALID_DAYS3650証明書有効期間(日)
PP_TLS_SAN_IPSPP_HOST_IP,…,127.0.0.1証明書 SAN IP. 運用では外部接続 IP(例: 公認 IP)を必ず含めること
PP_TLS_SAN_DNSlocalhost,<hostname>,<domain>証明書 SAN DNS
PP_TLS_NODE_NAMESmaster worker-1 … worker-5クラスタノード名
PP_TLS_FORCE_REGENERATEfalsetrue 時に証明書を強制再生成

9. API キー / AI ゲートウェイ​

すべて開発用デフォルト値(fallback)があります。 運用/顧客納品時に Docker -e または export で必ず交換 してください。

変数説明
🔑 PP_API_KEYプラットフォーム内部 API キー (サーバー ↔ エッジエージェント認証)
🔑 PP_DATA_GATEWAY_API_KEYserver-web → data-gateway JDBC 認証
🔑 PP_CEP_API_KEYserver-web → CEP サーバー X-API-Key (CEP サーバー cep.api.key と一致させること)
🔑 PP_FLOW_WEBHOOK_API_KEYFlow Engine 外部ウェブフック認証
🔴 AI はこれ以上環境変数で設定しません

PP_AI_OPENAI_ENABLED · PP_AI_OPENAI_BASE_URL · PP_AI_OPENAI_API_KEY · PP_AI_OPENAI_MODEL は 2026-09-18 から何も行いません。 指定してもエラーや警告なく 静かに無視 され、 サーバーは設定されたように見えます。

AI 設定の正本は PostgreSQL pp.mm_config 表であり、キー名称も ai.openai.* から ai.llm.* に変更されました。値を入力する経路はコンソールの設定画面(/env)またはその表です — プロパティリファレンス — AI 設定。

10. 変更後の適用手順​

vi /etc/kopens/plantpulse-platform.env # 사이드카 — 여기를 고칩니다
cd /opt/kopens/plantpulse-platform-docker/bin
./restart.sh # 준비될 때까지 대기 (종료 코드 0 = 쓸 수 있다)
インストールツリー内を修正しないでください

bin/env.sh に記載した値は 再インストール・アップグレード時に消失します。 インストールスクリプトがインストールツリーを 丸ごと削除して再取得するためです。サイドカーはツリー外にあるため生存します。

コンテナが参照する値を変更する必要がある場合は compose/docker-compose.yml を修正した後、同様の方法で再起動します。設定テンプレートはホストの /etc/kopens/conf にバインドマウントされており、ホストから直接編集でき、再インストール後も保存されます。

変数を変更しても反映されない場合は、順に確認してください。

確認事項内容
① サイドカーが優先されていないか/etc/kopens/plantpulse-platform.env に同じ名前があれば env.sh もシェル export も負けます → 優先順位
② アプリに届く名前かアプリ6種は env.sh を読みません。 compose になければアプリに届きません
③ 再起動したかロケール・タイムゾーンを含め、ほとんどの値が 起動時点でのみ 反映されます
④ パスワードかパスワードはファイルの編集では変更されません → パスワードローテーション

詳細な手順は スタートガイド を参照してください。