Zum Hauptinhalt springen

Abnahmekriterien für den Produktivbetrieb

Diese Seite ist eine Checkliste, damit Installationsverantwortliche und Betriebsteam nach denselben Kriterien über die „Freigabe für den Produktivbetrieb" entscheiden. Eine abgeschlossene Installation bedeutet nicht, dass der Dienst einmal gestartet ist, sondern dass Neustart, Backup, Health, Sicherheit und Abnahmenachweise vollständig dokumentiert sind.


1. Go-/No-Go-Kriterien

BereichGo-KriteriumNo-Go
BereitstellungsmodusNeuinstallation als container_mode=trueplantpulse.service native auf einer neuen Box betreiben
systemdplantpulse-edge.service active + enabledactive, aber nicht enabled, oder Restart-Loop
Health/api/v1/system/health HTTP 200 + components UPHTTP 503, Component DOWN, anhaltende Antwortverzögerung
Versionimage_tag / build_date in /api/v1/system/version dokumentiertTag nicht verifiziert, Start mit altem Image
NetzwerkWAN, PLC-NIC, DNS/NTP, Erreichbarkeit der Platform-API geprüftPLC-Netz besitzt Default-Route, NTP nicht synchronisiert
Sicherheit/etc/kopens/credentials.txt root 0600, initiales Admin-Passwort geändertStandard-/gemeinsame Passwörter bleiben bestehen, keine Dokumentation der Zugangsdatenübergabe
Backupbackup.sh einmal erfolgreich + .sha256 vorhandenKein Backup ausgeführt, Backup liegt nur auf derselben Festplatte
Wiederherstellbarkeitdoctor.sh oder Acceptance-Log erzeugtKeine Nachweise, die im Störungsfall übergeben werden können

Bei auch nur einem No-Go darf der Produktivbetrieb nicht aufgenommen werden; folgen Sie stattdessen Installations-Troubleshooting oder der Eskalationsprozedur im Betriebsleitfaden Container-Modus.


2. Freigabepunkte vor der Installation

Werte, die das Betriebsteam vor der Installation prüfen muss:

PunktBeispiel
EDGE_IDEDGE_00303
SITE_IDSITE_00001
Platform-Host / API-KeySERVER_HOST, SERVER_API_KEY
PLC-NIC / WAN-NICLAN1_IFACE, LAN2_IFACE
Statische IP / Gateway / DNSLAN1_IP, LAN2_IP, LAN2_GATEWAY, LAN2_DNS
Image-Tag-Richtlinielatest oder fest IMAGE_TAG=2026-YYYYMMDD
Richtlinie für initiale ZugangsdatenZufallsgenerierung oder Vorgabe durch das Betriebsteam
Externer Backup-SpeicherortNAS / S3 / Betriebs-Backup-Server

Zugangsdaten dürfen nicht im Chat- oder Mailtext hinterlassen werden, sondern werden über eine root-exklusive Datei oder den Secret-Store des Betriebs übergeben.


3. Secret-safe Installations-Env

Damit Passwörter und API-Keys nicht in der Shell-History landen, verwenden Sie eine root-exklusive Env-Datei.

sudo -i
umask 077
install -m 600 /dev/null /root/pp-edge-install.env
${EDITOR:-vi} /root/pp-edge-install.env

Beispielinhalt der Datei:

export EDGE_ID=EDGE_00303
export SITE_ID=SITE_00001
export SERVER_HOST=192.168.0.41
export SERVER_API_KEY='<platform-api-key>'
export LAN1_IFACE=enp1s0
export LAN1_IP=192.168.100.10/24
export LAN2_IFACE=enp2s0
export LAN2_IP=192.168.0.10/24
export LAN2_GATEWAY=192.168.0.1
export LAN2_DNS=192.168.0.1
# export IMAGE_TAG=2026-20260524

Ausführung:

sudo -i
set -a
. /root/pp-edge-install.env
set +a
cd /opt/kopens/install
bash install.sh

Auch wenn das Betriebsteam die initialen Passwörter selbst vorgibt, tragen Sie ADMIN_PASS, API_KEY, MQTT_PASS, OPCUA_PASS, CERT_PASS in dieselbe Datei ein und behalten Sie chmod 600 bei. Als offizieller Cert-Password-Key wird ausschließlich CERT_PASS verwendet.


4. Erfassung der Abnahmenachweise

Nach Abschluss der Installation erzeugen Sie mit dem folgenden Befehl eine Nachweisdatei ohne Geheimwerte.

sudo -i
OUT=/root/pp-edge-acceptance-$(date +%Y%m%d-%H%M%S).txt
{
echo "# PlantPulse Edge acceptance"
date -Is
echo
echo "## host"
hostnamectl
uname -a
timedatectl
echo
echo "## service"
systemctl is-enabled plantpulse-edge.service || true
systemctl is-active plantpulse-edge.service || true
systemctl status plantpulse-edge.service --no-pager | sed -n '1,40p'
echo
echo "## version"
curl -ks https://127.0.0.1/api/v1/system/version | python3 -m json.tool
echo
echo "## health"
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
echo
echo "## ports"
ss -lntp | grep -E ':(80|443|1883|1884|6379|7799|9042|1880|12000|12443)([[:space:]]|$)' || true
echo
echo "## storage"
df -h /opt /data1 2>/dev/null || df -h
echo
echo "## docker"
docker ps --filter name=plantpulse-edge --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
} > "$OUT"
chmod 600 "$OUT"
sha256sum "$OUT" > "$OUT.sha256"
echo "$OUT"

Bei der Abnahme an das Betriebsteam zu übergeben:

  • Pfad der Acceptance-Textdatei und sha256
  • /data1/pp-backups/pe-backup-*.tar.zst und .sha256
  • /tmp/pe-doctor-*.tar.zst und .sha256 (bei Problemen)
  • Gateway-IP, EDGE_ID, SITE_ID, Image-Tag, Installationszeitpunkt
  • Bestätigung der Zugangsdatenübergabe (Passwörter im Klartext über ein separates Sicherheitsverfahren)

5. Neustart-Verifizierung

Prüfen Sie vor dem Produktivbetrieb mindestens einmal die automatische Wiederherstellung nach einem Service-Restart.

sudo systemctl restart plantpulse-edge.service
sleep 30
sudo bash /opt/kopens/install/bin/health.sh
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool

Vor-Ort-Standorte mit bereits registrierter PLC-Verbindung prüfen nach dem Restart zusätzlich den Erfassungsstatus und die Aktualisierung des letzten Werts.


6. Backup und Wiederherstellungsbereitschaft

sudo bash /opt/kopens/install/bin/backup.sh
ls -lh /data1/pp-backups/
sha256sum /data1/pp-backups/pe-backup-*.tar.zst | tail -1

Kopieren Sie das erste Backup auf ein externes NAS/S3/einen Betriebs-Backup-Server. Ein Backup auf derselben Festplatte ermöglicht keine Wiederherstellung nach einem Ausfall.


7. Absicherung nach Übergabe an das Betriebsteam

  • Prüfen, ob die Berechtigung von /etc/kopens/credentials.txt auf 0600 root steht
  • Initiales Admin-Passwort geändert
  • Aufbewahrungsrichtlinie für /root/pp-edge-install.env festlegen: in den Secret-Store des Betriebs überführen und von der Box löschen oder root 0600 beibehalten
  • In der Firewall nur die Ports freigeben, die tatsächlich zum WAN exponiert sein müssen
  • Kontaktdaten des Betriebsteams und Eskalationspfad hinterlegen
  • Nächsten Inspektionstermin und Termin zur Backup-Verifizierung einplanen