Transparence technique
La transparence technique pour soutenir d’autres projets, CHATONS et autre.
Conformément à ses statuts, Nubo intègre la transparence et le respect de la vie privée dans l’ensemble de ses actions. A côté d’une politique de confidentialité des données qui adhère à la charte éditée par le collectif CHATONS et du respect des règles édictées dans la charte du collectif Libre Hosters, un travail de documentation portant sur le code, la configuration technique des serveurs et la liste complète des logiciels utilisés est en cours. Celui-ci sera publié dès que possible et régulièrement mis à jour.
Hébergé chez All2All
Administrateur système chez Domaine Public et Tactic, Kenny est à la fois le “moteur” et la mémoire centrale de l’infrastructure technique de Nubo. Chaque étape, chaque brique de la solution est documentée. Le système de départ est basé sur 3 serveurs mis en grappe avec un système de fichier distribué Open Source (GlusterFS) et une base de données synchronisée (MariaDB). Ceux-ci sont hébergés dans le centre de données All2All à Zaventem. GlusterFS permet d’agréger la capacité disque des différents nœuds du cluster et répond ainsi à deux problématiques majeures dès qu’une application a besoin de pouvoir monter en charge: la parallélisation et la réplication du stockage. La solution a été pensée pour pouvoir grandir facilement. “La charge des données est partagée entre les serveurs. Si on a besoin de puissance supplémentaire, il “suffit” d’ajouter une machine et de l’intégrer dans le groupe pour que les requêtes soient balancées d’un serveur à l’autre en fonction de la charge de chacun. Ces technologies ouvrent la porte sur la haute disponibilité et l’évolutivité à la demande. Je ne les connaissais qu’en théorie. Cela a été passionnant de les mettre en pratique”
Documentation complète de la solution
“La documentation technique est quelque chose qui prend du temps. Je note tout au fur et à mesure que j’avance, brique par brique. Je trouve qu’il est important de publier un travail exact et complet de la configuration système et des logiciels qu’on a mis en place pour rendre les 3 serveurs de Nubo fonctionnels car on en a quand même bavé pour rendre notre système opérationnel. Il y a des choses qu’on ne trouve pas sur Internet, il faut tester, installer et parfois après des heures de travail et de recherche, passer à autre chose. Il faut avancer pas à pas, résoudre au fur et à mesure les problèmes et fixer les erreurs. Au final, on aura une description complète de notre installation, fichiers de config inclus. Si cela peut aider d’autres projets CHATONS à se lancer, on sera très contents chez Nubo!”
Tests en batterie
Kenny donne trois exemples. L’un porte sur la synchronisation des données. Le second sur la gestion du cache. Le troisième sur la mise en grappe de la base de données. Kenny: “Pour synchroniser les données, on a analysé deux outils assez connu maintenant, qu’on trouve en production un peu partout dans le monde: GlusterFS et Ceph. Il a fallu décortiquer la documentation pour analyser les points forts et les faiblesses des deux produits. Ici, on a commencé par installer GlusterFS et tout a bien fonctionné comme on le souhaitait au départ. Mais il arrive régulièrement qu’on se rende compte que dans telle ou telle situation, cela ne correspond pas et donc il faut désinstaller, réinstaller l’autre et recommencer les tests. Et ce pour chaque service!”
20.000 pages
“On doit aussi parfois procéder à des combinaisons. Ainsi, pour la base de donnée synchronisée, on a retenu MariaDB qui est la dernière version Open Source de MySQL, juste avant qu’Oracle ne le rachète. Le problème, c’est qu’il y a une instruction que MariaDb gère mal lorsque l’on travaille sur 3 serveurs synchronisés et que la charge commence à augmenter. A ce moment, des erreurs vont apparaître. On a donc dû chercher une solution qui a débouché sur la séquence MariaDb, Galera et ProxySql pour que cela fonctionne correctement. Même chose pour la mise en cache et la gestion des sessions. On peut très facilement mettre Redis sur chaque serveur pour qu’il se synchronise mais le problème, c’est que lorsque les applications installées derrière sollicitent Redis, cela génère beaucoup d’erreurs. Il a donc fallu trouver un programme en front-end qui gère la balance entre les trois serveurs et assure l’interface avec les applications. On a fini par aboutir à la combinaison Redis + Redis Sentinel + Redis cluster proxy Envoy. Si j’additionne l’ensemble des programmes qu’on a mis en place pour les services Nubo, je pense qu’on arrive facilement à 20.000 pages. Si notre recette peut faciliter la vie d’autres organisations, c’est tant mieux!”
La politique de transparence Nubo joue sur 3 niveaux
- Une publication de la documentation complète de l’installation, fichiers de configuration inclus et du code utilisé, vraisemblablement sur Gitlab.
- Une publication du code de l’interface développée par les programmeurs de Nubo, le seul développement “propre” de la coopérative.
- Une publication de la liste complète des logiciels utilisés.
Hardware
Stockage
Nous avons reçu une dizaine de serveurs de type HP DL 380 gen8. Les serveurs ont été livrés en bon état mais sans disques durs. De base, seules des disques HP peuvent être utilisés. Or il sont coûteux. Nous avons donc décidé d’adapter les machines à nos besoins en remplaçant les 16 slots SFF (Smal Form Factor) par une combinaison de 4 slots SFF et de 4 slots LFF (Large Form Factor) Cela nous permet d’utiliser 4 disques dur plus petits mais plus rapides pour l’installation des logiciels et des bases de données et de 4 disques dur d’une plus grande capacité pour le stockage des données (mail et fichier cloud)
Redondance
L’un des points d’attention est la garantie des services, également par exemple en cas de problème hardware. C’est pourquoi nous avons opté pour une configuration initiale avec trois serveurs. En cas de problème avec l’un d’entre eux, les deux autres peuvent prendre le relais pendant que nous travaillons sur une solution pour la machine défectueuse. Tous les logiciels sont installés de manière à ce que les utilisateurs soient dirigés au hasard vers l’un des serveurs disponibles. Les données (les bases de données et les fichiers) sont synchronisés en permanence entre les machines. Afin de rendre cette configuration complètement redondante, plusieurs centres de données doivent en principe être utilisés. Nous avons choisi – pour le moment – de ne pas le faire, notamment pour des raisons écologiques. La redondance est également assurée au niveau de certains périphériques : alimentation, switches,…
Evolutivité
La technologie qui rend la configuration redondante la rend également évolutive. S’il s’avère que l’espace disque ou la puissance de calcul devient insuffisante, il suffit d’ajouter des serveurs Energie En utilisant du matériel d’occasion, Nubo travaille à diminuer son empreinte écologique. Leur combinaison à des disques dur de technologie plus récente aura une influence favorable sur la consommation électrique. Celle-ci sera surveillée via des compteurs électriques connectés.
Disposition des rack
L’hébergement des serveurs se fait dans un rack loué à All2all, un hébergeur alternatif qui a été choisi comme partenaire sur base de son offre et en raison de valeurs partagées (internet libre, respect de la vie privée). Nubo aura un an pour utiliser pleinement ce rack. Dans l’intervalle, le prix est proportionnel au taux d’utilisation (37,5 € par serveur 1U – 55 € par serveur 2U). La configuration comprend également les équipements périphériques suivant :
- Commutateur de transfert automatique pour basculer automatiquement entre l’alimentation normale et l’alimentation de secours du générateur diesel
- compteurs d’électricité
- câbles et prises
- interrupteurs : deux sont prévus à chaque fois pour assurer la redondance
- en sortie pour relier les serveurs à Internet
- en interne pour la synchronisation des données et bases de données entre les serveurs Nubo
Lancement
Nous lançons les services Nubo sur trois serveurs configurés dotés d’une unité de stockage de 2x16 To chacun. En cas de besoin, il sera possible d’ajouter deux autres grands disques durs dans chaque serveur. La solution est conçue pour pouvoir intégrer facilement des serveurs supplémentaires.
Logiciels
En termes de logiciels, nous faisons appel, dans la mesure du possible, à des logiciels open source. On distingue d’une part l’éventail des services proposés et d’autre part l’intégration de ceux-ci avec une interface unique d’authentification et d’administration. Nous travaillons avec Debian, une variante stable et fiable de Linux. Pour le stockage en cluster, nous utilisons GlusterFS qui synchronise intelligemment les fichiers et les distribue sur les différentes machines. Les bases de données doivent également être synchronisées, entre autres. avec le cluster MariaDB Galera.
Outils systèmes
Synchronisation
- Gluster → synchro des données
- OpenLdap (replication) → synchro des fiches utilisateurs
- MariaDB + Galera + ProxySql → synchro des bases de données
- Redis + Redis Sentinel + Redis cluster proxy Envoy → synchro du cache
- Nginx + Php + Haproxy → Serveur web + Load balancer entre les 3 serveurs
Logs
- LemonLdap → Système SSO (1 login, permet d’accéder à tous les services sans se reconnecter à chaque fois)
- Keepalived → gestion d’Ip virtuelles
- Syslog-ng → gestion des logs du système (améliorée par rapport au syslog de base)
Messagerie
- Mailcow (interface admin pour la gestion des mails)
- Solr → moteur de recherche pour chercher dans les mails et leur contenu
- Clamav → anti-virus
- Unbound → un résolveur DNS validateur, cache, récursif
- Olefy → anti-virus pour les fichiers Office (.docx / ..)
- certbot → gestion des certificats
- Postfix → serveur de messagerie, s’occupe de la livraison des mails
- Dovecot → serveur IMAP et POP3 (gestion des comptes mails / filtres / .)
- Rspamd → système anti-spam
- Roundcube → webmail
Cloud
Nextcloud (https://nextcloud.com) : une alternative open source à Google Drive/Dropbox/Office365 qui fournit non seulement un stockage cloud, mais aussi des calendriers, l’édition de documents en ligne et peut être étendu avec d’autres plugins. Un client local permet également aux utilisateurs de synchroniser les fichiers localement.
Firewall
- iptables → firewall
- fail2ban → framework de prévention contre les intrusions
- modsecurity → Firewall applicatif
Backup
- Bareos Backup → système de backup
Outils de gestion
- CiviCRM →CRM
- Odoo → Comptabilité
- Odoo → Facturation
Nubo Account Interface
Pour la gestion des abonnements et des paramètres utilisateur, Nubo assure en propre le développement d’une interface utilisateur : Nubo Account Interface. Cette interface permet à l’utilisateur de gérer son abonnement et de trouver de l’information à propos de toutes les questions liées à notre coopérative. Elle se compose de deux parties. Dans la première partie de l’interface, il est possible de prendre des parts, de trouver de l’information sur les parts achetées, de souscrire à de nouvelles, de télécharger des certificats, de consulter des informations internes…
Dans la deuxième partie, les utilisateurs peuvent gérer leur abonnement. Nous avons opté pour une formule d’entrée à seuil bas et un abonnement très flexible. A partir de 2,5 euros par mois, les personnes peuvent souscrire un abonnement qui inclut mail et cloud (stockage, calendrier). Le coût de l’abonnement est basé sur la quantité de stockage. Ce stockage peut être défini par Go et également ajusté mensuellement. Pour une facilité d’utilisation, l’utilisateur peut travailler avec un budget pour éviter les petits paiements mensuels. En plus des boîtes aux lettres et du cloud, les utilisateurs peuvent également enregistrer leur propre domaine ou lier un domaine qu’ils ont déjà enregistré à leur compte. De cette façon, nous respectons le principe selon lequel nous ne voulons pas lier les utilisateurs et les laisser libres sans tracas inutiles de changer de fournisseur de services.