Deblan blog

Simon Vieille

DevOp animé par la culture du libre et du hacking

Service d'hébergement web

Je suis membre du Collectif des Hébergeurs Alternatifs,Transparents, Ouverts, Neutres et Solidaires : Chatons.org. Ce collectif rassemble des structures souhaitant éviter la collecte et la centralisation des données personnelles au sein de silos numériques du type de ceux proposés par les GAFAM (Google, Apple, Facebook, Amazon, Microsoft).

Ainsi, je propose de partager mon serveur auto-hébergé depuis une dizaine d'années.

Offre :

Elle est assez similaire à ce que vous pourriez trouver plus ou moins gratuitement :

  • Un serveur web configuré aux petits oignons
  • Frontend NGINX avec cache des assets (proxy sur demande)
  • Backend Apache2
  • PHP 7.3 (FPM), autres langages sur demande
  • MySQL 5.5, PostgreSQL* 9.4
  • Un espace de stockage fonction de l'espace disque disponible
  • Système de backup

Accès au serveur :

  • Accès SSH avec shell ZSH par défaut, sans restriction
  • SFTP

Les plus :

Infrastructure :

  • Derrière une ligne VDSL2 chez Free (80Mb/s descendant, 20Mb/s montant)
  • Core i5, 16Go de RAM ECC, système Debian GNU/Linux 9
  • Système et bases de données sur SSD
  • Data sur HDisk
  • Aucun panel : je réalise l'ensemble des configurations

À qui est destinée l'offre ?

Tout le monde peut bénéficier de cette offre. Cependant, je privilégie les projets dont l'objectif est de promouvoir le logiciel libre, par quelque moyen que ce soit, les personnes avec des revenus ne permettant pas l'accès à l'hébergement facile et enfin les étudiants. Pour faire une demande, contactez moi via ce formulaire. Prenez le temps d'expliquer votre projet :)

Les termes étoilés indiquent que ce sont des services non délivrés par défaut. J'analyse le coût et accepte ou pas la demande.

Conditions générales d'utilisation

Les CGU doivent être lues et acceptées pour bénéficier d'un ou plusieurs des services proposés. Cet engagement sera fera par e-mail.


Sauvegarde, panne, reprise de service

Si vous me suiviez depuis un moment, vous savez sans doute que je suis hébergé chez moi. J'ai en effet deux machines dans mon appartement qui me servent de serveurs pour mes sites web, mes mails, de l'IRC, GIT, etc. Bref, tout ce qui peut être hébergé dans mon appartement le sera.

J'ai cependant essuyé une panne matérielle qui m'a séparé de mon principal serveur. Une simple panne de disque qui a rendu indisponible ces différents services pendant quelques heures. Pour autant, je n'ai perdu (presque) aucune donnée et en dehors du temps qu'il m'a fallu pour reconfigurer la machine de réplication, tout est reparti dans l'ordre relativement rapidement.

J'en profite donc pour vous donner des pistes qui pourraient vous aider dans votre infrastructure. La question du jour est donc simple : comment mettre en place des outils de sauvegarde suffisamment performants pour rétablir des services assez rapidement ?

J'ai donc deux machines : celle qui offre tous les services (Hinata) et celle qui fait office de serveur réplication (Haruhi). Je n'ai pas encore l'envie de faire de la haute disponibilité (et dans un appartement, c'est peu probable que ça arrive…).

Sur Hinata était connecté un disque dur qui hébergeait de la sauvegarde versionnée. En effet, j'utilise l'excellent rsnapshot qui s'appuie sur Rsync et construit des sauvegardes sur des périodes données. J'ai 3 copies journalières, une copie quotidienne conservée pendant 7 jours, une copie par semaine conservée pour 1 mois et une copie mensuelle conservée sur une année…ce qui fait près de 25 versions ! Mes sites web y étaient sauvegardés, ainsi que mes dump SQL générés par wetddump (disponible sur mon dépot debian). J'y plaçait également des sauvegardes des répertoires /etc et /home. Mais ce n'est pas suffisant. Pour peu comme ce disque soit HS et qu'Hinata tombe avec, plus aucune donnée n'aurait été disponible. J'avais donc une synchronisation quotidienne des services sur Haruhi et une copie de sauvegarde des fichiers de configuration. J'en profitais également pour générer un fichier contenant la liste des paquets installés sur Hinata et je m'assurait que les utilisateurs et les groupes étaient toujours les mêmes des 2 cotés.

