diff --git a/content/page/about/index.fr.md b/content/page/about/index.fr.md index 9605179..b9d115a 100644 --- a/content/page/about/index.fr.md +++ b/content/page/about/index.fr.md @@ -9,12 +9,12 @@ menu: params: icon: user --- -Salut ! Moi c'est Etienne, passionné d'**automatisation** et de **homelab**. Je travaille comme **Senior Cloud DevOps Engineer** chez Capgemini. +Salut ! Moi c'est Etienne, j'adore l'**automatisation** et je suis un amateur de projets **homelab**. Je suis un expert Linux et travaille comme **Senior Cloud DevOps Engineer** chez Capgemini. -Motivé par la passion, j'aime comprendre comment les choses fonctionnement, explorer de nouvelles technologies et les expérimenter chez moi, juste pour le plaisir. Mon homelab est passé d'un simple espace de bricolage à un véritable terrain de jeu pour expérimenter la virtualisation, l'orchestration de conteneurs, le réseau, et bien plus encore. +Motivé par la passion, j'aime explorer de nouvelles technologie, comprendre comment elles fonctionnement et les expérimenter chez moi, juste pour le plaisir. Mon lab est passé d'un simple espace de bidouille à un véritable terrain de jeu pour expérimenter la virtualisation, l'orchestration de conteneurs, le réseau, et bien plus encore. -Ce blog est ma façon de documenter ce que je construis, répare, casse (volontairement !) et surtout, ce que j'**apprends**. C'est une référence personnelle, mais aussi un moyen de partager avec la communauté, je m’open source, au cas où quelqu'un d'autre suivrait le même chemin et trouverait mon expérience utile. +Ce blog est ma façon de documenter ce que je construis, casse (volontairement !), répare et surtout, ce que j'**apprends**. C'est une référence personnelle, mais aussi un moyen de partager avec la communauté, de m’open source, au cas où quelqu'un d'autre suivrait le même chemin et trouverait mon expérience utile. -Même si je suis français, J'écris mes notes personnelles en anglais pour perfectionner l'utilisation de cette langue. Mais j’essaye tout de même de les traduire dans ma langue maternelle. +Même si je suis français, J'écris mes notes personnelles en anglais pour perfectionner l'utilisation de cette langue, mais j’essaye tout de même de les traduire dans ma langue maternelle. Si vous travaillez sur un projet intéressant, si vous avez des questions ou si vous souhaitez proposer de nouvelles idées, **n'hésitez pas à me contacter** ! diff --git a/content/page/about/index.md b/content/page/about/index.md index 7a30988..e4f3789 100644 --- a/content/page/about/index.md +++ b/content/page/about/index.md @@ -9,12 +9,12 @@ menu: params: icon: user --- -Hi! I'm Etienne, an **automation** lover and **homelab** enthusiast. I work as a **Senior Cloud DevOps Engineer** at Capgemini. +Hi! I'm Etienne, an **automation** lover and **homelab** projects enthusiast. I am a Linux SME and work as a **Senior Cloud DevOps Engineer** at Capgemini. -Driven by passion, I enjoy understanding how things work, exploring new technologies and experiment those at home, just for the joy of it. My homelab has grown from a simple tinkering space into a full playground for experimenting with virtualization, container orchestration, networking, and more. +Driven by passion, I enjoy exploring new technologies, understanding how they work and experiment those at home, just for the joy of it. My lab has grown from a simple tinkering space into a full playground for experimenting with virtualization, container orchestration, networking, and much more. -This blog is my way of documenting what I build, fix, break (on purpose!), and above all, **learn**. It’s a personal reference, but also a way to give back to the community, I open source myself, in case someone else is on a similar path and finds value in my experience. +This blog is my way of documenting what I build, break (on purpose!), fix, and above all, **learn**. It’s a personal reference, but also a way to give back to the community, I open source myself, in case someone else is on a similar path and finds value in my experience. -Even though I'm French, I write my personal notes in English to perfect my use of this language. But I still try to translate them into my mother tongue. +Even though I'm French, I write my personal notes in English to perfect my use of this language, but I still try to translate them into my mother tongue. If you're working on something cool, have questions, or want to bring new ideas on the table, **feel free to reach out**! diff --git a/content/page/homelab/index.fr.md b/content/page/homelab/index.fr.md index 9278ac8..b7926b7 100644 --- a/content/page/homelab/index.fr.md +++ b/content/page/homelab/index.fr.md @@ -18,16 +18,16 @@ En 2015, je suis passé à un Raspberry Pi 2, à la recherche de meilleures perf En 2018, le besoin de plus de RAM m'a conduit à un Raspberry Pi 3, me permettant d'exécuter encore plus d'applications. Mes trois petites machines fonctionnaient harmonieusement ensemble, dans un bordel bien ordonné. -Enfin, en 2019, mon nouveau travail m'a fait découvrir la virtualisation, avec les machines virtuelles et surtout Docker. Je voulais essayer ça à la maison, et je suis passé a la vitesse supérieure avec un mini-PC compact mais assez puissant qui a posé les bases de mon homelab. +Enfin, en 2019, mon nouveau travail m'a fait expérimenter la virtualisation, avec les machines virtuelles et surtout Docker. Je voulais essayer ça à la maison, et je suis passé a la vitesse supérieure avec un mini-PC compact mais assez puissant qui a posé les bases de mon homelab. --- ## Pourquoi un Homelab ? -Je voulais mon propre terrain de jeu, un espace où casser des objets était non seulement acceptable, mais encouragé. C'est le meilleur moyen d'apprendre à les réparer et, surtout, de vraiment comprendre leur fonctionnement. +Je voulais mon propre terrain de jeu, un espace où je pouvais construire mais aussi casser des choses sans risques, apprendre à les réparer et mieux comprendre leur fonctionnement. -Mon unique serveur était génial, mais tester quoi que ce soit de risqué dessus était devenu problématique. Il exécutait des services critiques comme la domotique ou le DNS, et croyez-moi, ne pas avoir de lumières ni d'internet était un incident majeur pour ma famille. Le serveur était devenu indispensable. Lorsqu'il était en panne, tout était en panne. Plus aussi fun. +Mon unique serveur était génial, mais tester quoi que ce soit de risqué dessus était devenu problématique. Il exécutait des services critiques comme la domotique ou le DNS, lorsqu'il était en panne, tout était en panne. Le serveur était devenu indispensable, et croyez-moi, ne pas avoir de lumières ni d'internet était un incident majeur pour ma famille. Plus aussi fun. -Le premier grand défi que je me suis lancé a été de créer un cluster Kubernetes. Bien sûr, je pouvais en exécuter un sur un seul nœud, mais à quoi bon un cluster avec un seul nœud ? On pourrait dire qu'utiliser Kubernetes pour contrôler mes volets est excessif, et vous auriez raison. Mais ce n'était pas le sujet. +Le premier grand défi que je me suis lancé a été de créer un cluster Kubernetes. Bien sûr, j'aurais pu en exécuter un sur un seul nœud, mais à quoi bon un cluster avec un seul nœud ? On pourrait dire qu'utiliser Kubernetes pour contrôler mes volets est overkill, et vous auriez raison. Mais ce n'était pas le sujet. Je voulais aussi créer de nouvelles machines virtuelles à volonté, les reconstruire de zéro et appliquer les principes de l'Infrastructure as Code. J'aurais pu faire tout cela dans le cloud, mais je voulais un contrôle total. @@ -43,17 +43,17 @@ Cela impliquait : - **Haute disponibilité** : Trois nœuds pour garantir qu'aucun point de défaillance ne puisse tout interrompre. - **Stockage distribué** : Redondance des données entre les nœuds, non seulement pour garantir la disponibilité, mais aussi pour apprendre le fonctionnement des systèmes de stockage d'entreprise. - **Segmentation du réseau** : Plusieurs VLAN pour imiter les topologies de réseau réelles, isoler les services et pratiquer la mise en réseau avancée. - -En résumé, je souhaitais construire un mini datacenter dans un placard. ### Contraintes Bien sûr, la réalité ne correspond pas toujours aux ambitions. Voici ce à quoi je me suis heurté : -- **Espace** : Mon labo devait tenir dans une petite armoire de service cachée au milieu de mon appartement. Pas vraiment une salle de serveurs. +- **Espace** : Mon lab devait tenir dans un petit espace de service cachée au milieu de mon appartement. Pas vraiment une salle de serveurs. - **Bruit** : Le silence était crucial. Ce n'était pas un endroit caché dans un garage ou un sous-sol, mais en plein cœur de notre espace de vie. - **Consommation électrique** : Fonctionnant 24/7, la consommation électrique devait être maîtrisée. Je ne pouvais pas me permettre de tripler ma facture d'électricité juste pour bricoler des machines virtuelles. - **Budget** : Je n'allais pas dépenser des milliers d'euros pour du matériel professionnel. L'équilibre résidait dans la recherche d'un équipement d'occasion fiable et abordable. - **Température** : Franchement, je n'y avais pas pensé… Les mini-PC ne chauffent pas beaucoup, mais le matériel réseau ? C'est une autre histoire. Leçon apprise. +En un mot, je souhaitais construire un mini datacenter dans un placard. + --- ## Présentation de l'Infrastructure @@ -87,9 +87,8 @@ Voici les spec de mes nœuds : | **NIC** | 1Gbps (+ 2.5Gbps) | 1Gbps + 2.5Gbps | 1Gbps + 2.5Gbps | | **M.2** | 2 | 1 | 1 | | **2,5"** | 2 | 2 | 1 | -| | | | | -Chaque nœud a la même configuration de disque : un SSD de 256 Go dans la baie 2,5 pouces pour le système d’exploitation et un disque NVMe de 1 To pour le stockage des données. +Chaque nœud a la même configuration de disque : un SSD de 256 Go dans la baie 2,5" pour le système d’exploitation et un disque NVMe de 1 To pour le stockage des données. ### Réseau Pour le réseau, j’avais deux objectifs principaux : implémenter des VLAN pour la segmentation du réseau et gérer mon pare-feu pour un contrôle plus précis. Mes nœuds étant équipés de cartes réseau 2,5 Gbit/s, j’avais besoin de switchs capables de gérer ces débits, ainsi que de quelques ports Power over Ethernet (PoE) pour mon antenne Zigbee et ses futures fonctionnalités. @@ -123,8 +122,8 @@ La meilleure solution que j'ai trouvée a été de percer deux trous de 40 mm a Voici à quoi ça ressemble : -![homelab-rack-legend.png](img/homelab-rack-legend.png) -![homelab-enclore-open-closed.png](img/homelab-enclore-open-closed.png) +![Front view of my homelab with legend](img/homelab-rack-legend.png) +![Different views of my homelab with open and closed enclosure](img/homelab-enclore-open-closed.png) --- ## Stack Logicielle diff --git a/content/page/homelab/index.md b/content/page/homelab/index.md index ca94525..830534f 100644 --- a/content/page/homelab/index.md +++ b/content/page/homelab/index.md @@ -18,14 +18,14 @@ In 2015, I upgraded to a Raspberry Pi 2, seeking better performance to run multi By 2018, the need for more RAM led me to a Raspberry Pi 3, allowing me to run even more applications. My 3 little machines were running happily together, in a quite ordered mess. -Finally, in 2019, my new job made me discover the virtualization, with virtual machines and above all Docker. I wanted to try that at home, I took a significant step forward with a compact yet quite powerful headless mini PC that laid the foundation of my homelab. +Finally, in 2019, my new job made me experiment the virtualization, with virtual machines and above all Docker. I wanted to try that at home, I took a significant step forward with a compact yet quite powerful headless mini PC that laid the foundation of my homelab. --- ## Why a Homelab ? -I wanted my own playground, a space where breaking things was not just okay, but encouraged. It’s the best way to learn how to fix them and, more importantly, to really understand how they work. +I wanted my own playground, a space where I could build but also safely break things, learn to fix them, and gain a deeper understanding of how they work. -My single server was great, but testing anything risky on it became a problem. It was running critical services like home automation or DNS, and believe me, having no lights or internet is a major incident in my family. The server had become indispensable. When it was down, everything was down. Not so fun anymore. +My single server was great, but testing anything risky on it became a problem. It was running critical services like home automation or DNS, when it was down, everything was down. The server had become indispensable, and believe me, having no lights or internet is a major incident in my family. Not so fun anymore. The first big challenge I set for myself was building a Kubernetes cluster. Sure, I could run one on a single node, but what’s the point of a cluster with only one node? You could argue that running Kubernetes to control my shutters is overkill, and you’d be right. But that wasn’t the point. @@ -43,8 +43,6 @@ That meant: - **High Availability:** Three nodes to ensure that no single point of failure would bring everything down. - **Distributed Storage:** Data redundancy across nodes, not just for uptime but also to learn how enterprise-grade storage systems work. - **Network Segmentation:** Multiple VLANs to mimic real-world network topologies, isolate services, and practice advanced networking. - -Basically, I wanted to build a tiny datacenter in a closet. ### Constraints Of course, reality doesn’t always align with ambitions. Here’s what I was up against: @@ -54,6 +52,8 @@ Of course, reality doesn’t always align with ambitions. Here’s what I was up - **Budget:** I wasn’t going to drop thousands on enterprise-grade hardware. The balance was finding reliable, second-hand gear that wouldn’t break the bank. - **Temperature**: I’m not gonna lie, I hadn't thought of it... Mini PCs don’t generate much heat, but network gear? That’s a different story. Lesson learned. +In a nutshell, I wanted to build a tiny datacenter in a closet. + --- ## Infrastructure Overview @@ -121,8 +121,9 @@ Inside the rack, I also added two 80mm fans to help with airflow. To keep everyt Here what is look like: -![homelab-rack-legend.png](img/homelab-rack-legend.png) -![homelab-enclore-open-closed.png](img/homelab-enclore-open-closed.png) +![Front view of my homelab with legend](img/homelab-rack-legend.png) +![Different views of my homelab with open and closed enclosure](img/homelab-enclore-open-closed.png) + --- ## Software Stack diff --git a/content/post/blog-deployment.fr.md b/content/post/blog-deployment.fr.md index 639c716..8202ce5 100644 --- a/content/post/blog-deployment.fr.md +++ b/content/post/blog-deployment.fr.md @@ -55,7 +55,7 @@ L'idée est simple : 6. La deuxième Gitea Action génère les pages web statiques tout en mettant à jour Hugo si nécessaire. 7. Le blog est maintenant mis à jour (celui que vous lisez). -De cette façon, je n'ai plus besoin de copier manuellement de fichiers ni de déclencher de déploiements. Tout se déroule comme prévu, de l'écriture de Markdown dans Obsidian au déploiement complet du site web. +De cette façon, je n'ai plus besoin de copier manuellement de fichiers ni de gérer les déploiements. Tout se déroule, de l'écriture de Markdown dans Obsidian au déploiement complet du site web. --- ## ⚙️ Implémentation @@ -165,7 +165,7 @@ jobs: git push -u origin main ``` -Obsidian utilise des liens de type wiki pour les images, comme `![nom_image.png](img/nom_image.png)`, ce qui n'est pas compatible avec Hugo par défaut. Voici comment j'ai automatisé une solution de contournement dans un workflow Gitea Actions : +Obsidian utilise des liens de type wiki pour les images, comme `![[nom_image.png]]`, ce qui n'est pas compatible avec Hugo par défaut. Voici comment j'ai automatisé une solution de contournement dans un workflow Gitea Actions : - Je trouve toutes les références d'images utilisées dans des fichiers `.md`. - Pour chaque image référencée, je mets à jour le lien dans les fichiers `.md` correspondants, comme `![nom_image](img/nom_image.png)`. - Je copie ensuite ces images utilisées dans le répertoire statique du blog en remplaçant les espaces par des underscores. diff --git a/content/post/blog-deployment.md b/content/post/blog-deployment.md index 3200fe5..44db1c7 100644 --- a/content/post/blog-deployment.md +++ b/content/post/blog-deployment.md @@ -164,7 +164,7 @@ jobs: git push -u origin main ``` -Obsidian uses wiki-style links for images, like `![image_name.png](img/image_name.png)`, which isn't compatible with Hugo out of the box. Here's how I automated a workaround in a Gitea Actions workflow: +Obsidian uses wiki-style links for images, like `![[image name.png]]`, which isn't compatible with Hugo out of the box. Here's how I automated a workaround in a Gitea Actions workflow: - I find all used image references in `.md` files. - For each referenced image, I update the link in relevant `.md` files like `![image name](img/image_name.png)`. - I then copy those used images to the blog's static directory while replacing white-spaces by underscores. diff --git a/content/post/random-post.md b/content/post/random-post.md new file mode 100644 index 0000000..9765a8a --- /dev/null +++ b/content/post/random-post.md @@ -0,0 +1,10 @@ +--- +title: Random post +description: +date: 2025-05-25 +draft: false +tags: +categories: +--- + +Hi there, how are you \ No newline at end of file diff --git a/static/img/Pasted_image_20250131144754.png b/static/img/Pasted_image_20250131144754.png deleted file mode 100644 index d15fda8..0000000 Binary files a/static/img/Pasted_image_20250131144754.png and /dev/null differ diff --git a/static/img/Pasted_image_20250501235427.png b/static/img/Pasted_image_20250501235427.png deleted file mode 100644 index 14d6fbe..0000000 Binary files a/static/img/Pasted_image_20250501235427.png and /dev/null differ diff --git a/static/img/Pasted_image_20250501235521.png b/static/img/Pasted_image_20250501235521.png deleted file mode 100644 index d830326..0000000 Binary files a/static/img/Pasted_image_20250501235521.png and /dev/null differ diff --git a/static/img/Pasted_image_20250502230954.png b/static/img/Pasted_image_20250502230954.png deleted file mode 100644 index 8685ff8..0000000 Binary files a/static/img/Pasted_image_20250502230954.png and /dev/null differ diff --git a/static/img/homelab-enclore-open-closed.png b/static/img/homelab-enclore-open-closed.png deleted file mode 100644 index d5803df..0000000 Binary files a/static/img/homelab-enclore-open-closed.png and /dev/null differ diff --git a/static/img/homelab-network-schema.png b/static/img/homelab-network-schema.png deleted file mode 100644 index f3b50cc..0000000 Binary files a/static/img/homelab-network-schema.png and /dev/null differ diff --git a/static/img/homelab-rack-legend.png b/static/img/homelab-rack-legend.png deleted file mode 100644 index 1abb659..0000000 Binary files a/static/img/homelab-rack-legend.png and /dev/null differ