Auto hébergement maison

Alors non on ne parle pas d’hébergement physique, mais de choses virtuelles.

Jusqu’à récemment, j’hébergeais un certain nombre de services en colloc (une VM) sur un serveur gentiment mis à disposition par un pote d’une ancienne vie. Mais voilà, les serveurs comme les hommes sont mortels, et celui dont il est question commençait à donner de sérieux signes de fatigue (corruption disque pour les intimes), bref il était temps de couper le cordon.

Plusieurs solutions étaient s’offraient à moi :

  • prendre une VM dans un cloud (genre OVH pour consommer français)
  • passer du côté obscur de la force en laissant tomber la vie privée
  • auto héberger (à la maison).

La solution VM cloud a des avantages (c’est facilement accessible, on a une IP publique) mais aussi un coût d’abonnement, même s’il reste limité. Bien sûr il faut savoir gérer un serveur, idem que pour la solution 3.

Passer du côté obscur c’est abandonner le côté privé pour mettre toutes les données dans les mains de nos maîtres Internet (Google, WordPress and Co.). Pour rappel j’ai mon domaine perso avec mon blog, mon email, mes contacts, calendrier, tout en hébergement privé. Le fait d’utiliser des « services dont vous êtes le produit », sur lesquels on n’a aucun contrôle et qui sont critiques me fait un peu flipper… Et si demain Google décide de désactiver votre adresse email ?

Donc vous l’aurez compris c’est la solution auto hébergement à la maison que j’ai choisi, pour plusieurs raisons :

  • j’ai la fibre avec une adresse IP publique fixe, merci Free
  • j’ai aussi besoin d’un petit serveur à la maison pour mon réseau interne, autant mutualiser
  • avoir le contrôle de mes données c’est important pour moi.

Besoins

La liste des besoins :

  • un serveur de courrier pour ma boîte perso
  • un WordPress pour mon blog
  • un serveur de calendrier, de contacts et de tâches
  • un point de synchronisation pour sauvegarder des données (documents, photos, …)
  • un serveur Blynk pour mes bidouilles électroniques
  • en option pouvoir héberger un Kodi pour lire des vidéos.

Matériel

J’avais déjà un Raspberry 4 sous Raspbian qui faisait office de Kodi, serveur Blynk et synchro de fichiers. J’aime bien les Raspi mais ils ont un GROS inconvénient : l’absence de stockage performant intégré, et un petit inconvénient : ce sont des distributions Linux moins « standards ».

J’ai donc cherché un petit boîtier avec SSD intégré. Vu que je ne vais pas faire tourner d’environnement graphique complexe pas besoin d’un foudre de guerre. J’ai jeté mon dévolu sur ça : un Minis Forum N40, pour 150 €.

Alors ok c’est un Celeron Gemini Lake N4020 mais à un moment il faut arrêter l’escalade, ça suffit largement pour mon besoin. En tout cas il coche toutes les cases :

  • processeur 2 cœurs entre 1,1 et 2,8 GHz
  • 4 GO de mémoire
  • 64 GO de SSD intégré, et on peut brancher du stockage externe, que j’ai déjà
  • port giga Ethernet
  • complètement passif (pas de ventilateur)
  • ne consomme pas grand chose (18W grand max)
  • tout petit (120 x 120 x 27).

Là avec tout ce dont j’ai besoin installé (sauf Kodi remplacé par la box TV) il est tranquille :

   System load:             0.03
Usage of /: 21.4% of 55.91GB
Memory usage: 24%
Swap usage: 7%
Temperature: 44.0 C
Processes: 176

Logiciel

OS : Ubuntu Seveur

Bien sûr je suis un fervent défenseur des logiciels libres, j’ai donc commencé par me faire une clé USB bootable Ubuntu Serveur, virer complètement la partition Windows 10 fournie avec le Minis et installer Ubuntu (Serveur donc) sans aucun problème (pas de bidouille UEFI requise).

Email : Postfix + Dovecot + Postgrey