Après un peu plus d'un an de bons et loyaux services, Hinata est tombé et je devais tout refaire fonctionner sur Haruhi. J'ai donc pu installé les paquets qui manquaient en très peu de temps. Je me suis attardé à synchroniser les fichiers de configuration pour avoir le même comportement que sur Hinata et via la sauvegarde la plus récent du disque, je me suis assuré que mes services étaient bien à jour.

Au final, je me suis rendu compte que je n'ai pas sauvegardé 2 programmes compilés manuellement et qui se trouvaient de /usr/local. Je prendrai le temps de les réinstaller plus tard car ils ne sont pas critiques pour moi.

je suis satisfait de tout ça car ça s'est finalement bien passé et sans casse ! Voila pour la petite expérience…


Gist est dans la place !

Une nouvelle version de mon wall vient d'être mise ligne ! Bienvenue GIST.

GIST

  • Du chiffrement : on peut à présent partager du code colorisé chiffré et déchiffré coté navigateur
  • L'application est fondée sur git et permet de versionner les modifications réalisées sur du code et d'accéder aux différentes versions avec des diff
  • Il est à présent possible d'insérer sur son site le résultat de la colorisation
  • L'application est multilingue et fonctionne très bien sur téléphone
  • Toujours et encore libre, avec une procédure d'installation simplifiée !

La procédure d'installation :


Emails : sécurité et identification

Envoyer et recevoir des emails est quelque chose que quasi tout le monde fait chaque jour. Des informations importantes peuvent transiter dans ces messages. On peut avoir des données sensibles (comme des identifiants de connexion vers un service), mais aussi des demandes qui impliquent des actions importantes (exemple : "Pourrais-tu supprimer cette page du site stp ?").

Comment sécuriser le fait d'envoyer des identifiants ? Comment s'assurer que la demande de modification d'un site émane bien d'une personne légitime ? Comment s'assurer que le message qui a été initialement rédigé n'a pas été modifié en cours de route par des personnes malveillantes ou des services peu scrupuleux ?

Voici donc quelques outils que j'utilise quotidiennement, pour moi mais aussi dans mon boulot.

SPF

Mes noms de domaines sont configurés de telle sorte que seuls certains serveurs sont considérés comme légitimes pour envoyer des messages. Pour se faire, j'utilise la norme de vérification Sender Policy Framework (SPF) qui s'appuie sur une configuration DNS. Si un email est expédié en @deblan.fr depuis des serveurs que je n'ai pas désignés légitimes, alors ils devront être rejetés systématiquement.

DKIM

Sur mon principal serveur de mail, j'ai mis en place un système qui, indépendamment de la manière de rédiger un message, signera l'email et permettra au serveur qui le réceptionnera de s'assurer que c'est bien mon serveur qui l'a expédié. DKIM s'appuie sur configuration spécifique du serveur de mail et le DNS.

OpenPGP et certificat

Lorsque je rédige un email, je signe systématiquement le message avec une clé PGP ou bien un certificat. Cela permet de s'assurer, dès la réception du message, que l'email n'a pas été modifié en cours de route. L'utilisation de mes certificats demande aucun mot de passe. Si une personne envoi un mail en utilisant ma machine (bon courage), la personne qui va réceptionner l'email pourrait avoir un doute. Ainsi, quand il s'agit d'informations importantes, j'utilise la clé PGP qui demande un mot de passe avant de signer le mail. On est à présent certain que c'est moi qui a écrit le message.

Enfin, quand je veux envoyer des données sensibles, je vais chiffrer les messages avec la clé publique (PGP) de mon interlocuteur (si toutefois il en a une). Je peux donc chiffrer mon message que lui seul pourra déchiffrer. Aucun intermédiaire sera en mesure le lire le contenu du mail.


Mon gitlab ouvre ses portes !

Aujourd'hui a été installé un outil en ligne pour gérer mes projets versionnés avec GIT.

J'y ai placé l'ensemble de mes projets plus ou moins intéressant :)

Deblan GITLAB