Raspberry Pi: serveur d'impression CUPS utilisant Docker – Bien choisir son serveur d impression

Un bon ami à moi a une vieille imprimante et il pensait toujours à acheter un adaptateur pour le rendre compatible Wi-Fi. Il en a effectivement 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. J'ai donc planifié un cadeau XMas! J'espère qu'il ne lira pas ceci avant de recevoir son cadeau. 🙂 – Si vous l'avez reçu en cadeau, vos instructions sont ici.

Un gros 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 un terminal sur SSH pour le configurer. J'ai cherché un client Raspberry Pi Access Point +, afin qu'il puisse se connecter directement au Raspberry Pi via Wi-Fi (AP), et 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 à partir du réseau domestique et configurer les imprimantes. La deuxième chose que je voulais, était de construire une application de service micro. Cela signifie que tout est configuré et fonctionne à l'aide de Docker!

En gros, il me fallait trois choses:

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

J'ai ajouté une autre étape: Portainer. Cela peut m'aider au cas où je devrais 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. Tout exécuter en utilisant 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 le wifi sur le wifi" pour les projets IOT utilisant le Raspberry Pi.

… et c'était ce dont j'avais besoin. En tapant 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 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êche wpa_supplicant de démarrer au démarrage
masque sudo systemctl 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
# tuer tous les processus en cours nommés wpa_supplicant
sudo pkill wpa_supplicant

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

Le premier point de ce didacticiel est accompli!

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:

# publier les identifiants wifi
$ curl -w " n" -d '"ssid": "réseau domestique", "psk": "motrongpassword"' 
     -H "Type de contenu: application / json" 
     -X POST : 8080 / connect

Mais comme je l'ai dit, je souhaitais une solution sans utiliser de terminal ni d'autre programme pour configurer le point d'accès. 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 périphériques tels que le Raspberry Pi.

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

Interface permettant de configurer le client WiFi Raspberry Pi pour se connecter au réseau.
Fig. 1: Interface permettant de 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 modifier 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 des fichiers www "
clone de git https://github.com/lemariva/wifi-cups-server.git
mv wifi-cups-server / iot-website $ (pwd) / www

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

Ensuite, le deuxième point du didacticiel est également terminé!

Serveur d'impression CUPS

Il y a beaucoup de tutoriels pour CUPS sur Raspberry Pi, et j'ai aussi 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 d’un autre pilote, je mettrai à jour le conteneur au plus vite.

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

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

Ceci démarre le conteneur avec le serveur d’impression CUPS, puis vous pouvez pointer sur : 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 souhaitez modifier le mot de passe, utilisez simplement la console Portainer pour vous connecter au conteneur et modifiez le mot de passe du serveur. 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 tire également les images Docker. Vous pouvez le télécharger sur votre Raspberry Pi et exécutez-le 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 tout télécharger et tout installer. Ensuite, les informations d'identification sont supprimées (wpa_supplicant.conf)
Le fichier bash vous demande un SSID et un PASSWORD. Ces valeurs sont pour AP. Choisissez-les correctement: il ne devrait pas s'agir de votre SSID réseau / voisin, et le MOT DE PASSE devrait être sécurisé. Après cela, le fichier bash commence à tout installer automatiquement (prenez une tasse de thé!).

Vous verrez le 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 à `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 ceci (en une seule ligne):


"status": "OK",
"message": "status",
"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": "COMPLETED"

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 le statut. Dans mon cas, par exemple 192.168.178.115. Le serveur d'impression CUPS s'exécute sur le port 631 (par exemple, http://192.168.178.115:631) (voir Fig. 2). Allez à cette URL et ajoutez vos imprimantes (utilisateur: print, mot de passe: print) et amusez-vous!

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

Conclusion

Ce tutoriel vous aide à configurer un serveur d’impression CUPS dockerisé avec un AP. Vous n'avez pas besoin d'utiliser un terminal / une 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 le fichier suivant: foo2zjs. Je les ai installés, mais parfois vous en avez encore besoin! ; P

Raspberry Pi: serveur d'impression CUPS utilisant Docker – Bien choisir son serveur d impression
4.9 (98%) 32 votes