Eigenen CUPS-Server unter Linux installieren und betreiben

Vorwort zur Anleitung:
Diese Anleitung hat einen mittleren Schwierigkeitsgrad.
Installation von Linux und Kenntnisse in der Befehlszeile sind vorausgesetzt.
Ein CUPS-Server (Common Unix Printing System) ist ein Drucksystem, das in Unix-ähnlichen Betriebssystemen, einschließlich Linux und macOS, verwendet wird. CUPS verwaltet den Druckprozess und ermöglicht es Benutzern, Druckaufträge an lokale oder Netzwerkdrucker zu senden.

Hier sind einige wichtige Funktionen und Merkmale von CUPS:

1. Druckverwaltung:

CUPS ermöglicht die Verwaltung von Druckaufträgen, einschließlich das Anhalten, Fortsetzen und Löschen von Aufträgen.

2. Netzwerkdruck:

CUPS unterstützt Netzwerkdrucker und erlaubt es Benutzern, Drucker in einem lokalen Netzwerk zu teilen.

3. Druckertreiber:

CUPS verwendet eine Vielzahl von Druckertreibern, um unterschiedliche Drucker und deren Funktionen zu unterstützen.

4. Webbasierte Benutzeroberfläche:

CUPS bietet eine webbasierte Benutzeroberfläche, die den Zugriff auf Drucker und Druckaufträge über einen Browser ermöglicht.

5. Unterstützung von mehreren Protokollen:

CUPS unterstützt verschiedene Druckprotokolle, einschließlich IPP (Internet Printing Protocol), LPD (Line Printer Daemon) und SMB (Server Message Block).

Insgesamt ist CUPS ein leistungsfähiges und flexibles Drucksystem, das die Nutzung von Druckern in Unix-ähnlichen Umgebungen erheblich vereinfacht.

Vorbereitungen / Anforderungen:

Anforderungen
Schwierigkeitsgrad-Installation: Mittel
Schwierigkeitsgrad-Anwendung: Mittel
Erforderliche Kenntnisse: Linux-Befehlszeile
Systemvoraussetzungen:
Basis: Debian
Betriebssystem: Ubuntu Server (Headless)
Festplattenspeicher: Mindestens 10 GB
CPU: Mindestens 1 CPU
RAM: Mindestens 512 MB
Internetverbindung: Verfügbar
Die Systemanforderungen wurden in einer virtualisierten Umgebung getestet.
Tipp:
Wenn du mit Virtualisierung, z.B. ProxMox, vertraut bist, kannst du deine eigenen Server effizient und stromsparend betreiben!
Getestet auf:
  • Ubuntu-Server 22.04
  • Ubuntu-Server 24.10
Installationsablauf:
1. Durchführung von System-Upgrade
2. Statische IP-Adresse festlegen und anwenden
3. (Optional) Hostnamen festlegen
4. Installation und Einstellungen
5. CUPS Bedienoberfläche
6. Systembedienung
7. Störungsanalyse
Optionale Schritte können weggelassen werden, da sie lediglich unterstützende Funktionen bieten, wie zum Beispiel die Zusammenfassung von Servern in einem Rechenzentrum.
Für den Betrieb in einem Rechenzentrum sollten die optionalen Abläufe jedoch aus Gründen des beruflichen Stolzes in Betracht gezogen werden.

1. Durchführung von System-Upgrade

Vor jeder Installation ist ein System-Update erforderlich:
$> ssh DEINUSER@192.168.1.X
# Stelle eine SSH-Verbindung zu deinem Server her
$> sudo apt update
# Aktualisiere die Paketquellen
$> sudo apt upgrade -y
# Starte das System-Upgrade
$> sudo apt autoclean
# Optional: Entferne überflüssige Pakete
$> sudo apt autoremove
# Optional: Bereinige das System von Abhängigkeiten

2. Statische IP-Adresse festlegen und anwenden

