Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.
C’est alors la barrière de la prise en main qui fait peur, et pourtant...
Les logiciels libres
L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.
Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.
Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.
Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.
- Mai 2018 -
Wiseflat est un projet permettant d’héberger ses applications Web dans des conteneurs LXC sur un (ou plusieurs) Raspberry Pi.
C’est une alternative à docker CE avec du LXC (car, en tant qu’administrateur système, je trouve ça plus pratique d’avoir un accès SSH dans mes conteneurs).
Wiseflat est donc une boîte à outils permettant d’installer des micro‐services clef en main « production ready », afin de se focaliser sur ce qu’on a réellement besoin de faire.
Plus de détails dans la suite de la dépêche.
Sommaire
API
J’héberge une API proposant du contenu dédié à la domotique :
- météo ;
- calendrier ;
- géolocalisation ;
-
heartbeat, un service de vérification de joignabilité fait sur mon API, si votre serveur ne répond pas vous serez notifié par courriel ;
-
cron, pour planifier des jobs HTTP dans le cloud ;
- etc.
Ainsi que du contenu autour de la sécurité et du filtrage réseau pour protéger son réseau local et/ou ses serveurs sur Internet :
-
badips : des listes d’adresses IP considérées comme malveillantes, à bloquer sur son pare‐feu (ou au niveau de son serveur mandataire inversé — reverse proxy — nginx, Traefik ou HAproxy) — ces adresses IP sont issues des différentes listes communautaires, enrichies avec mes propres mécanismes de défense sur mes serveurs ;
-
ipblocks : des blocs d’adresses IP par pays pour restreindre l’accès uniquement à son territoire (je n’ai pas de copain en Chine) ;
-
baddomains : des listes communautaires de nom de domaines dangereux à ajouter à son serveur DNS pour les rendre non routables (filoutage, malware, publicité, pistage, etc.).
Il reste encore des coquilles, donc n’hésitez pas à me prévenir si les services gérés par l’API ne fonctionnent pas comme il faut. :-)
Côté utilisateur
L’installation et les mises à jour de votre serveur se font grâce à un projet Ansible hébergé sur GitHub. Le projet est fourni avec des playbooks1 permettant :
- d’ajouter des micro‐services pré‐configurés pour simplifier le déploiement et la prise en main par l’utilisateur (la création manuelle de conteneurs LXC est bien entendu possible) ;
- d’exploiter les données de l’API dans ses scénarios divers et variés de domotique ;
- de garantir la sécurité de son réseau local en bloquant les menaces présentes sur Internet.
Voici un exemple de Raspberry Pi et de ses petits micro‐services :
pi@home-wiseflat:~ $ lxc list
+----------------+---------+------------------------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+----------------+---------+------------------------+------+------------+-----------+
| home-blog | RUNNING | 192.168.1.198 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-cms | RUNNING | 192.168.1.115 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-dnsmasq | RUNNING | 192.168.1.110 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-domoticz | RUNNING | 192.168.1.200 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-homebridge| RUNNING | 192.168.1.246 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-jeedom | RUNNING | 192.168.1.138 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-messenger | RUNNING | 192.168.1.104 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-mqtt | RUNNING | 192.168.1.247 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-nodered | RUNNING | 192.168.1.245 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
| home-xpl | RUNNING | 192.168.1.243 (eth0) | | PERSISTENT | 0 |
+----------------+---------+------------------------+------+------------+-----------+
Le serveur dnsmasq est configuré pour récupérer via un cron les listes des domaines dangereux. Il suffit de configurer sur son service DHCP ce serveur DNS pour les résolutions de noms de domaine.
Étant un fan de Node.js, la plupart des micro‐services que j’ai choisis font tourner des instances Node.js basées sur Total.js, un super cadriciel.
Futur
Même si je propose des images LXC préconfigurées, je compte partager des playbooks Ansible pour installer des applications Web pratiques telles que :
- Nextcloud (avec SQLite par défaut) ;
- wallabag et autres lecteurs de flux RSS ;
- WordPress (même si j’évite d’installer mariadb/mysql-server sur mes Raspberry Pi, on parle bien de « micro‐service ») ;
- searx, comme alternative à Google ;
- Gitea ou Gogs, pour gérer ses projets Git ;
- PeerTube (même si c’est en Docker et que ça fonctionne avec PostgreSQL) ;
- Standard Notes ;
- OpenVPN, pour que tout un chacun puisse monter des tunnels de réseau privé virtuel (VPN) avec ses copains.
J’aimerais bien mettre du dynamisme dans ce genre d’infrastructure à la manière de Kubernetes, un serveur mandataire inverse (reverse proxy) en frontal, comme Traefik, qui irait chercher ses domaines dans un key‐value store (etcd) et générerait automatiquement les certificats SSL/TLS Let’s Encrypt. L’ajout d’une découverte du service (service discovery) basée sur du DNS serait aussi un plus, ce qui permettrait d’avoir un (ou plusieurs) petits serveurs pour prendre en charge une infrastructure de production peu chère.
Contribuer
N’importe qui peut participer au projet de différentes manières via GitHub :
- faire évoluer le projet Ansible de construction du serveur ;
- proposer des playbook Ansible pour construire des micro‐services.
Commentaires :
voir le flux atom
ouvrir dans le navigateur