Linux - Netzwerk und Serveradminstration Drucker Server
Druckerserver-Einführung (Debian)
Was ist CUPS?
Das Common Unix Printing System (CUPS) ist das am weitesten verbreitete Drucksystem auf Linux-Systemen. Es wurde von Michael Sweet entwickelt, später von Apple aufgekauft und seit September 2020 wird es als Fork unter der Leitung von OpenPrinting weiterentwickelt.
- Aufgebaut als Client/Server-System
- Drucker lassen sich lokal nutzen, verwalten und im Netzwerk freigeben
- CUPS wandelt Druckdaten intern immer in PDF um, bevor sie an den Drucker gesendet werden
- Moderne Drucker mit AirPrint-Unterstützung können direkt über den Treiber IPP Everywhere eingebunden werden – ohne PPD-Datei
Dieser Artikel behandelt einen Debian-Server, der Drucker (bzw. den virtuellen CUPS-PDF-Drucker) verwaltet und im Netz freigibt, sowie Debian-Clients, die diese Freigaben nutzen.
Server
Auf dem Server wird CUPS installiert, konfiguriert, im Netz freigegeben und die PDF-Ausgabe in ein öffentlich erreichbares Webverzeichnis gelegt.
Installation
- CUPS-Server installieren
sudo apt install cups cups-client cups-bsd
- cups – Server-Komponente
- cups-client – Client-Komponente (wird auf dem Server für lokale Tests mitbenötigt)
- cups-bsd – Kompatibilitätslayer für das alte BSD-Drucksystem
- Optionale Treiberpakete (nur nötig, wenn echte Drucker angeschlossen werden)
sudo apt install hplip printer-driver-gutenprint
- hplip – Treiber für HP-Drucker
- printer-driver-gutenprint – Treiber für viele Farb-Tintendrucker
CUPS-PDF (virtueller Drucker)
CUPS-PDF ist ein virtueller Drucker – ideal zum Testen ohne echte Hardware.
sudo apt install printer-driver-cups-pdf libreoffice apache2
Hinweis: CUPS-PDF kann nur PostScript- und Bild-Dateien verarbeiten. Bei anderen Formaten entstehen leere PDFs.
Öffentliches Webverzeichnis für die PDFs anlegen
Standardmäßig legt CUPS-PDF pro Benutzer einen eigenen Unterordner an (${USER} im Pfad). Damit alle erzeugten PDFs stattdessen in einem gemeinsamen, über den Webserver erreichbaren Verzeichnis landen, wird ein fester Pfad ohne ${USER} verwendet.
- Verzeichnis anlegen und Rechte setzen
sudo mkdir -p /var/www/html/pdfs
sudo chgrp www-data /var/www/html/pdfs
sudo chmod 2775 /var/www/html/pdfs
- chgrp www-data – Gruppe des Verzeichnisses ist die Webserver-Gruppe
- chmod 2775 – SetGID-Bit sorgt dafür, dass neu erzeugte PDFs automatisch der Gruppe www-data zugeordnet werden
- CUPS-PDF konfigurieren
sudo vi /etc/cups/cups-pdf.conf
Out /var/www/html/pdfs Grp www-data
- Out – fester, gemeinsamer Ausgabeordner (kein
${USER}mehr → nicht pro Benutzer getrennt) - Grp – Gruppe, der die erzeugten PDF-Dateien zugeordnet werden, damit Apache sie lesen darf
- CUPS neu starten, damit die Konfiguration greift
sudo systemctl restart cups
Die PDFs sind danach unter http://<server-ip>/pdfs/ erreichbar (sofern das Apache-Verzeichnislisting aktiviert ist bzw. der Dateiname bekannt ist).
Sicherheitshinweis: Dieses Verzeichnis ist öffentlich ohne Zugriffsschutz erreichbar – jeder gedruckte Inhalt landet für alle sichtbar im Netz. Für den produktiven Einsatz sollte mindestens eine HTTP-Basic-Auth oder eine IP-Beschränkung in der Apache-Konfiguration ergänzt werden.
Dienst steuern
systemctl start|stop|restart|status cups
Netzwerkzugang konfigurieren
Standardmäßig hört CUPS nur auf localhost (Port 631):
ss -lntp | grep 631
LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=491,fd=9))
LISTEN 0 128 [::1]:631 [::]:* users:(("cupsd",pid=491,fd=8))
Alles freischalten
sudo cupsctl --remote-admin --remote-any --share-printers
sudo systemctl restart cups
Zugang überprüfen:
ss -lntp | grep 631
LISTEN 0 128 0.0.0.0:631 0.0.0.0:* users:(("cupsd",pid=4247,fd=6))
| Variante | Befehl | Wann verwenden? |
|---|---|---|
| Schnell | cupsctl --remote-admin --remote-any --share-printers |
Testen / Labor |
| Präzise | cupsd.conf manuell editieren |
Produktion / bestimmte IP |
Weboberfläche (CUPS-Verwaltung)
CUPS besitzt einen integrierten Webserver auf Port 631:
http://localhost:631 http://<server-ip>:631
- Drucker hinzufügen, verwalten und Aufträge einsehen
- Für administrative Aktionen ist eine Anmeldung erforderlich
- Nur Mitglieder der Gruppe lpadmin dürfen administrieren:
sudo adduser meinbenutzer lpadmin
Drucker hinzufügen
Unter Verwaltung → Drucker hinzufügen:
- Gerät/Anschluss auswählen
- Verbindung festlegen (USB, Netzwerk, IPP, …)
- Name vergeben (keine Leer- oder Sonderzeichen)
- Marke und Modell auswählen
- Standardeinstellungen festlegen (z. B. Papierformat)
- Testseite drucken: Drucker → Wartung → Testseite drucken
Druckerserver im Netzwerk
sudo cupsctl --share-printers # Lokale Drucker freigeben
sudo cupsctl --remote-admin # Remote-Administration erlauben
In der Weboberfläche unter Verwaltung → Server:
- Freigeben von Druckern – gibt lokale Drucker im Netz frei
- Erlaube entfernte Verwaltung – Weboberfläche von anderen Rechnern erreichbar
Warteschlange und Status (Server)
- Aufträge – Druckaufträge einsehen, neu starten, löschen
- Drucker – Übersicht aller Drucker, Status prüfen, Drucker deaktivieren
Client
Auf dem Client wird nur die Client-Komponente installiert, keine vollständige Server-Komponente. Der Client nutzt die vom Server freigegebenen Drucker.
Installation
- Nur Client-Werkzeuge installieren
sudo apt install cups-client cups-bsd
- cups-client – Kommandozeilenwerkzeuge (
lp,lpr,lpstat, …) und Zugriff auf entfernte Drucker - cups-bsd – Kompatibilitätslayer für ältere Druckbefehle (
lpr,lpq)
Hinweis: Für einen reinen Client wird kein cupsd-Dienst benötigt – es muss also kein lokaler CUPS-Server laufen.
Server-Drucker automatisch einbinden
Damit freigegebene Netzwerkdrucker automatisch erscheinen, wird der CUPS-Browsing-Client aktiviert:
sudo vi /etc/cups/client.conf
ServerName <server-ip>
Alternativ, um automatisch nach freigegebenen Druckern im Netz zu suchen, in der lokalen Weboberfläche (falls cups-client einen minimalen Client-Dienst mitbringt) unter Verwaltung → Server:
- Zeige freigegebene Drucker von anderen Systemen – bindet Netzwerkdrucker automatisch ein
Netzwerkprotokolle (zum manuellen Einbinden eines Druckers)
| Protokoll | URL-Format | Hinweis |
|---|---|---|
| IPP | ipp://hostname/printers/druckername |
Empfohlen, universell |
| LPD/LPR | lpd://servername/warteschlange |
Ältere Geräte/Router |
| SMB | smb://domäne/server/drucker |
Windows-Druckserver (smbclient nötig) |
| Socket | socket://hostname:9100 |
Notlösung im LAN (HP JetDirect) |
Drucken vom Client
lp -d druckername datei.pdf
- PDFs aus dem gemeinsamen Webverzeichnis abrufen
Da die PDFs auf dem Server öffentlich unter http://<server-ip>/pdfs/ liegen, können sie vom Client direkt im Browser oder per curl/wget abgerufen werden – ein Login auf dem Server ist dafür nicht nötig.
Warteschlange und Status (Client)
lpstat -p -d
lpq
- lpstat -p -d – Status aller Drucker und Standarddrucker anzeigen
- lpq – aktuelle Warteschlange des Standarddruckers anzeigen