J’utilisais jusque là Postfix en relais SMTP, Courier pour le IMAP et Dovecot pour… le SASL (authentification SMTP). J’ai largement simplifié en me passant de Courier et en utilisant Dovecot à la fois pour IMAP et l’authent SMTP.

Du coup ça reste assez « simple » à configurer. J’ai utilisé le script Perl de migration du Maildir (dossier contenant les emails) au format Dovecot trouvé sur le site de ce dernier et cela s’est étonnement bien passé (pourtant j’ai plus de 10 ans d’historique d’emails dans plusieurs dossiers).

Pour accéder à mes emails j’utilise Thunderbird sur mon ordi portable Ubuntu et BlueMail sur mon tel Androïde. Après rapide mapping des dossiers ça fonctionne parfaitement en IMAPS.

Petite subtilité, si Free permet de débloquer le SMTP en sortie ils ne permettent pas à leurs IP client (incluant mon IP fixe) d’envoyer du courrier, elles sont en liste noire chez les gros joueurs (Google, Microsoft). Il faudra passer par leur relais (en utilisant relayhost dans Postfix). Suffit de le savoir quoi.

Au passage je décide de ne plus accepter les emails pour postmaster vers mon domaine, même si ce n’est pas une bonne pratique, cela coupe drastiquement la quantité de spam reçue. Je garde mes réglages super agressifs de vérification des émetteurs et bim, les pollueurs se cassent les dents.

Et pour ceux qui insistent, j’utilise aussi Postgrey, un mécanisme de « grey listing ». En gros à la première tentative d’envoi d’email je répond « essaie plus tard mon pote », sachant qu’un serveur bien élevé le fera, alors qu’un spammeur ne reviendra pas. Bien sûr Postgrey conserve la liste des serveurs bien élevés pour ne pas les embêter à nouveau dans le futur. Donc au coût d’un délais initial dans la réception des emails légitimes (ce qui peut être horripilant quand on attend un email de réinitialisation de mot de passe), on élimine encore des cochonneries.

Blog : Apache + WordPress + MySQL

Mon blog était sous WordPress (auto hébergé) et il y restera, vu que je suis satisfait de l’outil. Après installation et migration des données (copie de la base, récupération des uploads) tout fonctionne, pas grand chose à en dire.

WordPress utilise MySQL pour stocker les données, ce n’est pas ma base préférée (qui est Postgres) mais ça marche.

Et bien sûr tout ce qui est HTTP est publié via Apache HTTP.

Calendrier, contacts et tâches : Apache + Radicale

Radicale est un serveur WebDAV simple qui permet de synchroniser facilement calendrier, contacts et tâches. Il est caché derrière Apache en reverse proxy, le contrôle d’accès étant réalisé par ce dernier.

Ensuite il suffit de trouver une client Androïde vu que sur ce dernier tout est fait pour utiliser les services Google (étonnant !). J’utilise depuis des années DAVX5 qui fonctionne parfaitement.

Blynk

J’ai repris l’installation que j’avais telle quelle, il faut juste installer un JRE (beurk) et jouer du crontab pour lancer au démarrage.

Synchro de fichiers : Unison

J’adore et je déteste Unison. Je l’adore parce que quand il fonctionne, il fonctionne très bien, facilitant la synchro de données entre plusieurs machines. Et parfois je le déteste parce qu’il y a des incompatibilités de protocole entre versions pourtant proches, en gros dès que l’on synchronise différents OS c’est la roulette russe.

J’ai donc monté mon SSD USB de 400 G et paf, ça synchronise sans problème.

Sécurité : Letsencrypt et Certbot

Au passage un gros coup de chapeau à Letsencrypt (et donc l’EFF) qui a réussi à rendre l’obtention de certificats TLS accessible à tous, et je peux vous dire que ce n’était pas gagné d’avance. Avec Certbot il est possible très facilement d’obtenir des certificats et de les renouveler automatiquement, vraiment pratique.

Du coup je n’utilise que des protocoles sécurisés : HTTPS (avec un redirect permanent de HTTP), SMTPS vers le relais Free, IMAPS.