<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Marc JESTIN's Blog</title><link>https://blog.marcjestin.fr/en/</link><description>Recent content on Marc JESTIN's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026</copyright><lastBuildDate>Sat, 09 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.marcjestin.fr/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Preventing sleep and suspension on a Debian server</title><link>https://blog.marcjestin.fr/en/posts/preventing-sleep-and-suspension-on-a-debian-server/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/preventing-sleep-and-suspension-on-a-debian-server/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;A server must be available 24 hours a day and obviously should not go to sleep, especially if we don&amp;rsquo;t have the tools to &amp;ldquo;wake it up.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;By default, or following the installation of certain packages, a &lt;code&gt;Debian&lt;/code&gt; distribution may retain power-saving settings. The result: our machine &amp;ldquo;falls asleep&amp;rdquo; after a period of inactivity, and we can no longer access it remotely. &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;This is particularly true for systems installed in a &lt;code&gt;Desktop&lt;/code&gt; version (i.e., with a desktop manager like &lt;code&gt;GNOME&lt;/code&gt; or others).&lt;/p&gt;</description></item><item><title>Using ACLs for Advanced File and Directory Permissions in Debian</title><link>https://blog.marcjestin.fr/en/posts/using-acls-for-advanced-file-and-directory-permissions-in-debian/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/using-acls-for-advanced-file-and-directory-permissions-in-debian/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;We often find ourselves working in directories where multiple users &amp;ldquo;clash&amp;rdquo; with one another.&lt;/p&gt;
&lt;p&gt;A common example is when we need to clear caches generated by web server components. We then run into ownership and permission issues.&lt;/p&gt;
&lt;p&gt;Usually, we rely on &amp;ldquo;bad good solutions&amp;rdquo;, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adding our user to a group it doesn&amp;rsquo;t truly belong to.&lt;/li&gt;
&lt;li&gt;Creating custom &lt;code&gt;sudo&lt;/code&gt; rules (which often end up being too broad, creating a significant security loophole).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Managing &lt;code&gt;ACLs&lt;/code&gt; in Debian allows us to handle this very simply.&lt;/p&gt;</description></item><item><title>How to disable sudo in Debian</title><link>https://blog.marcjestin.fr/en/posts/how-to-disable-sudo-in-debian/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/how-to-disable-sudo-in-debian/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;h2 class="relative group"&gt;Security Best Practices
 &lt;div id="security-best-practices" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#security-best-practices" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A secure machine is one where just anyone cannot do just anything.&lt;/p&gt;
&lt;p&gt;A secure machine requires logging into an account with elevated &lt;code&gt;privileges&lt;/code&gt; to perform administrative tasks.&lt;/p&gt;
&lt;p&gt;This can be the &lt;code&gt;root&lt;/code&gt; account itself or other specific accounts, but &lt;strong&gt;it should not be just any user account, even if it belongs to the owner of the machine&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>How to remove sudo privileges from a user in Debian</title><link>https://blog.marcjestin.fr/en/posts/how-to-remove-sudo-privileges-from-a-user-in-debian/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/how-to-remove-sudo-privileges-from-a-user-in-debian/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;h2 class="relative group"&gt;Security Best Practices
 &lt;div id="security-best-practices" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#security-best-practices" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A secure machine is one where just anyone cannot do just anything.&lt;/p&gt;
