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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Druckerserver-Einführung = == Was ist CUPS? == Das '''C'''ommon '''U'''nix '''P'''rinting '''S'''ystem (CUPS) ist das am weitesten verbreitete Drucksystem…“)
 
 
(45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Druckerserver-Einführung =
+
=Vorarbeiten=
 +
;Im Nameserver eintragen und testen
 +
cups.it2XX.int IN A 172.26.2XX.3
  
== Was ist CUPS? ==
+
=Debian Template klonen=
 
+
=== DATEN ===
Das '''C'''ommon '''U'''nix '''P'''rinting '''S'''ystem (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.
+
{| class="wikitable" style="background-color: #f2f2f2;"
 
+
! Parameter !! Wert !! Erläuterung
* Aufgebaut als '''Client/Server-System'''
+
|-
* Drucker lassen sich lokal nutzen, verwalten und im Netzwerk freigeben
+
| '''Netzwerk (NIC)''' || LAN || Interface-Zuweisung in VirtualBox
* 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
+
| '''IP''' || 172.26.2XX.3 || Statische IP
 
 
== Installation ==
 
 
 
=== CUPS ===
 
 
 
sudo apt install cups cups-client cups-bsd
 
 
 
* '''cups''' – Server-Komponente
 
* '''cups-client''' – Client-Komponente (kann auf reinen Clients auch einzeln installiert werden)
 
* '''cups-bsd''' – Kompatibilitätslayer für das alte BSD-Drucksystem
 
 
 
Optionale Treiberpakete:
 
 
 
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) ===
 
 
 
[https://www.cups-pdf.de/ CUPS-PDF] ist ein virtueller Drucker – ideal zum Testen ohne echte Hardware.
 
 
 
sudo apt install cups-pdf libreoffice
 
 
 
'''Hinweis:''' CUPS-PDF kann nur PostScript- und Bild-Dateien verarbeiten. Bei anderen Formaten entstehen leere PDFs.
 
 
 
==== Konfiguration ====
 
 
 
Standardmäßig speichert CUPS-PDF die Dateien unter ''/var/spool/cups-pdf/…''. Das lässt sich anpassen:
 
 
 
vi /etc/cups/cups-pdf.conf
 
 
 
Out /home/${USER}/cups-pdf
 
Grp lpadmin
 
 
 
''Hinweis: Je nach Distribution kann die Gruppe anders heißen.''
 
 
 
== 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))
 
 
 
=== Variante 1: Alles freischalten (schnell, zum Testen) ===
 
 
 
cupsctl --remote-admin --remote-any --share-printers
 
systemctl restart cups
 
 
 
=== Variante 2: Nur eine IP freischalten (empfohlen für Produktion) ===
 
 
 
vim /etc/cups/cupsd.conf
 
 
 
Relevante Stellen anpassen (Beispiel-IP: '''192.168.56.254'''):
 
 
 
Listen 192.168.56.254:631
 
Listen /run/cups/cups.sock
 
 
 
<Location />
 
  Order allow,deny
 
  Allow 192.168.56.254
 
</Location>
 
 
 
<Location /admin>
 
  Allow 192.168.56.254
 
  Order allow,deny
 
</Location>
 
 
 
<Location /admin/conf>
 
  Allow 192.168.56.254
 
  AuthType Default
 
  Require user @SYSTEM
 
  Order allow,deny
 
</Location>
 
 
 
<Location /admin/log>
 
  Allow 192.168.56.254
 
  AuthType Default
 
  Require user @SYSTEM
 
  Order allow,deny
 
</Location>
 
 
 
Danach Dienst neu starten:
 
 
 
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))
 
 
 
{| class="wikitable"
 
! Variante !! Befehl !! Wann verwenden?
 
 
|-
 
|-
| Schnell || <code>cupsctl --remote-admin --remote-any --share-printers</code> || Testen / Labor
+
| '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge
 
|-
 
|-
| Präzise || <code>cupsd.conf</code> manuell editieren || Produktion / bestimmte IP
+
| '''GW''' || 172.26.2XX.1 || GATEWAY
|}
 
 
 
