Webmin en 2018

Webmin est un outil d’administration graphique que j’utilise depuis quelques années sur mes serveurs personnels. Il a pas mal d’avantages, gère assez bien la sécurité des utilisateurs connectés et permet de réaliser quasiment toutes les opérations sans se connecter sur une machine en SSH.

Il a aussi l’avantage de s’installer sur quasiment toutes les distributions, même assez exotiques (oui, unraid, c’est à toi que je pense!) et possède son propre serveur web intégré.

Mais comme je ne réalise que les mises à jour régulières de sécurité sans modifier ma configuration, et ben celle-ci est restée la même au cours des 10 dernières années (sic). Bref, c’est stable, mais assez moche … Pour vous donner une idée du résultat, ça ressemblait à ça http://www.stress-free.co.nz/node/139/2/

Oui, j’ai pas osé faire une capture d’écran. En prime, j’ai désormais un ensemble de machines à gérer, que ça soit le RPI de jeedom ou celui d’octoprint. Bref, il est grand temps de dépoussiérer tout ça.

Thème graphique

C’est le point le plus visuel, autant commencer par ça 😉 Désormais, le thème par défaut s’appelle « Authentic Theme ». C’est un thème moderne, bien plus graphique.

Webmin sur Raspberry PI

Il est désormais possible d’installer l’interface webmin sur les raspberry pi de manière assez rapide. Ne rigolez pas, ça n’a rien d’évident, il faut savoir qu’il y a pas si longtemps, on devait le compiler soi-même. Bref, les bibliothèques et dépendances sont toutes disponibles, et ça fonctionne « presque » tout seul. En prérequis, il faut avoir raspbian, ou tout autre distib basé sur raspbian et en s’aidant de ce genre de tutorial comme celui-ci https://www.instructables.com/id/Adding-Webmin-to-manage-a-Raspberry-Pi/

Bon, si vous voulez pas cliquer (bande de feignasse !!!) voilà rapidement ce qu’il faut faire avec un compte sudo et en se connectant en ssh sur votre RPI raspbian (et à jour). Attention, la ligne de commande pour récupérer la bonne version est à vérifier ici : http://www.webmin.com/deb.html

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
mkdir ~/webmin_tmp
cd ~/webmin_tmp
wget https://prdownloads.sourceforge.net/webadmin/webmin_1.890_all.deb
sudo dpkg -i webmin_1.890_all.deb
cd - ; rm -rf ~/webmin_tmp

Une fois l’installation finie, vous pouvez accèder à webmin via un navigateur à l’URL suivante 
https://<adresse_ip_RPI>:10000

Attention à bien taper le httpS

Il faut utiliser un compte local à la machine, de préférence qui a les droits sudo (c’est important).

Selon votre besoin, vous pouvez désactiver les SSL (accès en http vs https) surtout si la machine ne sera jamais accessible par internet OU que celle-ci sera proxifié derrière une autre machine / serveur web.

Un Webmin pour les contrôler tous…

Non, je vais pas tourner ténébreux…

Si vous avez plusieurs instances webmin sur le réseau, ça va vite devenir ingérable d’aller ouvrir chacune des machines pour les contrôler (et se rappeler des mots de passes etc…), savoir qui est en ligne et qui ne l’est pas, ou tout bêtement contrôlé à distance tout ce petit monde sans ouvrir 36.000 ports externes. Il permet également de savoir si tout va bien sans installer l’artillerie lourde tel qu’heartbeat et compagnie

Heureusement webmin possède d’excellents modules pour gérer tout ça de manière efficace en 5 étapes

Etape 1 : définir le webmin principal et votre organisation réseau derrière. Faites un dessin s’il le faut vraiment ;-). Vous avez choisi ? Très bien, passez à l’étape 2

Etape 2 : sur votre webmin principal, démarrer le module webmin server index. Derrière ce nom barbare se cache la base permettant de référencer toutes les autres instances de webmin. Le module est décrit ici https://doxfer.webmin.com/Webmin/Webmin_Servers_Index

En gros, je vous conseille de les ajouter manuellement en indiquant pour chacun si vous vous connectez en https, le compte éventuel de la machine

