Raspberry Pi: serveur d'impression CUPS utilisant Docker – Serveur d’impression

Un bon ami à moi a une vieille imprimante et il a toujours pensé acheter un adaptateur pour le rendre compatible Wi-Fi. Il en a acheté un, mais ce n'était pas compatible! Je lui ai dit d'acheter un Raspberry Pi W Zero et de construire un serveur d'impression CUPS, mais il n'a pas eu le temps de le faire, alors j'ai prévu un cadeau XMas! J'espère qu'il ne lira pas ceci avant d'avoir reçu son cadeau. 🙂 – Si vous l'avez reçu en cadeau, vos instructions sont ici.

Un grand défi était de le rendre plug & play. Je ne voulais pas avoir ses informations d'identification Wi-Fi, et il ne devrait pas utiliser de terminal via SSH pour le configurer. J'ai cherché un point d'accès (AP) + client Raspberry Pi, afin qu'il puisse se connecter directement au Raspberry Pi en utilisant le Wi-Fi (AP), et j'ai utilisé un serveur Web pour configurer les informations d'identification de son réseau Wi-Fi (client), afin qu'il puisse accéder au Raspberry Pi depuis le réseau domestique et configurer les imprimantes. La deuxième chose que je voulais, c'était de construire une application de micro service. Cela signifie que tout est configuré et fonctionne à l'aide de Docker!

Fondamentalement, il y avait trois choses dont j'avais besoin:

  1. Un client Raspberry Pi AP +
  2. Un serveur web pour configurer le client WiFi Raspberry (fichier wpa_supplicant)
  3. Un serveur d'impression CUPS

J'ai ajouté une autre étape: Portainer. Cela peut m'aider si j'ai besoin de mettre à jour les images Docker: il peut "recréer" les conteneurs et extraire les nouvelles images Docker à l'aide de Portainer.

C'est ce que nous allons essayer d'accomplir dans ce tutoriel:

  1. Installer un client Raspberry Pi AP +
  2. Installer un serveur Web et ses fichiers à des fins de configuration
  3. Installer un serveur d'impression CUPS
  4. Exécutez tout à l'aide de Docker.

Raspberry Pi Access Point (AP) + Client

Je cherchais sur Internet un configurateur wpa_supplicant qui s'exécute sur un conteneur Docker et j'ai trouvé le projet cjimti / iotwifi …

Ce projet est destiné à aider au développement de solutions «configurer wifi sur wifi» pour des projets IOT utilisant le Raspberry Pi.

… et c'était ce dont j'avais besoin. Taper ce qui suit:

# Réseau iotwifi et configuration AP - vous devez changer
# le mot de passe (et le ssid). Si vous modifiez la plage d'adresses IP du réseau "192.168.27.1", vous devez
# pour changer l'adresse IP dans le fichier js / main.js (serveur web - point suivant).
wget https://raw.githubusercontent.com/cjimti/iotwifi/master/cfg/wificfg.json

# empêcher wpa_supplicant de démarrer au démarrage
sudo systemctl mask wpa_supplicant.service
# renommez wpa_supplicant sur l'hôte pour vous assurer qu'il n'est pas utilisé.
sudo mv / sbin / wpa_supplicant / sbin / no_wpa_supplicant
# tue tous les processus en cours d'exécution nommés wpa_supplicant
sudo pkill wpa_supplicant

# exécuter le conteneur
sudo docker run -d --restart sauf si arrêté --privileged --net host -v $ (pwd) /wificfg.json:/cfg/wificfg.json cjimti / iotwifi

La première puce de ce tutoriel est terminée!

Serveur Web

L'iotwifi Docker peut être configuré à l'aide de l'API REST disponible. boucle, postman peut être utilisé pour configurer le serveur, il a besoin de quelque chose comme ceci:

# Post WiFi Identifiants
$ curl -w " n" -d '"ssid": "home-network", "psk": "mystrongpassword"' 
     -H "Content-Type: application / json" 
     -X POST : 8080 / connect

Mais comme je l'ai dit, je voulais une solution sans l'utilisation d'un terminal ou d'un autre programme pour configurer l'AP. Ensuite, j'ai cherché un petit serveur Web (bien sûr Dockerized!), Et le projet txn2 / asws était également une bonne solution.

Un très petit serveur Web écrit en Go pour les sites statiques servis sur des appareils tels que le Raspberry Pi.

Ensuite, j'ai écrit du HTTP, du JavaScript et j'ai utilisé Bootstrap pour "le rendre adorable!" (voir Fig.1). J'avais besoin des SSID disponibles et il était possible de les obtenir en utilisant l'API REST de cjimti / iotwifi. Vous obtenez une réponse JSON, si vous visitez le : 8080 / scan URL. Avec ces informations, j'ai rempli un élément de sélection avec les SSID du réseau (voir Fig. 1).

Interface pour configurer le client WiFi Raspberry Pi pour se connecter au réseau.
Fig.1: Interface pour configurer le client Wi-Fi Raspberry Pi pour se connecter au réseau.

Si vous modifiez l'adresse IP du réseau dans le fichier `wificfg.json`, vous devez également changer l'adresse IP dans` js / main.js`.

