Node-RED auf PLCnext mit Docker deployen: Schritt-für-Schritt-Anleitung
Ein Docker-Container kann einen Node-RED-Server auf einem PLCnext-Gerät betreiben. Zwar ist die andere Methode etwas schneller, doch OCI-Container bieten Vorteile: Bei wiederholter Nutzung derselben Pakete lässt sich ein Standard-Image bauen und von Docker Hub herunterladen. Docker erlaubt auch, den Node-RED-Server bedarfsgerecht zu starten und zu stoppen.
Dieser Blog erklärt: Docker-Installation prüfen, Custom-Image mit Dockerfile und vorinstallierten Paketen bauen, Container daraus erstellen, Autostart beim Boot konfigurieren, Image zu Docker Hub pushen.
Balena Engine installieren
Streng genommen nutzen wir nicht Docker, sondern die Balena Engine für OCI-Container (Open Container Initiative). Nomenklaturdetails sprengen den Rahmen – Links im Further-Reading-Bereich.
Installation ist einfach (vollständige Referenz hier), Befehle hier für Praktikabilität:
Als Root-User anmelden (neues Root-Passwort setzen):
sudo passwd root
su
Git-Repository klonen und hineinwechseln:
git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted
Setup-Skript ausführbar machen und ausführen:
chmod +x setup.sh
./setup.sh
Internetzugriff für Container
Manchmal werden nft-Tables bei der Installation falsch gesetzt. Einfache Korrektur:
ifconfig
Interface balena notieren (Inet-Adresse, z. B. 172.17.0.1). Datei /etc/nftables/balena.nft prüfen – zweite Zeile muss mit ifconfig-Adresse übereinstimmen. Falls nicht: nano /etc/nftables/balena.nft anpassen. Dann Balena-Engine-Daemon neu starten:
/etc/init.d/balena stop
/etc/init.d/balena start
Erster Container
Node-RED-Container ohne Custom-Pakete herunterladen (Flags werden später erklärt). Wenn keine Custom-Pakete nötig: hier stoppen und Port 1880 des Controllers aufrufen.
balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red
Docker Hub
Das arm32v7/debian-Image kam von Docker Hub – Sammelstelle für Container-Images. Organisation arm32v7 erstellt Images für AXC F 2152-Architektur. nodered-Organisation hat kompatibles Image. Empfehlung: Docker-Hub-Account erstellen (fast unbegrenzte öffentliche Repos, ein privates Repo kostenlos). Spart viel Zeit.
Dockerfile
Ein Dockerfile ist das „Rezept“ für ein Docker-Image. Erste Zeile fast immer FROM (Basis-Image). Dann Image aufbauen – viele Befehle möglich, hier nur RUN. RUN führt Befehl im Container aus, den wir bauen. Beispiel SNMP-Paket: RUN npm install node-red-node-snmp.
Dockerfile erstellen (noch in SSH-Session auf AXC F 2152!):
nano Dockerfile
Inhalt:
FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp
Speichern (Strg+S), Beenden (Strg+X). Image bauen:
balena-engine build . --tag myimage
Erfolg: „successfully tagged“. Image anzeigen: balena-engine images.
Neues Image ausführen
Container interaktiv starten (-it = Terminal-Output im Container; -d = detached/Hintergrund):
balena-engine run -it -p 1880:1880 --name nodered myimage
Container verlassen und laufen lassen: Strg+P Strg+Q. Im Browser: IP des Controllers + Port 1880 → Node-RED-Umgebung mit SNMP-Paket.
Autostart beim Boot & Docker-Run-Flags
Manueller Start bei jedem Neustart unpraktisch. Docker kann Autostart konfigurieren. Flags verstehen:
-it: interaktiv-d: detached (Hintergrund)-p: Port-Mapping (Host-Port : Container-Port)--name: Containername (beibalena-engine pssichtbar; sonst zufälliger Name)--restart: Restart-Policy (Referenz in Further Readings).--restart alwaysstartet Container immer neu.
Finaler Befehl:
balena-engine run -it -p 1880:1880 --name nodered --restart always myimage
Image zu Docker Hub pushen
Image auf anderen Controllern nutzen? Zu Docker Hub pushen. Voraussetzung: Account + Repository erstellt. Login:
balena-engine login
Image-Tag muss benutzer/repo lauten. Beim Bauen nicht so benannt? Re-taggen:
balena-engine tag myimage meinaccount/meinrepo
# oder mit Label
balena-engine tag myimage meinaccount/meinrepo:einlabel
Pushen:
balena-engine push meinaccount/meinrepo
Weiterführende Links & Referenzen
- PLCnext Docker Getting Started
- What is a Container?
- Dockerfile Reference
- Docker Hub
- Node-RED auf Docker Hub
Industrietechnik
- Praktischer Leitfaden zu keramischem 3D-Druck: Techniken, Materialien, Design-Tipps
- Basisfarbstoffe (Basic Dyes) verstehen: Anwendungen, Sicherheit & Branchenanwendungen
- Industrielle Farbstoffe & Pigmente: Umfassender Leitfaden zu Anwendungen & Typen
- TJBot starten: Bauen, konfigurieren und per Sprache steuern
- Schritt-für-Schritt: RAK 831 LoRa Gateway auf Raspberry Pi 3 deployen
- LoRa-Gateway mit RAK831-Modul auf Raspberry Pi 3 bauen – Schritt-für-Schritt-Anleitung
- Nachhaltiger Erfolg: Lektionen in Beharrlichkeit von Abraham Lincoln und Instandhaltungsführung
- KI in der Versicherung: Ein praxisnaher Starter-Guide für die reale Umsetzung
- Arduino Einsteiger Tutorial #1: Erstes Projekt (Blink)
- Cat®-Maschinen optimieren: Der ultimative My.Cat.com-Leitfaden