Ein CUPS-Server benötigt eine statische IP-Adresse. Alternativ kann auch eine per DHCP zugewiesene feste Adresse verwendet werden, jedoch sollte diese niemals geändert werden.

Es besteht die Möglichkeit, sich selbst vom Server auszuschließen, wenn die IP-Adresse nicht korrekt konfiguriert ist.
$> ip addr
# Liste alle Netzwerkadapter und Informationen auf
$> sudo su
# Wechsel in die Super-User-Shell
$> cd /etc/netplan
# Wechsle ins Netplan-Verzeichnis
$> ls -l
# Zeige alle Dateien im Netplan-Verzeichnis an
$> for i in $( ls ); do mv $i $i.bak; done
# Sichere alle bestehenden Konfigurationen als Backup
$> touch /etc/netplan/01_static_ip.yaml
# Erstelle eine neue Konfigurations-Datei
$> nano /etc/netplan/01_static_ip.yaml
# Öffne die neue Konfigurations-Datei
network:
  version: 2
  renderer: networkd
  ethernets:
    ens18: #Edit this line according to your network interface name.
      dhcp4: no
      addresses:
        - 192.168.1.150/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
# Öffne die Datei mit einem Texteditor (Copy-Paste)
# Ersetze ens18 durch den Namen deines Netzwerk-Adapters (siehe Ausgabe von ip addr).
# Ändere die IP-Adresse und die Netzmaske nach Bedarf.
# Passen die DNS-Adressen an, falls erforderlich.
# Überprüfe und passe ggf. die Routen (Gateway) an.
Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> netplan generate && netplan apply
# Wende die neuen Netzwerkeinstellungen an
🚨 Der Server wechselt nun zu einer neuen IP-Adresse, was dazu führt, dass deine SSH-Sitzung unterbrochen wird.

3. (Optional) Hostnamen festlegen

Durch das Ändern des Hostnamens der Server-Station vergibst du einen eindeutigen Namen für das System.
In unserem Fall könnte der Hostname beispielsweise „S2-CUPS-Server“ lauten.
Die Hosts-Datei wird verwendet, um auf Server-Ebene IP-Adressen Namen zuzuordnen, die intern genutzt werden. Wenn du den Hostnamen änderst, muss auch der entsprechende Eintrag in der Hosts-Datei aktualisiert werden. Bei produktiven Systemen sollte diese Kleinigkeit unbedingt beachtet werden, da sie ein Zeichen von Berufsethos und Professionalität ist. Für Tests und Experimente ist dies jedoch nicht zwingend erforderlich.
Der neue Hostname muss zwingen der gleiche sein wie auch im Hosts-File.
$> ssh DEINUSER@192.168.1.X
# Wiederherstellen der SSH-Verbindung
$> sudo hostnamectl set-hostname DEINHOSTNAME
# Einen neuen Host-Namen setzen
$> sudo nano /etc/hosts 
# Hosts-Datei öffnen und ändere den markierten Bereich

127.0.0.1 localhost
127.0.1.1 DEINHOSTNAME

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ……..

# Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> sudo reboot
# Server neu starten, damit die Änderungen wirksam werden

4. Installation und Einstellungen

$> ssh DEINUSER@192.168.1.x
# Wiederherstellen der SSH-Verbindung
$> sudo apt install cups cups-bsd  printer-driver-gutenprint -y
# System installieren
$> sudo systemctl enable cups.service
$> sudo systemctl enable cups.browsed.service
# Autostart aktivieren 
$> getent passwd {1000..10000} | cut -d ":" -f1
$> sudo usermod -a -G lpadmin DEINUSER
$> sudo cupsctl --remote-admin
# Füge eine User der CUPS-Gruppe zu und erlaube den Remote zugriff
$> sudo cupsctl --debug-logging
$> sudo cupsctl --remote-any
$> sudo cupsctl --share-printers
# Aktiviere Logging, Remote-Zugriff, und Drucker-Zugriff
$> sudo systemctl enable cups.service
$> sudo systemctl enable cups-browsed.services
# Autostart aktivieren