Etape 3 : toujours sur votre webmin principal, utilisez le module « System and server status ». La documentation est disponible à l’adresse suivante https://doxfer.webmin.com/Webmin/System_and_Server_Status

Je vous conseille d’activer dans un premier temps des moniteurs de type « alive system » sur vos différents équipements. Mais enfin, là, ça dépend vraiment de votre installation. Attention, si vous devez vous envoyer un email, n’oubliez pas de le configurer au préalable dans webmin.

Proxifier webmin derrière apache

Alors tout ça c’est beau, mais s’il faut ouvrir des ports dans tous les sens pour y accéder depuis l’extérieur, on a pas fini. Personnelement, j’ouvre le minimum de port à l’extérieur et les services web/http je me débrouille pour tous y accéder en port 80 /443 via des sous URL xxxxxx/<logiciel>

Mais pour webmin, c’est assez compliqué de le « proxifier » via un autre serveur web type apache car il ne supporte pas bien de se retrouver en sous-domaine. Après quelques temps, j’ai trouvé la méthode pour proxifier webmin

Par exemple : pour y accéder via http://monnomdedomaine.extension/webmin

Préalable : pouvoir se connecter en ssh sur le serveur sur lequel réaliser les manipulations.

Vérifier que mod_proxy est présent ET activé sur votre installation d’apache via la commande

sudo a2enmod mod_proxy

Dans le fichier de configuration d’apache, rajouter les directives.

<Location "/webmin/">
ProxyPass http://localhost:10000/
ProxyPassReverse http://localhost:10000/
</Location>

Attention, si l’installation de webmin à provifier est sur une autre machine, il faudra remplacer localhost par l’adresse ip / nom de votre machine.

Sur la machine hébergeant le webmin que vous voulez proxifier, dans le fichier /etc/webmin/config, ajouter les lignes suivantes:

webprefix=/webmin
webprefixnoredir=1
referer=1

Si nécessaire, il faut supprimer la redirection ssl vers le https (forcément…) en éditant le fichier /etc/webmin/miniserv.conf

ssl_redirect=0
ssl=0

Redémarrer les services apache et webmin de la machine.

All requests to /webmin on the Apache server will then be passed through to the Webmin server on localhost port 10000. All features should work fine, including themes, with the exception of IP access control (because as far as Webmin is concerned, all connections will be coming from localhost).

Voir la documentation associée.

Ci-après, une méthode pour également rediriger les ports 443: (SSL) https://ubuntuforums.org/showthread.php?t=2167370


Quels sont les manques à Webmin en 2018?

  • En premier point : un mode « simple » et visuel, une vraie supervision de pro. c’est quand même dommage de ne pas pouvoir visualiser rapidement sur une interface l’intégralité de son réseau / serveur pour avoir un état de la supervision. Des actions correctives rapides accessibles dans ce mode (par exemple, redémarrer le service …)
  • L’intégration d’outils de communication plus efficace. Sérieusement, envoyer un mail à l’admin? Sachant que l’on est rarement à côté des serveurs mais toujours avec un téléphone portable, il vaudrait mieux utiliser des outils tels que Pushbullet, telegram, des SMS… ou autres messageries instantanées.

Peut être des modules pour régler wordpress? Un meilleur gestionnaire de fichier à distance (java…)

Samba et les liens extérieurs (wide links)

Dans les partages samba, il est parfois pratique de créer des liens linux pointant vers des dossiers hors du partage (par exemple, un share regroupant plusieurs données éparpillées sur plusieurs disques..)

La solution est alors de définir dans le share les options suivantes

[share] follow symlinks = yes wide links = yes

Oui mais voilà, samba est devenu râleur en version 3 :

log de samba :

Share 'share' has wide links and unix extensions enabled. These parameters are incompatible. Wide links will be disabled for this share.

Et pourtant, testparm est silencieux sur le sujet.

Bon… on va dire qu’on va forcer la main à samba et mettre « unix extensions = no » sauf qu’évidement, ça ne fonctionne pas… (oui, ça semblait logique pourtant!)

