跳到主要内容

空气隔离安装

本文介绍在无法访问互联网的隔离网络(空气隔离)服务器上的安装步骤。 流程分为三个阶段。

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

服务器规格、端口和防火墙要求与安装文档中的"前提条件"相同。 请先查阅该章节。


0. 隔离网络服务器的前期准备

一键安装脚本在没有 Docker 时会从互联网下载并安装 —— 在隔离网络中该路径无法工作。 请预先安装 Docker。

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

可通过发行版的离线仓库或 RPM/DEB 包安装。如果还需要进行签名验证, 请一并带入 cosign 二进制文件(可选 —— 没有则仅跳过验证)。


1. 在可联网环境中下载

需要下载的文件共四个。

文件内容
plantpulse-studio-images-<version>.tar.gz5 个容器镜像的打包文件(约 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 更为稳妥。

镜像打包文件中包含的内容

Studio 服务器 · Web · 会话运行时 · 构建器 sidecar · PostgreSQL 共 5 个镜像全部包含在内。 在隔离网络中无需额外下载任何镜像。

完整性与来源验证(带出前)

先解压运维包,取出公钥(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

如果同一目录下存在 .sha256 · .sigload.sh自动进行验证,一旦不匹配即中止带入

✅ 서명 검증 통과
▶ 로드 중: dist/plantpulse-studio-images-2026.08.tar.gz
✅ 로드 완료 — cp .env.example .env 설정 후 bin/start.sh
如果出现跳过验证的警告

出现 ⚠ 서명 검증 생략(.sig/cosign.pub/cosign 중 부재) 表示三者之一缺失。 是否在未验证的情况下继续,请依据安全策略判断 —— 建议至少通过 .sha256 完整性验证。

3-3. 编写配置文件

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

以下是在空气隔离环境中必须调整的项目。

项目原因
REGISTRY留空REGISTRY=若有值,每次启动都会尝试从注册表 pull,造成延迟和告警
TAG带入打包文件的版本(2026.07必须与已加载的镜像标签一致
PG_PASSWORD足够长的随机字符串使用内置 PostgreSQL 时
PLATFORM_API_TARGET现场 Platform 地址实际数据与认证委派目标
STUDIO_LOCAL_USERSadmin:<password>首次登录账号
PP_LANG / PP_TZko / Asia/Seoul韩语现场

AI 与 Platform 密钥请参考密钥管理填入 .env。 若使用外部 PostgreSQL,请完全按照安装文档中的"数据库选择"操作。

3-4. 启动

bash bin/start.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 解压到临时目录, 只覆盖除 .envdist/ 之外的文件。

绝对不要覆盖 .envdist/

.env 中包含 Platform 地址、账号和 API 密钥,dist/ 中存放本地备份。 整体覆盖会导致技术栈无法启动或丢失备份。


6. 空气隔离环境中的备份与恢复

备份与恢复脚本在无互联网环境下同样可用 —— 因为使用外部 PostgreSQL 时所需的 postgres:18-alpine 镜像已包含在带入的打包文件中。

bash bin/backup.sh # 백업
DRYRUN=1 bash bin/restore.sh # 복구 리허설(비파괴)

详情请参阅备份与恢复


下一步