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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(40 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Server =
+
=Vorarbeiten=
 +
;Im Nameserver eintragen und testen
 +
cups.it2XX.int IN A 172.26.2XX.3
  
;Installation
+
=Debian Template klonen=
<syntaxhighlight lang="bash">
+
=== DATEN ===
sudo apt install printer-driver-cups-pdf libreoffice nfs-kernel-server
+
{| class="wikitable" style="background-color: #f2f2f2;"
</syntaxhighlight>
+
! 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
 +
|}
  
;Gemeinsames Ausgabeverzeichnis statt pro-User-Ordner
 
<syntaxhighlight lang="bash">
 
sudo mkdir -p /srv/nfs/pdfs
 
sudo chgrp lp /srv/nfs/pdfs
 
sudo chmod 2775 /srv/nfs/pdfs
 
</syntaxhighlight>
 
  
;CUPS-PDF konfigurieren
+
= Zertifikat holen =
<syntaxhighlight lang="bash">
+
;Wir befinden uns auf dem CUPS-Server
sudo vi /etc/cups/cups-pdf.conf
+
* wget https://web.samogo.de/certs/it2XX.int.tgz -O it.int.tgz
</syntaxhighlight>
+
* tar -C /tmp -xvzf it.int.tgz
 +
* mv /tmp/fullchain.pem /etc/ssl/own.crt
 +
* mv /tmp/privkey.pem /etc/ssl/own.key
  
 +
=Apache2=
 +
;Installation
 +
*apt install apache2
 +
;SSL Modul aktivieren
 +
*a2enmod ssl
 +
;Konfiguration
 +
*vi /etc/apache2/sites-enabled/000-default.conf
 
<pre>
 
<pre>
Out /srv/nfs/pdfs
+
<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>
 
</pre>
 
</pre>
 +
;Restart und Kontrolle
 +
*systemctl restart apache2
 +
*ss -lntp | grep apache2
  
Mit gesetztem <code>Out</code>-Pfad ignoriert CUPS-PDF den <code>${USER}</code>-Unterordner komplett – alle PDFs landen unabhängig vom sendenden User in genau diesem einen Verzeichnis.
+
= Server =
 
+
;Installation
;Per NFS freigeben
+
*sudo apt install cups printer-driver-cups-pdf libreoffice
<syntaxhighlight lang="bash">
+
;Queue mit cups-pdf-Backend anlegen
sudo vi /etc/exports
+
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.
</syntaxhighlight>
+
*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>
 
<pre>
/srv/nfs/pdfs  <client-subnet>(rw,sync,no_subtree_check)
+
Out /var/www/html
 +
AnonDirName /var/www/html
 +
UserUMask 0000
 +
Grp lpadmin
 +
DecodeHexStrings 1
 
</pre>
 
</pre>
 
+
;Berechtigungen setzen
<syntaxhighlight lang="bash">
+
*sudo rm -f /var/www/html/index.html
sudo exportfs -ra
+
*sudo chown root:lpadmin /var/www/html
sudo systemctl restart nfs-kernel-server
+
*sudo chmod 1777 /var/www/html
sudo cupsctl --share-printers
+
;AppArmor-Profil deaktivieren
sudo systemctl restart cups
+
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:
</syntaxhighlight>
+
*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 =
 
= Client =
 
+
== Linux (grafisch) ==
 +
;Vorab
 +
*[[Importieren der CA in Firefox ESR Manuell]]
 
;Installation
 
;Installation
<syntaxhighlight lang="bash">
+
*sudo apt install cups system-config-printer
sudo apt install cups-client nfs-common
+
;Drucker hinzufügen
</syntaxhighlight>
+
# GNOME Settings → Printers öffnen
 
+
# '''Add Printer...''' anklicken
;Mit dem Druck-Server verbinden
+
# Falls der Drucker nicht automatisch per Netzwerk-Discovery erscheint: Adresse manuell eingeben
<syntaxhighlight lang="bash">
+
<pre>
sudo vi /etc/cups/client.conf
+
ipp://<server-ip>:631/printers/PDF
</syntaxhighlight>
+
</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
  
 +
== Windows (grafisch) ==
 +
;Drucker hinzufügen
 +
# ''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>
 
<pre>
ServerName <server-ip>
+
http://<server-ip>:631/printers/PDF
 
</pre>
 
</pre>
 
+
# Als Treiber unter Hersteller '''Generic''' den Treiber '''MS Publisher Imagesetter''' auswählen (generischer PostScript-Treiber). '''MS Publisher Color Printer''' funktioniert alternativ ebenfalls.
;NFS-Freigabe einbinden
+
;Drucken
<syntaxhighlight lang="bash">
+
# Beliebige Datei öffnen (z. B. Word)
sudo mkdir -p /mnt/pdfs
+
# ''Drucken'' Drucker '''PDF''' auswählen
sudo mount <server-ip>:/srv/nfs/pdfs /mnt/pdfs
 
</syntaxhighlight>
 
 
 
== Drucken (grafisch) ==
 
 
 
# Datei öffnen (z. B. in LibreOffice)
 
# ''Datei → Drucken''
 
# Als Drucker den freigegebenen '''PDF'''-Drucker auswählen
 
 
# Drucken
 
# Drucken
 
+
Die fertige PDF landet auf dem '''Server''' unter <code>/var/www/html</code>.
Die fertige PDF erscheint direkt unter <code>/mnt/pdfs/</code> auf dem Client – kein Login auf dem Server, kein User-Abgleich nötig, da alle in denselben NFS-gemounteten Ordner schreiben.
 

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.