== Weboberfläche ==
 
 
 
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:
 
 
 
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''
 
 
 
== Netzwerkprotokolle ==
 
 
 
{| class="wikitable"
 
! Protokoll !! URL-Format !! Hinweis
 
 
|-
 
|-
| '''IPP''' || <code>ipp://hostname/printers/druckername</code> || Empfohlen, universell
+
| '''NS''' || 10.88.2XX.21 || Resolver
 
|-
 
|-
| '''LPD/LPR''' || <code>lpd://servername/warteschlange</code> || Ältere Geräte/Router
+
| '''FQDN''' || cups.it2XX.int || Fully Qualified Domain Name
 
|-
 
|-
| '''SMB''' || <code>smb://domäne/server/drucker</code> || Windows-Druckserver (smbclient nötig)
+
| '''SHORT''' || cups || Short Name
 
|-
 
|-
| '''Socket''' || <code>socket://hostname:9100</code> || Notlösung im LAN (HP JetDirect)
+
| '''DOM''' || it2XX.int|| Domain Name
 
|}
 
|}
  
== Druckerserver im Netzwerk ==
 
  
cupsctl --share-printers        # Lokale Drucker freigeben
+
= Zertifikat holen =
cupsctl --remote-admin          # Remote-Administration erlauben
+
;Wir befinden uns auf dem CUPS-Server
 +
* wget https://web.samogo.de/certs/it2XX.int.tgz -O it.int.tgz
 +
* tar -C /tmp -xvzf it.int.tgz
 +
* mv /tmp/fullchain.pem /etc/ssl/own.crt
 +
* mv /tmp/privkey.pem /etc/ssl/own.key
  
In der Weboberfläche unter '''Verwaltung → Server''':
+
=Apache2=
* ''Zeige freigegebene Drucker von anderen Systemen'' – bindet Netzwerkdrucker automatisch ein
+
;Installation
* ''Freigeben von Druckern'' – gibt lokale Drucker im Netz frei
+
*apt install apache2
* ''Erlaube entfernte Verwaltung'' – Weboberfläche von anderen Rechnern erreichbar
+
;SSL Modul aktivieren
 +
*a2enmod ssl
 +
;Konfiguration
 +
*vi /etc/apache2/sites-enabled/000-default.conf
 +
<pre>
 +
<VirtualHost *:443>
 +
DocumentRoot /var/www/html
 +
ErrorLog ${APACHE_LOG_DIR}/error.log
 +
CustomLog ${APACHE_LOG_DIR}/access.log combined
  
== Warteschlange und Status ==
+
SSLEngine on
 +
SSLCertificateFile /etc/ssl/own.crt
 +
SSLCertificateKeyFile /etc/ssl/own.key
 +
</VirtualHost>
 +
</pre>
 +
;Restart und Kontrolle
 +
*systemctl restart apache2
 +
*ss -lntp | grep apache2
  
* '''Aufträge''' – Druckaufträge einsehen, neu starten, löschen
+
= Server =
* '''Drucker''' – Übersicht aller Drucker, Status prüfen, Drucker deaktivieren
+
;Installation
 +
*sudo apt install cups printer-driver-cups-pdf libreoffice
 +
;Queue mit cups-pdf-Backend anlegen
 +
Wichtig: die Device-URI muss explizit auf <code>cups-pdf:/</code> gesetzt werden. Ohne diesen Schritt bleiben Druckjobs im allgemeinen Spool <code>/var/spool/cups</code> hängen, statt vom cups-pdf-Backend verarbeitet zu werden.
 +
*sudo lpadmin -p PDF -v cups-pdf:/ -P /usr/share/ppd/cups-pdf/CUPS-PDF_opt.ppd -E
 +
;Kontrolle
 +
*lpstat -v PDF
 +
Erwartete Ausgabe:
 +
<pre>
 +
device for PDF: cups-pdf:/
 +
</pre>
 +
Steht hier etwas anderes, an dieser Stelle nicht weitermachen.
 +
;Freigabe aktivieren
 +
*sudo lpadmin -p PDF -o printer-is-shared=true
 +
*sudo cupsctl --share-printers --remote-any
 +
;Ausgabeverzeichnis festlegen
 +
