Einen per Netzwerk oder lokal angeschlossenen Drucker zu konfigurieren, ist unter Linux in den letzten Jahren bedeutend einfacher geworden. Drucken ist eine Funktion, über die niemand mehr lange nachdenkt. Im Falle von Mobilgeräten wie Tablets und Smartphones liegen die Dinge anders: Die Notwendigkeit, direkt und von überall aus von einem Mobilgerät etwas auszudrucken, verlangt eine neue Herangehensweise. Damit die Geräte auch auf einen Drucker kommen, wenn sie nicht in einem bestimmten WLAN angemeldet sind, wird ein Druckdienst im Internet als Spooler benötigt.
Cloud Print selbst gemacht
Für den Ausdruck mit Mobilgeräten hat Google Cloud Print entwickelt – als Gegenstück zu Apples Airprint. Ein Direktdruck gelingt mit dem Dienst nicht, er macht immer den Umweg über die Cloud. Google verpflichtet sich in seiner Datenschutzerklärung , verschlüsselt per HTTPS zu übermitteln und keine Dokumentinhalte auf dem eigenen Server zu speichern.
Viele moderne Drucker der letzten 24 Monate unterstützen Cloud Print bereits von sich aus über die eigene Firmware. Aber was tun mit älteren Druckern? Linux kommt zu Hilfe, um beliebige Drucker mit Cloud Print zu verbinden. Eine Kombination des Drucksystem Cups und cleveren Python-Scripts verbindet den Drucker zu Hause mit Cloud Print und dem Google-Konto.
Ein ausgewachsener Linux-Rechner ist als Druckserver dafür nicht erforderlich. Das Drucksystem Cups läuft nämlich auch zuverlässig auf kleinen Raspberry Pis und ähnlichen Platinen, auch auf den älteren Raspberry-Modellen ab 512 MB Speicher. Cups erzeugt mit seinen Druckaufträgen keine hohe Rechenlast und keine hohe I/OLast auf den Datenträgern. Ein weiterer erwünschter Nebeneffekt: Der Raspberry Pi bringt so auch Drucker ins Netzwerk, die mangels Ausstattung nicht netzwerkfähig sind (oder nur einen Ethernet-Port haben) und deshalb nicht in ein vorhandenes WLAN kommen.

Vorbereitungen: die Hardware
In dieser Anleitung gehen wir von einem Raspberry Pi aus, auf dem dessen Quasi-Standardsystem Raspbian läuft. Im Prinzip funktionieren die hier dargelegten Schritte aber auch mit jeder moderneren Debian-Version, beispielsweise mit Diet Pi. Das System muss im LAN per SSH verfügbar sein und dafür ist eine feste IP-Adresse im Netzwerk unbedingt zu empfehlen. Diese Vorarbeit erledigen Sie in der Administrationsoberfläche des Routers anhand der MAC-Adresse der Platine. Je nach Routermodell unterscheidet sich die Einrichtung der festen IP für einen Rechner im LAN. Bei der Fritzbox lautet die Funktion „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“ und ist unter „Heimnetz –› Heimnetzübersicht –› Netzwerkverbindungen –› Bearbeiten“ zu finden.
Lesetipp So bauen Sie zuhause Ihre private Cloud auf
Im Falle eines netzwerkfähigen Druckers mit Ethernet oder WLAN vergeben Sie an gleicher Stelle auch gleich eine feste IP-Adresse für den Drucker, denn in der Praxis erweist sich die Zuweisung der stets gleichen IP als zuverlässigere Lösung für diese Geräte. Falls der Drucker keine Netzwerkfähigkeiten besitzt, so schließen Sie das Gerät einfach per USB an den Raspberry Pi an. Denn dem Drucksystem Cups wird es egal sein, wie der Drucker angeschlossen ist – solange er funktioniert.

Druckersystem: Cups Installieren
Auf dem Raspberry Pi beziehungsweise dem Linux-System, das den Drucker ansteuern soll und als Druckserver im Netzwerk dienen wird, müssen Sie Cups einrichten und konfigurieren. Dieser Schritt beginnt mit der Installation der benötigten Cups-Pakete, die auf Raspbian/Debian folgender Befehl im Terminal einrichtet:
sudo apt-get install cups cups-pdf python-cups
Cups hat eine Weboberfläche zur weiteren Konfiguration, die aus Sicherheitsgründen erst mal abgeschaltet ist. Noch im Terminal macht gleich im Anschluss das Kommando
sudo cupsctl --remote-admin
diese Weboberfläche im LAN verfügbar. Die Druckerkonfiguration soll dann nicht nur dem root-Konto vorbehalten sein, sondern auch dem Benutzerkonto. Deshalb nimmt dann der Befehl
sudo usermod -a -G lpadmin [User]
den im Platzhalter „[User]“ angegebenen Benutzer, beispielsweise „pi“ in die Gruppe „lpadmin“ auf, die den Drucker konfigurieren darf. Danach melden Sie sich am System ab und wieder an, damit die neue Gruppenzugehörigkeit aktiv ist, und starten dann den Druckdienst mit dieser Eingabe:
sudo systemctl restart cups
Überprüfen Sie im Fall von Druckern, die am USB-Port angeschlossen sind, mit dem Befehl lsusb, ob der Drucker als USB-Gerät erkannt wurde, was ein Eintrag in der angezeigten Liste bestätigt.
Jetzt geht es an die Konfiguration des Druckers über Cups. Dazu besuchen Sie den Raspberry Pi im LAN mit dem Webbrowser und dieser Portangabe:
http://[IP-Adresse]:631
In der Cups-Administrationsoberfläche unter „Administration –› Find New Printers“ geht es zur Aufnahme des angeschlossenen Druckers über eine HTTPS-Seite mit Benutzeranmeldung. Damit der Browser diese Seite anzeigt, müssen Sie das selbst signierte HTTPS-Zertifikat von Cups im Browser akzeptieren. Die Anmeldung erfolgt mit jenem Benutzer und dessen Passwort, den Sie vorher in die Gruppe „lpadmin“ aufgenommen haben. Den gefundenen aufgelisteten Drucker nimmt dann die Schaltfläche „Add Printer“ in Cups auf, was ein paar Handgriffe erfordert. Es ist eine gute Idee, hier gleich die Option „Share This Printer“ zu aktivieren, um den Drucker per Cups im lokalen Netzwerk freizugeben. In der weiteren Konfiguration müssen der passende Hersteller und Druckertreiber ausgewählt werden. Gerade bei Uraltgeräten ist es aber besser, eine PPD-Datei als Druckertreiber manuell anzugeben. PPD-Dateien für Altgeräte finden sich auf der Webseite https://www.openprinting.org/drivers der Linux Foundation.

