Linux - Netzwerk und Serveradminstration Drucker Server: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | = Druckerserver-Einführung = | + | = Druckerserver-Einführung (Debian) = |
== Was ist CUPS? == | == Was ist CUPS? == | ||
| Zeile 9: | Zeile 9: | ||
* CUPS wandelt Druckdaten intern immer in '''PDF''' um, bevor sie an den Drucker gesendet werden | * 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 | * 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 == | == Installation == | ||
| − | + | ;CUPS-Server installieren | |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | sudo apt install cups cups-client cups-bsd | |
| + | </syntaxhighlight> | ||
* '''cups''' – Server-Komponente | * '''cups''' – Server-Komponente | ||
| − | * '''cups-client''' – Client-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 | * '''cups-bsd''' – Kompatibilitätslayer für das alte BSD-Drucksystem | ||
| − | Optionale Treiberpakete | + | ;Optionale Treiberpakete (nur nötig, wenn echte Drucker angeschlossen werden) |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | sudo apt install hplip printer-driver-gutenprint | |
| + | </syntaxhighlight> | ||
* '''hplip''' – Treiber für HP-Drucker | * '''hplip''' – Treiber für HP-Drucker | ||
* '''printer-driver-gutenprint''' – Treiber für viele Farb-Tintendrucker | * '''printer-driver-gutenprint''' – Treiber für viele Farb-Tintendrucker | ||
| − | + | == CUPS-PDF (virtueller Drucker) == | |
[https://www.cups-pdf.de/ CUPS-PDF] ist ein virtueller Drucker – ideal zum Testen ohne echte Hardware. | [https://www.cups-pdf.de/ CUPS-PDF] ist ein virtueller Drucker – ideal zum Testen ohne echte Hardware. | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | sudo apt install printer-driver-cups-pdf libreoffice apache2 | ||
| + | </syntaxhighlight> | ||
'''Hinweis:''' CUPS-PDF kann nur PostScript- und Bild-Dateien verarbeiten. Bei anderen Formaten entstehen leere PDFs. | '''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 | + | Standardmäßig legt CUPS-PDF pro Benutzer einen eigenen Unterordner an (<code>${USER}</code> im Pfad). Damit alle erzeugten PDFs stattdessen in einem gemeinsamen, über den Webserver erreichbaren Verzeichnis landen, wird ein fester Pfad ohne <code>${USER}</code> verwendet. |
| − | + | ;Verzeichnis anlegen und Rechte setzen | |
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo mkdir -p /var/www/html/pdfs | ||
| + | sudo chgrp www-data /var/www/html/pdfs | ||
| + | sudo chmod 2775 /var/www/html/pdfs | ||
| + | </syntaxhighlight> | ||
| − | + | * '''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 |
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo vi /etc/cups/cups-pdf.conf | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | <pre> | ||
| + | Out /var/www/html/pdfs | ||
| + | Grp www-data | ||
| + | </pre> | ||
| + | |||
| + | * '''Out''' – fester, gemeinsamer Ausgabeordner (kein <code>${USER}</code> 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 | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo systemctl restart cups | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 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 == | == Dienst steuern == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | systemctl start|stop|restart|status cups | ||
| + | </syntaxhighlight> | ||
== Netzwerkzugang konfigurieren == | == Netzwerkzugang konfigurieren == | ||
| Zeile 54: | Zeile 91: | ||
Standardmäßig hört CUPS nur auf '''localhost''' (Port 631): | Standardmäßig hört CUPS nur auf '''localhost''' (Port 631): | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | ss -lntp | grep 631 | ||
| + | </syntaxhighlight> | ||
| − | + | <pre> | |
| − | + | 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)) | ||
| + | </pre> | ||
| − | === Alles freischalten | + | === Alles freischalten === |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | sudo cupsctl --remote-admin --remote-any --share-printers | |
| + | sudo systemctl restart cups | ||
| + | </syntaxhighlight> | ||
Zugang überprüfen: | Zugang überprüfen: | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | ss -lntp | grep 631 | ||
| + | </syntaxhighlight> | ||
| − | + | <pre> | |
| + | LISTEN 0 128 0.0.0.0:631 0.0.0.0:* users:(("cupsd",pid=4247,fd=6)) | ||
| + | </pre> | ||
{| class="wikitable" | {| class="wikitable" | ||
| Zeile 78: | Zeile 125: | ||
|} | |} | ||
| − | == Weboberfläche == | + | == Weboberfläche (CUPS-Verwaltung) == |
CUPS besitzt einen integrierten Webserver auf '''Port 631''': | CUPS besitzt einen integrierten Webserver auf '''Port 631''': | ||
| − | + | <pre> | |
| − | + | http://localhost:631 | |
| + | http://<server-ip>:631 | ||
| + | </pre> | ||
* Drucker hinzufügen, verwalten und Aufträge einsehen | * Drucker hinzufügen, verwalten und Aufträge einsehen | ||
| Zeile 89: | Zeile 138: | ||
* Nur Mitglieder der Gruppe '''lpadmin''' dürfen administrieren: | * Nur Mitglieder der Gruppe '''lpadmin''' dürfen administrieren: | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | sudo adduser meinbenutzer lpadmin | ||
| + | </syntaxhighlight> | ||
== Drucker hinzufügen == | == Drucker hinzufügen == | ||
| Zeile 102: | Zeile 153: | ||
# Testseite drucken: ''Drucker → Wartung → Testseite drucken'' | # Testseite drucken: ''Drucker → Wartung → Testseite drucken'' | ||
| − | == Netzwerkprotokolle == | + | == Druckerserver im Netzwerk == |
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo cupsctl --share-printers # Lokale Drucker freigeben | ||
| + | sudo cupsctl --remote-admin # Remote-Administration erlauben | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 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 | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo apt install cups-client cups-bsd | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | * '''cups-client''' – Kommandozeilenwerkzeuge (<code>lp</code>, <code>lpr</code>, <code>lpstat</code>, …) und Zugriff auf entfernte Drucker | ||
| + | * '''cups-bsd''' – Kompatibilitätslayer für ältere Druckbefehle (<code>lpr</code>, <code>lpq</code>) | ||
| + | |||
| + | '''Hinweis:''' Für einen reinen Client wird '''kein''' <code>cupsd</code>-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: | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | sudo vi /etc/cups/client.conf | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | <pre> | ||
| + | ServerName <server-ip> | ||
| + | </pre> | ||
| + | |||
| + | Alternativ, um automatisch nach freigegebenen Druckern im Netz zu suchen, in der lokalen Weboberfläche (falls <code>cups-client</code> einen minimalen Client-Dienst mitbringt) unter '''Verwaltung → Server''': | ||
| + | * ''Zeige freigegebene Drucker von anderen Systemen'' – bindet Netzwerkdrucker automatisch ein | ||
| + | |||
| + | == Netzwerkprotokolle (zum manuellen Einbinden eines Druckers) == | ||
{| class="wikitable" | {| class="wikitable" | ||
| Zeile 116: | Zeile 214: | ||
|} | |} | ||
| − | == | + | == Drucken vom Client == |
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | lp -d druckername datei.pdf | ||
| + | </syntaxhighlight> | ||
| − | + | ;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 <code>curl</code>/<code>wget</code> abgerufen werden – ein Login auf dem Server ist dafür nicht nötig. | |
| − | + | == Warteschlange und Status (Client) == | |
| − | |||
| − | |||
| − | |||
| − | = | + | <syntaxhighlight lang="bash"> |
| + | lpstat -p -d | ||
| + | lpq | ||
| + | </syntaxhighlight> | ||
| − | * ''' | + | * '''lpstat -p -d''' – Status aller Drucker und Standarddrucker anzeigen |
| − | * ''' | + | * '''lpq''' – aktuelle Warteschlange des Standarddruckers anzeigen |
| − | + | = Links = | |
* https://wiki.ubuntuusers.de/CUPS/ | * https://wiki.ubuntuusers.de/CUPS/ | ||
* https://www.cups-pdf.de/ | * https://www.cups-pdf.de/ | ||
* https://openprinting.github.io/cups/ | * https://openprinting.github.io/cups/ | ||
Version vom 14. Juli 2026, 05:21 Uhr
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