폐쇄망 설치
인터넷 접근이 차단된 사이트 (군시설 / 보안 등급 시설 / 일부 공장) 에 게이트웨이를 깔 때 사용하는 절차입니다.
표준 원라인 설치 는 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 archive | USB 의 이미지가 일부만 복사됨. 준비 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 archive | USB 의 산출물이 파일 일부만 복사됨. 준비 PC 에서 sha256 비교 후 재복사 |
| systemctl status plantpulse → activating | bin/start.sh 의 단계 중 어디서 막힘. journalctl -u plantpulse -f 로 라이브 |
| 시각이 안 맞음 (1970년) | 폐쇄망에 NTP 미접근. 사내 NTP 서버 IP 를 /etc/chrony.conf 에 추가 |
| install.sh 가 download URL 호출 | sed 수정 누락 — install.sh 내 모든 URL 을 file:///mnt/usb/... 로 |
더 알아보기
- 인터넷 가능 시 표준 절차: 원라인 설치
- 프로덕션 인수 기준: 프로덕션 인수 기준
- 백업으로부터 복구 (재해): 백업 및 복구
- 신버전 적용 (인터넷 가능): 업그레이드 (
upgrade.sh)