본문으로 건너뛰기

폐쇄망 설치

인터넷 접근이 차단된 사이트 (군시설 / 보안 등급 시설 / 일부 공장) 에 게이트웨이를 깔 때 사용하는 절차입니다. 표준 원라인 설치 는 product.kopens.io 도달이 필요한데, 폐쇄망에선 그게 안 되므로 외부에서 산출물 받아 와서 USB / NAS 로 옮긴 다음 깔아야 합니다.

컨테이너 모드 (2026.05+, 권장)​

install 패키지 + 컨테이너 이미지 tar.zst 두 가지를 옮깁니다. install.sh 가 sibling image/*.tar.zst 를 감지하면 docker load 로 자동 import (registry pull 우회).

준비 PC (인터넷 가능)​

반출 번들은 손으로 만들지 말고 airgap-bundle.sh 로 굽습니다. 저장소 파일과 컨테이너 이미지를 한 덩어리로 묶어주므로 버전이 어긋날 일이 없습니다. GitLab 에서는 airgap:export 수동 잡을 돌린 뒤 artifacts 로 내려받아도 됩니다.

# 1) 저장소 받기
curl -fsSLO https://product.kopens.io/plantpulse-edge/plantpulse-edge-docker.tar.gz
mkdir -p plantpulse-edge-docker
tar xzf plantpulse-edge-docker.tar.gz -C plantpulse-edge-docker --strip-components=1

# 2) 반출 번들 굽기 — 저장소 + 이미지가 함께 들어간다
sudo bash plantpulse-edge-docker/bin/airgap-bundle.sh

# 3) USB / NAS 로 옮김 (파일명 예: plantpulse-edge-images-2026.07.tar.gz)
cp plantpulse-edge-images-*.tar.gz /media/usb/

폐쇄망 박스 (인터넷 없음)​

sudo -i
mkdir -p /opt/kopens/plantpulse-edge-docker
tar xzf /media/usb/plantpulse-edge-images-*.tar.gz \
-C /opt/kopens/plantpulse-edge-docker --strip-components=1
cd /opt/kopens/plantpulse-edge-docker/repo/bin
# 필요하면 env.sh 에서 EDGE_ID / SITE_ID 를 박스별로 조정한 뒤 실행
sudo bash airgap-load.sh
# airgap-load.sh: 오프라인 Docker 설치 → 이미지 docker load → install.sh(SKIP_PULL=1)

설치 후 컨테이너 모드로 검증:

sudo bash /opt/kopens/install/bin/status.sh
sudo bash /opt/kopens/install/bin/health.sh
curl -ks https://127.0.0.1/api/v1/system/version | python3 -m json.tool
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool

설치 뒤의 업그레이드도 인터넷 없이 합니다 — 새 이미지 파일을 반입해 pe upgrade --bundle (폐쇄망 업그레이드).

폐쇄망도 설치 완료 기준은 동일합니다. 운영 투입 전 프로덕션 인수 기준에 따라 백업 파일, acceptance log, image tag, 자격증명 전달 여부를 남깁니다.


자주 빠지는 함정​

증상원인 / 해결
tar: Error opening archiveUSB 의 이미지가 일부만 복사됨. 준비 PC 에서 sha256 을 비교하고 다시 복사합니다
docker load 가 «no space left»/var/lib/docker 여유 부족. 이미지 크기의 2배 이상을 비워 둡니다
서비스가 activating 에서 멈춤모듈 하나가 늦는 것입니다. journalctl -u plantpulse-edge -f 와 bin/logs.sh 로 어느 모듈인지 봅니다
시각이 안 맞음(1970년)폐쇄망에 NTP 미접근. 사내 NTP 서버 IP 를 /etc/chrony.conf 에 추가합니다
install.sh 가 외부 URL 을 호출오프라인 인자를 빠뜨린 것입니다. 위 폐쇄망 절차의 명령을 그대로 씁니다

증상원인 / 해결
dnf install 이 인터넷 못 찾아 멈춤--disablerepo=* 옵션을 빼먹음. 위 3.1 의 옵션 그대로
tar: Error opening archiveUSB 의 산출물이 파일 일부만 복사됨. 준비 PC 에서 sha256 비교 후 재복사
systemctl status plantpulse → activatingbin/start.sh 의 단계 중 어디서 막힘. journalctl -u plantpulse -f 로 라이브
시각이 안 맞음 (1970년)폐쇄망에 NTP 미접근. 사내 NTP 서버 IP 를 /etc/chrony.conf 에 추가
install.sh 가 download URL 호출sed 수정 누락 — install.sh 내 모든 URL 을 file:///mnt/usb/... 로

더 알아보기​