Zum Hauptinhalt springen

Installation im Air-Gap-Netzwerk

Dies ist das Verfahren für die Installation des Gateway an Standorten ohne Internetzugang (Militäranlagen, Hochsicherheitsbereiche, bestimmte Fabriken). Da die Standard-One-Line-Installation den Zugriff auf product.kopens.io erfordert, was in einem Air-Gap-Netzwerk nicht möglich ist, müssen die Artefakte von extern bezogen, per USB oder NAS übertragen und anschließend installiert werden.

Container-Modus (ab 2026.05, empfohlen)​

Übertragen Sie sowohl das install-Paket als auch das Container-Image als tar.zst. Wenn install.sh das Sibling-Verzeichnis image/*.tar.zst erkennt, erfolgt ein automatischer Import in docker load (Umgehung des Registry-Pulls).

Vorbereitungs-PC (mit Internetzugang)​

Erstellen Sie das Export-Bundle nicht manuell, sondern bauen Sie es mit airgap-bundle.sh. Da Repository-Dateien und Container-Images als eine Einheit gebündelt werden, gibt es keine Versionskonflikte. In GitLab können Sie alternativ den manuellen Job airgap:export ausführen und die Artefakte herunterladen.

# 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/

Air-Gap-Box (ohne Internetzugang)​

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)

Überprüfung nach der Installation im Container-Modus:

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

Auch Upgrades nach der Installation erfolgen ohne Internet — bringen Sie neue Image-Dateien ein und führen Sie pe upgrade --bundle aus (Upgrade im Air-Gap-Netzwerk).

Die Kriterien für den Abschluss der Installation sind auch im Air-Gap-Netzwerk identisch. Vor der Inbetriebnahme müssen gemäß den Produktionsabnahmekriterien Sicherungsdateien, das Acceptance-Log, der Image-Tag und der Status der Übergabe von Anmeldedaten dokumentiert werden.


Häufige Fehlerquellen​

SymptomUrsache / Lösung
tar: Error opening archiveImage auf dem USB-Stick nur teilweise kopiert. sha256 auf dem Vorbereitungs-PC vergleichen und erneut kopieren
docker load meldet «no space left»Unzureichender Speicherplatz in /var/lib/docker. Halten Sie mindestens das Zweifache der Image-Größe frei
Dienst stoppt bei activatingEin Modul verzögert den Start. Prüfen Sie mit journalctl -u plantpulse-edge -f und bin/logs.sh, um welches Modul es sich handelt
Zeit falsch (Jahr 1970)Kein NTP-Zugriff im Air-Gap-Netzwerk. Interne NTP-Server-IP zu /etc/chrony.conf hinzufügen
install.sh ruft externe URL aufOffline-Argument wurde vergessen. Verwenden Sie exakt die Befehle aus dem oben beschriebenen Air-Gap-Verfahren

SymptomUrsache / Lösung
dnf install stoppt, da Internet nicht gefundenOption --disablerepo=* fehlt. Verwenden Sie die Optionen aus Abschnitt 3.1
tar: Error opening archiveArtefakte auf dem USB-Stick nur teilweise kopiert. sha256 auf dem Vorbereitungs-PC vergleichen und erneut kopieren
systemctl status plantpulse → activatingBlockierung in einem der Schritte von bin/start.sh. Live-Prüfung mit journalctl -u plantpulse -f
Zeit falsch (Jahr 1970)Kein NTP-Zugriff im Air-Gap-Netzwerk. Interne NTP-Server-IP zu /etc/chrony.conf hinzufügen
install.sh ruft Download-URL aufÄnderung an sed fehlgeschlagen — alle URLs in install.sh müssen auf file:///mnt/usb/... gesetzt werden

Weiterführende Informationen​