Linux - Netzwerk und Serveradminstration Drucker Server: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
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 ===
+
;CUPS-Server installieren
 
+
<syntaxhighlight lang="bash">
sudo apt install cups cups-client cups-bsd
+
sudo apt install cups cups-client cups-bsd
 +
</syntaxhighlight>
  
 
* '''cups''' – Server-Komponente
 
* '''cups''' – Server-Komponente
* '''cups-client''' – Client-Komponente (kann auf reinen Clients auch einzeln installiert werden)
+
* '''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
+
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) ===
+
== 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.
  
sudo apt install printer-driver-cups-pdf libreoffice
+
<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.
  
==== Konfiguration ====
+
=== Öffentliches Webverzeichnis für die PDFs anlegen ===
  
Standardmäßig speichert CUPS-PDF die Dateien unter ''/var/spool/cups-pdf/…''. Das lässt sich anpassen:
+
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.
  
vi /etc/cups/cups-pdf.conf
+
;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>
  
Out /home/${USER}/cups-pdf
+
* '''chgrp www-data''' – Gruppe des Verzeichnisses ist die Webserver-Gruppe
Grp lpadmin
+
* '''chmod 2775''' – SetGID-Bit sorgt dafür, dass neu erzeugte PDFs automatisch der Gruppe ''www-data'' zugeordnet werden
  
''Hinweis: Je nach Distribution kann die Gruppe anders heißen.''
+
;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 ==
  
systemctl start|stop|restart|status cups
+
<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):
  
ss -lntp | grep 631
+
<syntaxhighlight lang="bash">
 +
ss -lntp | grep 631
 +
</syntaxhighlight>
  
LISTEN 0  128  127.0.0.1:631  0.0.0.0:*  users:(("cupsd",pid=491,fd=9))
+
<pre>
LISTEN 0  128      [::1]:631    [::]:*  users:(("cupsd",pid=491,fd=8))
+
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 ===
  
cupsctl --remote-admin --remote-any --share-printers
+
<syntaxhighlight lang="bash">
systemctl restart cups
+
sudo cupsctl --remote-admin --remote-any --share-printers
 +
sudo systemctl restart cups
 +
</syntaxhighlight>
  
 
Zugang überprüfen:
 
Zugang überprüfen:
  
ss -lntp | grep 631
+
<syntaxhighlight lang="bash">
 +
ss -lntp | grep 631
 +
</syntaxhighlight>
  
LISTEN 0  128  0.0.0.0:631  0.0.0.0:*  users:(("cupsd",pid=4247,fd=6))
+
<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''':
  
http://localhost:631
+
<pre>
http://<server-ip>:631
+
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:
  
adduser meinbenutzer lpadmin
+
<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:
 
|}
 
|}
  
== Druckerserver im Netzwerk ==
+
== Drucken vom Client ==
 +
 
 +
<syntaxhighlight lang="bash">
 +
lp -d druckername datei.pdf
 +
</syntaxhighlight>
  
cupsctl --share-printers        # Lokale Drucker freigeben
+
;PDFs aus dem gemeinsamen Webverzeichnis abrufen
cupsctl --remote-admin          # Remote-Administration erlauben
+
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.
  
In der Weboberfläche unter '''Verwaltung → Server''':
+
== Warteschlange und Status (Client) ==
* ''Zeige freigegebene Drucker von anderen Systemen'' – bindet Netzwerkdrucker automatisch ein
 
* ''Freigeben von Druckern'' – gibt lokale Drucker im Netz frei
 
* ''Erlaube entfernte Verwaltung'' – Weboberfläche von anderen Rechnern erreichbar
 
  
== Warteschlange und Status ==
+
<syntaxhighlight lang="bash">
 +
lpstat -p -d
 +
lpq
 +
</syntaxhighlight>
  
* '''Aufträge''' – Druckaufträge einsehen, neu starten, löschen
+
* '''lpstat -p -d''' – Status aller Drucker und Standarddrucker anzeigen
* '''Drucker''' – Übersicht aller Drucker, Status prüfen, Drucker deaktivieren
+
* '''lpq''' – aktuelle Warteschlange des Standarddruckers anzeigen
  
== Links ==
+
= 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:

  1. Gerät/Anschluss auswählen
  2. Verbindung festlegen (USB, Netzwerk, IPP, …)
  3. Name vergeben (keine Leer- oder Sonderzeichen)
  4. Marke und Modell auswählen
  5. Standardeinstellungen festlegen (z. B. Papierformat)
  6. 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

Links