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
| Bereich | Go-Kriterium | No-Go |
|---|---|---|
| Bereitstellungsmodus | Neuinstallation als container_mode=true | plantpulse.service native auf einer neuen Box betreiben |
| systemd | plantpulse-edge.service active + enabled | active, aber nicht enabled, oder Restart-Loop |
| Health | /api/v1/system/health HTTP 200 + components UP | HTTP 503, Component DOWN, anhaltende Antwortverzögerung |
| Version | image_tag / build_date in /api/v1/system/version dokumentiert | Tag nicht verifiziert, Start mit altem Image |
| Netzwerk | WAN, PLC-NIC, DNS/NTP, Erreichbarkeit der Platform-API geprüft | PLC-Netz besitzt Default-Route, NTP nicht synchronisiert |
| Sicherheit | /etc/kopens/credentials.txt root 0600, initiales Admin-Passwort geändert | Standard-/gemeinsame Passwörter bleiben bestehen, keine Dokumentation der Zugangsdatenübergabe |
| Backup | backup.sh einmal erfolgreich + .sha256 vorhanden | Kein Backup ausgeführt, Backup liegt nur auf derselben Festplatte |
| Wiederherstellbarkeit | doctor.sh oder Acceptance-Log erzeugt | Keine 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:
| Punkt | Beispiel |
|---|---|
EDGE_ID | EDGE_00303 |
SITE_ID | SITE_00001 |
| Platform-Host / API-Key | SERVER_HOST, SERVER_API_KEY |
| PLC-NIC / WAN-NIC | LAN1_IFACE, LAN2_IFACE |
| Statische IP / Gateway / DNS | LAN1_IP, LAN2_IP, LAN2_GATEWAY, LAN2_DNS |
| Image-Tag-Richtlinie | latest oder fest IMAGE_TAG=2026-YYYYMMDD |
| Richtlinie für initiale Zugangsdaten | Zufallsgenerierung oder Vorgabe durch das Betriebsteam |
| Externer Backup-Speicherort | NAS / 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.zstund.sha256/tmp/pe-doctor-*.tar.zstund.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.txtauf0600 rootsteht - Initiales Admin-Passwort geändert
- Aufbewahrungsrichtlinie für
/root/pp-edge-install.envfestlegen: 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