Technische transparantie
Met deze toelichting, het origineel is geschreven in het Frans, geeft Jean-Luc Manise van de raad van bestuur van Nubo uitleg over de techniek achter de huidige diensten van Nubo. Deze ‘technische transparantie’ kan andere projecten zoals CHATONS weer verder helpen. CHATONS: een Collectief van Alternatieve Hosters die Transparant Open Neutraal en Solidair willen zijn.
In al haar handelingen integreert Nubo conform haar statuten transparantie en respect voor privacy. Naast een privacybeleid dat strookt met het door het collectief CHATONS gepubliceerde handvest en met de naleving van het handvest van het collectief Libre Hosters, wordt er gewerkt aan documentatie over de code, de technische configuratie van de Nubo-servers en de volledige lijst van de gebruikte software. Deze zal zo spoedig mogelijk worden gepubliceerd en geregeld worden bijgewerkt.
Gehost bij All2All
Kenny is systeembeheerder bij Domaine Public en Tactic. Hij is zowel de “motor” als het centrale geheugen van de technische infrastructuur van Nubo. Elke stap, elke bouwsteen van de oplossing is gedocumenteerd. Het oorspronkelijke systeem is gebaseerd op drie geclusterde servers met een open-source-gedistribueerd bestandssysteem (GlusterFS) en een gesynchroniseerde database (MariaDB). Deze worden gehost in het datacenter van All2All in Zaventem. GlusterFS maakt het mogelijk de schijfcapaciteit van de verschillende knooppunten van het cluster te aggregeren en biedt zo een antwoord op twee grote problemen wanneer een toepassing moet kunnen opschalen: parallellisatie en opslagreplicatie. De oplossing is ontworpen om gemakkelijker te groeien. “De gegevenslast wordt verdeeld over de servers. Als er extra vermogen nodig is, hoef je alleen maar een machine toe te voegen en deze in de groep op te nemen, zodat de verzoeken van de ene server naar de andere worden verdeeld naar gelang de belasting van elke server. Deze technologie maakt de weg vrij voor hoge beschikbaarheid en schaalbaarheid op verzoek. Ik kende ze alleen in theorie. Het was spannend om ze in de praktijk te brengen.”
Volledige documentatie van de oplossing
“Technische documentatie vastleggen vergt tijd. Ik schrijf alles op terwijl ik bezig ben, stap voor stap, voor elke bouwsteen. Ik vind ’t belangrijk om een nauwkeurig en volledig werk te publiceren van de systeemconfiguratie en de software die we hebben geïnstalleerd om de drie Nubo-servers te laten draaien, omdat we heel wat hebben moeten doorstaan om ons systeem operationeel te maken. Er zijn dingen die je nergens op het internet kunt vinden. Die je moet testen, installeren en soms na uren werk en onderzoek, verder gaan. We moeten stap voor stap gaan, problemen oplossen en fouten herstellen. Uiteindelijk zullen we een volledige beschrijving hebben van onze installatie, inclusief de configuratiebestanden. Als dit andere CHATONS-projecten op weg kan helpen, zijn wij bij Nubo heel blij!”
Batterij testen
Kenny geeft drie voorbeelden. Eén gaat over datasynchronisatie. Het tweede gaat over cachebeheer. De derde is database-clustering. Kenny: “Om de gegevens te synchroniseren, hebben we twee tools geanalyseerd die nu vrij bekend zijn, en die zowat overal ter wereld draaien: GlusterFS en Ceph. Wij moesten de documentatie ontleden om de sterke en zwakke punten van beide producten te analyseren. Hier begonnen we met de installatie van GlusterFS en alles werkte zoals we wilden. Het gebeurt echter regelmatig dat we ons realiseren dat het in deze of gene situatie niet overeenkomt en dus moeten we de installatie ervan ongedaan maken, de andere opnieuw installeren en de tests opnieuw beginnen. En dat voor elke dienst apart!”
20.000 pagina’s
“Soms moeten we ze ook combineren. Voor de gesynchroniseerde database hebben wij bijvoorbeeld gekozen voor MariaDB, de nieuwste open-sourceversie van MySQL, net voordat Oracle deze overnam. Het probleem is dat er een instructie is die MariaDb niet goed afhandelt wanneer je op drie gesynchroniseerde servers werkt en de belasting begint toe te nemen. Op dat moment zullen er fouten verschijnen. Dus moesten wij op zoek naar een oplossing die resulteerde in de reeks MariaDb, Galera en ProxySql om het goed te laten werken. Hetzelfde geldt voor caching en sessiebeheer. Het is heel eenvoudig om Redis op elke server te zetten zodat het synchroniseert, maar het probleem is dat wanneer de applicaties die erachter geïnstalleerd zijn Redis opvragen, dit een hoop fouten genereert. Dus moesten we een front-end programma vinden dat het evenwicht tussen de drie servers beheert en interfaces heeft met de toepassingen. We eindigden met de combinatie van Redis + Redis Sentinel + Redis cluster proxy Envoy. Als ik alle programma’s optel die we hebben opgezet voor de Nubo-diensten, denk ik dat we gemakkelijk aan 20.000 pagina’s geraken. Als ons recept het leven van andere organisaties kan vergemakkelijken, des te beter!”
Nubo’s transparantiebeleid kent drie niveaus
- Een publicatie van de volledige documentatie van de installatie, inclusief configuratiebestanden en de gebruikte code, waarschijnlijk op Gitlab.
- Een publicatie van de code van de interface-code ontwikkeld door de programmeurs van Nubo, de enige “schone” ontwikkeling van de coöperatie.
- Een publicatie met de volledige lijst van de gebruikte software.
Hardware
Opslag
We hebben een tiental HP DL 380 gen8 servers ontvangen. De servers werden in goede staat geleverd, maar zonder harde schijven. In principe kunnen alleen HP-schijven worden gebruikt. Maar ze zijn duur. Daarom hebben we besloten de machines aan onze behoeften aan te passen door de zestien SFF (Smal Form Factor)-slots te vervangen door een combinatie van vier SFF- en vier LFF (Large Form Factor)-slots. Hierdoor kunnen we vier kleinere maar snellere harde schijven gebruiken voor software en database-installatie en vier harde schijven met een grotere capaciteit voor gegevensopslag (mail- en cloudbestanden).
Redundantie
Een van de aandachtspunten is de garantie van dienstverlening, ook bij hardwareproblemen. Daarom kozen we voor een eerste configuratie met drie servers. Als er een probleem is met de ene, kunnen de andere twee het overnemen terwijl we werken aan een oplossing voor de defecte machine. Alle software is zo geïnstalleerd dat gebruikers willekeurig naar een van de beschikbare servers worden geleid. De gegevens (databases en bestanden) worden voortdurend gesynchroniseerd tussen de machines. Om deze configuratie volledig redundant te maken, zouden in principe meerdere datacentra moeten worden gebruikt. Wij hebben er - voorlopig - voor gekozen dit niet te doen, gedeeltelijk om ecologische redenen. Redundantie is ook voorzien voor bepaalde randapparatuur: stroomvoorziening, schakelaars, enzovoorts.
Schaalbaarheid
De technologie die de configuratie redundant maakt, maakt haar ook schaalbaar. Zodra de schijfruimte of de rekenkracht ontoereikend wordt, volstaat het om meer servers toe te voegen. Door tweedehands materiaal te gebruiken, tracht Nubo zijn ecologische voetafdruk te verkleinen. De combinatie ervan met nieuwere harde schijven zal een gunstige invloed hebben op het stroomverbruik. Dat wordt gecontroleerd via elektriciteitsmeters.
Rackindeling
De servers worden gehost in een rack dat wordt gehuurd bij All2all, een alternatief hostingbedrijf dat als partner werd geselecteerd op basis van zijn aanbod en gedeelde waarden (gratis internet, respect voor privacy). Nubo krijgt een jaar de tijd om dit rack volledig te benutten. Intussen is de prijs in verhouding met de mate van gebruik (€ 37,5 per 1U server - € 55 per 2U server). De configuratie omvat tevens de volgende randapparatuur:
- omschakelaar voor automatisch overschakelen tussen normale en noodstroom van de dieselgenerator
- elektriciteitsmeters
- kabels en contactdozen
- schakelaars: twee tegelijk voor redundantie
- uitvoer om de servers met het internet te verbinden
- intern voor de synchronisatie van gegevens en databases tussen de Nubo-servers
Lancering
We lanceren de Nubo-diensten op drie geconfigureerde servers met elk 2x16 TB opslagruimte. Indien nodig kunnen aan elke server nog twee grote harde schijven worden toegevoegd. De oplossing is ontworpen om gemakkelijk extra servers te integreren.
Software
Qua software gebruiken we waar mogelijk open source software. We maken een onderscheid tussen het aanbod van diensten en de integratie daarvan met één authenticatie- en administratie-interface. Wij werken met Debian, een stabiele en betrouwbare variant van Linux. Voor geclusterde opslag gebruiken we GlusterFS, dat op intelligente wijze bestanden synchroniseert en ze over de verschillende machines verdeelt. De databases moeten ook worden gesynchroniseerd met onder andere het MariaDB Galera cluster.
Systeemhulpmiddelen
Synchronisatie
- Gluster → datasynchronisatie
- OpenLdap (replicatie) → synchroniseer gebruikersbestanden
- MariaDB + Galera + ProxySql → databasesynchronisatie
- Redis + Redis Sentinel + Redis cluster proxy Envoy → cache sync
- Nginx + Php + Haproxy → webserver + load-balancer tussen de 3 servers
Logs
- LemonLdap → SSO systeem (1 login, geeft toegang tot alle diensten zonder steeds opnieuw te moeten inloggen)
- Keepalived → Virtueel IP-beheer
- Syslog-ng → systeemlogboekbeheer (verbeterd ten opzichte van basissyslog)
- Mailcow (admin-interface voor e-mailbeheer)
- Solr → zoekmachine om mails en hun inhoud te doorzoeken
- Clamav → anti-virus
- Unbound → een validerende, caching, recursieve DNS-oplosser
- Olefy → anti-virus voor Office-bestanden (.docx / ..)
- certbot → certificatenbeheer
- Postfix → mailserver, zorgt voor de aflevering van de mail
- Dovecot → IMAP en POP3 server (mail account beheer / filters / .)
- Rspamd → anti-spam systeem
- Roundcube → webmail
Cloud
Nextcloud: een opensource alternatief voor Google Drive/Dropbox/Office365, dat niet alleen cloudopslag biedt, maar ook agenda’s, online bewerken van documenten en kan worden uitgebreid met andere plugins. Een lokale client stelt gebruikers ook in staat om bestanden lokaal te synchroniseren.
Firewall
- iptables → firewall
- fail2ban → inbraakpreventieraamwerk
- modsecurity → applicatie firewall
Backup
- Bareos Backup → backupsysteem
Beheerinstrumenten
- CiviCRM → CRM
- Odoo → boekhouding
- Odoo → facturatie
Nubo account-interface
Voor het beheer van abonnementen en gebruikersinstellingen voorziet Nubo in de eigen ontwikkeling van een gebruikersinterface: Nubo account-interface. Via deze interface kan de gebruiker zijn of haar abonnement beheren en informatie vinden over alle kwesties die verband houden met onze coöperatie. Deze bestaat uit twee delen. In het eerste deel van de interface is het mogelijk aandelen te kopen, informatie te vinden over de gekochte aandelen, in te schrijven op nieuwe aandelen, certificaten te downloaden, interne informatie te raadplegen…
In het tweede deel kan de gebruiker haar of zijn abonnement beheren. We kozen voor een laagdrempelige instapformule en een zeer flexibel abonnement. Vanaf € 2,50 per maand kan men een abonnement nemen dat mail en cloud (opslag, agenda) omvat. De kosten van het abonnement zijn gebaseerd op de hoeveelheid opslagruimte. Deze opslag kan per GB worden ingesteld en ook maandelijks worden aangepast. Voor het gebruiksgemak kan de gebruiker werken met een voorschotbudget om zo kleine maandelijkse betalingen te vermijden. Naast mailboxen en de cloud kunnen gebruikers ook hun eigen domein registreren of een domein dat ze al hebben geregistreerd aan hun account koppelen. Op die manier respecteren we het principe dat we de gebruikers niet willen binden en ze zonder onnodige rompslomp vrij willen laten om van dienstverlener te veranderen.