Ab in die Cloud: Cloud Print installieren
Nach der Druckereinrichtung und dem Ausdruck einer Testseite geht es wieder auf die Kommandozeile des Druckerservers, in unserem Beispiel des Raspberry Pi. In aktuellen Debian-Systemen und in Raspbian gibt es das Paket für Cloud Print, das im Kern aus einigen cleveren Python-Scripts besteht, in den Standard-Paketquellen. Der Befehl
sudo apt-get -y install cloudprintservice
installiert diese Komponente, die als separater Systemdienst läuft, aber sich selbständig in Cups integriert. Nach der Installation müssen Sie den Cloud-Print-Dienst mit dem Google-Konto bekanntmachen:
sudo cps-auth
Dieses Kommando gibt in der Shell eine Webadresse im Stil von „https://goo.gl/printer/XXXX“ aus, die Sie im Webbrowser besuchen, um die Einrichtungsseite von Google für Cloud Print aufzurufen. Dort authentifizieren Sie jetzt in den wenigen erklärten Schritten den Drucker im LAN. Zurück im Terminal des Raspberry Pis muss jetzt der Befehl
sudo systemctl restart cloudprintd
den Cloud-Print-Service noch einmal neu starten. Dieser Dienst kommuniziert mit den Google-Servern auf Port 5223 (Google Talk) und überprüft von sich aus die Druckerwarteschlange von Cloud Print. Es ist deshalb nicht nötig, dass sich Cloud Print von außen mit dem Raspberry Pi im LAN verbindet, folglich ist eine Portweiterleitung im Router überflüssig. Hat alles bis hierher geklappt, dann ist der Drucker unter https://www.google.com/cloudprint#printers im eigenen Google-Konto sichtbar und per Cloud Print ansprechbar.
Lesetipp Anleitung: Alte Hardware als Server recyceln
Die Clientgeräte verbinden
Auf einem Android-Gerät, das mit dem Google-Konto verknüpft ist, installieren Sie nun auf Google Play die offizielle App „ Cloud Print “, falls diese noch nicht vorhanden ist. Danach können automatisch alle Apps, die über eine Druckfunktion verfügen, auf Cloud Print zugreifen und einen Druckauftrag an den Drucker senden. Dazu wählen Sie in der gewünschten App die Druckfunktion, gehen dann im Druckdialog rechts oben auf den Pfeil und dann auf „Alle Drucker…“. In der angezeigten Liste finden Sie dann den einrichteten heimischen Drucker – sofern der Drucker und der Raspberry-Druckerserver eingeschaltet sind.

Drucker an andere freigeben: Über das Google-Konto lassen sich die Drucker im Übersicht zu Cloud Print im Google-Konto: Der Drucker muss dem eigenen Google-Konto zugewiesen werden und taucht dann in dieser Liste auf. Dort ist eine weitere Freigabe möglich. Cloud-Print-Dienst auch an andere Nutzer freigeben. Diese brauchen dazu nur ihrerseits ein Google-Konto. Auf der Seite https://www.google.com/cloudprint#printers klickt man dazu den gewünschten Drucker an und geht oben auf „Share“ beziehungsweise „Freigeben“. Ein Pop-up fragt dann die Google-Mail-Adresse des anderen Nutzers ab, der den Drucker auch verwenden darf. Bevor die Freigabe steht, muss dieser Nutzer aber auf den genutzten Android-Geräten die Einladung in der Cloud-Print-App erst noch bestätigen.
Kein Ausdruck: Typische Probleme und Lösungen
Falls der Druckauftrag über Cloud Print nicht ankommt, der Drucker erst gar nicht in Cups auftaucht oder beim Drucken stehenbleibt, so gibt es einige typische Fehlerquellen in diesem Aufbau.
Speicher zu knapp bemessen: Der verwendete Linux-Druckserver sollte über mindestens 512 MB bis ein GB RAM verfügen, ansonsten bleiben Druckaufträge gerne stehen. Ein Raspberry Pi Zero reicht also nicht aus.
Cups antwortet nicht: Klappt der Aufruf der Cups-Administration im Browser nicht und wird mit „Bad Request“ beantwortet, so hilft der Aufruf per IP-Nummer weiter (anstatt per Hostname).
Drucker ist immer offline: Google Talk, also der Server talk.google.com muss aus dem Netzwerk erreichbar sein, denn darüber kommuniziert Cups mit Cloud Print. Ein Ping-Befehl an diese Adresse vom Raspberry Pi aus zeigt schnell, ob der Server antwortet.