Die PDFs sollen direkt nach <code>/var/www/html</code> geschrieben werden (später Basis für einen Apache-Webserver).
 +
*sudo vi /etc/cups/cups-pdf.conf
 +
<pre>
 +
Out /var/www/html
 +
AnonDirName /var/www/html
 +
UserUMask 0000
 +
Grp lpadmin
 +
DecodeHexStrings 1
 +
</pre>
 +
;Berechtigungen setzen
 +
*sudo rm -f /var/www/html/index.html
 +
*sudo chown root:lpadmin /var/www/html
 +
*sudo chmod 1777 /var/www/html
 +
;AppArmor-Profil deaktivieren
 +
Der CUPS-Daemon ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Das AppArmor-Profil <code>usr.sbin.cupsd</code> blockiert diesen Zugriff standardmäßig. Statt einzelne Pfade freizugeben, wird das Profil komplett deaktiviert:
 +
*sudo ln -sf /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/disable/
 +
*sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd
 +
;CUPS neu starten
 +
*sudo systemctl restart cups
 +
;Test
 +
*lpstat -p PDF
 +
*echo "Testseite" > test.txt
 +
*lp -d PDF test.txt
 +
*sleep 3
 +
*ls -la /var/www/html
  
== Links ==
+
= Client =
 +
== Linux (grafisch) ==
 +
;Vorab
 +
*[[Importieren der CA in Firefox ESR Manuell]]
 +
;Installation
 +
*sudo apt install cups system-config-printer
 +
;Drucker hinzufügen
 +
# GNOME Settings → Printers öffnen
 +
# '''Add Printer...''' anklicken
 +
# Falls der Drucker nicht automatisch per Netzwerk-Discovery erscheint: Adresse manuell eingeben
 +
<pre>
 +
ipp://<server-ip>:631/printers/PDF
 +
</pre>
 +
# Drucker '''PDF''' bestätigen und hinzufügen
 +
;Drucken
 +
# Beliebige Datei öffnen (z. B. in LibreOffice)
 +
# ''Drucken'' → Drucker '''PDF''' auswählen
 +
# Drucken
 +
Die fertige PDF landet auf dem '''Server''' unter <code>/var/www/html</code>.
 +
;Wenn es grafisch zickt
 +
*sudo lpadmin -p PDF -E -v ipp://<server-ip>:631/printers/PDF -m everywhere
  
* https://wiki.ubuntuusers.de/CUPS/
+
== Windows (grafisch) ==
* https://www.cups-pdf.de/
+
;Drucker hinzufügen
* https://openprinting.github.io/cups/
+
# ''Einstellungen'' → ''Bluetooth & Geräte'' → ''Drucker & Scanner''
 +
# '''Gerät hinzufügen''' → '''Der gewünschte Drucker ist nicht aufgeführt'''
 +
# '''Freigegebenen Drucker über den Namen oder die TCP/IP-Adresse auswählen'''
 +
# URL eingeben:
 +
<pre>
 +
http://<server-ip>:631/printers/PDF
 +
</pre>
 +
# Als Treiber unter Hersteller '''Generic''' den Treiber '''MS Publisher Imagesetter''' auswählen (generischer PostScript-Treiber). '''MS Publisher Color Printer''' funktioniert alternativ ebenfalls.
 +
;Drucken
 +
# Beliebige Datei öffnen (z. B. Word)
 +
# ''Drucken'' → Drucker '''PDF''' auswählen
 +
# Drucken
 +
Die fertige PDF landet auf dem '''Server''' unter <code>/var/www/html</code>.

Aktuelle Version vom 24. Juli 2026, 11:57 Uhr

Vorarbeiten

Im Nameserver eintragen und testen

cups.it2XX.int IN A 172.26.2XX.3

Debian Template klonen

DATEN

Parameter Wert Erläuterung
Netzwerk (NIC) LAN Interface-Zuweisung in VirtualBox
IP 172.26.2XX.3 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 172.26.2XX.1 GATEWAY
NS 10.88.2XX.21 Resolver
FQDN cups.it2XX.int Fully Qualified Domain Name
SHORT cups Short Name
DOM it2XX.int Domain Name


