CLI als Docker-Container
Der zplCloud-Remote-Agent als Docker-Container - für Raspberry Pi, Synology-NAS und jeden Docker-Host. Keine eingehenden Ports, kein Firewall-Eingriff.
Was ist der Docker-Agent und wofür ist er gut?
Der zplcloud-agent ist die zplcloud-CLI als vorbereiteter
Container. Er läuft auf einem Rechner in der Nähe deiner Zebra-Drucker und verbindet sich
ausgehend mit api.zplcloud.com - ähnlich wie TeamViewer. Danach kannst du
im zplCloud-„Remote Printers“-Tab Drucker anlegen und Druckaufträge, Profile und Probes über den
Agenten an die Drucker im lokalen LAN (TCP 9100) oder an USB-Drucker weitergeben.
- Keine eingehenden Ports - nur eine ausgehende HTTPS/WebSocket-Verbindung, funktioniert hinter NAT und Firewalls.
- Ein Container statt Dateipfad - ideal für Raspberry Pi (64-bit), Synology, Intel/Apple-Silicon-Mac mit Docker Desktop.
- Mehrarchitektur-Image -
linux/amd64+linux/arm64, öffentlich, ohne Login. - USB-Drucker - ZPL über USB-virtuelle-COM-Ports (CDC-ACM) oder libusb (Drucker-Klasse).
- Autostart & Logs -
restart: unless-stopped, Tages-Logdatei optional.
Voraussetzungen
- Docker (Desktop, Docker Engine oder Synology-Container-Manager).
- Ein API-Key aus dem zplCloud-API-Tab.
- Drucker im selben LAN erreichbar (TCP 9100) oder per USB angeschlossen.
docker-compose.agent.yml
Lade die Datei herunter (oder kopiere sie) und passe ZPLCLOUD_API_KEY und ZPLCLOUD_AGENT an:
Umgebungsvariablen (alle Parameter)
| Variable | Pflicht | Bedeutung |
|---|---|---|
| ZPLCLOUD_API_KEY | ja | API-Key aus dem zplCloud-API-Tab; authentifiziert den Agenten am Backend. |
| ZPLCLOUD_AGENT | ja | Anzeigename im „Remote Printers“-Tab (frei wählbar, z. B. „Warehouse Berlin“, „PI“). |
| ZPLCLOUD_API_BASE | nein | Basis-URL (Standard: https://api.zplcloud.com). |
| ZPLCLOUD_VERBOSE | nein | true = SignalR-Negotiation-/Transport-Trace (Fehlersuche). |
| ZPLCLOUD_LOG | nein | true = schreibt zplcloud-<yyyy-MM-dd>.log in ZPLCLOUD_LOG_DIR. |
| ZPLCLOUD_LOG_DIR | nein | Log-Verzeichnis im Container (z. B. /logs, per Volume gemountet). |
| ZPLCLOUD_TIMEOUT | nein | Connect-/Read-Timeout in ms (Standard: 5000). |
Starten & verwalten
Unterstützte Plattformen
linux/amd64- x64-Linux, x64-Synology, Intel-Docker-Hosts, Windows-Docker (WSL2).linux/arm64- 64-bit Raspberry Pi (Pi OS 64-bit), ARM-Synology, Apple-Silicon-Docker.- 32-bit Raspberry Pi: kein 32-bit-ARM-Image → stattdessen den direkten Installer verwenden.
USB-Drucker im Container
- Einfachster Weg:
privileged: true- funktioniert für die USB-Drucker-Klasse (libusb) und CDC-ACM-Serial. - Sicherer:
privilegedentfernen und die Geräte gezielt mounten (devices:oben, auskommentiert) plus eine udev-Regel, z. B.GROUP="dialout", MODE="0660"für den Zebra-Drucker.
Troubleshooting
| Symptom | Lösung |
|---|---|
| Agent erscheint nicht online | ZPLCLOUD_API_KEY prüfen, Logs ansehen (docker compose logs -f), ZPLCLOUD_VERBOSE=true für Trace. |
| USB-Drucker nicht erreichbar | privileged: true setzen oder Geräte + udev-Regel konfigurieren; /dev/bus/usb muss gemountet sein. |
| TCP 9100 nicht erreichbar | Drucker-IP/-Host im Remote-Printers-Tab prüfen; Drucker und Container müssen im selben LAN sein. |