Kurze Beschreibung zu den Anpassungen:

Cups / Cups-Browsed
CUPS: Lokaler Druckerdienst zur Verwaltung und Steuerung von Druckaufträgen.
Cups-Browsed: Daemon zum Durchsuchen von Bonjour-Übertragungen freigegebener, entfernter CUPS-Drucker.

cupsctl –remote-admin

Remote-Admin für das WebGUI zulassen (Standard-Konfiguration): Ermöglicht die Remote-Verwaltung über das Webinterface.

cupsctl –remote-any

WebGUI für andere IP-Adressen öffnen (Standard-Konfiguration): Erlaubt den Zugriff auf das Webinterface von anderen IP-Adressen.

cupsctl –debug-logging

CUPS-Logging aktivieren (Standard-Konfiguration): Protokolliert Ereignisse und Fehler des CUPS-Druckdienstes.

cupsctl –share-printer

Drucker im Netzwerk finden (Standard-Konfiguration): Ermöglicht das automatische Erkennen von Druckern im lokalen Netzwerk.

5. CUPS Bedienoberfläche

Hinweis:

Bei der Änderung von Einstellungen wird auf das sichere HTTPS-Protokoll gewechselt, und es erfolgt eine Abfrage nach dem Benutzernamen und Passwort des festgelegten Nutzers.
Öffnen des Web-Gui via Web-Browser
Verwaltung von Klassen, Druckern und Aufträgen
Aufträge anzeige, starten oder löschen
Drucker und Status anzeigen

6. Systembedienung

$> sudo systemctl start cups.service
$> sudo systemctl start cups-browsed.service
# Dienst starten
$> sudo systemctl restart cups.service
$> sudo systemctl restart cups-browsed.service
# Dienst neustarten 
$> sudo systemctl stop cups.service
$> sudo systemctl stop cups-browsed.service
# Dienst stoppen 
$> sudo nano /etc/cups/cupsd.conf
# Konfigurationsdatei bearbeiten
$> sudo apt install nmap -y && nmap localhost
# Ports des Server auflisten
$> man cups
$> man cupsctl
# Hilfedatei des Dienstes
$> cat /var/log/error_log
$> cat /var/log/access_log
# Log-Dateien
http://DEINE-IP:631
http://192.168.1.151:631
# GUI-Aufruf

7. Störungsanalyse

Statische IP-Adresse wird nicht gesetzt:

Beachte, dass die Netzwerk-Konfiguration im YAML-Stil erfolgt. Die „Incidents“ (Einschübe des Textes) sind essenziell. In der downloadbaren Road-Map-Textdatei findest du ein Beispiel mit korrekten Incidents.

Einige CLI-Befehle benötigen ungewöhnlich lange…

Wenn du den optionalen Teil dieser Anleitung befolgt hast, überprüfe, ob der Hostname des Servers mit der Hosts-Datei übereinstimmt!

Wie sicher ist CUPS im Betrieb?

CUPS ist in der Basisinstallation einfach zu handhaben, bietet jedoch auch umfangreiche Anpassungs- und Nutzungsmöglichkeiten. Daher ein Wort der Warnung:

CUPS weist Sicherheitslücken auf, die über den UDP-Port 631 ausgenutzt werden können. Es ist daher ratsam, CUPS nicht öffentlich zugänglich zu betreiben. Falls das nicht möglich ist, solltest du in Erwägung ziehen, CUPS-Browsed abzuschalten.

Mein Speicher ist voll, woher kommt das?

CUPS kann auch zu Speicherüberläufen neigen, da Druckaufträge im Spooler abgelegt werden. In größeren Umgebungen empfiehlt es sich, das Serversystem großzügig zu dimensionieren.

Drucker werden mehrfach auf Desktop-Systemen angezeigt…

Drucker, die in CUPS eingefügt werden, erscheinen häufig doppelt in der Druckerumgebung des Clients. Daher ist es notwendig einige Anpassungen an den jeweiligen Druckern direkt vorzunehme