first commit

This commit is contained in:
2020-10-17 21:18:33 +02:00
parent 2ef9e0d321
commit 123eafe84c
37 changed files with 13025 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
{% extends "/meta/master.html" %}
{% block main %}
<h1 class="title">
Auto-hébergement
</h1>
<p>
Comme indiqué sur la page d'accueil de ce site, Katzei fournit des services auto-hébergés.
</p>
<p>
L'auto-hébergement est simplement le fait de conserver ses machines dans ses propres locaux plutôt que chez un prestataire. Cette façon de faire se retrouve dans le monde professionnel (de moins en moins) et parfois dans le monde amateur.
</p>
<p>
En général, un hébergeur débutant se tournera vers de l'auto-hébergement pour son prix et les faibles contraintes que cela lui impose : on utilisera une machine de récupération reliée à la box ADSL pour faire un hébergement passable. Dans certains cas, plus rares, des particuliers ou des associations font de l'auto-hébergement pour des raisons idéologiques. C'est le cas de Katzei qui a choisi l'auto-hébergement pour l'indépendance et la maîtrise technique qu'il autorise.
</p>
<p>
Dans cette page, nous nous évoquerons les avantages et inconvénients de l'auto-hébergement et des stratégies mises en place au sein de Katzei pour réaliser un auto-hébergement avec la meilleure qualité de service possible.
</p>
<h2 class="subtitle">
Les contraintes
</h2>
<p>
<b>La place :</b> Les domiciles des membres ne sont pas extensibles et nous n'avons pas un espace infini pour stocker des machines (sans parler de la consommation électrique). Nons avons donc recours aux <a href="https://fr.wikipedia.org/wiki/Machine_virtuelle">machines virtuelles</a> pour faire tourner de nombreux services sur une seule machine physique.
</p>
<p>
<b>Le bruit :</b> Les serveurs professionnels sont conçus pour être utilisés dans des salles spéciales où la place est limitée mais où il fait toujours frais. De même, puisqu'il est rare d'y voir passer des humains, les nuisances sonores n'y sont pas un problème. Les machines professionnelles sont donc petites et très bruyantes. À l'inverse, la plupart des machines utilisées par Katzei sont hébergées aux domiciles de ses membres et doivent donc être les plus discrètes possibles. Elles sont de fait construites à partir de composants grand public (moins bruyants et plus tolérants aux fortes chaleurs) et, même si elles prennent plus de place, elles sont alors bien plus discrètes.
</p>
<p>
<b>L'accès à Internet :</b> Pour faire de l'auto-hébergement personnel avec des usages ne consommant pas trop de bande passante, l'utilisation d'une ligne ADSL peut être suffisante. Pour un hébergeur comme Katzei, le besoin en bande passante des services exposés au public implique d'être connecté à Internet via une fibre optique, sans quoi le confort d'utilisation sera réduit.
</p>
<p>
<b>La pénurie d'adresses IP :</b> Une adresse IP est un identifiant unique sur Internet (exactement comme un numéro de téléphone). Ces adresses sont rares, le système principalement utilisé (IPv4) n'en permet que 4 milliards. Ce nombre peut sembler énorme mais, à l'échelle d'Internet, ce n'est pas tant que ça. Un nouveau type d'adresse IP (IPv6) a été créé dans les années 90 mais son adoption est lente et des pans entier d'internautes n'y ont pas accès. Souvent, les opérateurs de téléphonie mobile ne permettent pas de les utiliser. Nous sommes donc obligés d'héberger de multiples services sur la même adresse.
</p>
<h2 class="subtitle">
Les avantages
</h2>
<p>
<b>L'indépendance :</b> Quand votre machine est hébergée chez un prestataire, celui-ci a un accès physique à la machine. Si cela ne lui donne pas forcement accès aux données, il peut débrancher la machine très facilement pour n'importe quelle raison (la plus courante étant le non-paiement du loyer). Si la machine est chez l'un de nos membres, il est peu probable qu'une personne extérieure à l'association vienne débrancher la machine et, le membre en question ayant besoin de son accès à Internet pour son utilisation personnelle, il est très improbable qu'il oublie de le payer. De plus, il est très facile de changer de fournisseur d'accès à Internet en cas de problème avec celui-ci, alors que remonter une machine complète chez un autre prestataire demande bien plus de travail.
</p>
<p>
<b>Le prix :</b> Une machine similaire (processeur 8 cœurs, 48 Go de RAM) à celle hébergeant ce site (et de nombreux autres services pour Katzei) coûte environ 75€/mois chez un hébergeur bon marché (soit 900€ à l'année). En auto-hébergement, la machine neuve coûte 800€ à l'achat et moins de 100€ d'électricité par an. L'investissement sera donc amorti en moins d'un an.
</p>
<p>
<b>L'évolutivité :</b> Quand vous louez une machine chez un prestataire, cette machine ne peut évoluer. Quand vous êtes propriétaire de la machine et qu'elle se trouve à votre domicile (ou éventuellement dans un data-center), il est toujours possible de l'arrêter pour en changer un composant selon les besoins.
</p>
<h2 class="subtitle">
L'auto-hébergement chez Katzei
</h2>
<p>
Comme nous l'avons dit, Katzei est une structure auto-hébergée. La principale raison idéologique de ce choix (outre l'indépendance et la maîtrise matérielle) porte sur la symétrie d'Internet : de par son architecture, il n'y a aucune raison technique qui empêche d'utiliser la connexion à Internet d'un particulier pour héberger des services.
</p>
<p>
Pour résoudre le problème de bande passante consommée, le serveur principal de Katzei est hébergé à Paris (le réseau électrique y est très stable) et derrière un accès Free en fibre optique. Free reste encore aujourd'hui l'un des opérateurs les plus pratiques pour faire de l'auto-hébergement à un prix décent (à titre de comparaison, OVH propose un accès intéressant pour l'auto-hébergement mais à 54€/mois quand Free offre un meilleur débit pour 35€/mois, et les autres opérateurs ne facilitant pas l'auto-hébergement).
</p>
<p>
Pour résoudre le problème des adresses IP limitées (nous n'en avons qu'une seule pour l'instant), nous avons recours aux "<a href="https://fr.wikipedia.org/wiki/H%C3%A9bergement_virtuel">virtual hosts</a>" qui permettent de discriminer les requêtes ciblant un service ou un autre selon le nom de domaine demandé par l'utilisateur.
</p>
{% endblock %}

View File

@@ -0,0 +1,88 @@
{% extends "/meta/master.html" %}
{% block main %}
<h1 class="title">
Logiciels
</h1>
<h2 class="subtitle">
Architecture générale
</h2>
<p>
Si l'architecture matériel de Katzei est fortement liée à son coté auto-hébergé. Son architecture logiciel est, à l'inverse, beaucoup plus classique. Tout les services publiques étant rendu via le protocole HTTP(S) il y a un serveur proxy qui reçoit toutes les requêtes destinées aux ports 80 et 443 et les rediriges vers les services concernés. Les autres ports redirigent directement sur les machines gérant les service rendu sur ce port.
</p>
<p>
Par mesure de sécurité, afin de réduire les risques liés à de mauvaises manipulations, et pour réduire les temps dinterruption, chaque service est isolé dans une machine (le plus souvent virtuelle) qui lui est dédié. Un service n'est pas que ce uniquement vous pouvez utiliser directement mais peut aussi être interne. Par exemple nous gérons des services de DNS ou de mail qui ne sont pas proposés au publique.
</p>
<h2 class="subtitle">
Système d'exploitation
</h2>
<p>
Pour le choix du système d'exploitation qui allait être installé sur nos machines il fallait répondre à un cahier des charges classique:
<ul>
<li>
<b>Libre </b>: Katzei n'utilisant que des logiciels libres le système d'exploitation ne doit pas y faire exception;
</li>
<li>
<b>Léger </b>: Comme nous utilisons beaucoup de machines virtuelles, chacune d'elles doit être la plus légère possible;
</li>
<li>
<b>Stable </b>: Les administrateurs travaillant sur katzei sur leur temps libre il ne faut pas utiliser un système d'exploitation qui casse souvent oui qui change en profondeur régulièrement.
</li>
</ul>
</p>
<p>
Un certain nombre de distribution Linux ou de BSD répondent à ce cahier des charges et le choix parmi celle-ci est plus une affaire de goûts que de réel supériorité de l'une ou de l'autre. Nous avons choisi <a href="https://debian.org">Debian</a> qui est relativement léger (il s'installe et tourne très confortablement avec moins de 1Go de RAM) et extrêmement stable (certaines mauvaises langues diront même immobile), chaque version étant maintenue 2 ans puis continuant à recevoir des correctifs de sécurité pendant 2 à 4 ans supplémentaires. Le prix a payer pour cette stabilité est de n'avoir que rarement des logiciels à jour (même si les correctifs de sécurités sont bien entendu portés sur les anciennes versions) et quand une version de logiciel comporte un problème il est courant que ce problème ne soit pas corrigé avant la version suivant de de Debian.
</p>
<p>
D'autres distributions Linux auraient pu êtres utiliser comme <a href="https://www.centos.org/">CentOs</a> (une recompilation gratuite des sources de <a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux">Red Hat Enterprise Linux</a>), <a href="https://ubuntu.com/server">Ubuntu Server</a> ou encore des version de <a href="https://fr.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a> (comme <a href="https://www.freebsd.org/fr/">FreeBSD</a>).
<h2 class="subtitle">
Hyperviseur
</h2>
<p>
Un hyperviseur est un logiciel permettant de gérer et d'héberger une ou plusieurs machines virtuelles (guest ou invité) sur une même machine physique (host ou hôte).
</p>
<p>
Nous utilisons l'hyperviseur <a href="https://www.proxmox.com/en/proxmox-ve">Proxmox-ve</a> (généralement simplement désigné par "Proxmox") pour gérer le gros de l'infrastructure de Katzei. Cette distribution Linux est très proche de Debian et se contente d'y rajouter quelque paquets. Proxmox fournit une interface graphique via un serveur web simple permettant de faire toutes les opérations courantes.
</p>
<h2 class="subtitle">
Supervision
</h2>
<p>
Quand on essaye de construire une infrastructure stable a destination du publique il est indispensable de pouvoir être mis au courant quand un problème apparaît sur cette infrastructure. C'est ce qu'on appel la supervision.
</p>
<p>
Il existe beaucoup de systèmes de supervision comme <a href="https://www.nagios.org" >Nagios</a>, le système historique, ou des système très modernes comme <a href="https://https://prometheus.io/">Prometheus</a>, permettant de récolter des centaines de paramètres sur les machines et de les agréger dans le temps. Notre infrastructure restant très simple nous n'avons pas besoin de quelque chose d'aussi puissant que Prometheus et vue le nombre de paramètres remontés le configurer correctement pour nos besoin aurait été bien trop long. Nous avons finalement choisis d'utiliser <a href="https://icinga.com/">Icinga2</a>, un dérivé (complètement réécrit depuis) de Nagios, simple à configurer et avec une jolie interface.
</p>
<p>
<b>Attention :</b> si vous utilisez Icinga2 sous Debian Buster, le paquet présent sur les dépôts de la distribution à un défaut empêchant de l'utiliser comme agent. Pour éviter ce problème il est préférable d'installer la version présente sur le dépôt de Icinga.
</p>
<h2 class="subtitle">
Mail
</h2>
<p>
Même si Katzei ne fournit pas d'adresse mail à ses utilisateurs, il est indispensable de pouvoir envoyer des mails pour les services ou la supervision et de pouvoir en recevoir (au moins pour respecter les obligations légales). Katzei étant auto-hébergé, notre adresse IP est automatiquement rejetés par les gros hébergeurs de mail. Pour contourner ce blocage nous sommes obligés de passer par le relais de Free. Nous perdons donc un peu d'indépendance sur ce point mais c'est, malheureusement, le seul moyen pour envoyer des mails en restant auto-hébergé chez un opérateur grand publique.
</p>
<p>
Même si il existe un grand nombre de logiciels pour envoyer et recevoir des mails, le couple <a href="http://www.postfix.org/">Postfix</a>/<a href="https://www.dovecot.org/">Dovecot</a> est le plus courant. C'est donc logiquement celui que nous avons choisis. Même si il existe de nombreux tutoriels et une grosse documentation sur le sujet, la configuration de Postfix reste compliquée et peu intuitive. Si vous voulez vous lancer dans l'aventure prévoyez qu moins quelque jours pour réussir a le faire marcher convenablement (et avoir une configuration acceptable).
</p>
<h2 class="subtitle">
Domain Name Systeme (DNS)
</h2>
<p>
Dans une vision (très) simplifiée le DNS est l'annuaire qui permet d'associer un nom de domaine (par exemple "katzei.fr") à une adresse IP. Il existe deux type de serveurs DNS:
<ul>
<li>
<b>Les serveur faisant autorité </b>: Ces serveur sont ceux détenant la vérité et la partageant avec les autres. Ils font références sur le réseau et tout résolveurs donnant une réponse en contradiction avec les serveur faisant autorité sont considérer comme menteurs;
</li>
<li>
<b>Les résolveurs DNS </b>: ces serveurs sont ceux que vous contactez pour connaître l'adresse d'un site. Ils contacterons les différents serveurs faisant autorité jusquà trouver l'adresse que vous cherchez. En général vous utiliserez le résolveur DNS de votre fournisseur daccès a internet.
</li>
</ul>
</p>
<p>
Le fait que Katzei soit auto-hébergé rend assez absurde d'héberger nous même les serveurs faisant autorité pour katzei.fr. Nous utilisons donc les serveurs du bureau d'enregistrement à qui nous louons le domaine, à savoir OVH.
</p>
<p>
Comme pour n'importe quel infrastructure un peu compliqué nous avons besoin de définir un grand nombre de sous domaines pour les adresses des différentes machines. Pour ce faire nous utilisons un un résolveur DNS menteur qui au lieu de nous renvoyer les adresses publiques des services (la réponse que vous obtenez quand vous contactez un résolveur DNS publique) nous renvois les adresses privés, et inaccessible de lextérieur, des services. Pour ce résolveur nous utilisons <a href="https://nlnetlabs.nl/projects/unbound/about/">Unbound</a> qui a l'avantage d'être simple a configurer pour cette tâche.
</p>
{% endblock %}

View File

@@ -0,0 +1,146 @@
{% extends "/meta/master.html" %}
{% block main %}
<h1 class="title">
Matériel
</h1>
<p>
Pour assurer les différents rôles au sein de katzei nous avons besoin de 3 ordinateurs, un switch et un routeur. Nous utilisons des machines puissantes pour les différents rôles mais il n'est pas obligatoire d'utiliser des machines aussi puissantes. Nous utilisons principalement des machines déjà utilisés par les membres avant de la création de Katzei et ou seule une partie de l'usage est dédié à Katzei. Gardez en tête qu'il est tout à fait possible (mais moins amusant) de partir avec un simple <a href="https://fr.wikipedia.org/wiki/Raspberry_Pi" >Raspberry Pi</a> et deux disques durs externes.
</p>
<h2 class="subtitle">
Hyperviseur
</h2>
<p>
L'hyperviseur est le cœur de l'hébergeur. C'est lui qui héberge les différentes machines virtuelles aussi bien pour les services que pour le reste de l'infrastructure. Si vous faites une architecture du même type que Katzei ce sera de loin la machine la plus cher (même si il est possible de ne pas la payer trop cher en restant à l'écoute des bon plans).
</p>
<table class="hardware">
<tr>
<td>
CPU
</td>
<td>
<a href="https://www.amd.com/fr/products/cpu/amd-ryzen-7-2700#product-specs" target="_blank" rel="noopener noreferrer">AMD Ryzen 7 2700</a>
</td>
</tr>
<tr>
<td>
RAM
</td>
<td>
48 Go
</td>
</tr>
<tr>
<td>
Stockage
</td>
<td>
2×2To (Disques durs mécaniques) et 1×128Go (SSD SATA)
</td>
</tr>
</table>
<h2 class="subtitle">
Supervision
</h2>
<p>
Cette machine a pour rôle de surveiller les autres et de prévenir les administrateurs si quelque chose se passe mal. Elle n'a pas besoin d'être très puissante mais c'est une bonne idée de laisser cette tâche à une machine dédiée. Cette machine est l'ancien serveur web d'un membre et est bien trop puissante pour ce rôle. Un simple raspberry pi avec un SSD externe suffirait.
</p>
<table class="hardware">
<tr>
<td>
Modèle
</td>
<td>
<a href="https://ark.intel.com/content/www/fr/fr/ark/products/83257/intel-nuc-kit-nuc5i3ryh.html">Intel NUC NUC5i3RYH</a>
</td>
</tr>
<tr>
<td>
CPU
</td>
<td>
<a href="https://ark.intel.com/content/www/fr/fr/ark/products/84697/intel-core-i3-5010u-processor-3m-cache-2-10-ghz.html" target="_blank" rel="noopener noreferrer">Intel core i3-5010U</a>
</td>
</tr>
<tr>
<td>
RAM
</td>
<td>
8 Go
</td>
</tr>
<tr>
<td>
Stockage
</td>
<td>
1×128Go (SSD sata)
</td>
</tr>
</table>
<h2 class="subtitle">
Backup
</h2>
<p>
Comme pour la machine de supervision cette machine est le recyclage du NAS d'un membre. Comme il est encore utilisé par le membre, seul sera référencé sur cette page l'espace de stockage dédié à Katzei. Pour la gestion des sauvegardes il est possible de prendre un NAS tout fait mais il est souvent plus économique (et bien plus amusant) de construire soit même la machine et de choisir les logiciels selon ses besoins. Pour ses performances ne vous fiez pas à ses 4 cœurs, il utilise une architecture très basse consommation et est très peu puissant. La particularité de cette machine est d'utiliser une clef USB pour héberger le système d'exploitation afin de laisser le plus de place possibles aux disques durs pour le stockage.
</p>
<table class="hardware">
<tr>
<td>
CPU
</td>
<td>
<a href="https://ark.intel.com/content/www/fr/fr/ark/products/91533/intel-celeron-processor-j3160-2m-cache-up-to-2-24-ghz.html" target="_blank" rel="noopener noreferrer">Intel Celeron J3160</a>
</td>
</tr>
<tr>
<td>
RAM
</td>
<td>
4 Go
</td>
</tr>
<tr>
<td>
Stockage
</td>
<td>
1×4To (Disques durs mécaniques) 1×16Go (Clef USB)
</td>
</tr>
</table>
<h2 class="subtitle">
Routeur
</h2>
<p>
Pour le routeur principal nous utilisons actuellement une box fournie par Free. Même si c'est de loin la meilleur box fournie par un opérateur grand publique, elle reste très limité pour un usage d'hébergeur. C'est notamment a cause de cette box qu'il nous est actuellement impossible de fournir les services en IPV6. Une migration vers un routeur plus sérieux est prévu à court terme.
</p>
<table class="hardware">
<tr>
<td>
Modèle
</td>
<td>
Freebox mini
</td>
</tr>
</table>
<h2 class="subtitle">
Switch
</h2>
<p>
Les routeurs avec un grand nombre de port Ethernet coûtent cher. Il est donc plus intéressant d'utiliser un switch comme multi-prise pour pouvoir y brancher plus d'éléments. Le switch que nous utilisons n'est pas administrable et ne gère pas les <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_local_virtuel">VLAN</a> bref c'est un switch 8 ports tout ce qu'il y a de plus basique. Nous l'avons choisit parce quun membre en avait un sous la main.
</p>
<table class="hardware">
<tr>
<td>
Modèle
</td>
<td>
Netgear GS108V4
</td>
</tr>
</table>
{% endblock %}

View File

@@ -0,0 +1,50 @@
{% extends "/meta/master.html" %}
{% block main %}
<h1 class="title">
Sauvegardes
</h1>
<p>
Il est toujours important de sauvegarder ses données en cas de problème, un disque dur n'est pas éternel. Quand on manipule les données des utilisateurs, ce conseil devient une obligation. Cette page détaille donc la politique de sauvegarde mise en place au sein de Katzei et son application pratique.
</p>
<h2 class="subtitle">
Politique de sauvegarde
</h2>
<p>
Chaque serveur sauvegarde sa configuration, sa documentation interne et les données des utilisateurs toutes les nuits entre minuit et 6h (l'heure exacte dépend du serveur).
</p>
<p>
Les sauvegardes qui sont conservées sur les 7 derniers mois de service sont les suivantes :
<ul>
<li>
Les 8 dernières sauvegardes quotidiennes
</li>
<li>
Les 5 dernières sauvegardes hebdomadaires
</li>
<li>
Les 6 dernières sauvegardes mensuelles.
</li>
</ul>
</p>
<h2 class="subtitle">
Les sauvegardes en pratique
</h2>
<p>
En pratique, les sauvegardes sont effectuées en clair sur une machine différente de l'hyperviseur mais située dans le même local{# et une seconde sauvegarde est effectuée sur une machine hébergée à moins de 150km #}. Cette sauvegarde se fait grâce à l'outil <a href="https://borgbackup.readthedocs.io/en/stable/">Borg</a> avec la surcouche <a href="https://torsion.org/borgmatic/">Borgmatic</a> et une série de scripts internes pour automatiser la préparation du dépôt de sauvegarde et de la configuration.
</p>
<h2 class="subtitle">
Intégrité des sauvegardes
</h2>
<p>
Le format utilisé par Borg pour gérer les sauvegardes garantit leur intégrité. Cette garantie d'intégrité interdit donc, pour quelque raison que ce soit, de retirer des données d'une sauvegarde passée. Si, par exemple, un utilisateur demande le retrait des données le concernant, elles seront retirées des serveurs courants mais il sera impossible de les retirer des sauvegardes sous peine de perdre l'intégralité des données des autres utilisateurs en cas de problème. Aussi, l'oubli total d'un utilisateur ne peut, en pratique, se faire moins de 7 mois après la demande.
</p>
<h2 class="subtitle">
Test des sauvegardes
</h2>
<p>
Les garanties fournies par Borg sur l'intégrité des sauvegardes ne sont pas suffisantes pour garantir aux utilisateurs que le service gardera un bon niveau de disponibilité. En effet, nous ne sommes pas à l'abri d'un bug de Borg, ou, plus probable, que l'administrateur du service empire le problème par manque d'expérience. Il faut donc régulièrement essayer de redémarrer les services à partir d'une sauvegarde sur une machine vide, afin de savoir comment s'y prendre en cas de crise. Une sauvegarde non testée doit être considérée comme une sauvegarde corrompue.
</p>
{% endblock %}