Projets

Ce que je construis et fais tourner en dehors du travail, et des projets de mes études et de ma thèse.

  1. 2024 – Présent

    homelab

    Plateforme Kubernetes, gérée comme de la production

    Un cluster k3s de 10 machines qui héberge une trentaine d’applications self-hosted. Tout, de l’installation de l’OS au déploiement de chaque application, est déclaré dans git et déployé par Argo CD.

    • Aucun port entrant ouvert : Cloudflare Tunnel, un WAF, Gateway API et le SSO devant chaque application
    • Mises à jour automatiques à trois niveaux : OS des nœuds, Kubernetes et applications
    • Restaurations testées, sauvegardes hors site et un GPU qui se réveille à la demande pour des LLM locaux
    • Kubernetes (k3s)
    • Argo CD
    • Cilium
    • Vault
    • Authentik
    • Longhorn
    • Fedora CoreOS
    • Ansible
    • Prometheus
    • Grafana
    • Ollama
  2. 2026 – Présent

    WO

    Application web pour les voyages en groupe, construite et exploitée en production

    Organise un week-end entre amis, en famille ou entre collègues au même endroit : choisir un logement ensemble, partager les dépenses et faire les comptes, les repas et la liste de courses, les activités, le trajet de chacun avec une estimation du CO2, un album photo et une playlist communs. Disponible en quatre langues, sur ordinateur et comme application sur téléphone.

    • Next.js, TypeScript et PostgreSQL ; tests unitaires et de propriétés avec Vitest, tests de bout en bout sur ordinateur et mobile avec Playwright
    • Hébergée en France sur un serveur OVHcloud transformé en cluster k3s à un nœud, avec l’infrastructure en OpenTofu et Flux qui déploie le chart Helm de chaque version, avec retour arrière en cas d’échec
    • Pensée pour le RGPD : coordonnées de paiement chiffrées au repos, export des données et suppression du compte, nettoyage automatique 18 mois après un voyage
    • Next.js
    • React
    • TypeScript
    • PostgreSQL
    • Drizzle
    • Tailwind CSS
    • Playwright
    • Kubernetes (k3s)
    • Helm
    • Flux
    • OpenTofu
    • OVHcloud
  3. 2025 – Présent

    freqtrade-operator

    Operator Kubernetes open source, écrit en Go

    Fait tourner des bots de trading freqtrade sur Kubernetes. Bots, stratégies, backtests et interface web sont des ressources personnalisées : toute une configuration de trading se déclare et se versionne comme n’importe quelle application.

    • API versionnée, de v1alpha1 à v1beta1, avec des webhooks de conversion
    • Chart Helm publié en artefact OCI ; images signées, avec SBOM
    • Testé en CI avec envtest, et de bout en bout sur un cluster kind
    • Go
    • controller-runtime
    • Kubernetes CRDs
    • Helm
    • GitHub Actions
    • cosign
  4. 2026

    wol-relay

    Petit service Go pour le homelab

    Transforme un appel HTTP en broadcast Wake-on-LAN. Un pod ne peut pas l’envoyer lui-même, car les réseaux de pods ne relaient pas les broadcasts : le relais tourne donc sur le réseau hôte d’un nœud. Il allume la station GPU qui fait tourner mes LLM locaux seulement quand un service en a besoin.

    • Environ 150 lignes de Go, bibliothèque standard uniquement, avec des tests
    • Image distroless non-root pour amd64 et arm64, construite sur des runners natifs puis fusionnée en un seul manifeste
    • Chart Helm avec réseau hôte et toutes les capabilities retirées, déployé par Argo CD
    • Go
    • Kubernetes
    • Helm
    • Docker
    • GitHub Actions
  5. 2023 – 2025

    ScaleHub

    Outil de banc d’essai issu de ma thèse

    Monte des clusters Kubernetes éphémères qui mélangent serveurs bare-metal, VM et Raspberry Pi, puis y exécute des expériences reproductibles de passage à l’échelle d’Apache Flink. Les résultats de mes articles à IC2E 2024 et SAC 2026 et de ma thèse en sont issus.

    • Provisionne des nœuds Grid’5000 et un cluster de Raspberry Pi local à partir d’un seul fichier de configuration, réunis en un seul cluster K3s par un réseau maillé Tailscale
    • Ansible déploie toute la pile (Flink, Kafka, MinIO, Prometheus, VictoriaMetrics, Grafana, Chaos Mesh), chaque composant séparément
    • Un service dans le cluster, piloté par MQTT, redimensionne Flink palier par palier via des savepoints, ajoute de la latence réseau avec Chaos Mesh et exporte les métriques
    • Python
    • Kubernetes (K3s)
    • Ansible
    • EnOSlib
    • Apache Flink
    • Kafka
    • Chaos Mesh
    • Prometheus
    • VictoriaMetrics
    • Tailscale
  6. 2020

    Interceptor

    Programmation système Linux en C, pendant mon master

    Un traceur qui s’attache à un processus x86-64 en cours d’exécution et modifie ce qu’il exécute : il pose des points d’arrêt, appelle des fonctions dans le processus cible, injecte du code dans sa mémoire et y redirige une fonction avec un trampoline. Avec le projet de fusée au CNES qui a suivi, c’est ce qui m’a fait entrer dans le C et les systèmes Linux.

    • Lit et écrit la mémoire d’un autre processus via /proc/<pid>/mem, et trouve sa disposition dans /proc/<pid>/maps
    • Trouve les fonctions dans la table des symboles ELF avec libelf, y compris dans les exécutables position-independent
    • Appelle posix_memalign et mprotect dans le processus cible pour obtenir une page exécutable pour le code injecté
    • C
    • Linux
    • ptrace
    • libelf
    • x86-64
    • CMake