Linux - Netzwerk und Serveradminstration Drucker Server: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| 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