Zertifikat holen

Wir befinden uns auf dem CUPS-Server

Apache2

Installation
  • apt install apache2
SSL Modul aktivieren
  • a2enmod ssl
Konfiguration
  • vi /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443>
	DocumentRoot /var/www/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	SSLEngine on
	SSLCertificateFile /etc/ssl/own.crt
	SSLCertificateKeyFile /etc/ssl/own.key
</VirtualHost>
Restart und Kontrolle
  • systemctl restart apache2
  • ss -lntp | grep apache2

Server

Installation
  • sudo apt install cups printer-driver-cups-pdf libreoffice
Queue mit cups-pdf-Backend anlegen

Wichtig: die Device-URI muss explizit auf cups-pdf:/ gesetzt werden. Ohne diesen Schritt bleiben Druckjobs im allgemeinen Spool /var/spool/cups hängen, statt vom cups-pdf-Backend verarbeitet zu werden.

  • sudo lpadmin -p PDF -v cups-pdf:/ -P /usr/share/ppd/cups-pdf/CUPS-PDF_opt.ppd -E
Kontrolle
  • lpstat -v PDF

Erwartete Ausgabe:

device for PDF: cups-pdf:/

Steht hier etwas anderes, an dieser Stelle nicht weitermachen.

Freigabe aktivieren
  • sudo lpadmin -p PDF -o printer-is-shared=true
  • sudo cupsctl --share-printers --remote-any
Ausgabeverzeichnis festlegen

Die PDFs sollen direkt nach /var/www/html geschrieben werden (später Basis für einen Apache-Webserver).

  • sudo vi /etc/cups/cups-pdf.conf
Out /var/www/html
AnonDirName /var/www/html
UserUMask 0000
Grp lpadmin
DecodeHexStrings 1
Berechtigungen setzen
  • sudo rm -f /var/www/html/index.html
  • sudo chown root:lpadmin /var/www/html
  • sudo chmod 1777 /var/www/html
AppArmor-Profil deaktivieren

Der CUPS-Daemon ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Das AppArmor-Profil usr.sbin.cupsd blockiert diesen Zugriff standardmäßig. Statt einzelne Pfade freizugeben, wird das Profil komplett deaktiviert:

  • sudo ln -sf /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/disable/
  • sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd
CUPS neu starten
  • sudo systemctl restart cups
Test
  • lpstat -p PDF
  • echo "Testseite" > test.txt
  • lp -d PDF test.txt
  • sleep 3
  • ls -la /var/www/html

Client

Linux (grafisch)

Vorab
Installation
  • sudo apt install cups system-config-printer
Drucker hinzufügen
  1. GNOME Settings → Printers öffnen
  2. Add Printer... anklicken
  3. Falls der Drucker nicht automatisch per Netzwerk-Discovery erscheint: Adresse manuell eingeben
ipp://<server-ip>:631/printers/PDF
  1. Drucker PDF bestätigen und hinzufügen
Drucken
  1. Beliebige Datei öffnen (z. B. in LibreOffice)
  2. Drucken → Drucker PDF auswählen
  3. Drucken

Die fertige PDF landet auf dem Server unter /var/www/html.

Wenn es grafisch zickt
  • sudo lpadmin -p PDF -E -v ipp://<server-ip>:631/printers/PDF -m everywhere

Windows (grafisch)

Drucker hinzufügen
  1. EinstellungenBluetooth & GeräteDrucker & Scanner
  2. Gerät hinzufügenDer gewünschte Drucker ist nicht aufgeführt
  3. Freigegebenen Drucker über den Namen oder die TCP/IP-Adresse auswählen
  4. URL eingeben:
http://<server-ip>:631/printers/PDF
  1. Als Treiber unter Hersteller Generic den Treiber MS Publisher Imagesetter auswählen (generischer PostScript-Treiber). MS Publisher Color Printer funktioniert alternativ ebenfalls.
Drucken
  1. Beliebige Datei öffnen (z. B. Word)
  2. Drucken → Drucker PDF auswählen
  3. Drucken

Die fertige PDF landet auf dem Server unter /var/www/html.