跳到主要内容

隔离网络安装

本节介绍在互联网被切断的隔离网络(气隙)服务器上的安装流程。 整个流程分为三个步骤。

① 인터넷 되는 PC ② USB 등 이동 매체 ③ 폐쇄망 서버
번들 내려받기 → 반출 → 로드 → 설정 → 기동
무결성·서명 검증 (검증 자동 재확인)

服务器规格、端口及防火墙要求与安装文档中的“先决条件”相同。 请先查看该章节。


0. 隔离网络服务器准备​

在线安装脚本在未安装 Docker 时会从互联网下载安装 —— 在隔离网络中 该路径不可用。 请预先安装 Docker。

docker --version
docker compose version # v2.22 이상

可通过发行版离线仓库或 RPM/DEB 包安装。若还需进行签名验证,请一并 导入 cosign 二进制文件(可选 —— 若省略,则仅跳过验证环节)。


1. 在联网环境下载​

需要下载四个文件。

文件内容
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 是仅包含最新版本名称的单行文件(例如:2026.08)。它不是捆绑包的副本, 因此即使有新版本发布,已下载的文件也不会改变。

已发布过的版本不会删除。 即使 2026.09 发布,plantpulse-studio-images-2026.08.tar.gz 也依然保留,因此,当需要重新下载或回退到已使用的版本时,随时可直接使用该地址。 若已将安装流程固定为脚本,则建议直接写明版本号而非使用 latest.txt,这样更稳妥。

镜像捆绑包中包含的内容

其中包含六个镜像 —— 工作室服务器 · Web · 会话运行时 · 构建器 sidecar · Docker socket 代理,以及 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 等介质中。 请务必不要遗漏 .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 중 부재),则表示缺少其中一项。 是否跳过验证继续执行,请根据安全策略判断 —— 至少建议通过 .sha256 完整性验证。

3-3. 编写配置文件​

cp .env.example .env
vi .env
chmod 600 .env

隔离网络中必须修改的项目如下。

项目值原因
REGISTRY留空(REGISTRY=)若有值,每次启动都会尝试拉取仓库并导致延迟 · 警告
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。 数据库和角色必须预先创建 —— 请严格遵循安装中的 「数据库准备」和 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 # 복구 리허설(비파괴)

更多详情请参阅备份与恢复。


后续步骤​