La solution est de forcer dans la section global les liens « non sécurisés »…

[global]
allow insecure wide links = yes

Voir la documentation (en anglais) sur le sujet :

https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1

Octoprint et webcam 1080p HD Papalook PA452

une bête webcam

Pour ceux qui ne connaissent pas le logiciel octoprint, il s’agit d’une distribution pour raspberry-pi permettant la surveillance des impressions 3D via USB ou autre. C’est très pratique pour vérifier que tout va bien.

Couplé à un logiciel type jeedom, nous l’utilisons pour nous transmettre le status des impressions et ainsi couper l’imprimante 3D si un souci est détecté.

En bonus non négligeable il est également possible de rajouter une webcam pour réaliser des vidéos, voir le résultat de l’impression etc.

Continuer la lecture de « Octoprint et webcam 1080p HD Papalook PA452 »

Retour d’expériences sur Jeedom et liens vers tutos

Bascule domoticz vers Jeedom

J’ai (lâchement) profité d’un plantage de la carte SD de mon Raspberry Pi pour tester l’application Jeedom et comparer avec mon installation Domoticz.

Ma modeste installation domotique est constitué des matériels suivants

Xiaomi / Yeelight

  • 1 Gateway V2
  • 2 capteur Température + Hydrométrie
  • 1 capteur Température + Hydro + Pression
  • 6 capteurs d’ouvertures
  • 1 capteur de présence
  • 1 bouton 4 fonctions (click, double click, click long pressed, click long released)
  • 1 robot aspirateur de première génération
  • 1 Yeelight

Philips Hue

  • 2 ampoules Hue
  • 2 ampoules Ikea compatibles Hue

Heatzy

  • 1 unique module Heatzy branché sur un radiateur du salon

Withings / Nokia

  • 1 balance withings

Mes scénarios existants sont assez « simplistes »

1 ampoule Hue commandable avec le bouton Xiaomi. On peut allumer/éteindre l’ampoule (simple clic), la mettre en luminosité faible (long click), ou baisser la luminosité par pallier de 10% (double clic)

1 ampoule Hue commandée avec le capteur de présence Xiaomi (sur présence, on allume, plus personne, on éteint après 10min).

Cet article n’a pas pour but de faire une comparaison exhaustive des différents protocoles présents dans les deux systèmes, mais de faire profiter d’un petit retour d’expérience.

Comparaison entre les deux systèmes

Les deux systèmes sont assez proches l’un de l’autre et possèdent tous les deux une communauté active.

Petite mise en garde préalable : bien que les deux systèmes peuvent s’installer sur une carte SD et RPI2/3, il est FORTEMENT conseillé d’utiliser une installation sur disque dur/clé USB. En effet, les systèmes domotiques stressent fortement les cartes SD et celles-ci peuvent vite se « briquer »….

Domoticz

Les plus

  • Totalement gratuit
  • Nécessite une machine peu puissante (RPI 1!)
  • Protocoles divers gérés par défaut
  • Interface de programmation « facilité »

Les moins

  • Les ressources sont essentiellement en anglais… et pas toujours à jour
  • Certains protocoles nécessitent des compétences avancées en informatiques
  • L’interface de programmation simplifiée contient des bugs. Certains de mes scénarios n’ont jamais réussi à fonctionner ou fonctionnaient uniquement dans certaines beta!
  • Pas de sauvegarde automatique intégrée

Jeedom

Les plus

  • Beaucoup de ressources en français – dont le forum et le site principal
  • Le market avec énormément de plugins divers
  • Installation facile sur RPI2 ou sur plateforme « vide » supporté
  • Support en ligne « pro »
  • Meilleur support pour les appareils Xiaomi (payant)
  • L’application mobile, vraiment bien faite (payante)
  • Meilleur niveau de WAF

