Passer au contenu

Introduction

Ceci est le site de documentation technique pour mon projet de mémoire de Bachelor à la Haute école de gestion de Genève. Le projet est intitulé :

Conception et déploiement automatisé d’un Operating System as Code à l’aide de pratiques Infrastructure as Code.

L’objectif de ce projet est de concevoir et d’automatiser le déploiement d’un serveur homelab personnel en appliquant des pratiques modernes telles que Infrastructure as Code (IaC), GitOps, et DevSecOps. Cette approche garantit que la configuration de l’infrastructure est :

PrincipeDescription
VersionnéeTous les changements sont suivis dans Git et poussés vers un dépôt distant
ReproductibleLes systèmes peuvent être reconstruits de manière fiable à partir de la même source
MaintenableFacilite les mises à jour et les corrections à appliquer et à suivre
SécuriséeLes données sensibles sont chiffrées et gérées correctement

Ce site documente les outils, les processus et l’architecture que j’utilise pour :

  • Construire une machine virtuelle basée sur NixOS sur Proxmox
  • Configurer et gérer l’infrastructure avec OpenTofu.
  • Sécuriser les secrets en utilisant SOPS + age
  • Automatiser les déploiements avec GitHub Actions
  • Exécuter des services utiles dans des conteneurs Docker

Toute la configuration est écrite comme du code, versionnée dans Git, et entièrement reproductible.

L’environnement homelab est construit sur une machine virtuelle NixOS hébergée sur un hyperviseur Proxmox. Cette VM fournit une plateforme pour déployer et gérer plusieurs services conteneurisés, y compris :

  • Tailscale - VPN privé maillé
  • AdGuard Home - blocage des publicités et des traqueurs au niveau DNS
  • Homepage - tableau de bord des services
  • Traefik - proxy inverse
  • Uptime Kuma - surveillance de l’état de disponibilité des services
  • Watchtower - mises à jour automatiques des conteneurs

Cette documentation sert de référence technique tout au long du projet et peut servir à d’autres étudiants ou professionnels qui explorent la conception d’une infrastructure reproductible et pilotée par le code.