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

閉域網インストール

インターネットが遮断された閉域網(エアギャップ)サーバーへのインストール手順です。 流れは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.txt

latest.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_URLpostgres://ppstudio:<password>@<호스트>:5432/ppstudio外部PG接続 — パスワードはこのURL内に入ります
PLATFORM_API_TARGET現場プラットフォームのアドレス実データ・認証委任の対象
STUDIO_LOCAL_USERSadmin:<password>初回ログインアカウント
PP_LANG / PP_TZko / 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 # 복구 리허설(비파괴)

詳細はバックアップと復元を参照してください。


次のステップ​