&lt;p&gt;A secure machine requires logging into an account with elevated &lt;code&gt;privileges&lt;/code&gt; to perform administrative tasks.&lt;/p&gt;
&lt;p&gt;This can be the &lt;code&gt;root&lt;/code&gt; account itself or other specific accounts, but &lt;strong&gt;it should not be just any user account, even if it belongs to the owner of the machine&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Let's Encrypt caught in the Friday night maintenance syndrome</title><link>https://blog.marcjestin.fr/en/posts/lets-encrypt-caught-in-the-friday-night-maintenance-syndrome/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/lets-encrypt-caught-in-the-friday-night-maintenance-syndrome/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;While I was getting ready to deploy a new service to visualize my traffic statistics, I briefly thought I had broken my &lt;code&gt;NPM&lt;/code&gt; (&lt;code&gt;Nginx Proxy Manager&lt;/code&gt;) configuration. Indeed, I was getting some rather vague errors and, when checking the &lt;em&gt;ad hoc&lt;/em&gt; folder, I couldn&amp;rsquo;t see any new directory for the key and certificate I was trying to obtain.&lt;/p&gt;
&lt;p&gt;It was only after checking the &lt;code&gt;Docker&lt;/code&gt; container logs that I realized the problem wasn&amp;rsquo;t on my end.&lt;/p&gt;</description></item><item><title>Free at last</title><link>https://blog.marcjestin.fr/en/posts/free-at-last/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/free-at-last/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I can now officially announce it: I have crossed the Rubicon of &lt;code&gt;self-hosting&lt;/code&gt;—the act of hosting one&amp;rsquo;s own server(s) and/or Internet service(s) at home for ALL my Internet tools.&lt;/p&gt;
&lt;p&gt;For several years, I had been experimenting and testing various solutions to host services on dedicated servers or directly at home. Some of my customers have used some of them.&lt;/p&gt;
&lt;p&gt;I would regularly reopen the file as the anniversary date of my hosting contract approached for the email and web servers.&lt;/p&gt;</description></item><item><title>Veni, vidi, abii</title><link>https://blog.marcjestin.fr/en/posts/veni-vidi-abii/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/veni-vidi-abii/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Yesterday and last night, I installed a &lt;code&gt;glitch-soc&lt;/code&gt; &lt;code&gt;Mastodon&lt;/code&gt; instance on my server.&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t exactly a walk in the park, but I eventually got it done.&lt;/p&gt;
&lt;p&gt;I took the opportunity to learn and to uncover a few flaws, if not bugs, in &lt;code&gt;Dokploy&lt;/code&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Learning and Know-how
 &lt;div id="learning-and-know-how" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#learning-and-know-how" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I only deployed this tool to learn how to do it.&lt;/p&gt;</description></item><item><title>De Profundis</title><link>https://blog.marcjestin.fr/en/posts/de-profundis/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/de-profundis/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Orion and I once again crossed paths with that lady and her dog, which clearly suffers from a &lt;code&gt;behavioral disorder&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I fear the dog isn&amp;rsquo;t the only one exhibiting &lt;code&gt;behavioral issues&lt;/code&gt;&amp;hellip;&lt;/p&gt;

&lt;h2 class="relative group"&gt;Initial Aggressions
 &lt;div id="initial-aggressions" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#initial-aggressions" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;This dog has already charged Orion in aggressive mode several times.&lt;/p&gt;
&lt;p&gt;The first time it happened, Orion and I were playing peacefully, as we usually do during our walks on a path between the fields. I was throwing the ball and Orion was fetching it. This dog came out of nowhere from behind us, running at full speed. It headed straight for Orion and attacked him for the first time.&lt;/p&gt;</description></item><item><title>Webhooks &amp; CI/CD: When Dokploy and Gitea refuse to talk to each other</title><link>https://blog.marcjestin.fr/en/posts/webhooks-cicd-when-dokploy-and-gitea-refuse-to-talk-to-each-other/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/webhooks-cicd-when-dokploy-and-gitea-refuse-to-talk-to-each-other/</guid><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I struggled a bit to get my workflow running for automating updates to this blog when I push to the &lt;code&gt;main&lt;/code&gt; branch of my repository on my &lt;code&gt;Gitea&lt;/code&gt; server.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The Challenge: Automating Deployment
 &lt;div id="the-challenge-automating-deployment" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-challenge-automating-deployment" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The goal was simple: use &lt;code&gt;Gitea Actions&lt;/code&gt; so that every &lt;code&gt;git push&lt;/code&gt; automatically triggers a container update for my site on my &lt;code&gt;Dokploy&lt;/code&gt; instance.&lt;/p&gt;</description></item><item><title>My First Post</title><link>https://blog.marcjestin.fr/en/posts/my-first-post/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><guid>https://blog.marcjestin.fr/en/posts/my-first-post/</guid><description>&lt;p&gt;Hello and welcome to this new blog.&lt;/p&gt;
&lt;p&gt;I chose to use the &lt;code&gt;Hugo&lt;/code&gt; content management engine and static site generator, paired with &lt;code&gt;Caddy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Everything is deployed within a &lt;code&gt;Docker&lt;/code&gt; infrastructure managed by &lt;code&gt;Dokploy&lt;/code&gt;. In this setup, &lt;code&gt;Caddy&lt;/code&gt; is used solely for the rapid rendering of static pages.&lt;/p&gt;
&lt;p&gt;The server&amp;rsquo;s reverse proxy is &lt;code&gt;Traefik&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I still haven&amp;rsquo;t managed to get my &lt;code&gt;gitea&lt;/code&gt; actions running correctly for automatic updates upon &lt;code&gt;commit&lt;/code&gt;, but that should be fixed soon. 😉&lt;/p&gt;</description></item></channel></rss>