閉域網インストール
インターネットが遮断された閉域網(エアギャップ)サーバーへのインストール手順です。 流れは3つの段階です。
① 인터넷 되는 PC ② USB 등 이동 매체 ③ 폐쇄망 서버
번들 내려받기 → 반출 → 로드 → 설정 → 기동
무결성·서명 검증 (검증 자동 재확인)
サーバー仕様・ポート・ファイアウォール要件はインストールドキュメントの「事前要件」と同じです。 まずその節を確認してください。
0. 閉域網サーバーの事前準備
オンラインインストールスクリプトは、Dockerが無いとインターネットからダウンロードしてインストールします — 閉域網では この経路は動作しません。Dockerは事前にインストールしておいてください。
docker --version
docker compose version # v2.22 이상
ディストリビューションのオフラインリポジトリやRPM/DEBパッケージでインストールすればよいです。署名検証まで行うには
cosign バイナリも一緒に持ち込んでください(任意 — 無ければ検証だけ省略されます)。
1. インターネットに接続できる場所でダウンロード
受け取るファイルは4つです。
| ファイル | 内容 |
|---|---|
plantpulse-studio-images-<version>.tar.gz | コンテナイメージ5種のセット(約2.8 GB) |
…tar.gz.sha256 | 整合性検証用チェックサム |
…tar.gz.sig | 出所(署名)検証用Cosign署名 |
plantpulse-studio-docker.tar.gz | 運用パッケージ — bin/ スクリプト · compose · .env.example · cosign.pub |
BASE=https://product.kopens.io/plantpulse-studio
VER=2026.08 # 또는: VER=$(curl -fsSL $BASE/latest.txt)
# 번들은 수 GB — 전송이 끊기면 -C - 가 이어받습니다
curl -fLO -C - --retry 5 $BASE/plantpulse-studio-images-$VER.tar.gz
curl -fLO $BASE/plantpulse-studio-images-$VER.tar.gz.sha256
curl -fLO $BASE/plantpulse-studio-images-$VER.tar.gz.sig
curl -fLO $BASE/plantpulse-studio-docker.tar.gz
latest.txtlatest.txt は最新バージョンの名前だけを載せた1行ファイルです(例: 2026.08)。バンドルのコピーでは
ないので、新バージョンが出てもダウンロードしたファイルは変わりません。
一度公開したバージョン版は削除しません。 2026.09 が出ても plantpulse-studio-images-2026.08.tar.gz
はそのまま残るので、使用していたバージョンを再ダウンロードしたり戻したりするときにいつでもそのURLをそのまま使えます。
インストール手順をスクリプトで固定している場合は、latest.txt の代わりにバージョンを直接書いておく方が安全です。
イメージは6つ入っています — スタジオサーバー · Web · セッションランタイム · ビルダーサイドカー · Dockerソケットプロキシ、そしてPostgreSQL。閉域網で追加でダウンロードする必要があるイメージはありません。
スタック自体はPostgreSQLコンテナを起動しません(外部PGを使用します)。閉域網には使える PGが無い可能性があるためイメージだけを同梱したのです — 現場でPGを直接構築する必要があるときに 使用してください。
整合性・出所検証(持ち出し前)
まず運用パッケージを解凍して公開鍵(cosign.pub)を取り出します。
mkdir -p pkg && tar xzf plantpulse-studio-docker.tar.gz -C pkg --strip-components=1
# ① 무결성 — 전송 중 파일이 깨지지 않았는가
sha256sum -c plantpulse-studio-images-$VER.tar.gz.sha256
# ② 출처 — KOPENS 가 서명한 번들이 맞는가
cosign verify-blob --key pkg/cosign.pub --insecure-ignore-tlog=true \
--signature plantpulse-studio-images-$VER.tar.gz.sig \
plantpulse-studio-images-$VER.tar.gz
--insecure-ignore-tlog が付く理由社内レジストリの方針上、公開透明性ログ(Rekor)を使用しません。このオプションは公開ログの 参照のみを省略するだけで、署名自体は暗号学的にそのまま検証されます。
CDNキャッシュの可能性があります。URLの後に ?v=$(date +%s) を付けて再ダウンロードしてください。
2. 移動メディアで持ち出し
USBなどに以下の4つのファイルをそのままコピーします。.sha256 と .sig を忘れないでください —
持ち込み側のスクリプトがこれらのファイルで自動再検証します。
plantpulse-studio-images-2026.08.tar.gz
plantpulse-studio-images-2026.08.tar.gz.sha256
plantpulse-studio-images-2026.08.tar.gz.sig
plantpulse-studio-docker.tar.gz
3. 閉域網サーバーで持ち込み
3-1. 運用パッケージの配置
sudo mkdir -p /opt/kopens/plantpulse-studio-docker
sudo tar xzf /media/usb/plantpulse-studio-docker.tar.gz \
-C /opt/kopens/plantpulse-studio-docker --strip-components=1
cd /opt/kopens/plantpulse-studio-docker
mkdir -p dist
sudo cp /media/usb/plantpulse-studio-images-2026.08.tar.gz* dist/
3-2. イメージのロード
sudo bash bin/load.sh dist/plantpulse-studio-images-2026.08.tar.gz
load.sh は同じフォルダに .sha256 · .sig があると自動で検証し、不一致なら
持ち込みを中断します。
✅ 서명 검증 통과
▶ 로드 중: dist/plantpulse-studio-images-2026.08.tar.gz
✅ 로드 완료 — cp .env.example .env 설정 후 bin/up.sh
⚠ 서명 검증 생략(.sig/cosign.pub/cosign 중 부재) が見えたら、3つのうちどれかが無いという
意味です。検証なしで進めるかはセキュリティポリシーに応じて判断してください — 少なくとも .sha256
整合性検証だけでも通すことを推奨します。
3-3. 設定ファイルの作成
cp .env.example .env
vi .env
chmod 600 .env
閉域網で必ず修正が必要な項目です。
| 項目 | 値 | 理由 |
|---|---|---|
REGISTRY | 空にしておくこと(REGISTRY=) | 値があると起動のたびにレジストリpullを試みて遅延・警告が発生します |
PP_IMAGE_TAG | 持ち込んだバンドルのバージョン(2026.07) | ロードされたイメージタグと一致する必要があります |
DATABASE_URL | postgres://ppstudio:<password>@<호스트>:5432/ppstudio | 外部PG接続 — パスワードはこのURL内に入ります |
PLATFORM_API_TARGET | 現場プラットフォームのアドレス | 実データ・認証委任の対象 |
STUDIO_LOCAL_USERS | admin:<password> | 初回ログインアカウント |
PP_LANG / PP_TZ | ko / Asia/Seoul | 韓国語の現場 |
AI・プラットフォームキーはシークレット管理を参照して .env に入れます。
DBとロールは事前に作成しておく必要があります — インストール の
「データベース準備」と bin/provision-platform-db.sh をそのまま従ってください。
3-4. 起動
bash bin/up.sh
ℹ️ REGISTRY 비어있음(로컬/에어갭) — pull 생략, 로컬 이미지 사용
⏳ 헬스 대기...
✅ PlantPulse Studio 시작됨 → http://192.168.x.x/
4. インストール確認
bash bin/status.sh
bash bin/smoke-install.sh
smoke-install.sh はヘルス · Web応答 · 実際のログイン · セッションランタイムイメージ · コンテナ状態を
一度に検査します。すべて通れば実際に使用可能な状態です。
ブラウザで http://<server-ip>/ にアクセスして STUDIO_LOCAL_USERS アカウントでログインしてください。
以降の手順はインストールドキュメントの「初回ログイン」と同じです。
5. 閉域網環境の更新
新しいバージョンバンドルを同じ方法で持ち込んでロードした後、再起動すればよいです。
cd /opt/kopens/plantpulse-studio-docker
bash bin/backup.sh # ① 먼저 백업
sudo cp /media/usb/plantpulse-studio-images-2026.08.tar.gz* dist/
sudo bash bin/load.sh dist/plantpulse-studio-images-2026.08.tar.gz # ② 새 이미지 로드
sed -i 's/^TAG=.*/TAG=2026.08/' .env # ③ 태그 변경
bash bin/restart.sh # ④ 재기동
運用スクリプト(bin/)まで更新するには、新しい plantpulse-studio-docker.tar.gz を一時フォルダに解凍して
.env と dist/ を除いたファイルだけを上書きしてください。
.env と dist/ は絶対に上書きしないでください.env にはプラットフォームのアドレス・アカウント・APIキーが、dist/ にはローカルバックアップが入っています。
丸ごと上書きするとスタックが起動しなくなったり、バックアップを失ったりします。
6. 閉域網でのバックアップ・復元
バックアップ・復元スクリプトはインターネットなしで動作します — 外部PostgreSQLを使用するときに必要な
postgres:18-alpine イメージが持ち込みバンドルに含まれているためです。
bash bin/backup.sh # 백업
DRYRUN=1 bash bin/restore.sh # 복구 리허설(비파괴)
詳細はバックアップと復元を参照してください。
次のステップ
- シークレット管理 — キーを
.envにのみ置く原則 - ドメインとリバースプロキシ — 社内ドメイン・HTTPSでサービスを公開する
- バックアップと復元
- トラブルシューティング