CUPS-Server für Netzwerkdrucker (Videntis)
Die Videntis-Erweiterung kann Etiketten statt als PDF-Download direkt an einen im Netzwerk erreichbaren Drucker senden (Format-Ausgabeart „Netzwerkdrucker” — siehe Etiketten & Drucker). Dieses Kapitel beschreibt die Infrastruktur-Seite davon: einen CUPS-Server bereitstellen, an den CrispyCMS Druckaufträge schicken kann.
Der CrispyCMS-Container enthält lediglich das CUPS-Client-Werkzeug (lp / lpstat aus dem Debian-Paket cups-client), mit dem Druckaufträge über das IPP-Protokoll an einen entfernten CUPS-Server geschickt werden (lp -h host:port -d warteschlange …). Der eigentliche CUPS-Server mit dem Druckertreiber läuft als separater Dienst — typischerweise ein weiterer Container im selben Docker-Netzwerk.
CUPS-Server-Image
Für einen einsatzbereiten CUPS-Server steht ein von BL Netzwerke gepflegtes Image bereit:
docker pull images.crispycms.de/distribution/cupsd
Binden Sie es als eigenen Service in Ihre docker-compose.yml ein, im selben Docker-Netzwerk wie den CrispyCMS-Container, damit dieser den CUPS-Server über den internen Servicenamen erreichen kann:
services:
crispycms:
# ... bestehende CrispyCMS-Konfiguration ...
networks:
- crispy-net
cups:
image: images.crispycms.de/distribution/cupsd
restart: unless-stopped
ports:
# 631 nur nach außen freigeben, wenn Sie direkt (z. B. für die
# CUPS-Weboberfläche) von außerhalb des Docker-Netzwerks zugreifen
# möchten. Für den reinen Betrieb mit CrispyCMS genügt die
# interne Erreichbarkeit über das gemeinsame Netzwerk.
- "631:631"
volumes:
- cups_data:/etc/cups
networks:
- crispy-net
volumes:
cups_data:
networks:
crispy-net:
driver: bridge
Prüfen Sie vor dem produktiven Einsatz die aktuell verfügbaren Tags sowie eventuelle Umgebungsvariablen des distribution/cupsd-Images (z. B. für einen Admin-Zugang zur CUPS-Weboberfläche) — diese können sich zwischen Versionen ändern. Das obige Beispiel zeigt die minimale Netzwerk-/Volume-Einbindung, die für die Anbindung an Videntis notwendig ist.
Drucker/Warteschlange im CUPS-Server anlegen
Nach dem Start des Containers erreichen Sie die CUPS-Weboberfläche unter http://<host>:631 (bzw. https:// je nach Image-Konfiguration). Dort — oder per lpadmin innerhalb des Containers — legen Sie für jeden physischen Drucker eine Warteschlange (Queue) mit dem passenden Treiber an (z. B. Brothers offizieller Linux-Treiber für einen QL-820NWBc). Der dabei vergebene Warteschlangenname ist der Wert, den Sie später in Videntis unter „Warteschlangenname” eintragen.
# Beispiel: Innerhalb des CUPS-Containers eine Warteschlange manuell anlegen
docker compose exec cups lpadmin -p ql820 -E -v ipp://192.168.1.50/ipp/print -m everywhere
docker compose exec cups cupsenable ql820
docker compose exec cups cupsaccept ql820
Der genaue Weg (IPP-Everywhere, herstellereigener Treiber, USB-über-Netzwerk-Bridge o. Ä.) hängt vom jeweiligen Druckermodell ab und ist unabhängig von CrispyCMS/Videntis — sobald die Warteschlange im CUPS-Server funktioniert (testen Sie mit lp -d ql820 testdatei.pdf direkt auf dem CUPS-Server), ist der CrispyCMS-seitige Teil nur noch Konfiguration.
Drucker in Videntis anlegen
Tragen Sie unter Verwalten → Drucker → Drucker hinzufügen die Verbindungsdaten zum eben eingerichteten CUPS-Server ein:
| Feld | Wert im Beispiel oben |
|---|---|
| CUPS-Server (Host/IP) | cups (der Docker-Servicename aus der docker-compose.yml, sofern CrispyCMS und der CUPS-Server im selben Docker-Netzwerk laufen) |
| Port | 631 |
| Warteschlangenname | ql820 (oder der von Ihnen vergebene Name) |
Klicken Sie anschließend auf Verbindung testen — Videntis führt dazu intern lpstat -h cups:631 -p ql820 aus und meldet, ob der Server erreichbar ist und die Warteschlange dort existiert. Erst danach sollten Sie den Drucker einem Etikettenformat mit Ausgabeart „Netzwerkdrucker” zuweisen (siehe Etiketten & Drucker).
Fehlerbehebung
„lpstat: No such file or directory” / „lp: command not found”
Das cups-client-Paket fehlt im CrispyCMS-Image. Es ist seit Version 26.08 standardmäßig im offiziellen Dockerfile enthalten; bei einem selbst angepassten Image stellen Sie sicher, dass cups-client installiert ist, und bauen den Container neu (docker compose build, ein reiner Neustart genügt nicht).
„Verbindung fehlgeschlagen: timeout” Prüfen Sie, ob CrispyCMS und der CUPS-Server im selben Docker-Netzwerk hängen und der Servicename als Host korrekt eingetragen ist. Ein direkter Verbindungstest aus dem CrispyCMS-Container heraus hilft bei der Eingrenzung:
docker compose exec crispycms lpstat -h cups:631 -p ql820
Druckauftrag schlägt fehl, obwohl „Verbindung testen” erfolgreich war
Die Warteschlange existiert und ist erreichbar, aber möglicherweise offline, im Fehlerzustand oder das PDF konnte vom Treiber nicht verarbeitet werden. Prüfen Sie den Warteschlangenstatus direkt auf dem CUPS-Server (lpstat -p ql820 -l bzw. über die CUPS-Weboberfläche) sowie die konkrete Fehlermeldung in Videntis unter Verwalten → Druckwarteschlange.