Les moins

  • Plateforme nécessaire plus puissante
  • Beaucoup de plugin payants : pour avoir les mêmes fonctionnalités que j’utilisais sur domoticz, j’ai déboursé 18€ de logiciels. (Détails: Philips Hue – 2€, Xiaomi Home – 6€, App mobile – 4€, et Alarme – 6€).
  • Des plugins, oui, mais encore faut il qu’il y ait un suivi par des développeurs. Exemple, Wunderground ne fonctionne pas sur les dernières versions de Jeedom
  • Installation plus complexe sur serveur avec apache existant
  • L’aide en ligne parfois inexistante (par exemple, sur les fonctions)

Bref, c’est vraiment une question de goût entre les deux systèmes et de philosophie. Si le coût vous rebute, autant rester sur Domoticz ou autre.

Quelques points notables lors de l’installation de Jeedom

Je ne vais pas décrire la procédure d’installation. D’autres blogs font ça beaucoup mieux que moi. Par contre, j’ai quelques REX sur les erreurs qui me sont arrivées…

  • Si un délai de déclenchement est visible lors de l’exécution des scénarios Il s’agit peut être d’un souci de puissance machine. Bien que jeedom peut s’exécuter sur un RPI1, il faut (au minimum) un RPI3 pour bien fonctionner avec le plugin xiaomi. Via SSH, on peut regarder via la commande htop pour vérifier si le serveur n’est pas surchargé.
  • Si la crontab interne de jeedom ne fonctionne pas (menu paramètres, gestionnaire des tâches) ou que la fonction DANS des scénarios ne s’exécute pas….), ce n’est évidement pas normal. On peut également voir dans le syslog du serveur les messages suivants:
(*system*jeedom_watchdog) INSECURE MODE (group/other writable) (/etc/cron.d/jeedom_watchdog)
(*system*jeedom) INSECURE MODE (group/other writable) (/etc/cron.d/jeedom)

Les crontab sont créés dans le script install.sh, via les commande suivantes (compte root).

echo "* * * * * www-data /usr/bin/php ${WEBSERVER_HOME}/core/php/jeeCron.php >> /dev/null" > /etc/cron.d/jeedom
echo "* * * * * root /usr/bin/php ${WEBSERVER_HOME}/core/php/watchdog.php >> /dev/null" > /etc/cron.d/jeedom_watchdog

MAIS il faut corriger les droits des scripts via les commandes suivantes (ce n’est pas fait dans le script!)

chmod og-w /etc/cron.d/jeedom_watchdog
chmod og-w /etc/cron.d/jeedom

A noter également, de manière plus anecdotique, que l’intégration du robot Xiaomi Mi Robot dans le système a été assez compliqué (clé chiffré sous forme 96bits)

L’ajout dans Jeedom du Xiaomi MiRobot Vacum (v1 ou v2) nécessite en effet un token à récupérer dans l’application Mi Home.

Souci : les dernières versions de Mi Home sur Android ne stockent plus ce token. Les méthodes consistent donc à prendre une ancienne version de Mi Home ou à utiliser une sauvegarde d’un … iPhone.

Quelques tutoriaux utiles pour les débutants

http://sarakha63-domotique.fr/jeedom-installation-premiers-pas/

https://www.maison-et-domotique.com/72202-tuto-gerer-presence-domicile-grace-a-jeedom-wifi/

https://guillaumebraillon.fr/jeedom-scenario-bouton-switch-xiaomi/

https://guillaumebraillon.fr/jeedom-scenario-lumiere-sur-presence-corrige-optimise/

Quelques sites avec des exemples de scénario Jeedom, des ressources etc.

http://electrotoile.eu

https://jeedom-facile.fr

Dans l’avenir, je compte rajouter au blog quelques tutoriaux sur mes scénarios Jeedom.

Une commande debian / ubuntu utile : apt

Aujourd’hui, un court article pour vous parler de la commande apt.
Celle-ci a été conçue et intégré au système debian pour être plus user-friendly que les apt-get, apt-cache et dpkg.

One command to rule them all…

Elle remplace avantageusement les 3 commandes précédentes et a été introduit en 2014 ;
Pourquoi en parler en 2018 ? Et bien en informatique linuxienne, on met longtemps à changer les habitudes. 4 ans, c’est pas si long que ça 🙂

Continuer la lecture de « Une commande debian / ubuntu utile : apt »