隔离网络安装
本节介绍在互联网被切断的隔离网络(气隙)服务器上的安装流程。 整个流程分为三个步骤。
① 인터넷 되는 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.txtlatest.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_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。
数据库和角色必须预先创建 —— 请严格遵循安装中的
「数据库准备」和 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 # 복구 리허설(비파괴)
更多详情请参阅备份与恢复。