Suite à la migration récente de mon site funix.org sur Scaleway qui me permet de bénéficier des outils cPanel, j’ai mis en place une synchronisation par Git de mon site. C’est à dire que mon site de référence et de travail est celui en local et le site distant visible sur internet se synchronise sur cette référence.
La connexion Git se fait via une connexion chiffrée avec SSH et la première étape est de générer une nouvelle clé SSH au niveau Sécurité->Accès SSH du menu cPanel :
J’ai récupéré ensuite localement la clé privée que j’ai placée sous ~/.ssh sur le PC local et pour voir si ça fonctionne sur le PC on se connecte à distance en tapant :
cpXXXXX correspond à mon login sur Scaleway et funix.org à mon domaine.
Maintenant pour que Git puisse se connecter sans avoir à indiquer de mot de passe, il faudra préalablement sur le PC local générer le couple clé publique/clé privée. Sur la console distante, on tape ssh-agent, voilà le résultat:
toujours sur le serveur distant dans le fichier .ssh/authorized_keys on y copiera la clé publique locale. Puis on tape, toujours sur la console distante :
Comme annoncé dans un précédent post j’étais dans une impasse avec mon site et domaine funix.org avec une offre obsolète d’hébergement web mutualisé sur Dedibox/Online.net en voie de disparition et je me posais la question de basculer également chez Infomaniak comme mon autre site et domaine hoarau.org.
Online.net devenu Scaleway me proposait de migrer vers une offre d’hébergement cloud et malgré mes réticences initiales, j’ai choisi de migrer car finalement à fonctionnalités plus ou moins équivalentes ça restait moins cher chez Scaleway d’autant plus que j’ai bénéficié de la migration de mes 5 adresses email sans coût supplémentaire.
La principale difficulté rencontrée lors de la migration et de remettre en place les serveurs IMAP de réception et SMTP d’envoi de mail qui sont couplés pour l’un à fetchmail et dovecot et l’autre au dinosaure sendmail sur mon serveur local. Pour la partie IMAP il a suffit de régénérer les mots de passe de mes comptes emails pour d’indiquer le nouveau serveur IMAP. Pour la partie SMTP, ça a été bien plus compliqué car du côté scaleway il est annoncé que seules les connexions chiffrées et authentifiées sur le port 465 sont acceptées. J’ai dû modifier ainsi mon fichier /etc/mail/auth/clientinfo en y indiquant le nom du serveur SMTP et mon login de connexion
A la préhistoire d’internet j’ai créé un site internet dès 1998 à l’époque où les fournisseurs d’accès internet n’étaient pas légion. Mon premier FAI a été infini.fr qui était une petite association basée à Brest, outre l’accès il offrait des espaces pour héberger un site. Sur internet archive, je n’ai malheureusement trouvé aucune trace de mon site initial. Infini existe toujours et reste un hébergeur associatif alternatif et membre historique du collectif des CHATONS.
J’ai quitté ensuite infini.fr pour héberger mon site en passant par divers fournisseurs comme Liberty Surf ou Free. En 2000 j’ai acheté mon domaine funix.org et j’ai hébergé mon site consacré aux logiciels libres chez online.net, ça me plaisait assez bien d’aller chez un fournisseur français. On trouve sur internet archive une des premières images du site à cette époque. En 2009 j’ai acheté le domaine hoarau.org qui venait de se libérer pour y héberger mon site perso, toujours chez online.net. Voilà une des premières images du site sur internet archive, et là je me rends compte qu’il est temps que je fasse un gros toilettage car le site est resté dans son jus même si je continue à le faire évoluer. En parallèle j’ai créé également mon blog olivier.hoarau.org dont voici une des premières pages sur internet archive.
Les deux sites étaient sur l’offre mutualisé d’online.net, une formule où plusieurs utilisateurs pouvaient partager les mêmes machines, les mêmes IP avec des prestations classiques (sous domaines, mails, accès FTP, bases de données MySQL ou PostgreSQL, PHP, …).
J’ai investi dans une clé USB accélérateur Google Coral Edge TPU pour moins d’une centaine d’euros sur un célèbre site de vente en ligne. Cette clé est destinée à booster mon système personnel de vidéosurveillance aujourd’hui basé sur ZoneMinder.
Clé Google Coral branchée sur mon serveur basse consommation Lenovo ThinkCenter M92p
Jusqu’à présent dans le monde des processeurs on connaissait les CPU et les GPU, il existe maintenant aussi les TPU. TPU pour Tensor Processing Unit est une unité de calcul spécifique pour pouvoir exploiter la bibliothèque opensource TensorFlow qui est utilisée dans le monde de l’IA pour l’apprentissage automatique, les réseaux de neurones et les calculs numériques généraux sur CPU, GPU, cluster de GPU et TPU donc. Pour la petite histoire tensor, ou tenseur en français, est le nom générique pour les structures de données utilisées pour l’apprentissage automatique. Le tout est développé par Google au sein de la division dédiée à l’IA Google AI. TensorFlow n’est pas le seul moteur d’IA, pour s’en convaincre cette page recense les principaux moteurs, mais tous ne bénéficient d’une puce dédiée. L’avantage du TPU de Google est qu’il se base sur des bibliothèques libres qui ont favorisé son développement et l’ont popularisé, couplé à un coût abordable qui permet de booster un PC quelconque à moindre frais. En terme de performance, il faut savoir qu’un TPU peut être 15 à 20 fois plus performant qu’un CPU ou GPU pour des tâches d’apprentissage automatique (cf. réf).
L’installation est prévue pour les distributions Debian et Debian like comme Ubuntu comme on peut le voir sur la page officielle et il n’y a pas plus d’indications pour les autres distributions notamment celles basée sur RPM comme ma Mageia. Trois bibliothèques sont nécessaires à l’utilisation de la clé, TensorFlow évoquée plus haut, libedgetpu pour piloter les périphériques Coral et PyCoral, une bibliothèque API Python pour exploiter TensorFlow sur des périphériques Coral. A défaut de packages précompilés pour ma distribution, je suis parti dans la compilation des bibliothèques. Encore une fois je me suis fait assister par ChatGPT, mais alors qu’il m’a été d’un grand secours pour rédiger des scripts pour adresser une caméra IP dont l’adresse change régulièrement, il m’a totalement perdu. Il m’a envoyé sur un tas de chemins de traverse, souvent contradictoires entre eux, sur la base d’informations obsolètes, incomplètes voire fausses, sans prendre en compte forcément le travail déjà réalisé, il pouvait dire tout et son contraire en deux questions, pour prendre un exemple une fois il va me dire qu’il faut une version de Bazel supérieure à 8 et deux questions plus loin il faut une version inférieure à 7 ! Il y a souvent aucune logique dans l’enchaînement des réponses alors que j’avais l’impression de rester sur mon cheminement logique. Au final j’ai perdu un temps considérable à exploiter chacune des pistes, finalement j’ai arrêté les frais, pris du recul et j’y suis allé au feeling à l’ancienne, j’ai réussi à compiler TensorFlow et libedgetpu plus ou moins laborieusement car il est nécessaire de faire coïncider les versions pour que ça fonctionne et j’ai trouvé sur le net des packages fonctionnels pour PyCoral compatible avec Python 3.10 de ma distribution que quelqu’un a bien voulu partager. Tout cela est expliqué sur cette page.
Je me rends compte que j’ai quasiment laissé tomber les moteurs de recherche, dont le premier d’entre eux et mon premier réflexe est maintenant d’abord de consulter chatgpt. Pourquoi chatgpt ? Simplement parce que je trouve encore les autres bien moins performants.
Je le consulte pour les petites problématiques du quotidien et du bricoleur du dimanche que je suis, quand je regarde mon historique de consultation, ça va aussi bien de la recherche d’une référence d’une pièce auto et la manière de l’installer, rattraper une anchoïade, installer un programmateur dans un tableau électrique, faire un joint d’étanchéité sous l’eau ou trouver le mode d’emploi d’un réfrigérateur ! Et dans le domaine informatique, ça couvre aussi bien des scripts bash pour divers usage et des problèmes variés rencontrés sur divers logiciels.
Tout n’est surtout pas à prendre au pied de la lettre, il y a parfois des erreurs grossières, des informations datées voire obsolètes, il lui arrive également de tourner en rond et de radoter sans avancer, mais le plus souvent il me donne les bonnes pistes et par itération successive, j’arrive très souvent à mes fins pour résoudre mon problème initial.
S’il fallait illustrer mes propos par un exemple concret, dans des précédents posts (ici, là et ici encore) j’avais évoqué que j’avais déployé chez moi un système de vidéosurveillance basé sur zoneminder. J’avais acheté un ensemble de caméras adhoc dont certaines à bas coût d’une vingtaine d’euros dont les caractéristiques semblaient intéressantes pour l’usage que je voulais en faire.
Caméras low cost ieGeek ie60 et Annke Crater Pro
A vrai dire je n’ai jamais pu installer ces caméras bas coût car l’adresse du flux vidéo change régulièrement ce qui les rend inutilisables pour les logiciels comme zoneminder ou frigate qui ne gèrent que les adresses fixes, contraignant à utiliser l’application propriétaire Android fournie avec.
J’ai buté des mois sur ce problème en tentant vainement diverses solutions et en mettant au point sans succès très laborieusement un script python. Dernièrement j’ai fait appel à chatgpt et en 2h de temps tout était en place. Chatgpt m’a aidé à créer un script qui récupère à intervalle régulier l’adresse du stream vidéo, adresse qu’il enregistre ensuite dans le fichier de configuration de mediamtx, serveur de flux vidéo qui rediffuse le flux avec une adresse fixe accessible de zoneminder ou frigate. Je ne suis pas sûr que j’y serais arrivé seul, ou alors au bout de je ne sais combien d’heure de vaines programmations. Je me rends compte que chatgpt a évolué également, car je lui avais posé la même question il y a plusieurs mois, il a été incapable d’y répondre et ne m’avait pas donné à l’époque de pistes sérieuses pour avancer.
Il en reste pas moins que ceux qui sont intéressés par ce sujet spécifique peuvent toujours consulter cette page de mon site Funix pour retrouver ces scripts python.
J’ai mis à jour mon site FUNIX, les modifications sont les suivantes :
pages divers
page ma configuration, passage à Mageia Cauldron pour un de mes PC et rajout d’une photo actualisée de ma baie de brassage. On y voit mon switch TP-Link spécifique pour mes caméras de vidéosurveillance avec prises ethernet RJ45 POE.
page piloter une montre GPS garmin, passage à VSCode 1.97.2 pour programmer sa montre avec le SDK ConnectIQ, passage à gps babel 1.10.0 et sa nouvelle interface graphique
page outils de base vidéo, passage à flac 1.5.0, OpenCV 4.11.0 et ffmpeg 7.1, même si pour l’instant je n’arrive pas à compiler ces deux derniers sur mon poste Mageia Cauldron
page Apache+PHP+MariaDB, passage à MariaDB 1.4.5, apache 2.4.63, PHP 8.4.4 et phpMyAdmin 5.2.2, rajout d’un paragraphe pour rendre accessible un serveur LAMP d’internet et installation d’un certificat avec Let’s Encrypt
J’ai étoffé mon système de vidéosurveillance avec maintenant trois caméras extérieures au total, c’est ma configuration a priori définitive. Comme j’étais plutôt satisfait de la caméra Annke C500 I51DL avec une bonne compatibilité sous Linux j’en ai prise une deuxième, pour la dernière caméra c’est toujours une Annke, un modèle dôme commandable à distance WPT500 I51CP qui marche également parfaitement sous Linux.
Annke C500 I51DLAnnke WPT500 I51CP
Pour finaliser mon dispositif, je souhaite également placer une caméra à l’intérieur. Sans vouloir y mettre le prix j’ai testé une caméra Annke Crater Pro I81CG qui m’a coûté guère plus d’une vingtaine d’euros.
J’avais présenté il y a quelques temps l’offre kDrive d’Infomaniak dans ce post. Il se trouve que j’y ai introduit une erreur que je tiens à rectifier ici. Jusqu’à présent j’utilisais leur application maison kDrive dont il existe un appimage pour Linux pour synchroniser mes données. Elle se présente comme cela:
kDrive
Les dernières versions ont apporté des régressions qui m’ont causé un tas de problème de synchronisation, heureusement que j’entretiens 3 sauvegardes au total pour éviter la perte sèche de données. J’y ai passé des heures pour tout remettre en place et mes échanges avec la hotline ont été vain pour comprendre pourquoi ça dysfonctionnait. Lors de mon dernier échange avec la hotline, j’ai appris qu’il était possible de se connecter au kDrive via WebDAV et donc d’utiliser un outil comme rclone, ce que je ne pensais pas possible jusqu’à présent à tort.
Aussitôt dit, aussitôt fait, j’ai mis en place avec des scripts bash deux synchronisations avec rclone qui m’ont permis d’abandonner définitivement l’application kDrive dédiée:
une synchronisation asynchrone pour mes photos que je lance ponctuellement de mon PC où elles sont stockées physiquement ;
une synchronisation synchrone qui se lance automatiquement via cron toutes les semaines pour mes données de bureautique et les pages de mes sites.
Dans un précédent article j’avais évoqué que j’avais commencé à m’intéresser au système de vidéosurveillance. Je m’étais attardé sur deux outils, l’un très simple, motionplus et l’autre nettement plus évolué zoneminder. Dans un premier temps rebuté par la complexité de configuration de zoneminder, j’ai testé pendant plusieurs semaines motionplus. Mais finalement il ne m’a pas convaincu, certains points sont totalement rédhibitoires comme une datation à l’américaine qui fait que les évènements sont datés sur 12h sans qu’on sache si c’est le matin ou l’après midi ou alors il n’y a aucune fonctionnalité pour supprimer les évènements, il faut passer par une commande SQL pour pouvoir le faire. Mais le soucis principal est l’absence de détection pour ma caméra extérieure.
J’ai donc recherché d’autres outils de vidéosurveillance plus conviviaux et efficaces et je me suis cassé les dents pour installer Frigate, OS-NVR ou bien encore feniks. Ces outils sont basés sur docker que je connais mal, il me faudra passer par son appropriation pour que je puisse aller plus loin. Cela signifie également un changement d’architecture de mes serveurs et pour l’instant je n’ai pas franchi le pas de la « conteneurisation ».
Par dépit je me suis donc rabattu sur zoneminder et j’ai donc du passer du temps à comprendre ses rouages pour pouvoir le configurer proprement. J’ai donc découvert les zones qui permettent de découper l’image en plusieurs parties avec des configurations de détection différentes d’une zone à l’autre. Sur l’image ci-dessous, seules les zones en rouge sont actives en détection.
J’ai pas mal galéré pour trouver le bon réglage pour ma zone autour du portail qui est plutôt lointain, elle ne détectait rien du tout, même pas l’ouverture du portail. Finalement j’ai repris les réglages de cette page là qui ont été un bon point de départ, mais ce n’est pas encore totalement satisfaisant pour détecter des personnes proche du portail. Et je continue à tâtonner en affinant les paramétrages de la zone.
Une autre découverte autour de zoneminder est ZMES, le serveur de notification d’évènement, c’est un outil complémentaire permettant la reconnaissance d’objet par deep learning. Il permet ainsi d’identifier automatiquement les objets comme on peut le voir ci-dessous
Et quand on visualise un évènement, l’objet identifié est surligné
Au final, il me reste à continuer à travailler le paramétrage des zones pour améliorer la détection, je vais sans doute étoffer mon système avec une nouvelle caméra extérieure et une caméra intérieure. En attendant j’ai mis à jour ma page dédiée sur mon site Funix.
Suite à la sortie de Mageia 9 j’ai passé un peu de temps ce week end à migrer trois de mes postes Lenovo, 2 postes clients Thinkpad x220 et x240 et surtout mon petit serveur personnel Thinkcenter M92p dont j’avais vanté les mérites sur linuxfr.org.
Habituellement je fais des mises à jour, il y a bien longtemps que je ne repars pas à zéro et réinstallant tout. Les mises à jour sont maintenant parfaitement maîtrisées et on gagne un temps fou car elles reprennent les fichiers de configuration existant. Généralement les modifications de configuration sont de l’ordre du cosmétique. Mais quelle ne fut pas ma surprise sur mon serveur, il avait purement et simplement supprimé ma configuration NFS et sendmail qu’il a fallu que je redescende. J’ai été bien content d’avoir mis en place une sauvegarde borg. J’ai retrouvé assez vite mes petits en montant la sauvegarde système de la veille et en copiant les fichiers manquants.
A part ça je constate encore que le ménage des anciens paquets rpm de la mageia 8 laisse encore à désirer, ll en reste par dizaine et dizaine qui ne sont pas supprimés du système. Le script bash suivant permet de les supprimer d’un seul coup.
#!/bin/bash
rpmfiles=$(rpm -qa | grep mga8);
for f in $rpmfiles
do
urpme --auto $f
done
Globalement cette Mageia 9 apporte peu de nouveautés à part des évolutions de version, elle utilise encore les vieux scripts de la Mandrake écrits en perl qu’il serait sans doute temps de changer. Il y a quand même une nouveauté, la commande remove-old-kernels qui comme son nom l’indique permet de supprimer les anciens noyaux qui s’accumulaient jusqu’à présent si on ne faisait pas manuellement le ménage de temps à autre.
Bienvenue à 'remove-old-kernels' Interactive
System: Mageia release 9 (Official) for x86_64 | Noyaux dans /boot/:4 | AUTO:1 | GARDER:3
==> kernel-desktop
1 : Garder : U : kernel-desktop-6.4.9-4.mga9.x86_64 jeu. 31 août 2023 16:47:49
2 : Garder : : kernel-desktop-6.4.9-2.mga9.x86_64 lun. 14 août 2023 20:03:37
3 : Garder : : kernel-desktop-6.4.8-2.mga9.x86_64 ven. 04 août 2023 13:00:50
4 : Enlever: : kernel-desktop-6.4.7-3.mga9.x86_64 mer. 02 août 2023 15:42:47
U = En usage maintenant
Enlever 1 noyau: ? y/N/i (y=oui N=non i=confirmer pour chaque) y
désinstallation de kernel-desktop-6.4.7-3.mga9.x86_64
J’ai commencé également à upgrader les différents services de mon serveur, Pour mon serveur httpd, je suis ainsi passé à Apache 2.4.57, PHP 8.2.10 et MariaDB 11.1.2. Prochaine mise à jour de FUNIX à venir pour prendre en compte cette montée en version.