Pour déployer le conteneur avec le serveur Web, vous avez besoin des éléments suivants:

# télécharger les fichiers www "
git clone https://github.com/lemariva/wifi-cups-server.git
mv wifi-cups-server / iot-website $ (pwd) / www

# exécuter le conteneur
sudo docker run -d --restart sauf si arrêté -e DEBUG = true -p 80:80 -v $ (pwd) / www: / www txn2 / asws: armhf-1.2.3

Ensuite, la deuxième puce du tutoriel est également terminée!

Serveur d'impression CUPS

Il y a beaucoup de tutoriels pour CUPS sur Raspberry Pi, et j'ai également trouvé une image Docker, mais avec une ancienne version de CUPS. Ensuite, j'ai décidé de créer ma propre image Docker: lemariva / rpi-cups. Il contient presque tous les pilotes dont vous pourriez avoir besoin, mais, si vous pouvez me donner des conseils sur d'autres pilotes, je mettrai à jour le conteneur dès que possible.

La troisième puce de ce didacticiel peut également être effectuée en tapant ce qui suit:

sudo docker run -d --restart sauf arrêt -p 631: 631 --privileged -v / var / run / dbus: / var / run / dbus -v / dev / bus / usb: / dev / bus / usb lemariva / rpi-cups

Cela démarre le conteneur avec le serveur d'impression CUPS, puis vous pouvez pointer vers : 631 / et ajoutez vos imprimantes. Si vous avez besoin d'un nom d'utilisateur et d'un mot de passe, ils sont impression et impression. Désolé, si vous voulez changer le mot de passe, utilisez simplement la console Portainer pour vous connecter au conteneur et changez le mot de passe du impression utilisateur.

Comment utiliser le serveur rpi-cups!

J'ai préparé un fichier bash, qui installe automatiquement tout ce dont vous avez besoin. Il extrait également les images Docker. Vous pouvez le télécharger sur votre Raspberry Pi et l'exécuter en utilisant:

$ wget https://raw.githubusercontent.com/lemariva/wifi-cups-server/master/rpi-cup-server.sh
$ chmod + x rpi-cup-server.sh
$ ./rpi-cup-server.sh

Comme vous le voyez, le Raspberry Pi doit être connecté à Internet pour télécharger et installer tout. Ensuite, les informations d'identification sont supprimées (wpa_supplicant.conf)
Le fichier bash vous demande un SSID et un MOT DE PASSE. Ces valeurs sont pour l'AP. Choisissez-les correctement: il ne doit pas s'agir du SSID de votre réseau / voisin et le MOT DE PASSE doit être sécurisé. Après cela, le fichier bash commence à tout installer automatiquement (prenez une tasse de thé!).

Vous verrez l'AP (SSID que vous avez configuré ou obtenu) comme un réseau Wi-Fi disponible. Connectez-vous à l'aide des informations d'identification que vous avez configurées ou que vous avez obtenues. Allez sur `http: // 192.168.27.1`, s'il ne s'affiche pas, sélectionnez votre SSID (réseau Wi-Fi domestique) et entrez le mot de passe (de votre Wi-Fi). Attendez quelques minutes ou redémarrez votre Raspberry Pi. Connectez-vous à nouveau à l'AP et accédez à `http: //192.168.27.1: 8080 / status`. Vous devriez obtenir quelque chose comme ça (en une seule ligne):


"status": "OK",
"message": "état",
"charge utile":
"adresse": "b8: 27: eb ...",
"bssid": "c8: 0e: 14 ...",
"freq": "2462",
"group_cipher": "CCMP", "id": "0",
"ip_address": "192.168.178.115",
"key_mgmt": "WPA2-PSK",
"mode": "station",
"p2p_device_address": "4e: 06: ...",
"pairwise_cipher": "CCMP",
"ssid": "L ...",
"uuid": "a7b5 ...",
"wpa_state": "TERMINE"

Cela signifie que le Raspberry Pi est connecté à votre réseau domestique. Ensuite, connectez-vous à votre réseau Wi-Fi domestique et accédez à l'adresse indiquée par l'état. Dans mon cas, par exemple 192.168.178.115. Le serveur d'impression CUPS s'exécute sur le port 631 (par ex. http://192.168.178.115:631) (voir fig.2). Accédez à cette URL, ajoutez vos imprimantes (utilisateur: impression, mot de passe: impression) et amusez-vous!

Serveur d'impression CUPS en cours d'exécution
Fig.2: Interface pour configurer le client WiFi du Raspberry Pi pour se connecter au réseau.

Conclusion

Ce didacticiel vous aide à configurer un serveur d'impression CUPS docké avec un AP. Vous n'avez pas besoin d'utiliser un terminal / console pour le configurer, et vous pouvez le donner en cadeau pour XMas! ; P

** Remarque: ** Si vous avez besoin des fichiers PPD de HP, téléchargez ce fichier: foo2zjs. Je les ai installés, mais parfois vous en avez encore besoin! ; P

Raspberry Pi: serveur d'impression CUPS utilisant Docker – Serveur d’impression
4.9 (98%) 32 votes