Orange Pi Zero, PM2, Keymetrics, Node.js et Edge Computing …

La société Shenzhen Xunlong Software Limited a sorti plusieurs modèles de sa carte Orange Pi Zero et notamment la version 2 plus dotée d’un processeur ARM Allwinner H5 Cortex-A53 64 Bits (et d’un processeur graphique Mali450) avec 256 ou 512 Mo de RAM : http://linux-sunxi.org/H5

https://fr.aliexpress.com/store/1553371?spm=a2g0w.search0104.3.3.D8KF1L

J’avais posté par ailleurs un article détaillant un retour sur les méthodes de conception de ce type de carte au sein de cette entreprise dans le réseau social Mastodon : http://www.minimachines.net/a-la-une/orange-pi-steven-zhao-52858

Image for post
Image for post

Je dispose de deux modèles 32 et 64 Bits de l’Orange Pi Zero ici :

Image for post
Image for post

Je pars donc du dernier modèle pour y installer un OS Linux dédié :

Image for post
Image for post

La société Shenzhen Xunlong Software Limited propose sur son portail web dédié pour ce type de carte, différents OS détaillés ci-dessous :

Image for post
Image for post

Mais vue la taille et les ressources très réduites de ce type de carte, je préfère m’orienter vers une micro-distribution Linux nommée DietPi qui est en fait un fork fortement allégé de Raspbian Linux (lui même issu de Debian 8 Jessie) :

Image for post
Image for post

DietPi se retrouve disponible pour différentes cartes et offre la possibilité de se pré-configurer en mode Stateless (sans cable série ni écran) :

Image for post
Image for post

Je sélectionne la version correspondante à la carte Orange Pi Zero Plus 2 (H5) :

Image for post
Image for post

Je décompacte l’archive pour retrouver l’image à flasher sur une SD-Card :

Image for post
Image for post

On observe que c’est bien une version ARM 64 Bits de DietPi Linux qui est utilisée ici …

et je réutilise encore une fois l’utilitaire Open Source Etcher de Resin.io pour flasher ma carte :

Image for post
Image for post

Grâce à un fichier de configuration présent sur la SD-Card, je peux préparer mes paramètres Wifi pour permettre à l’Orange Pi Zero de se connecter à mon réseau local :

Image for post
Image for post

Je fais la même chose avec ma deuxième carte Orange Pi Zero 32 Bits :

Image for post
Image for post

Via un scan Nmap, je récupère l’adresse IP sur laquelle je peux me connecter en SSH (via un petit serveur Dropbear => https://matt.ucc.asn.au/dropbear/dropbear.html ):

Image for post
Image for post

Avec ces ressources locales :

Image for post
Image for post

Je peux récupérer pour ma petite expérience le moteur Node.js pour les architectures ARMv8 64 Bits :

Image for post
Image for post

que j’installe sur la carte :

Image for post
Image for post

Et je peux y installer PM2 de la société Keymetrics (startup Française qui a fait la une récemment après avoir été financée par un grand fond d’investissement => https://business.lesechos.fr/entrepreneurs/financer-sa-creation/0211780849550-runa-ce-fonds-russe-qui-investit-a-nouveau-dans-la-french-tech-305738.php ) via NPM :

Image for post
Image for post

PM2 est une sorte de couteau Suisse du clustering pour des applications Node.js et relié à sa plateforme SaaS Keymetrics pour notamment du monitoring et de la supervision :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

J’y adjoins PM2 Monit (agent de monitoring local) :

Image for post
Image for post

Et je récupère localement la démo FranceConnect Particulier (FCP) depuis mon dépôt sur Github :

Image for post
Image for post

Lancement d’un cluster local de 3 processus Node.js qui chacun feront tourner l’appli démo de FCP sous forme d’un processus :

Image for post
Image for post

PM2 via un mécanisme interne de load balancing retransmet le port d’écoute par défaut de l’appli FCP sur le port TCP 3001 :

Image for post
Image for post

Et cela ne me coûte à peine 200 Mo de mémoire vive :

Image for post
Image for post

Via mon adresse IP locale, je peux récupérer l’URL en accès local de l’appli :

Image for post
Image for post

Je peux installer un serveur Nginx sur la carte pour jouer le rôle de reverse proxy sur le port TCP 80 :

Image for post
Image for post
Image for post
Image for post

Mais je vais réutiliser un utilitaire plus simple ici à savoir reverse-proxy (module présent dans la registry npmjs.com) :

Image for post
Image for post

installation et configuration locale de “reverse-proxy” :

Image for post
Image for post
Image for post
Image for post

Je récupère alors ma page sur le port 80 avec mon adresse IP locale :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Mais j’ai envie que cette page soit accessible depuis l’extérieur. Je dispose de plusieurs solutions pour ce cas de figure comme Pagekite, Portmap.io, Serveo ou comme la fois précédente Dataplicity. Mais j’opte pour le très connu Ngrok :

Image for post
Image for post

avec une URL d’accès depuis internet :

Image for post
Image for post

Via un token d’accès et PM2, je fais la liaison entre la carte Orange Pi Zero (dans mon réseau local) vers la plateforme SaaS Keymetrics qui me fournit via PM2 Monit les principales métriques des applis en exécution localement :

Image for post
Image for post
Image for post
Image for post

Et je dispose d’un contrôle distant sur ses applis Node.js en exécution locale via le portail de Keymetrics (comme avec Cayenne) :

Image for post
Image for post

Je peux scaler mon appli Node.js dans ce cluster local :

Image for post
Image for post

Avec un contrôle du monitoring activable localement :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Et visualisation des métriques et éventuellement des alertes (à configurer via des Triggers) reliées à Slack par exemple :

Image for post
Image for post
Image for post
Image for post

Je me retrouve dans un scénario d’Edge Computing (voire de Fog Computing si des communications se mettent en place entre les deux cartes Orange Pi Zero), sachant que pour cette expérience c’est ma passerelle Wifi locale qui joue le rôle de passerelle IoT (IoT Gateway) :

Image for post
Image for post
Image for post
Image for post

Avec notamment ce petit test du “Physical Web” en utilisant un beacon qui va diffuser localement l’URL d’accès à l’appli FCP Démo via le protocole Eddystone (un scénario qui ressemble de près à ce que j’avais présenté lors du dernier sommet OGP à Paris) dans un contexte de diffusion par exemple d’information aux citoyens :

Image for post
Image for post

Et mon émulateur mobile restitue l’appli sur le navigateur web :

Image for post
Image for post

On peut imaginer un autre scénario d’un pipeline de mise à jour des applis sur les cartes Orange Pi Zero via Jenkins ou Gitlab CI comme cet exemple (des sortes de pipelines IoT) :

Image for post
Image for post

A suivre ! …

Quelques liens sur ce sujet :

http://www.blog-nouvelles-technologies.fr/95275/orange-pi-zero-mini-pc-quadricoeur-moins-de-7e/

http://www.silicon.fr/les-alternatives-au-raspberry-pi-orange-pi-le-casseur-de-prix-151185.html?inf_by=5988471c681db8336f8b46eb

https://medium.com/@hani.benz/how-to-build-backend-iot-services-using-sigfox-spring-docker-and-jenkins-pipelines-5907ab671c15

https://github.com/keymetrics

https://developers.google.com/beacons/

https://google.github.io/physical-web/

https://techcrunch.com/2017/08/03/edge-computing-could-push-the-cloud-to-the-fringe/

Originally published at telegra.ph on August 7, 2017.

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store