Dieser Artikel gehört zur Serie Linux-Router mit vielen Funktionen selber einrichten.
Um einen Drucker zu einem Linux ohne graphischer Oberfläche hinzuzufügen, gibt es CUPS mit integrierten Webserver. Die Installation ist auf ubuntuusers.de sehr ausführlich erklärt. Allerdings hat man mit dem Webserver den Nachteil, dieser in der Standardinstallation nur unverschlüsselt auf localhost:631
lauscht.
Man kann diesen Port natürlich über SSH tunneln und temporär über die Webseite den Drucker einrichten. Man braucht die Webseite allerdings auch im normalen Betrieb manchmal: Beim Papierstau oder anderen Problem wird der Drucker von CUPS angehalten und man muss ihn manuell wieder starten.
Damit auch andere Leute im Netzwerk dies ohne SSH-Kentnisse tun können, stelle ich den Webservice von CUPS über die Domain drucker.georf.de bereit. Dafür richte ich den Webserver Nginx als HTTPS-Proxy ein, der auch zusätzlich das Drucker-Passwort umgeht.
Nicht jeder Benutzer darf unter CUPS Änderungen vornehmen. Deshalb richten wir einen separaten Benutzer für CUPS mit Passwort ein:
# Nutzer drucker hinzufügen adduser --no-create-home --disabled-login --shell /bin/false drucker # Passwort für drucker hinzufügen passwd drucker # Nutzer drucker zur CUPS-Verwaltung hinzufügen adduser drucker lpadmin # CUPS neustarten service cups-browsed restart service cups restart
Um den eingerichteten Nutzer nun über Nginx zu verwenden, legen wir folgenden Eintrag unter /etc/nginx/sites-enabled/drucker
an:
server { listen 443; ssl on; # Domain die auf eure IP zeigt server_name drucker.georf.de; # SSL-Zertifikat von Letsencrypt verwenden ssl_certificate /etc/letsencrypt/live/zotac.georf.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/zotac.georf.de/privkey.pem; # Zugang über Basic-Auth absichern auth_basic "Wohnung"; auth_basic_user_file /etc/nginx/htpasswd_wohnung; # Letsencrypt ohne Basic-Auth erlauben location /.well-known/acme-challenge/ { root /tmp/certbot/; auth_basic off; } # Alle anderen Anfragen an localhost:631 weiterleiten location / { # Wir setzen einen Header mit Basic-Auth für # Benutzer drucker und Passwort test in Form von # drucker:test umgewandelt in Base64 proxy_set_header Authorization "Basic ZHJ1Y2tlcjp0ZXN0"; proxy_pass http://127.0.0.1:631; } }
Nach erfolgreichem Neustarten des Nginx kann man nun die Druckerverwaltung über das Internet öffnen. Der Drucker kann hinzugefügt werden und über das Webinterface auch im Netzwerk freigegeben werden. Da bei mir nur Linux-Rechner im LAN sind, reicht mir das IPP-Protokoll aus.
Falls man auf dem jeweiligen Rechner eine Firewall einsetzt, muss für das interne Netz der Port 631 für TCP und UDP freigegeben werden, damit das IPP-Protokoll funktioniert.
1 thought on “Drucker mit CUPS im Netzwerk freigeben”