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

環境変数リファレンス

スタジオサーバーが読み込む環境変数の一覧です。画面(環境設定)で変更する値と異なり、 ここでの値はファイルを修正して再起動しないと反映されません。

正本は /etc/kopens/plantpulse-studio.env​

/etc/kopens/plantpulse-studio.env
ストレージルートの .env はもう読み込まれません

旧パス(インストールディレクトリの .env)に値を入れても反映されません。 旧ファイルが残って いるとスクリプトがその旨を知らせます。値を修正するときは上記の正本パスを使ってください。

権限は chmod 600 にしてください — API キーが含まれるファイルです。


イメージとバージョン​

変数デフォルト値説明
REGISTRYdocker.kopens.io/psイメージを取得するレジストリ。空にするとローカルタグのみ使用します(直接ビルドした場合)
PP_IMAGE_TAG(空値)当社イメージセット(server · web)のカルバータグ
PS_IMAGE_TAG_SERVER(なし)plantpulse-studio-server だけ別タグで起動する場合
PS_IMAGE_TAG_WEB(なし)plantpulse-studio-web だけ別タグで起動する場合
PS_IMAGE_TAG_AGENT_SERVER0c5ac7fbエージェントサイドカー。カルバーではなくダイジェストピン(OpenHands SDK v1.43.1)のため PP_IMAGE_TAG には追従しません
PP_IMAGE_TAG は空にしておくことを推奨します

空にしておくと bin/start.sh が VERSION ファイルのカルバーを読み取り、リリースごとに自動追従します。 ここに月を手動で記入すると、その値がそのまま固定されます — 実際にこれが原因で1ヶ月前のイメージが 起動したことがあります。

特定の時点に固定する必要がある場合は、月(2026.09)ではなくスナップショットタグ(2026.09-20260911)を 入れてください。date +%Y.%m で計算しないでください — 毎月1日 00:00~04:00 KST の間は まだ存在しないタグを指します(その月のリリースは 04:00 に行われます)。

TAG · AGENT_SERVER_TAG という変数は存在しません

compose が読み込むのは上記の表の名前だけです。TAG=2026.08 のように記述しても 何も起こらず、スタックは VERSION のカルバーで起動します — 固定したつもりで 追従している状態になります。

特定のリリース時点に固定するにはスナップショットタグを使ってください — 例: TAG=2026.08-20260810。 :::


ロケールとタイムゾーン​

プラットフォーム・Edge と同じ変数名を使用します。

変数デフォルト値説明
PP_LANGenWeb の既定言語(ko / en)。ブラウザに保存された値が優先されます
PP_TZAsia/SeoulIANA タイムゾーン ID。"今日 / 昨日" のような相対時間の解釈基準

韓国語の現場であれば PP_LANG=ko にしてください。


データ保存場所​

変数デフォルト値説明
DATA_ROOT/var/lib/pp-studioワークスペース・ビルド成果物・状態がすべてこの下に保存されます

バックアップ対象がこのパスです → バックアップと復元。


データベース — 外部 PostgreSQL​

スタジオは外部 PostgreSQL を使用します。 プラットフォームが使うものと同じ PG を共有して構いません。

変数例
DATABASE_URLpostgres://<user>:<password>@<db-host>:5432/ppstudio

🔴 PG_PASSWORD という変数はありません。 DB パスワードは DATABASE_URL 1行の中に 含まれます — パスワードだけを個別に変更する変数を用意すると URL と矛盾する可能性があるため、1行にまとめました。

DATABASE_URL は必須です

空のままにするとインストールはその場で停止し、何が空かを通知します — それらしいデフォルト値を 捏造することはありません。

DB とロールは«先に»作成する必要があります

サーバーは既存のデータベースに対してマイグレーションのみ行います。DB とロールは作成しません — bin/provision-platform-db.sh がその作業を行います。 インストール の「データベース準備」を参照してください。


プラットフォーム連携​

変数説明
PP_API_URL実データ取得とログイン認証を委任するプラットフォームのアドレス
PP_API_TOKENそのプラットフォームの api_key
コンテナ内では名前が異なります

ログやコンテナ内では PLATFORM_API_TARGET · PLATFORM_API_KEY と表示されます。 .env に記述する名前は PP_API_URL · PP_API_TOKEN です — 下記の「2層の名前」を 参照してください。


リスナーポート​

