<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Level Sony M.</title><link>https://level-sony.fr/en/</link><description>Recent blog posts from Level Sony M.</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 19 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://level-sony.fr/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Automating Jenkins Deployment on AWS with Terraform, EC2, Docker, and Cloudflare Tunnel</title><link>https://level-sony.fr/en/blogs/jenkins-aws-terraform-docker-cloudflare/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/jenkins-aws-terraform-docker-cloudflare/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The goal of this project goes beyond simply deploying Jenkins on AWS. I wanted to lay the foundation for an automated DevOps infrastructure — one capable of integrating the essential tools across an application&amp;rsquo;s entire lifecycle, from development to production.
My intent is to build a reproducible, maintainable, and scalable technical base that automates infrastructure provisioning, service deployment, and eventually CI/CD orchestration.
This project is also a concrete learning opportunity: experiment, test, make mistakes, correct them, and grow through real-world DevOps practice.&lt;/p&gt;</description></item><item><title>Building a More Reliable Terraform Installer with Bash</title><link>https://level-sony.fr/en/blogs/terraform-installer-bash/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/terraform-installer-bash/</guid><description>&lt;h2 id="what-is-terraform"&gt;What is Terraform?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt; is an open-source &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt; tool developed by HashiCorp. It lets you define, provision, and manage infrastructure — servers, networks, databases, cloud services — using declarative configuration files written in &lt;strong&gt;HCL (HashiCorp Configuration Language)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The core idea is simple: describe the desired state of your infrastructure in code, and let Terraform compute and apply the changes needed to reach that state.&lt;/p&gt;
&lt;h3 id="typical-use-cases"&gt;Typical use cases&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud provisioning&lt;/strong&gt;: create VMs, VPCs, load balancers, DNS records on AWS/GCP/Azure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosting&lt;/strong&gt;: deploy servers on OVH, Hetzner, or Scaleway from code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes management&lt;/strong&gt;: create EKS, GKE, AKS clusters and configure namespaces&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;: manage IAM roles, access policies, and TLS certificates in an audited way&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ephemeral environments&lt;/strong&gt;: spin up and tear down test environments automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In a DevOps / Systems Administration curriculum, mastering Terraform is a deliverable.&lt;/p&gt;</description></item><item><title>Readme-runner: Launch Any Project in One Command, Powered by GitHub Copilot CLI</title><link>https://level-sony.fr/en/blogs/readme-runner-copilot-cli-challenge/</link><pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/readme-runner-copilot-cli-challenge/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Submission for the GitHub Copilot CLI Challenge hosted by DEV Community × GitHub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;a href="https://dev.to/devteam/join-the-github-copilot-cli-challenge-win-github-universe-tickets-copilot-pro-subscriptions-and-50af" target="_blank" rel="noopener noreferrer"
class="link-preview-card group block no-underline my-6 rounded-2xl overflow-hidden border border-gray-200 dark:border-gray-700 hover:border-blue-400 dark:hover:border-blue-500 transition-all duration-200 hover:shadow-lg"
style="text-decoration:none;"&gt;
&lt;div class="flex flex-col sm:flex-row"&gt;
&lt;div class="sm:w-48 sm:shrink-0 overflow-hidden bg-gray-100 dark:bg-neutral-800"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=1080,height=1080,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6kv3h80vr00d635c9jwi.png" alt="Join the GitHub Copilot CLI Challenge! Win GitHub Universe Tickets, Copilot Pro&amp;#43; Subscriptions and 1,000 USD in Cash"
class="w-full h-40 sm:h-full object-cover !border-0 !shadow-none !rounded-none !margin-0 !-webkit-box-reflect-none"
style="margin:0;border-radius:0;box-shadow:none;-webkit-box-reflect:none;"
loading="lazy"&gt;
&lt;/div&gt;
&lt;div class="flex flex-col justify-between p-4 flex-1 bg-white dark:bg-neutral-900 group-hover:bg-gray-50 dark:group-hover:bg-neutral-800 transition-colors"&gt;
&lt;div&gt;
&lt;div class="flex items-center gap-2 mb-2"&gt;
&lt;span class="text-xs font-semibold uppercase tracking-wide text-blue-500 dark:text-blue-400"&gt;DEV Community&lt;/span&gt;
&lt;span class="text-gray-300 dark:text-gray-600 text-xs"&gt;·&lt;/span&gt;
&lt;span class="text-xs text-gray-400 dark:text-gray-500"&gt;Jess Lee&lt;/span&gt;
&lt;/div&gt;
&lt;p class="text-sm font-semibold leading-snug text-gray-900 dark:text-gray-100 line-clamp-2 mb-1 group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors"&gt;
Join the GitHub Copilot CLI Challenge! Win GitHub Universe Tickets, Copilot Pro&amp;#43; Subscriptions and 1,000 USD in Cash
&lt;/p&gt;</description></item><item><title>Rethinking Web Browsing with True Sandboxing</title><link>https://level-sony.fr/en/blogs/rethinking-web-browsing-sandboxing/</link><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/rethinking-web-browsing-sandboxing/</guid><description>&lt;p&gt;Today, we spend our lives on the web.
We click on links without thinking twice, open suspicious attachments, visit unfamiliar sites. Yet each time, we expose our computer, files, passwords, and entire digital life more or less directly.&lt;/p&gt;
&lt;p&gt;What if the simplest solution was also the most radical:
&lt;strong&gt;never let the web truly touch our machine?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="the-sandbox-an-old-idea-that-remains-highly-relevant"&gt;The Sandbox: An Old Idea That Remains Highly Relevant&lt;/h2&gt;
&lt;p&gt;The principle has existed for a long time.
Modern browsers already isolate each tab in its own process with very limited rights. This is called &lt;strong&gt;native sandboxing&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>How to Use Let's Encrypt Certificates with Keycloak</title><link>https://level-sony.fr/en/blogs/lets-encrypt-certificates-with-keycloak/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/lets-encrypt-certificates-with-keycloak/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Keycloak is an open-source Identity and Access Management tool developed by Red Hat. It provides single sign-on (SSO), user and role management, and supports standard protocols such as OpenID Connect, OAuth 2.0, and SAML. &lt;a href="https://developers.redhat.com"&gt;Red Hat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An interesting fact: Red Hat itself uses Keycloak as the basis for Red Hat SSO to secure its internal applications, which is a solid vote of confidence in the project.&lt;/p&gt;
&lt;p&gt;This internal adoption highlights Keycloak&amp;rsquo;s reliability and robustness for identity and access management.&lt;/p&gt;</description></item><item><title>Dockdock-Go – Security Gatekeeper for Harbor Registries</title><link>https://level-sony.fr/en/blogs/dockdock-go-harbor-security-gatekeeper/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/dockdock-go-harbor-security-gatekeeper/</guid><description>&lt;blockquote&gt;
&lt;p&gt;This article documents a Master 1 student project completed in 2023–2024, written from the perspective of December 2024. It provides an honest technical retrospective including architecture decisions, implementation challenges, technical debt, and lessons learned.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Written in December 2024&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team&lt;/strong&gt;: 4 students (1× Rust backend, 2× infra/Kubernetes, 1× frontend/docs (me) )&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Effective Duration&lt;/strong&gt;: ≈9 months shared with courses and other projects&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current Status&lt;/strong&gt;: Functional Proof-of-Concept in local demo, not production-maintained&lt;/p&gt;
&lt;h2 id="1-the-real-problem-we-wanted-to-solve"&gt;1. The Real Problem We Wanted to Solve&lt;/h2&gt;
&lt;p&gt;In most organizations using &lt;a href="https://goharbor.io"&gt;Harbor&lt;/a&gt; as a private registry:&lt;/p&gt;</description></item><item><title>How to Install Oh My Zsh: My Favorite Shell</title><link>https://level-sony.fr/en/blogs/install-oh-my-zsh/</link><pubDate>Fri, 13 Dec 2024 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/install-oh-my-zsh/</guid><description>&lt;blockquote&gt;
&lt;p&gt;We&amp;rsquo;re going to see how to enhance the terminal&amp;rsquo;s features and give it a much more user-friendly look. The purpose of this article, like the rest, is personal to me as I often find myself forgetting certain practices, hence the idea of noting down and preserving my learnings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;
&lt;p&gt;As a passionate Linux user, one of the first configurations I perform on every new PC or Linux system is installing &lt;a href="https://ohmyz.sh/"&gt;Oh My Zsh&lt;/a&gt;. This interactive and customizable shell has transformed my command-line experience, and I&amp;rsquo;m going to explain why I love it and how you can install it easily.&lt;/p&gt;</description></item><item><title> Hosting Your Apps from a PC or VPS: Coolify &amp; Cloudflare Tunnel</title><link>https://level-sony.fr/en/blogs/coolify-cloudflare-tunnel-self-hosting/</link><pubDate>Fri, 15 Mar 2024 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/coolify-cloudflare-tunnel-self-hosting/</guid><description>&lt;p&gt;In my &lt;a href="https://level-sony.fr/en/blogs/coolify-vps-deployment-platform/"&gt;previous article&lt;/a&gt;, I described how Coolify structured my VPS deployments. Today, we&amp;rsquo;re pushing the idea further: &lt;strong&gt;can we turn any machine — a laptop, a desktop PC, or a VPS — into a hosting platform accessible from anywhere on the Internet?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The answer is yes. And the Coolify + Cloudflare Tunnel combination is what makes it possible, even in notoriously tricky network setups.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-hidden-trap-cgnat"&gt;The Hidden Trap: CGNAT&lt;/h2&gt;
&lt;p&gt;Before we start, there&amp;rsquo;s a point that most self-hosting guides quietly skip over: &lt;strong&gt;CGNAT&lt;/strong&gt; (Carrier-Grade NAT).&lt;/p&gt;</description></item><item><title>From VPS Chaos to Deployment Zen: My Coolify Love Story</title><link>https://level-sony.fr/en/blogs/coolify-vps-deployment-platform/</link><pubDate>Sat, 24 Feb 2024 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/coolify-vps-deployment-platform/</guid><description>&lt;p&gt;I&amp;rsquo;ve long used my VPS like many developers: a few manually launched Docker containers, a cobbled-together reverse proxy, scattered configuration files, and manual redeployments with each new version. It was this context, mixed with the desire to professionalize my deployments without falling into the complexity of Kubernetes, that led me to discover Coolify.&lt;/p&gt;
&lt;p&gt;I had just integrated Cloudflare Tunnel into my workflow to properly expose services hosted at home or on a small server, without opening ports all over the place. This approach worked well, but also revealed all the limitations of my stack: each new app added to the VPS required reworking the reverse proxy configuration, managing SSL certificates, thinking about database backups, and keeping track of environment variables somewhere. After a few projects, the whole thing became fragile, difficult to document, and even harder to hand off to someone else.&lt;/p&gt;</description></item><item><title>Goodbye "It Works on My Machine!" - Docker</title><link>https://level-sony.fr/en/blogs/goodbye-it-works-on-my-machine-docker/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/goodbye-it-works-on-my-machine-docker/</guid><description>&lt;h2 id="it-works-on-my-machine"&gt;&amp;ldquo;It works on my machine!&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;ve all heard this phrase (or said it yourself). I said it at least a dozen times during my high school projects. And my teachers too, when they tried to run my code on their computers&amp;hellip;&lt;/p&gt;
&lt;p&gt;This week, we started talking about development environments, dependencies, virtualization&amp;hellip; and then, the teacher said: &amp;ldquo;Today, we&amp;rsquo;re going to look at Docker. It&amp;rsquo;s going to solve 90% of your &amp;lsquo;it doesn&amp;rsquo;t work on my computer&amp;rsquo; problems.&amp;rdquo;&lt;/p&gt;</description></item><item><title>🐙 Git Memo: All Essential Commands</title><link>https://level-sony.fr/en/blogs/git-all-commands/</link><pubDate>Thu, 23 Mar 2023 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/git-all-commands/</guid><description>&lt;blockquote&gt;
&lt;p&gt;A list of Git commands — feel free to come back to it as often as you need.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="git-overview"&gt;Git Overview&lt;/h2&gt;
&lt;p&gt;Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Here&amp;rsquo;s a summary of the most useful commands, organized by category.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="tell-git-who-you-are"&gt;Tell Git Who You Are&lt;/h2&gt;
&lt;p&gt;First things first, set up your identity so Git knows who is making commits.&lt;/p&gt;</description></item><item><title>Securing a Debian Server – My Configuration</title><link>https://level-sony.fr/en/blogs/securing-debian-server-baseline/</link><pubDate>Thu, 23 Mar 2023 00:00:00 +0000</pubDate><guid>https://level-sony.fr/en/blogs/securing-debian-server-baseline/</guid><description>&lt;p&gt;&lt;strong&gt;Why do this from the start?&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As soon as a server (even an old recycled laptop) exposes services (website, API, Git, Nextcloud, dashboard, reverse proxy…), it becomes a target.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="my-quick-setup"&gt;My Quick Setup&lt;/h2&gt;
&lt;p&gt;I already have Debian 12 Bookworm installed on an old recycled Toshiba laptop (dead battery, screen off, headless).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hardware&lt;/strong&gt;
Old Toshiba Satellite → low power consumption, quiet once the fan calms down, ideal for getting started.&lt;/p&gt;
&lt;img src="https://level-sony.fr/images/blogs/debian-security/toshiba.jpg" alt="Debian headless server setup"&gt;
&lt;h2 id="what-i-want-to-achieve"&gt;What I Want to Achieve&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed IP&lt;/strong&gt; → to always know where the server is&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardened SSH&lt;/strong&gt; → only remote access method, ultra protected&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firewall&lt;/strong&gt; → blocks everything we haven&amp;rsquo;t explicitly allowed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fail2Ban&lt;/strong&gt; → punishes bots trying thousands of passwords&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto updates&lt;/strong&gt; → fixes vulnerabilities without me thinking about it&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-fixed-ip-via-dhcp-reservation"&gt;1. Fixed IP via DHCP Reservation&lt;/h2&gt;
&lt;h3 id="why"&gt;Why?&lt;/h3&gt;
&lt;p&gt;If the IP changes with every reboot (normal DHCP behavior), you have to check each time what IP your server got. It&amp;rsquo;s annoying and error-prone.
With a fixed IP (reserved by the router), you always connect to the same place: &lt;code&gt;ssh lab&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>