Introduction
Important
Cet article de blog présente mon infra à l’instant T. Un autre, à jour, sera publié lors de modification majeures. Cet article sera ensuite catégorisé obsolète.
Dans cet article, je vais vous présenter l’infrastructure que j’ai mise en place pour auto-héberger mes services. Ce tour d’horizon vous donnera une idée des équipements matériels et logiciels que j’utilise, ainsi que des raisons qui m’ont poussé à faire ce choix.
Pourquoi j’ai choisi l’auto-hébergement
J’ai choisi d’héberger mes services pour plusieurs raisons :
- Contrôle total : Pouvoir configurer et ajuster chaque aspect de mon infrastructure selon mes besoins sans dépendre d’un fournisseur externe.
- Confidentialité : Mes données m’appartiennent et l’auto-hébergement m’assure qu’il n’y a pas de regards indiscrets sur mes données.
- Apprentissage : Monter et gérer cette infrastructure m’a permis d’acquérir mes connaissances actuelles.
- Pour le fun / pour tuer le temps : J’aime expérimenter avec la technologie et trouver des solutions à des problèmes techniques. C’est une passion qui occupe mon temps libre de manière productive.
Contraintes
Je n’ai pas beaucoup d’argent à mettre dans des factures d’électricité, il était et est important que le matériel choisi ne soit pas trop énergivore. Parallèlement, du matériel peu énergivore devrait produire moins de chaleur, et je n’aime pas la chaleur.
Mon infrastructure
Matériel
- Un Raspberry Pi 4
- 8 Go de RAM
- Carte SD de 16 Go pour le système
- SSD de 128 Go en USB pour le dossier
/var - 3 To de HDDs pour le stockage des volumes
Note
J’utilise un SSD pour le dossier
/varpour préserver les cartes SD et l’eMMC, en conservant une vitesse correcte.
Dû à des contraintes budgétaires qui sont bientôt résolues, je n’utilise plus qu’un Raspberry Pi 4 et j’ai dû enlever certains éléments comme le monitoring.
Logiciel
Je n’utilise que Docker ainsi que quelques outils système sur mon Raspberry. Voici quand même ma liste de “Must-Have” :
- vim / nano
- htop / btop / top
- git
- curl / wget
- ping
- ip
- dig
- nslookup
Je dockerise ensuite de nombreux services, les principaux étant :
- Traefik : pour le routage en mode reverse proxy vers mes différents services
- Authentik : pour le SSO sur les services compatibles et la protection en mode forward proxy des services ne proposant pas de login
- Portainer : pour la gestion de mes containers
- Gitea : pour avoir une copie à domicile de mes repos, j’y mets aussi mes repos privés qui me servent à la configuration de l’infra (fichiers de config, compose files…)
Ainsi que tous les autres services qui ne sont pas utiles à la gestion de l’infra, que je détaillerai dans d’autres articles.
Sécurité
Accès
Je n’expose que les ports requis pour les services que je souhaite rendre accessibles, à savoir 80 et 443 pour le HTTP et le HTTPS. Si un service requiert que j’expose un autre port (comme mon serveur IRC), je l’expose si je souhaite y accéder depuis l’extérieur.
L’accès en SSH à la machine se fait depuis le réseau local ou via mon VPN.
SSL
Pour avoir le HTTPS sur mes services, j’utilise un certificat wildcard ainsi qu’un certificat standard (*.millefeuille42.fr et millefeuille42.fr). Mon registrar (OVH) me permet de les obtenir et de les renouveler via leur API, le tout gratuitement.
Dans le cas où je ne peux pas (Namecheap et Scaleway), j’utilise le resolver Let’s Encrypt de Traefik pour les obtenir et les renouveler automatiquement et dynamiquement.
Forward Proxy
Pour protéger mes services qui n’ont pas vocation à être publics (et/ou qui ne fournissent pas d’authentification d’eux-mêmes, comme Homer), j’utilise le mode Forward Proxy de Authentik avec Traefik. Ça me permet de gérer les accès à ces services depuis un seul endroit.
Déploiement des services clés
Pour alléger cet article, je détaillerai le déploiment des outils clés (Traefik, Authentik, Portainer, Gitea), dans un autre article. Je mettrais le lien ici lorsque ce sera fait.
Pilotage d’autres infrastructures
Les services présentés me permettent de gérer d’autres serveurs, notamment pour des proches. Pour Portainer, il me suffit d’ajouter un agent sur le serveur, et Authentik permet un branding selon le domaine d’accès. Il me reste à installer et configurer Traefik sur le point d’entrée désiré. La gestion des utilisateurs d’Authentik me permet d’isoler les utilisateurs des différents serveurs.
Conclusion
L’auto-hébergement est une aventure enrichissante qui permet de reprendre le contrôle sur ses données et d’acquérir de nombreuses compétences techniques. Bien que cela demande du temps et des efforts, les avantages en termes de confidentialité, de contrôle et de satisfaction personnelle en valent largement la peine. Si vous êtes passionné par la technologie et que vous aimez les défis, je vous encourage fortement à essayer l’auto-hébergement. Vous ne le regretterez pas.