変数デフォルト値説明
PORT5170スタジオサーバー(オーケストレーター)の API ポート。Web が内部でプロキシするため外部に開く必要はありません — 診断用(curl localhost:5170/health)
APPS_PORT5171プレビューとデプロイ済みアプリを配信する別のリスナーポート
  • ポートに直接接続するインストール — ファイアウォールでこのポートも開かないとプレビュー・デプロイアプリ・QR 接続ができません。
  • リバースプロキシの背後 — 開く必要はありません。プロキシが同じドメインの /container /preview · /apps をこのリスナーに転送します → ドメインとリバースプロキシ。
アプリオリジンを指定しません

クライアントは相対パスのみ使用します。プレビュー・デプロイアプリの公開 URL を個別に知らせる必要がなく 80/443 のみ開く構成でもそのまま動作します。


AI プロバイダー​

ここでの値は初期値です。画面(環境設定 → AI)で入力した値がこの値を上書きします。

変数デフォルト値説明
AI_PROVIDERopenai-compatible空にすると常に openai-compatible になります
PI_LLM_URL(空値 — 必須)ゲートウェイアドレス。デフォルト値は設定しません
AI_MODELgpt-4oモデル名
PI_LLM_API_KEY(空値 — 必須)OpenAI 互換キー
PS_ANTHROPIC_API_KEY(空値)クラウド Claude を使用する場合のみ

⚠ PI_LLM_URL と PI_LLM_API_KEY は空のままだとスタックが起動を拒否します。

PI_LLM_URL にそれらしいデフォルト値を入れない理由

ゲートウェイがそのホストに存在しない場合、チャット全体が fetch failed になりますが、値がそれらしく 見えるため原因の特定にコストがかかります。 実際のアドレスを記述してください。入力した値が正しいかどうかは、環境設定 → AI タブの 接続テストで保存前に確認できます → 環境設定(管理者)。

プロバイダーをキーから推測しません

プロバイダーは**AI_PROVIDER で明示します。** どのキーが含まれているかで選択すると、env 構成に よって何で起動するか予測できません。


CORS​

変数デフォルト値説明
STUDIO_CORS_ORIGINS(空値 = same-origin)別ドメインからアクセスする場合のみ指定

インストール・起動フラグ​

.env ではなくコマンドの前に付けて使用するものです(SKIP_DOCKER=1 bash bin/install.sh)。

変数デフォルト値説明
SKIP_DOCKER01 の場合、Docker インストール手順をスキップします(既にインストール済みのとき)
SKIP_WAIT01 の場合、起動完了を待たずにスクリプトが終了します
WAIT_READY_MIN10起動完了を待つ時間(分)。回線が遅い、イメージが大きい場合に増やします

エージェントサイドカーリソース​

変数デフォルト値説明
AGENT_SERVER_CPUS1ビルダーサイドカーに割り当てる CPU 数
AGENT_SERVER_MEMORY2gビルダーサイドカーのメモリ上限

env で運ばないもの​

ユーザーアカウントとロールは環境変数で設定しません。 サーバーはアカウントが1つもないとき 管理者を1つ DB に作成し、その後はアプリのユーザー管理画面で追加・削除し、 ロール(admin / builder / viewer)もそこで付与します。

→ 初期パスワードの変更


関連ドキュメント​


2層の名前 — .env とコンテナ内では異なります​

🔴 ここでミスが最も多く発生します。 ログ・docker inspect・製品ソースで見える名前と .env に記述する名前が異なります。記述するのは左側です。

.env に記述する名前コンテナ内で見える名前
PP_API_URLPLATFORM_API_TARGET
PP_API_TOKENPLATFORM_API_KEY
PI_LLM_URLAI_BASE_URL
PI_LLM_API_KEYAI_API_KEY
PS_ANTHROPIC_API_KEYANTHROPIC_API_KEY

残り(DATABASE_URL · DATA_ROOT · APPS_PORT · AI_PROVIDER · AI_MODEL · STUDIO_CORS_ORIGINS)は両方の名前が同じです。

なぜ名前を分けたのか

1つのサーバーに複数の製品(プラットフォーム · AI · スタジオ)が共存します。.env 側の名前に製品 接頭辞(PP_ プラットフォーム · PI_ 共通インフラ · PS_ スタジオ)を付けておくと、どの製品の値なのかが 名前だけで明らかになり、1つの値を2つの製品で共有する場合も混乱しません。