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

  • Zwave.me Carte d'extension RaZberry v2 Z-wave+ pour Raspberry Pi - ZWAVE.ME
    La carte RaZberry version 2 est une carte d'extension qui se connecte directement sur le bornier GPIO d'une carte Raspberry Pi, toutes versions.Elle est alimentée directement par la carte Raspberry PI et ne nécessite donc aucune alimentation externe.Le système est basé sur une puce Z-wave Sigma Designs 5202
  • Zwave.me Carte d'extension RaZberry 2 V2 pour Raspberry Pi (version eu) - Z-Wave.me
    La carte RaZberry version 2 nouvelle version est une carte d'extension Z-wave pour Raspberry qui se connecte directement sur le bornier GPIO d'une carte Raspberry Pi, toutes versions.Elle est alimentée directement par la carte Raspberry Pi et ne nécessite donc aucune alimentation externe.Cette nouvelle
  • ITALTRONIC Boitier rail din pour Raspberry Pi version 3B, 2B et B+ - ITALTRONIC
    Electricité Domotique, automatismes et sécurité Autre accessoire de domotique ITALTRONIC, Description rapide: Boitier rail din pour Raspberry Pi B+, 2B et 3B. Présentation: Le boitier Raildin Italtronic vous permettra d'installer votre Raspberry Pi version 2 et 3, ou version 1 modèle B+, directement dans
  • Raspberry Alimentation Officielle Noire 15.3W USB-C pour Raspberry Pi 4 - Raspberry
    Cette alimentation officielle est spécialement conçue pour le nouveau Raspberry Pi 4 Modèle B.Profitez de la nouvelle technologie USB Type C avec une puissance de 15.3W !Elle conviendra également à d'autres appareils compatible avec l'USB Type C
  • Générique Boîtier pour Raspberry Pi 3/2/B+ NESPi Case +
    Le NESPi est un boitier inspiré de la console NESIl permet de donner un look rétro à votre Raspberry Pi et en le programmant comme console de jeu, vous aurez l'impression d'avoir une véritable NES à la maison !Associez votre Pi à la manette Manette SNES pour qu'il ait un look Rétro
  • Raspberry Module caméra HD 1080p version 2 pour Raspberry Pi
    Ce module camera HD 1080p version 2 pour Raspberry PI vous permettra de réaliser des vidéos et des photos en haute définition, avec son capteur 8 mégapixels.Elle utilise le capteur d'image IMX219PQ de Sony qui offre une capture vidéo à grande vitesse et une sensibilité élevée.Le module de caméra Raspberry Pi
  • Raspberry Alimentation Officielle Blanche 15.3W USB-C pour Raspberry Pi 4 - Raspberry
    Cette alimentation officielle est spécialement conçue pour le nouveau Raspberry Pi 4 Modèle B.Profitez de la nouvelle technologie USB Type C avec une puissance de 15.3W !Elle conviendra également à d'autres appareils compatible avec l'USB Type C
  • Raspberry Extension Raspberry Pi officielle avec sondes et matrice à LED
    Cette carte officielle Raspberry PI offre beaucoup de possibilités grâce à ses capteurs embarqués, sa matrice de LEDs et son interface de contrôle locale (manette).Parmi les capteurs, vous retrouverez un thermomètre, un capteur d'humidité, un baromètre, un accéléromètre, un gyroscope et un magnétomètre.La
  • GUITTET Peinture d'impression Guitt'Air Blanc 3L - GUITTET
    Revêtement sol et mur Peinture intérieure Peinture pour sol, mur et plafond Peinture pour murs et plafonds intérieurs GUITTET, Apprêtez vos supports en utilisant la peinture d'impression Guitt'Air blanc GUITTET. Elle n'affecte en aucun cas l'environnement ou la santé pour une application 100%
  • Planète Domotique Carte Micro SD 8Go avec NOOBS pour Raspberry Pi (avec adaptateur)
    Carte Mémoire MicroSD 8 Go livrée pré-installé pour une utilisation facile avec votre carte Raspberry Pi version 1, 2 ou 3.Elle contient une distribution de Raspbian, ainsi que l'installeur NOOBS, un utilitaire qui vous permet de choisir sur mesure le système d'exploitation et/ou un media center qui sera