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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(39 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>
</pre>
+
DocumentRoot /var/www/html
 +
ErrorLog ${APACHE_LOG_DIR}/error.log
 +
CustomLog ${APACHE_LOG_DIR}/access.log combined
  
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.
+
SSLEngine on
 
+
SSLCertificateFile /etc/ssl/own.crt
;Per NFS freigeben
+
SSLCertificateKeyFile /etc/ssl/own.key
<syntaxhighlight lang="bash">
+
</VirtualHost>
sudo vi /etc/exports
 
</syntaxhighlight>
 
 
 
<pre>
 
/srv/nfs/pdfs  <client-subnet>(rw,sync,no_subtree_check)
 
 
</pre>
 
</pre>
 
+
;Restart und Kontrolle
<syntaxhighlight lang="bash">
+
*systemctl restart apache2
sudo exportfs -ra
+
*ss -lntp | grep apache2
sudo systemctl restart nfs-kernel-server
 
sudo cupsctl --share-printers
 
sudo systemctl restart cups
 
</syntaxhighlight>
 
  
 
= Server =
 
= Server =
 
;Installation
 
;Installation
<syntaxhighlight lang="bash">
+
*sudo apt install cups printer-driver-cups-pdf libreoffice
sudo apt install cups printer-driver-cups-pdf libreoffice
+
;Queue mit cups-pdf-Backend anlegen
</syntaxhighlight>
+
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
;PDF-Drucker freigeben
+
;Kontrolle
<syntaxhighlight lang="bash">
+
*lpstat -v PDF
sudo cupsctl --share-printers --remote-any
+
Erwartete Ausgabe:
sudo lpadmin -p PDF -o printer-is-shared=true
+
<pre>
</syntaxhighlight>
+
device for PDF: cups-pdf:/
 
+
</pre>
;Ausgabeverzeichnis
+
Steht hier etwas anderes, an dieser Stelle nicht weitermachen.
Standardmäßig legt <code>cups-pdf</code> die fertigen PDFs lokal unter
+
;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>
/var/spool/cups-pdf/<benutzername>/
+
Out /var/www/html
 +
AnonDirName /var/www/html
 +
UserUMask 0000
 +
Grp lpadmin
 +
DecodeHexStrings 1
 
</pre>
 
</pre>
ab. Wie wir später von einem Client aus an diese Dateien kommen (Freigabe, Zugriff, Berechtigungen), klären wir in einem separaten Schritt.
+
;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
  
 
= 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
+
;Drucker hinzufügen
</syntaxhighlight>
+
# 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
  
;Mit dem Druck-Server verbinden
+
== Windows (grafisch) ==
<syntaxhighlight lang="bash">
+
;Drucker hinzufügen
sudo vi /etc/cups/client.conf
+
# ''Einstellungen'' → ''Bluetooth & Geräte'' → ''Drucker & Scanner''
</syntaxhighlight>
+
# '''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.
== Drucken (grafisch) ==
+
;Drucken
# Datei öffnen (z. B. in LibreOffice)
+
# Beliebige Datei öffnen (z. B. Word)
# ''Datei → Drucken''
+
# ''Drucken'' Drucker '''PDF''' auswählen
# 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 landet auf dem '''Server''' unter <code>/var/spool/cups-pdf/<benutzername>/</code>. Wie der Client anschließend an diese Datei kommt, ist noch offen.
 

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.