<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Tue, 19 May 2026 06:10:09 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Devoxx France 2026: feedback and highlights</title>
		<link>https://blog.ovhcloud.com/devoxx-france-2026/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Tue, 19 May 2026 05:45:45 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Devoxx France]]></category>
		<category><![CDATA[OVHcloud Events]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31573</guid>

					<description><![CDATA[From April 22 to 24, 2026, the Devoxx France conference took place at the Palais des Congrès in Paris. Aurélie Vache and Stéphane Philippart attended as dit 19 other OVHcloud employees. In this blog post, they share their thoughts and feedback from this 14th edition of Devoxx France. Devoxx France 2026: The AI Edition Devoxx [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdevoxx-france-2026%2F&amp;action_name=Devoxx%20France%202026%3A%20feedback%20and%20highlights&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>From April 22 to 24, 2026, the <a href="https://www.devoxx.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Devoxx France</a> conference took place at the Palais des Congrès in Paris.</p>



<p>Aurélie Vache and Stéphane Philippart attended as dit 19 other OVHcloud employees. In this blog post, they share their thoughts and feedback from this 14th edition of Devoxx France.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="818" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1024x818.png" alt="Devoxx France 2026" class="wp-image-31605" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1024x818.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-300x240.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-768x614.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image.png 1274w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large is-resized"><img decoding="async" width="768" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/HGv79kIXcAAJ2DT-768x1024.jpg" alt="Devoxx France 2026" class="wp-image-31637" style="aspect-ratio:0.7500000262479178;width:271px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/HGv79kIXcAAJ2DT-768x1024.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/HGv79kIXcAAJ2DT-225x300.jpg 225w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/HGv79kIXcAAJ2DT-1152x1536.jpg 1152w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/HGv79kIXcAAJ2DT.jpg 1536w" sizes="(max-width: 768px) 100vw, 768px" /></figure>
</div>
</div>



<h3 class="wp-block-heading"><strong>Devoxx France 2026: The AI Edition</strong></h3>



<p><strong>Devoxx France 2026</strong> is one of Europe’s biggest independent developer conferences. Formerly focused centrally on Java, over the past few years, the conference has also focused on Architecture, Data &amp; Analytics, Development practices, Front-end &amp; UX, Java/JVM, Security &amp; Privacy, Cloud and non-technical talks about people and culture.</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443-1024x576.jpg" alt="Devoxx France 2026" class="wp-image-31600" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777014717443.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Key figures from the 2026 edition:</p>



<ul class="wp-block-list">
<li>4,980 attendees (The largest attendance on record)</li>



<li>307 speakers</li>



<li>259 talks</li>



<li>70+ sponsors</li>
</ul>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791-1024x576.jpg" alt="Devoxx France 2026" class="wp-image-31610" style="aspect-ratio:1.7777426704463952;width:642px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1777046754791.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>As might be expected, AI was the central theme of this edition, with a large number of the talks focused on AI topics. Indeed, there were 65 sessions out of 259 about AI and Agentic Systems, the most discussed topic!</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="843" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15-1024x843.png" alt="The AI talks at Devoxx France 2026" class="wp-image-31621" style="aspect-ratio:1.2147060091174124;width:630px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15-1024x843.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15-300x247.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15-768x632.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15-1536x1265.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Capture-decran-2026-05-06-a-11.26.15.png 1858w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Notably this year, and perhaps even more than in previous years, we could clearly see attendees arriving early to secure seats for their favorite talks. Even so, there ended up being a lot of disappointment – especially on the first day – as several sessions were already at full capacity minutes before they even started.</p>



<p>This was particularly true for sessions featuring multiple OVHcloud speakers 💪.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-768x1024.jpg" alt="Full room at Devoxx France 2026" class="wp-image-31596" style="width:335px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-768x1024.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-225x300.jpg 225w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-1152x1536.jpg 1152w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-1536x2048.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260422_083446173-scaled.jpg 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<h3 class="wp-block-heading">Keynotes</h3>



<p>The keynote sessions (“plenary sessions”) were also heavily centered on <strong>Artificial Intelligence</strong>, but with a notably broader lens beyond pure technology. Rather than focusing only on tools or LLM implementation, the talks explored AI through the intersecting dimensions of <strong>power, governance, cybersecurity, human transformation, and geopolitics</strong>.</p>



<p>Some highlights from the keynotes:</p>



<ul class="wp-block-list">
<li><em>“In 50 years, AI has multiplied its power, along with the challenges of governance and cybersecurity”</em> &#8211; Laurence Devillers (<a href="https://x.com/lau_devil" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@lau_devil</a>)</li>
</ul>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-3-1024x576.png" alt="Laurence Devillers at Devoxx France 2026" class="wp-image-31644" style="aspect-ratio:1.7777426704463952;width:527px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-3-1024x576.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-3-300x169.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-3-768x432.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-3.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li>Jean-Gabriel Ganascia (<a href="https://x.com/Quecalcoatle" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@Quecalcoatle</a>) questioned the promise of AI as a force that could free humans from effort, raising deeper reflections on what this means for our relationship with work and meaning.</li>
</ul>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1-1024x768.png" alt="Jean-Gabriel Ganascia at Devoxx France 2026" class="wp-image-31640" style="width:536px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1-1024x768.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1-300x225.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1-768x576.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1-1536x1152.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-1.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li>Loup Cellard (<a href="https://x.com/CellardLoup" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@CellardLoup</a>) examined the implications of foreign investments in AI infrastructure, shedding light on the geopolitical and strategic stakes behind these technologies.</li>
</ul>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-2-768x1024.png" alt="Loup Cellard at Devoxx France 2026" class="wp-image-31641" style="aspect-ratio:0.7500000158067569;width:258px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-2-768x1024.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-2-225x300.png 225w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-2-1152x1536.png 1152w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-2.png 1536w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<h3 class="wp-block-heading"><strong>Meet &amp; Greet</strong></h3>



<p>Devoxx France consists of three days of conferences, sponsor booths to discover, and Thursday evening’s unmissable annual tradition: the Meet &amp; Greet.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782-1024x576.jpg" alt="Meet and Greet at Devoxx France 2026" class="wp-image-31607" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1776962145782.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Thursday night’s <strong>Meet &amp; Greet</strong> is a major community event built around networking and social sessions like <strong>BOFs (Birds of a Feather)</strong> and seed networking. It’s one of the signature traditions of the conference, beyond talks and sponsor booths.</p>



<p>This evening event is free, open to the public with pre-registration, and offers a genuine moment for connection, sharing, and conversation over a drink and a plate of charcuterie and cheese 😇.</p>



<p>It’s also the opportunity to discover the fun of “Voxx Jam”, the community-party, music-oriented side of Devoxx/Voxxed culture 🎸.</p>



<h3 class="wp-block-heading">OVHcloud Presence</h3>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-08-23-06-896-41-768x1024.jpg" alt="OVHcloud booth at Devoxx France 2026" class="wp-image-31574" style="aspect-ratio:0.7499999738121478;width:360px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-08-23-06-896-41-768x1024.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-08-23-06-896-41-225x300.jpg 225w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-08-23-06-896-41-1152x1536.jpg 1152w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-08-23-06-896-41.jpg 1536w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<p>At the OVHcloud booth, we were a team of 8 speakers and 11 colleagues from Tech, HR, and Sales, and their dynamic presence really made a difference. Engaging in topics like AI, Public Cloud, Domain Names, Observability, Quantum technologies, and more, we had many insightful conversations throughout the event.</p>



<p>We also discussed AI topics at the booth, which was of course the main theme of the conference, but not the only one.</p>



<p>A lot of conversations also focused on sovereignty. Three years ago, people were saying: <em>“I don’t care about sovereignty, I’ll just choose the cheapest option.”</em> This year, the tone has clearly changed, <em>“How can we use your sovereign products?”</em></p>



<p><strong>There is a real shift happening,</strong> and once again, being present at events like this is essential to witness and take part in these evolving discussions.</p>



<p>It was truly a top-tier booth experience for all of us💪.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-24-12-34-31-442-768x1024.jpg" alt="OVHcloud booth at Devoxx France 2026" class="wp-image-31666" style="width:305px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-24-12-34-31-442-768x1024.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-24-12-34-31-442-225x300.jpg 225w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-24-12-34-31-442-1152x1536.jpg 1152w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-24-12-34-31-442.jpg 1536w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-1024x768.jpg" alt="OVHcloud booth at Devoxx France 2026" class="wp-image-31576" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_075255077.MP1_-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<p>Of course, the goal of our booth was so attendees could discuss with our teams, but also so we could engage them through our very own video game, “Gaming Camp: Beat Cloud Villains!”. The specially designed video game’s description: <em>“Join the fight against the villains of the cloud. Take on Hidden Cost, Jailor Stack, and Autonomous Zero, and prove yourself as a true Guardian of the Cloud.”</em></p>



<p>Players were welcomed to step into a two-player fighting game inspired by the style of <em>Street Fighter</em>, where strategy and skill are your best weapons. Game on!</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094-1024x768.jpg" alt="Gaming Camp cloud villains game at the OVHcloud booth" class="wp-image-31575" style="width:644px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-10-15-34-094.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>We also wanted to say a word about the success of our Schrödinger cat (Quantum) swag – socks, keychains, badges – they were a huge hit, and often sparked great conversations throughout the event.</p>



<h3 class="wp-block-heading"><strong>OVHcloud Speakers &amp; Talks</strong></h3>



<p>Getting accepted to Devoxx France is not easy, so we were proud to be included with 8 speakers and 11 talks! <strong>We were the most represented company</strong> <strong>in terms of talks at Devoxx France 2026,</strong> and ranked in the top 3 by number of speakers 💪.</p>



<p>Congratulations to Benoit Masson, Fanny Bouton, Mathieu Busquet, Sébastien Ferrer, Théo Bougé, and Héla Ben Khalfallah, Stéphane Philippart &amp; Aurélie Vache for their talks 👏. A large number of attendees joined, and the sessions were all very high quality.</p>



<p>Find here the topics of their talks:</p>



<h4 class="wp-block-heading">&#8220;Question pour un cluster Kubernetes : Quiz sur Kubernetes &amp; ses concepts&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 &#8220;The Ultimate Kubernetes Challenge: An Interactive Trivia Game on concepts, components, usage&#8230;&#8221;</em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-12-1024x768.png" alt="Aurélie Vache speaking at Devoxx France 2026" class="wp-image-31824" style="width:565px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-12-1024x768.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-12-300x225.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-12-768x576.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-12.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speaker: Aurélie Vache</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Kubernetes est devenu le standard de facto pour déployer et exploiter des applications conteneurisées. Nous l&#8217;utilisons, ainsi que son ecosystème, au quotidien, mais le connaît-on si bien ?<br><br>Tout au long de ce talk, avec un mix de quiz et de démos en live, vous découvrirez (ou redécouvrirez) les concepts clés de Kubernetes (pods, secrets, services, namespaces&#8230;), les composants interne mais aussi les bonnes pratiques d&#8217;utilisation.<br><br>Un format original avec un quiz, du fun et des démos, qui conviendra aussi bien aux débutants qu’aux confirmés, afin d&#8217;apprendre, réviser et challenger vos connaissances du merveilleux monde de Kubernetes et de son écosystème, tout en s&#8217;amusant.<br><br>Soyez là ou le plus rapide pour tenter de gagner des cadeaux !&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 Kubernetes has become the de facto standard for deploying and operating containerized applications. We use it, as well as its ecosystem, on a daily basis, but do we know them as well as we think we do?<br><br>With a mix of quiz and live demos, come learn and/or improve your knowledge. You will discover (or rediscover) the key concepts of Kubernetes (pods, secrets, services&#8230;), internal components but also best practices.<br><br>In this fun and dynamic talk, come compete throughout the quiz and explore the wonderful world of Kubernetes.<br>Icing on the cake: the first will win some swags.</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=mS_Nz44cXlM" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;QR Codes : suivez les points sans vous perdre !&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 &#8220;QR codes: follow the dots without getting lost!</em>&#8220;</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="717" height="690" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-11.png" alt="Benoit Masson speaking at Devoxx France 2026" class="wp-image-31822" style="width:389px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-11.png 717w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-11-300x289.png 300w" sizes="auto, (max-width: 717px) 100vw, 717px" /></figure>



<p>🎤 Speaker: Benoît Masson &amp; Sébastien Chedor (OnePoint)</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Les QR Codes, tout le monde connaît et les utilise régulièrement. Mais savez-vous vraiment comment ils fonctionnent, pourquoi c&#8217;est aussi rapide et fiable, même avec une caméra de faible qualité ou un code en partie caché ou détérioré ?<br><br>Nous vous proposons de coder ensemble un lecteur de QR Codes, avec un minimum d&#8217;outils :<br>* capture et analyse de la vidéo issue de la webcam pour détecter la position du code, à l&#8217;aide d&#8217;OpenCV<br>* extraction et décodage du contenu, avec correction d&#8217;erreur grâce à l&#8217;algorithme de Reed-Solomon.<br><br>À la fin de cette session, vous devriez être capables de décoder un QR Code à l&#8217;oeil nu 🕵️ (et un brouillon…)&#8221;.</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 <em>“Everyone knows QR codes and uses them regularly. But do you really know how they work, and why they are so fast and reliable, even with a low-quality camera or a partially hidden or damaged code?</em></em><br><br><em>We propose coding a QR code reader together, using a minimum number of tools:</em><br>* <em>capturing and analysing webcam video to detect the position of the code, using OpenCV</em><br>* <em>extracting and decoding the content, with error correction using the Reed-Solomon algorithm</em><br><br><em>By the end of this session, you should be able to decode a QR code with the naked eye 🕵️— and a rough sheet of paper…”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=iSebbzNcojU" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;Noms de domaines : la grande histoire des petites extensions&#8221;</h4>



<p>🏴󠁧󠁢󠁥󠁮󠁧󠁿 <em><em>“Domain names: the big story behind small extensions”</em></em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="626" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo-1024x626.jpg" alt="Benoit Masson and Theo Bougé speaking at Devoxx France 2026" class="wp-image-31799" style="aspect-ratio:1.6357688113413305;width:548px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo-1024x626.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo-300x183.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo-768x469.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo-1536x939.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Devoxx-2026-Benoit-Theo.jpg 1800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speakers: Benoît Masson &amp; Theo Bougé</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Derrière les quelques lettres qui suivent un point (.com, .fr, .ai…) se cache un univers riche de stratégies techniques, d’enjeux géopolitiques et de batailles commerciales.<br><br>À l’approche du nouveau round de l’ICANN prévu en 2026 qui va autoriser de nouvelles extensions, il est temps de revenir sur les fondations techniques du DNS, ainsi que sur les grands épisodes de cette aventure méconnue. Des TLD historiques aux extensions détournées, des dramas autour du .web aux ambitions du Web3, nous explorerons l’évolution d’un système devenu central dans les logiques de souveraineté numérique et d’innovation commerciale.<br><br>Une plongée dans les coulisses d’un Internet en perpétuelle transformation.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Behind the few letters that follow a dot — .com, .fr, .ai and others — lies a rich world of technical strategies, geopolitical issues and commercial battles.</em><br><br><em>As the new ICANN round planned for 2026 approaches, which will authorise new extensions, it is time to revisit the technical foundations of DNS, as well as the major episodes in this little-known story. From historic TLDs to repurposed extensions, from the drama around .web to the ambitions of Web3, we will explore the evolution of a system that has become central to digital sovereignty and commercial innovation.</em><br><br><em>A deep dive behind the scenes of an Internet in constant transformation.”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=FZj6VEnxsRI" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;Informatique quantique, ce coup-ci on vous dit tout !&#8221;</h4>



<p>🏴󠁧󠁢󠁥󠁮󠁧󠁿 <em><em>“Quantum computing: this time, we tell you everything!”</em></em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078-1024x768.jpg" alt="Fanny Bouton speaking at Devoxx France 2026" class="wp-image-31802" style="width:496px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-23-13-35-06-078.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speaker: Fanny Bouton, Olivier Ezrati (Quantum Energy Initiative) &amp; Guillaume Schurck (Alice &amp; Bob)</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;<strong>Informatique quantique pour développeurs : comprendre, coder, passer à l’échelle</strong><br><br>L’informatique quantique sort du laboratoire et devient progressivement accessible aux développeurs via des SDK open source, des notebooks, des simulateurs et des QPU disponibles dans le cloud. En 2026, la question n’est plus <em>« qu’est-ce que le quantique ? »</em> mais <em>« comment un développeur peut-il s’en emparer concrètement ? »</em><br><br>Nous commencerons par poser les bases essentielles pour comprendre le modèle de calcul quantique : qubit, superposition, intrication, et ce que ces concepts impliquent pour un développeur.<br>Nous passerons ensuite au <strong>code</strong> : écrire et exécuter des circuits quantiques, utiliser des SDK modernes, travailler dans des notebooks, tester sur simulateur puis sur de vrais QPU. Vous verrez à quoi ressemble un workflow quantique aujourd’hui.<br><br>Enfin, nous aborderons les <strong>cas d’usage concrets</strong>, illustrés par le retour d’expérience d’un grand compte : ce qui fonctionne déjà, les limites actuelles, et comment les équipes tech expérimentent le quantique de manière réaliste et industrielle.<br><br>Une session technique pensée pour les développeurs qui veulent anticiper la prochaine évolution majeure du calcul.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Quantum computing for developers: understand, code and scale up.</em><br><em>Quantum computing is moving out of the laboratory and becoming progressively accessible to developers through open source SDKs, notebooks, simulators and QPUs available in the cloud. In 2026, the question is no longer ‘What is quantum?’ but ‘How can developers make practical use of it?’</em><br><br><em>We will begin by laying out the essential foundations needed to understand the quantum computing model: qubits, superposition, entanglement, and what these concepts mean for developers.</em><br><br><em>We will then move on to code: writing and running quantum circuits, using modern SDKs, working in notebooks, testing on simulators and then on real QPUs. You will see what a quantum workflow looks like today.</em><br><br><em>Finally, we will address concrete use cases, illustrated by the experience of a large account: what already works, the current limitations, and how tech teams are experimenting with quantum computing in a realistic and industrial way.</em><br><br><em>A technical session designed for developers who want to anticipate the next major evolution in computing.”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=zyB2a3rwhYw" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;Développer avec l&#8217;IA : et si c&#8217;était aussi simple qu&#8217;ajouter une librairie ?&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Developing with AI: what if it were as simple as adding a library?”</em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682-1024x576.jpg" alt="Stéphane Philippart and Mathieu Busquet speaking at Devoxx France 2026" class="wp-image-31807" style="aspect-ratio:1.7777426704463952;width:600px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682-1024x576.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682-300x169.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682-768x432.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682-1536x864.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/signal-2026-04-22-13-37-09-682.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speakers: Mathieu Busquet &amp; Stéphane Philippart</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Intégrer de l&#8217;intelligence artificielle (IA) dans nos développements peut nous paraître plus complexe que de les utiliser dans notre quotidien.<br><br>Dois-je apprendre un nouveau langage ou une nouvelle stack ?<br>Durant ce workshop nous vous proposons de vous donner tous les éléments pour intégrer l&#8217;IA sans quitter votre langage de prédilection : Java 😍. Ce sera l&#8217;occasion de découvrir les Frameworks du moments : LangChain4j, Quarkus, …<br><br>Nous vous invitons à découvrir toutes les facettes d&#8217;un chatbot avec l&#8217;IA générative (customiser un prompt, rajouter vos données (RAG), appeler des outils locaux ou distants (MCP) et créer des agents) mais aussi parce que l’IA ne se limite pas aux chatbots : faire de la transcription, créer de l&#8217;audio ou même faire un traducteur.<br><br>Et, toujours pour vous simplifier la vie, venez juste avec votre ordinateur et un navigateur Internet, on se charge du reste pour vous construire un environnement de développement aux petits oignons grâce aux CDE.<br><br>À la suite de ce talk vous repartirez avec une boîte à outils vous permettant d&#8217;intégrer simplement la puissance des modèles d&#8217;IA au sein de vos développements de tous les jours.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Integrating artificial intelligence into our developments can seem more complex than using it in our daily lives.</em><br><br><em>Do I need to learn a new language or a new stack?</em><br><br><em>During this workshop, we will give you all the tools you need to integrate AI without leaving your favourite language: Java 😍. It will be an opportunity to discover some of today’s key frameworks, including LangChain4j and Quarkus.</em><br><br><em>We invite you to explore all the facets of a chatbot with generative AI — customising a prompt, adding your own data with RAG, calling local or remote tools with MCP, and creating agents — but also to see that AI is not limited to chatbots: it can also be used for transcription, audio creation and even translation.</em><br><br><em>And to make your life even easier, just bring your computer and an internet browser. We will take care of the rest, building a polished development environment for you thanks to CDEs.</em><br><br><em>After this talk, you will leave with a toolkit that will allow you to integrate the power of AI models into your everyday development work.”</em></p>
</blockquote>



<h4 class="wp-block-heading">&#8220;Détectives de la prod : résoudre l’enquête avant le crash&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Production detectives: solve the case before the crash”</em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7-1024x768.png" alt="Sébastien Ferrer speaking at Devoxx France 2026" class="wp-image-31809" style="width:590px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7-1024x768.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7-300x225.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7-768x576.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7-1536x1152.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-7.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speaker: Sébastien Ferrer</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Saviez-vous que, derrière les coulisses de vos outils de travail, se cachent des équipes prêtes à intervenir à tout moment ?<br><br>Ces équipes, souvent discrètes mais essentielles, gèrent des dizaines de projets avec des effectifs réduits. Mais quand une alerte survient, elles doivent réagir vite. Très vite. Comment réussir à diagnostiquer et résoudre un incident en pleine production, sans perdre une précieuse seconde ?<br><br>Dans ce talk je vous emmène au cœur de l’action, où je partage notre méthodologie pour transformer chaque crise en une enquête méthodique et efficace. Nous explorerons comment des outils bien pensés, une organisation affûtée, et un soupçon d’intuition transforment la gestion d’incidents en une véritable enquête… parfois aussi palpitante qu’une partie de Cluedo.<br><br>Au programme : bonnes pratiques de troubleshooting, logging et monitoring, pour que vous repartiez avec des clés concrètes pour dompter les incidents dans vos propres projets.<br><br>Vous verrez qu’en production, chaque problème cache une histoire… à résoudre en équipe !&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Did you know that behind the scenes of your work tools, there are teams ready to intervene at any moment?</em><br><br><em>These teams, often discreet but essential, manage dozens of projects with limited staff. But when an alert occurs, they need to react quickly. Very quickly. How can they diagnose and resolve a production incident without losing precious seconds?</em><br><br><em>In this talk, I will take you into the heart of the action, where I share our methodology for turning every crisis into a structured and efficient investigation. We will explore how well-designed tools, a well-honed organisation and a touch of intuition can transform incident management into a real investigation — sometimes as thrilling as a game of Cluedo.</em><br><br><em>On the agenda: troubleshooting best practices, logging and monitoring, so you leave with concrete keys to taming incidents in your own projects.</em><br><br><em>You will see that in production, every problem hides a story… one to solve as a team!”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=sOQ6oCv0mOU" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;Et si écrire du SQL redevenait cool ?&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “What if writing SQL became cool again?”</em></p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="800" height="600" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-10.png" alt="Sébastien Ferrer speaking at Devoxx France 2026" class="wp-image-31820" style="width:482px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-10.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-10-300x225.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-10-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>🎤 Speaker: Sébastien Ferrer</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;On nous l’a répété maintes fois : “écrire du SQL dans du code source, c’est dépassé”.<br><br>Les ORMs sont partout. Ils ont facilité notre quotidien en nous permettant de manipuler nos bases de données sans nous soucier du SQL. Mais parfois, on aimerait un peu plus de contrôle, un peu plus de performance… sans pour autant revenir aux longues heures de mapping manuel et de requêtes préparées à la main.<br><br>SQLC offre une autre approche. Initialement conçu pour du Go, langage dans lequel cette technologie sera présentée dans ce talk, il permet d’écrire des requêtes SQL tout en générant du code type-safe et performant, sans ajouter de lourdeur ni de dépendances. Pas question ici de rejeter les ORMs, mais plutôt d’explorer un nouvel outil qui vient enrichir notre palette de solutions.<br><br>Dans ce talk, nous verrons comment SQLC fonctionne, dans quels cas il brille, et comment il s’intègre parfaitement dans un stack moderne. Vous aimez le SQL ? Vous voulez juste un peu plus de maîtrise sur vos requêtes ? Venez, vous risquez d’être agréablement surpris.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “We have been told many times: ‘Writing SQL in source code is outdated.’</em><br><br><em>ORMs are everywhere. They have made our daily lives easier by allowing us to manipulate databases without worrying about SQL. But sometimes, we would like a little more control, a little more performance — without going back to long hours of manual mapping and hand-written prepared queries.</em><br><br><em>SQLC offers another approach. Initially designed for Go, the language in which this technology will be presented during the talk, it allows you to write SQL queries while generating type-safe and high-performance code, without adding heaviness or dependencies. The goal here is not to reject ORMs, but rather to explore a new tool that enriches our range of solutions.</em><br><br><em>In this talk, we will see how SQLC works, where it shines, and how it integrates perfectly into a modern stack. Do you like SQL? Do you simply want more control over your queries? Come along — you may be pleasantly surprised.”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=H_macw0wqJ0" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;🤖 Apprendre à notre IA à &#8230; apprendre 🧠&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “🤖 Teaching our AI to… learn 🧠”</em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="769" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793-1024x769.jpg" alt="Stéphane Philippart speaking at Devoxx France 2026" class="wp-image-31816" style="aspect-ratio:1.3315973153489673;width:584px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793-1024x769.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793-1536x1153.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/42793.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speaker: Stéphane Philippart</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;RAG, MCP, tooling, function calling, agents, fine tuning, training, …<br>Que de termes barbares mais qui ont tous le même objectif : faire en sorte que le modèle d&#8217;intelligence artificielle que vous utilisez réponde correctement à vos questions et attentes 😅.<br>Et pour ça il va falloir ajouter de la connaissance, des données (privée ou publiques, …).<br><br>Durant ce talk je vous propose d&#8217;y voir un peu plus clair dans cette jungle des acronymes puis, fort de connaître les différences, vous proposer comment l&#8217;implémenter en tant que développeuses et développeurs.<br><br>Chaque approche a ses spécificités, ses avantages et ses inconvénients.<br>A la fin de ce talk, non seulement vous saurez choisir la bonne approche, mais aussi ajouter dans vos développements quotidiens la dose d&#8217;IA utile.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 <em>“RAG, MCP, tooling, function calling, agents, fine tuning, training…</em></em><br><br><em>So many intimidating terms, but they all have the same goal: ensuring that the artificial intelligence model you use responds correctly to your questions and expectations 😅.</em><br><br><em>And to do that, you need to add knowledge and data — private, public or otherwise.</em><br><br><em>During this talk, I will help you see more clearly through this jungle of acronyms, and once you understand the differences, I will show you how to implement them as developers.</em><br><br><em>Each approach has its own specificities, advantages and disadvantages.</em><br><br><em>By the end of this talk, you will not only know how to choose the right approach, but also how to add the right dose of useful AI into your daily development work.”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=N3NzgO6M-Ss" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<h4 class="wp-block-heading">&#8220;Refactorer sans tout casser: anatomie des patterns de modernisation incrémentale&#8221;</h4>



<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 “Refactoring without breaking everything: anatomy of incremental modernisation patterns”</em></p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9-1024x576.png" alt="Héla Ben Khalfallah speaking at Devoxx France 2026" class="wp-image-31818" style="aspect-ratio:1.7777426704463952;width:560px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9-1024x576.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9-300x169.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9-768x432.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9-1536x864.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/image-9.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>🎤 Speaker: Héla Ben Khalfallah</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Cette session répond à un problème extrêmement courant mais rarement traité de façon structurée : comment moderniser un système legacy sans big bang, sans freeze de la prod, et sans multiplier les régressions. Plutôt que de parler “microservices” ou “rewrite from scratch” de manière abstraite, la session propose un playbook de modernisation incrémentale, articulé autour de patterns éprouvés : Strangler Fig, Parallel Change (Expand/Contract), Branch by Abstraction, décomposition par capacités métier / sous-domaines / transactions, et les patterns de conception (Facade, Adapter, Proxy, Mediator) utilisés comme briques concrètes de migration.<br><br>Le contenu est ancré dans la pratique : il synthétise à la fois des retours d’expérience industriels (Netflix, Khan Academy, etc.) et des travaux de recherche / rédaction. L’objectif n’est pas de présenter un catalogue de patterns, mais de montrer comment les combiner pour construire une trajectoire de migration observable, réversible et livrable en continu.<br><br>Vous repartirez avec une grille de lecture concrète pour garder des migrations observables, réversibles et compatibles avec le rythme produit.&#8221;</p>
</blockquote>



<p></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>🏴󠁧󠁢󠁥󠁮󠁧󠁿 <em><em>“This session addresses an extremely common problem that is rarely handled in a structured way: how to modernise a legacy system without a big bang, without a production freeze, and without multiplying regressions. Rather than talking abstractly about microservices or rewriting from scratch, the session offers an incremental modernisation playbook built around proven patterns: Strangler Fig, Parallel Change — Expand/Contract — Branch by Abstraction, decomposition by business capabilities, subdomains and transactions, as well as design patterns such as Facade, Adapter, Proxy and Mediator used as concrete building blocks for migration.</em></em></em><br><br><em>The content is rooted in practice: it brings together both industrial feedback from companies such as Netflix and Khan Academy, and research and written work. The goal is not to present a catalogue of patterns, but to show how they can be combined to build a migration path that is observable, reversible and continuously deliverable.</em><br><br><em>You will leave with a concrete framework for keeping migrations observable, reversible and compatible with the pace of product development.”</em></p>
</blockquote>



<p>🎥 <a href="https://www.youtube.com/watch?v=X2YyWAh336Y" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Replay</a>.</p>



<p>📺 Devoxx France published the 232 videos (keynotes, conferences, tools in action, lunch talks &amp; deep dives) on the <a href="https://www.youtube.com/@devoxxfrvideos" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Devoxx France YouTube channel</a>.</p>



<h3 class="wp-block-heading">Podcast</h3>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-1024x768.jpg" alt="Podcast recording at Devoxx France 2026" class="wp-image-31598" style="width:428px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-1024x768.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-300x225.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-768x576.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-1536x1152.jpg 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/PXL_20260423_091521008-2048x1536.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Devoxx France was also an opportunity for OVHcloud’s Aurélie Vache, Stéphane Philippart, and Magali De Labareyre to be interviewed in the Press space for the “Tech en Pratique” podcast.</p>



<p>The episodes will be available on <a href="https://www.youtube.com/@ekit3" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">YouTube</a> starting in September! 🙂</p>



<h3 class="wp-block-heading">Key Trends</h3>



<ul class="wp-block-list">
<li><strong>AI moved from hype to production</strong><br>The focus shifted toward agentic systems, RAG, observability, governance, and enterprise integration, with more emphasis on shipping useful AI than experimenting.</li>
</ul>



<ul class="wp-block-list">
<li><strong><strong>Java evolved for modern AI and cloud workloads</strong><br></strong>LangChain4j, GraalVM, native image, and JDK modernization reinforced Java’s role as a serious platform for AI-enabled enterprise systems.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Platform engineering became a core priority</strong><br>CI/CD maturity, OpenRewrite, modernization, and developer productivity all reflected one goal: faster delivery without losing control.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Security moved deeper into developer workflows</strong><br>Shift-left security, AppSec, authorization, Software Supply Chain Security and secure-by-design approaches gained importance, especially with AI-generated code increasing governance needs.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Cloud &amp; architecture focused on operational resilience</strong><br>Kubernetes, containers, observability, and scalable systems remained central, with a stronger focus on practical engineering over hype.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Front-end discussions matured</strong><br>Accessibility, performance, reactivity, and maintainability took priority over framework wars.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Open source and European digital sovereignty gained traction</strong><br>Open models, self-hosted tooling, privacy, and vendor independence became increasingly important themes.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Developer experience (DX) became strategic</strong><br>Tooling, automation, terminal workflows, and reducing cognitive load were seen as key drivers of productivity and competitiveness.</li>
</ul>



<h3 class="wp-block-heading">Conclusion</h3>



<p>This Devoxx France edition was a raging success for the speakers, sponsors, and attendees alike ♥️.</p>



<h3 class="wp-block-heading">💬 Stay in Touch</h3>



<p>Want to chat with us, share your thoughts, or just say hi? Here’s how to get in touch with us:</p>



<ul class="wp-block-list">
<li>🟣&nbsp;<strong>Discord</strong>:&nbsp;<a href="https://discord.gg/ovhcloud" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">OVHcloud Discord server</a></li>



<li>🐦&nbsp;<strong>X / Twitter</strong>:&nbsp;<a href="https://twitter.com/OVHcloud" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">@OVHcloud</a></li>



<li>💼&nbsp;<strong>LinkedIn</strong>:&nbsp;<a href="https://www.linkedin.com/company/ovhgroup" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">OVHcloud LinkedIn</a></li>



<li>🐙&nbsp;<strong>GitHub</strong>:&nbsp;<a href="https://github.com/ovh" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">github.com/ovh</a></li>
</ul>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdevoxx-france-2026%2F&amp;action_name=Devoxx%20France%202026%3A%20feedback%20and%20highlights&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Développement à distance #3 &#8211; Industrialisation et automatisation</title>
		<link>https://blog.ovhcloud.com/developpement-distance-3-industrialisation-automatisation/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Wed, 13 May 2026 08:06:26 +0000</pubDate>
				<category><![CDATA[OVHcloud en Français]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31558</guid>

					<description><![CDATA[Après avoir configuré votre serveur manuellement, pas à pas, il est temps d’automatiser tout le processus. L’idée est simple&#160;: décrire votre infrastructure dans des fichiers de configuration et laisser Terraform s’occuper de commander les ressources chez OVHcloud. Voici un guide d’introduction à Terraform, avec de nombreuses informations utiles&#160;: https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud.Ainsi que le lien vers le fournisseur [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-3-industrialisation-automatisation%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%233%20%26%238211%3B%20Industrialisation%20et%20automatisation&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-1024x683.jpg" alt="" class="wp-image-31559" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3.jpg 1536w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /></figure>



<p>Après avoir <a href="https://blog.ovhcloud.com/developpement-distance-2-securisation-performance/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">configuré votre serveur manuellement</a>, pas à pas, il est temps d’automatiser tout le processus.</p>



<p>L’idée est simple&nbsp;: décrire votre infrastructure dans des fichiers de configuration et laisser <strong>Terraform</strong> s’occuper de commander les ressources chez <strong>OVHcloud</strong>.<br><br>Voici un guide d’introduction à Terraform, avec de nombreuses informations utiles&nbsp;: <a href="https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud</a>.<br>Ainsi que le lien vers le fournisseur officiel Terraform d’OVHcloud&nbsp;: <a href="https://registry.terraform.io/providers/ovh/ovh/latest" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://registry.terraform.io/providers/ovh/ovh/latest</a><br><br>Il existe deux étapes à l’automatisation du déploiement&nbsp;:</p>



<ul class="wp-block-list">
<li>déploiement de l’instance Public Cloud&nbsp;;</li>



<li>déploiement de la partie applicative (vscode-server) et sa configuration.</li>
</ul>



<h2 class="wp-block-heading">1. Le cœur de l’automatisation&nbsp;: le script Cloud-init</h2>



<p>Avant de parler de Terraform, il est nécessaire de comprendre comment le serveur s’auto-configure lors de son initialisation.<br>Pour cela, utilisez <code>cloud-init</code>, un standard qui permet d’exécuter des scripts dès le premier démarrage de l’instance.</p>



<p><strong>Ce que vous allez automatiser dans ce script&nbsp;:</strong></p>



<ul class="wp-block-list">
<li>la mise à jour du système (<code>apt update/upgrade</code>)&nbsp;;</li>



<li>l’installation de <code>code-server</code> via le script officiel&nbsp;;</li>



<li>l’installation et la configuration de <strong>Caddy</strong> (pour le SSL automatique)&nbsp;;</li>



<li>la configuration du pare-feu <strong>UFW</strong>.</li>
</ul>



<p>Ce type de fichier possède une syntaxe bien particulière, le cloud-config.yaml sera à disposition plus bas.</p>



<p>Toutefois, l’important à retenir est&nbsp;: pourquoi utiliser ce format&nbsp;?</p>



<ul class="wp-block-list">
<li><strong>Idempotence&nbsp;:</strong> le <code>cloud-init</code> s’assure que tout est prêt dès le premier boot.</li>



<li><strong>Sécurité dès la naissance&nbsp;:</strong> le pare-feu <code>ufw</code> est activé immédiatement, réduisant la fenêtre d’exposition.</li>



<li><strong>Intégration Terraform&nbsp;:</strong> une seule ligne est nécessaire pour l’inclure&nbsp;: <code>user_data = file("cloud-config.yaml")</code></li>
</ul>



<h2 class="wp-block-heading">2. Utilisation de Terraform pour le déploiement</h2>



<p>Terraform permet d’obtenir un démarrage de l’instance bien plus aisé et rapide.<br>Sa configuration, quant à elle, comporte plusieurs avantages&nbsp;:</p>



<ul class="wp-block-list">
<li><strong>persistance des données.</strong> Un <code>terraform destroy</code> de l’instance pourra conserver le volume de données (but fixé dans le chapitre 2)&nbsp;;</li>



<li><strong>évolutivité.</strong> Si le projet grossit, la taille du volume et/ou la flavor peuvent être modulées&nbsp;;</li>



<li><strong>portabilité.</strong> Le volume de données peut être démonté et remonté sur une autre machine.</li>
</ul>



<p>Pour garder ce billet court, pas de copier-coller de code, mais un lien vers un repository GitHub avec tout le nécessaire pour déployer ceci en quelques minutes&nbsp;:<br><a href="https://github.com/RemyAtOVH/blogpost-dev-server" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://github.com/RemyAtOVH/blogpost-dev-server</a></p>



<p>Son utilisation&nbsp;:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>ubuntu@vscode-server:~$ source openrc.production.sh<br>ubuntu@vscode-server:~$ terraform init<br>ubuntu@vscode-server:~$ terraform plan<br>ubuntu@vscode-server:~$ terraform apply<br>[…]<br>Apply complete! Resources: 4 added, 0 changed, 0 destroyed.<br>Outputs:instance_ip = &#8220;XXX.XXX.XXX.XXX&#8221;</strong></td></tr></tbody></table></figure>



<p>Avant l’application du cloud-init (ou sans), on constate bien un volume secondaire <strong>/dev/sdb</strong>, de taille correspondant aux spécifications de Terraform&nbsp;:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong><strong>ubuntu@vscode-server-automated:~$ lsblk</strong></strong><br><strong><strong>NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS<br>[&#8230;]<br>sda       8:0    0   25G  0 disk <br>[&#8230;]<br>sdb       8:16   0   10G  0 disk </strong></strong></td></tr></tbody></table></figure>



<p>C’est lui qui assurera la persistance des données.</p>



<p>Vous pourriez tout à fait effectuer manuellement la suppression de l’instance et des autres composants, sans toutefois le supprimer lui.<br>Pour éviter toute suppression en cas de «&nbsp;terraform destroy&nbsp;», un paramètre a été ajouté&nbsp;:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>lifecycle { prevent_destroy = true }</strong><strong></strong></td></tr></tbody></table></figure>



<p>Lors du premier démarrage, les différents scripts d’installation pouvant prendre du temps, vous pouvez en vérifier les étapes d’un simple <em>tail&nbsp;</em>:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>ubuntu@vscode-server-automated:<strong>~</strong>$ tail -f /var/log/cloud-init-output.log</strong></td></tr></tbody></table></figure>



<p>Une fois le cloud-init exécuté automatiquement, tout ce qui a pu être mis en place manuellement dans les chapitres précédents a été fait. Et ce, de façon automatique et reproductible&nbsp;!</p>



<p>Il sera donc possible, sous réserve de quelques minutes d’exécution, de déployer cet environnement de développement distant personnalisé si besoin et potentiellement le supprimer après quelques heures ou jours d’utilisation.</p>



<p>Dans cette série de chapitres, nous avons transformé une simple idée, disposer de son VS Code partout, en une infrastructure de niveau professionnel, automatisée et résiliente.<br>Retrouvez ci-dessous les étapes et le chemin parcouru.</p>



<ul class="wp-block-list">
<li><strong><a href="https://blog.ovhcloud.com/developpement-distance-1-premier-deploiement/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Chapitre 1</a>&nbsp;:</strong> premiers pas en installation manuelle pour comprendre la mécanique de&nbsp;<code>code-server</code>.</li>



<li><strong><a href="https://blog.ovhcloud.com/developpement-distance-2-securisation-performance/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Chapitre 2</a>&nbsp;:</strong> sécurisation, avec utilisation d’un Reverse Proxy (Caddy) et d’un pare-feu (UFW) pour naviguer sereinement en HTTPS.</li>



<li><strong>Chapitre 3&nbsp;:</strong> cet article, utilisant Terraform et OpenStack, pour une meilleure reproductibilité.</li>
</ul>



<p>L’automatisation que nous avons mise en place avec un déploiement chez OVHcloud en utilisant Public Cloud reposant sur OpenStack, constitue une base solide.</p>



<p>À partir d’ici, il est possible d’aller encore plus loin&nbsp;: ajouter une sauvegarde automatique de vos volumes (snapshotting), coupler cela à un pipeline CI/CD ou même explorer le déploiement de cet environnement via docker-compose, ou même Kubernetes.</p>



<p>Retrouvez prochainement une version vidéo de ces billets de blog, étape par étape, sur notre <a href="https://www.youtube.com/@ovhgroup" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">chaîne YouTube</a>. Restez à l’écoute&nbsp;!</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-3-industrialisation-automatisation%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%233%20%26%238211%3B%20Industrialisation%20et%20automatisation&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Remote development #3 &#8211; Industrialisation and Automation</title>
		<link>https://blog.ovhcloud.com/remote-development-3-industrialisation-automation/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Wed, 13 May 2026 08:05:05 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31565</guid>

					<description><![CDATA[After manually configuring your server step by step, it’s time to automate the entire process. The idea is simple: describe your infrastructure in configuration files and let Terraform take care of managing the resources at OVHcloud. Here is an introductory guide to Terraform, with plenty of useful information: https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud.As well as the link to OVHcloud’s [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-3-industrialisation-automation%2F&amp;action_name=Remote%20development%20%233%20%26%238211%3B%20Industrialisation%20and%20Automation&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-1024x683.jpg" alt="" class="wp-image-31559" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/3.jpg 1536w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /></figure>



<p>After <a href="https://blog.ovhcloud.com/remote-development-2-security-performance/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">manually configuring your server</a> step by step, it’s time to automate the entire process.</p>



<p>The idea is simple: describe your infrastructure in configuration files and let <strong>Terraform</strong> take care of managing the resources at <strong>OVHcloud</strong>.<br><br>Here is an introductory guide to Terraform, with plenty of useful information: <a href="https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud</a>.<br>As well as the link to OVHcloud’s official Terraform provider: <a href="https://registry.terraform.io/providers/ovh/ovh/latest" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://registry.terraform.io/providers/ovh/ovh/latest</a><br><br>There are two steps to automating the deployment:</p>



<ul class="wp-block-list">
<li>Deployment of the Public Cloud instance</li>



<li>Deployment of the application part (vscode-server) and its configuration</li>
</ul>



<h2 class="wp-block-heading">1. The heart of the automation: the Cloud-init script</h2>



<p>Before we move onto Terraform, we need to understand how the server self-configures during its initialisation.<br>To do this, use <code>cloud-init</code>, a standard that allows scripts to be executed from the first boot of the instance.</p>



<p><strong>What you will automate in this script:</strong></p>



<ul class="wp-block-list">
<li>The system update (<code>apt update/upgrade</code>)</li>



<li>The installation of <code>code-server</code> via the official script</li>



<li>The installation and configuration of <strong>Caddy</strong> (for automatic SSL)</li>



<li>The configuration of the Uncomplicated Firewall (<strong>UFW</strong>)</li>
</ul>



<p>This type of file has a very particular syntax; the cloud-config.yaml will be available further down.</p>



<p>However, the important point to remember is: why use this format?</p>



<ul class="wp-block-list">
<li><strong>Idempotence:</strong> <code>cloud-init</code> ensures that everything is ready from the first boot.</li>



<li><strong>Security from the outset:</strong> the <code>UFW</code> is activated immediately, reducing the exposure window.</li>



<li><strong>Terraform Integration:</strong> a single line is required to include this: <code>user_data = file("cloud-config.yaml")</code></li>
</ul>



<h2 class="wp-block-heading">2. Using Terraform for deployment</h2>



<p>Terraform allows for a much easier and quicker instance startup.<br>Its configuration also has several advantages:</p>



<ul class="wp-block-list">
<li><strong>Persistent data:</strong> a <code>terraform destroy</code> of the instance can retain the data volume (goal set in chapter 2)</li>



<li><strong>Scalability:</strong> if the project grows, the size of the volume and/or the flavour can be adjusted</li>



<li><strong>Portability:</strong> the data volume can be unmounted and remounted on another machine.</li>
</ul>



<p>To keep this post brief we won’t copy-paste the code here, but this link to a GitHub repository contains everything needed to deploy this in a few minutes:<br><a href="https://github.com/RemyAtOVH/blogpost-dev-server" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://github.com/RemyAtOVH/blogpost-dev-server</a></p>



<p>Its usage:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>u</strong><code><strong>ubuntu@vscode-server:~$ source openrc.production.sh<br>ubuntu@vscode-server:~$ terraform init<br>ubuntu@vscode-server:~$ terraform plan<br>ubuntu@vscode-server:~$ terraform apply<br>[...]<br>Apply complete! Resources: 4 added, 0 changed, 0 destroyed.</strong></code></td></tr></tbody></table></figure>



<p>Before applying cloud-init (or without it), there is a secondary volume <strong>/dev/sdb</strong>, sized according to Terraform specifications:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>ubuntu@vscode-server-automated:~$ lsblk</strong><br><strong>NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS<br>[&#8230;]<br>sda       8:0    0   25G  0 disk <br>[&#8230;]<br>sdb       8:16   0   10G  0 disk </strong></td></tr></tbody></table></figure>



<p>This is what will ensure data persistence.</p>



<p>You could manually delete the instance and other components, without deleting it.<br>To prevent any deletion in the event of “terraform destroy”, a parameter has been added:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>lifecycle { prevent_destroy = true }</strong><strong></strong></td></tr></tbody></table></figure>



<p>During the first startup, the various installation scripts may take time. You can check their steps with a simple tail:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong><strong>ubuntu@vscode-server-automated:<strong>~</strong>$ tail -f /var/log/cloud-init-output.log</strong></strong></td></tr></tbody></table></figure>



<p>Once cloud-init has been executed automatically, everything that could have been set up manually in the previous chapters has been done automatically, in a way that can be reproduced!</p>



<p>It will therefore be possible to deploy this customised remote development environment if needed (with a few minutes of execution) and potentially delete it after a few hours or days of use.</p>



<p>In this series of chapters, we have transformed a simple idea – having access to VS Code wherever you are – into a professional-grade, automated and resilient infrastructure.<br>Below are the steps involved and the progress so far.</p>



<ul class="wp-block-list">
<li><strong><a href="https://blog.ovhcloud.com/remote-development-1-first-deployment/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Chapter 1</a>:</strong> first steps in manual installation to understand the mechanics of <code>code-server</code>.</li>



<li><strong><a href="https://blog.ovhcloud.com/remote-development-2-security-performance/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Chapter 2</a>:</strong> making it secure, using a Reverse Proxy (Caddy) and a firewall (UFW) to navigate smoothly in HTTPS.</li>



<li><strong>Chapter 3:</strong> this article, in which we’ll use Terraform and OpenStack for better reproducibility.</li>
</ul>



<p>The automation we have implemented with an OVHcloud deployment using an OpenStack-based Public Cloud provides a solid foundation.</p>



<p>From here, you can go even further: add automatic backups of your volumes (snapshotting), couple this with a CI/CD pipeline, or even explore deploying this environment via docker-compose or even Kubernetes.</p>



<p>A step-by-step video version of these blog posts will soon be available on our <a href="https://youtube.com/@ovhgroup" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">YouTube channel</a>. Stay tuned!</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-3-industrialisation-automation%2F&amp;action_name=Remote%20development%20%233%20%26%238211%3B%20Industrialisation%20and%20Automation&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Remote development #2 &#8211; Security and Performance</title>
		<link>https://blog.ovhcloud.com/remote-development-2-security-performance/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Mon, 11 May 2026 16:00:02 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31546</guid>

					<description><![CDATA[In the previous chapter, we started the VSCode Server on a remote instance. That’s a win. However, as it stands, your installation is vulnerable, or at least not optimally secured. Traffic is being sent in clear (HTTP) and port 8080 is exposed to anyone scanning our IP address. To transform this prototype into a daily [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-2-security-performance%2F&amp;action_name=Remote%20development%20%232%20%26%238211%3B%20Security%20and%20Performance&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1-1024x683.jpg" alt="" class="wp-image-31555" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>In the <a href="https://blog.ovhcloud.com/remote-development-1-first-deployment/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">previous chapter</a>, we started the VSCode Server on a remote instance.</p>



<p>That’s a win. However, as it stands, your installation is vulnerable, or at least not optimally secured. Traffic is being sent in clear (HTTP) and port 8080 is exposed to anyone scanning our IP address.</p>



<p>To transform this prototype into a daily working tool, we need to set up a Reverse Proxy.<br>Its role is simple: to intercept secure connections (HTTPS) on the standard port 443 and redirect them locally to our service.</p>



<h2 class="wp-block-heading">1. Prerequisites: securing the network part</h2>



<p>First and foremost, we need to instruct code-server to no longer listen for connections from outside, but only to those coming from the machine itself (the proxy).</p>



<p>Modify your configuration file: nano ~/.config/code-server/config.yaml</p>



<p>Change the line &#8220;bind-addr&#8221; as follows:&nbsp;</p>



<p><code>bind-addr: 127.0.0.1:8080</code></p>



<p>Then restart the service.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl restart code-server@$USER</strong></code></td></tr></tbody></table></figure>



<p>This will ensure that vscode-server will indeed only “listen” locally and cannot be contacted directly from outside.</p>



<h2 class="wp-block-heading">2. Implement the reverse proxy</h2>



<p>Here, you have two choices:</p>



<ul class="wp-block-list">
<li>NGINX, which has been the standard choice for many years</li>



<li>Caddy, which has a more simplistic (but comprehensive) and newer approach.</li>
</ul>



<p>For this blog post, we have selected Caddy for the example and to familiarise ourselves if we have not already!</p>



<p>Caddy natively manages SSL certificate renewal – which can be done through OVHcloud!</p>



<p><strong>Installation (Debian/Ubuntu)</strong></p>



<p>You will find more comprehensive documentation for other systems or installation methods in the official documentation: <a href="https://caddyserver.com/docs/install" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://caddyserver.com/docs/install</a>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https</strong></code><br><code><strong>ubuntu@vscode-server:~$ curl -1sLf </strong></code><strong>&#8216;https://dl.cloudsmith.io/public/caddy/stable/gpg.key&#8217;</strong><code><strong>| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg</strong></code><br><code><strong>ubuntu@vscode-server:~$ curl -1sLf </strong></code><strong>&#8216;https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt&#8217;</strong><code><strong>| sudo tee /etc/apt/sources.list.d/caddy-stable.list</strong></code><br><code><strong>ubuntu@vscode-server:~$ sudo apt update &amp;&amp; sudo apt install caddy -y</strong></code></td></tr></tbody></table></figure>



<p><strong>Configuration: </strong>modify the file <code>/etc/caddy/Caddyfile</code> (clear it and replace it with this):</p>



<p><em>Replace “<strong>dev.your-domain.uk</strong>” with your own domain name, with the subdomain of your choice pointing to the IP of the instance.</em></p>



<ul class="wp-block-list">
<li>Simple configuration only on HTTP port (80)</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong><strong>dev.your-domain.uk {<br>    reverse_proxy 127.0.0.1:8080<br>}</strong></strong></td></tr></tbody></table></figure>



<ul class="wp-block-list">
<li>Recommended configuration on HTTPS port (443), using a domain hosted with OVHcloud.</li>
</ul>



<p>For creating OVHcloud API tokens, you can refer to this page: <a href="https://eu.api.ovh.com/createToken/" target="_blank" rel="noreferrer noopener" data-wpel-link="exclude">https://eu.api.ovh.com/createToken/</a>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>dev.your-domain.uk </strong></code><strong>{<br>&nbsp; &nbsp; tls {<br>&nbsp; &nbsp; &nbsp; &nbsp; dns ovh {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; endpoint &#8220;ovh-eu&#8221;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; application_key {$OVH_APPLICATION_KEY}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; application_secret {$OVH_APPLICATION_SECRET}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; consumer_key {$OVH_CONSUMER_KEY}<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; }<br>&nbsp;&nbsp;&nbsp; reverse_proxy&nbsp;<code>127.0.0.1:8080</code><br>}</strong></td></tr></tbody></table></figure>



<p><em>For further details regarding SSL certificate management, consult the official Caddy documentation.<br>Application:</em></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl reload caddy</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>If you have opted for the recommended configuration in HTTPS, your environment is now protected by robust SSL encryption.</p>



<p>You are no longer at risk of having your password intercepted on public Wi-Fi, which is a considerable step towards our goal.</p>



<h2 class="wp-block-heading">3. Network and firewall</h2>



<p>Now that the access point is unique via the HTTPS URL configured just above, the rest of the ports, except for SSH, can be closed.</p>



<p>Now, implement the basic rules in the firewall. On Ubuntu, the standard tool is <strong>UFW</strong> (Uncomplicated Firewall).</p>



<p>Start by opening the ports related to the functional services.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw allow ssh<br>ubuntu@vscode-server:~$ sudo ufw allow http<br>ubuntu@vscode-server:~$ sudo ufw allow https</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Activate the firewall:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw enable</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Check the implementation of the rules.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw status<br>Status: active</strong></code><br><code><strong>To &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Action &nbsp; &nbsp; &nbsp;From<br>-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------ &nbsp; &nbsp; &nbsp;----<br>22/tcp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>80/tcp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>443 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>45876 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>22/tcp (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>80/tcp (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>443 (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>45876 (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)</strong></code></td></tr></tbody></table></figure>



<p>You can also add stricter rules to explicitly reject anything unauthorised in incoming traffic while generally authorising outgoing traffic.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw default deny incoming<br>ubuntu@vscode-server:~$ sudo ufw default allow outgoing</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>From now on, if someone attempts to access the IP on port <code>8080</code>, the connection will be outright rejected.</p>



<p>Only the domain name in HTTPS is the legitimate entry point.<br>This handy little development server now feels more like a fortress.&nbsp;<br><br>But what happens if you decide to delete this instance to move to a more powerful one and/or stop it for an indefinite period, as your project is on hold?</p>



<p>This is what you will find out in the next part: how to <strong>isolate your data and configurations</strong> on a persistent storage volume to make your environment completely interchangeable, but also how to <strong>automate the deploymen</strong> of this development environment!</p>



<p>The ultimate goal is for a simple <code>terraform apply</code> command to to be enough to generate a development environment that’s ready to use in under two minutes.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-2-security-performance%2F&amp;action_name=Remote%20development%20%232%20%26%238211%3B%20Security%20and%20Performance&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Développement à distance #2 &#8211; Sécurisation et performance</title>
		<link>https://blog.ovhcloud.com/developpement-distance-2-securisation-performance/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Mon, 11 May 2026 15:58:04 +0000</pubDate>
				<category><![CDATA[OVHcloud en Français]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31371</guid>

					<description><![CDATA[Dans le chapitre précédent, nous avons démarré VSCode Server sur une instance distante. C’est une victoire. Mais en l’état, votre installation est vulnérable, ou du moins non sécurisée de façon optimale. Le trafic circule donc en clair (HTTP) et le port 8080 est exposé à quiconque scanne notre adresse IP. Pour transformer ce prototype en [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-2-securisation-performance%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%232%20%26%238211%3B%20S%C3%A9curisation%20et%20performance&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1024x683.jpg" alt="" class="wp-image-31554" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/2.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dans le <a href="https://blog.ovhcloud.com/developpement-distance-1-premier-deploiement/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">chapitre précédent</a>, nous avons démarré VSCode Server sur une instance distante.</p>



<p>C’est une victoire. Mais en l’état, votre installation est vulnérable, ou du moins non sécurisée de façon optimale. Le trafic circule donc en clair (HTTP) et le port 8080 est exposé à quiconque scanne notre adresse IP.</p>



<p>Pour transformer ce prototype en un outil de travail quotidien, il est indispensable de mettre en place un Reverse Proxy.</p>



<p>Son rôle est simple : intercepter les connexions sécurisées (HTTPS) sur le port standard 443 et les rediriger localement vers notre service.</p>



<h2 class="wp-block-heading">1. Prérequis&nbsp;: verrouiller la partie réseau</h2>



<p>Avant toute chose, il est nécessaire de demander à code-server de ne plus écouter les connexions venant de l’extérieur, mais uniquement celles venant de la machine elle-même (le proxy).</p>



<p>Modifiez votre fichier de configuration : nano ~/.config/code-server/config.yaml</p>



<p>Modifiez la ligne « bind-addr » comme suit :</p>



<p><code>bind-addr: 127.0.0.1:8080</code></p>



<p>Puis redémarrez le service.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl restart code-server@$USER</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Ceci aura pour effet d’avoir la certitude que vscode-server «&nbsp;écoutera&nbsp;» bien uniquement en local et ne pourra pas être contacté directement de l’extérieur</p>



<h2 class="wp-block-heading">2. Implémenter le reverse proxy</h2>



<p>Ici, vous avez deux choix&nbsp;:</p>



<ul class="wp-block-list">
<li>nginx constitue le choix standard depuis de nombreuses années&nbsp;;</li>



<li>Caddy, avec une approche plus simpliste (mais complète) et récente.</li>
</ul>



<p>Pour ce billet de blog, nous avons sélectionné Caddy pour l’exemple et se familiariser si ce n’est pas déjà le cas !</p>



<p>Caddy sait nativement gérer l’implémentation du renouvellement de certificats SSL. Le tout, avec OVHcloud !</p>



<p><strong>Installation (Debian/Ubuntu</strong></p>



<p>Vous pourrez trouver une documentation plus complète pour d’autres systèmes, ou méthodes d’installation dans la documentation officielle : <a href="https://caddyserver.com/docs/install" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://caddyserver.com/docs/install</a>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https</strong></code><br><code><strong>ubuntu@vscode-server:~$ curl -1sLf </strong></code><strong>&#8216;https://dl.cloudsmith.io/public/caddy/stable/gpg.key&#8217;</strong><code><strong>| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg</strong></code><br><code><strong>ubuntu@vscode-server:~$ curl -1sLf </strong></code><strong>&#8216;https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt&#8217;</strong><code><strong>| sudo tee /etc/apt/sources.list.d/caddy-stable.list</strong></code><br><code><strong>ubuntu@vscode-server:~$ sudo apt update &amp;&amp; sudo apt install caddy -y</strong></code></td></tr></tbody></table></figure>



<p><strong>Configuration :</strong> modifiez le fichier <code>/etc/caddy/Caddyfile</code> (videz-le et remplacez par ceci)&nbsp;:</p>



<p><em>Remplacez «&nbsp;<strong>dev.votre-domaine.fr</strong>&nbsp;» par votre propre nom de domaine avec le sous-domaine de votre choix pointant vers l’IP de l’instance.</em></p>



<ul class="wp-block-list">
<li>Configuration simple uniquement sur le port HTTP (80)</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>dev.your-domain.uk {</strong></code><code><strong>&nbsp;&nbsp;&nbsp; reverse_proxy 127.0.0.1:8080</strong></code><code><strong>}</strong></code><strong></strong></td></tr></tbody></table></figure>



<ul class="wp-block-list">
<li>Configuration recommandée sur le port HTTPS (443), en utilisant un domaine hébergé chez OVHcloud.</li>
</ul>



<p>Pour la création des tokens API OVHcloud, vous pouvez vous référer à cette page : <a href="https://eu.api.ovh.com/createToken/" target="_blank" rel="noreferrer noopener" data-wpel-link="exclude">https://eu.api.ovh.com/createToken/</a>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong><code><strong>dev.your-domain.fr </strong></code><strong>{<br>&nbsp; &nbsp; tls {<br>&nbsp; &nbsp; &nbsp; &nbsp; dns ovh {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; endpoint "ovh-eu"<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; application_key {$OVH_APPLICATION_KEY}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; application_secret {$OVH_APPLICATION_SECRET}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; consumer_key {$OVH_CONSUMER_KEY}<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; }<br>&nbsp;&nbsp;&nbsp; reverse_proxy&nbsp;<code>127.0.0.1:8080</code><br>}</strong></strong></code></td></tr></tbody></table></figure>



<p><em>Pour davantage de détails concernant la gestion des certificats SSL, vous pouvez consulter la documentation officielle de Caddy.<br>Application</em>:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl reload caddy</strong></code></td></tr></tbody></table></figure>



<p>Désormais, si vous avez opté pour la configuration recommandée en HTTPS, votre environnement est protégé par un chiffrement SSL robuste.</p>



<p>Vous ne risquez plus de voir votre mot de passe intercepté sur un Wi-Fi public, ce qui est un pas en avant non négligeable vers notre but.</p>



<h2 class="wp-block-heading">3. Réseau et pare-feu</h2>



<p>Maintenant que le point d’accès est unique via l’URL en HTTPS configuré juste au-dessus, le reste des ports, sauf le SSH, évidemment, peut être coupé.</p>



<p>Implémentez maintenant les règles basiques, dans le pare-feu. Sur Ubuntu, l’outil standard est <strong>UFW </strong>(Uncomplicated Firewall).</p>



<p>Commencez par ouvrir les ports relatifs aux services fonctionnels.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw allow ssh<br>ubuntu@vscode-server:~$ sudo ufw allow http<br>ubuntu@vscode-server:~$ sudo ufw allow https</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Activez le firewall&nbsp;:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw enable</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Vérification de la prise en compte des règles.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw status<br>Status: active</strong></code><br><code><strong>To &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Action &nbsp; &nbsp; &nbsp;From<br>-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------ &nbsp; &nbsp; &nbsp;----<br>22/tcp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>80/tcp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>443 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>45876 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere<br>22/tcp (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>80/tcp (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>443 (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)<br>45876 (v6) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ALLOW &nbsp; &nbsp; &nbsp; Anywhere (v6)</strong></code></td></tr></tbody></table></figure>



<p>Vous pouvez également ajouter des règles plus strictes pour rejeter explicitement tout ce qui n’est pas autorisé en entrée et laisser la sortie globalement autorisée.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo ufw default deny incoming<br>ubuntu@vscode-server:~$ sudo ufw default allow outgoing</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Désormais, si quelqu’un tente d’accéder à l’IP sur le port&nbsp;<code>8080</code>, la connexion sera purement et simplement rejetée.</p>



<p>Seul le nom de domaine en HTTPS constitue la porte d’entrée légitime.<br>Ce petit serveur de développement, bien pratique, ressemble désormais davantage à une forteresse.&nbsp;</p>



<p>Mais que se passe-t-il si vous décidez de supprimer cette instance pour en prendre une plus puissante et/ou la stopper pour une durée indéterminée, car votre projet est en pause&nbsp;?</p>



<p>C’est ce que vous découvrirez dans la prochaine partie&nbsp;: comment <strong>isoler vos données et vos configurations</strong> sur un volume de stockage persistant pour rendre votre environnement totalement interchangeable, mais également comment <strong>automatiser le déploiement</strong> de cet environnement de développement&nbsp;!</p>



<p>L’objectif final&nbsp;: qu’une simple commande <code>terraform apply</code> suffise à faire surgir un environnement de développement, prêt à l’emploi en moins de deux minutes.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-2-securisation-performance%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%232%20%26%238211%3B%20S%C3%A9curisation%20et%20performance&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Développement à distance #1 &#8211; Premier déploiement</title>
		<link>https://blog.ovhcloud.com/developpement-distance-1-premier-deploiement/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Mon, 11 May 2026 15:24:02 +0000</pubDate>
				<category><![CDATA[OVHcloud en Français]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31679</guid>

					<description><![CDATA[Un environnement de développement est indispensable au quotidien, mais il peut vite devenir complexe à gérer. Nous allons voir ensemble, dans un billet de blog en 3 parties, comment améliorer son confort et sa productivité ! Réunions incessantes, environnements Docker différant légèrement sur chaque machine, mises à jour système intempestives : garder un poste de [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-1-premier-deploiement%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%231%20%26%238211%3B%20Premier%20d%C3%A9ploiement&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-1024x683.jpg" alt="" class="wp-image-31613" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Un environnement de développement est indispensable au quotidien, mais il peut vite devenir complexe à gérer. Nous allons voir ensemble, dans un billet de blog en 3 parties, comment améliorer son confort et sa productivité !</p>



<p>Réunions incessantes, environnements Docker différant légèrement sur chaque machine, mises à jour système intempestives : garder un poste de développement fiable et cohérent devient vite un combat quotidien.</p>



<p>À chaque nouveau projet, il faut ré-installer les mêmes outils, les mêmes CLI, reconfigurer les mêmes SDK ou frameworks. Et surtout, espérer que la machine locale tienne la charge quand les tests, le linter et la base de données fonctionnent en même temps. Le tout, avec des situations de télétravail ou de mobilité dans lesquelles les personnes se retrouvent à développer depuis un ordinateur portable parfois proche de l’obsolescence, derrière un VPN capricieux.</p>



<p>Dans cette série d’articles, l’objectif est de transformer cette réalité en s’appuyant sur un environnement de développement complet hébergé dans le cloud et accessible depuis n’importe quel navigateur grâce à VS Code Server.</p>



<p>L’idée est de disposer d’une « station de travail » distante, puissante et, si besoin, reproductible et indépendante.</p>



<p>Ce premier chapitre montre comment déployer simplement et manuellement une instance Public Cloud et y installer VS Code Server. Les chapitres suivants traiteront de sa sécurisation et de son automatisation. &nbsp;</p>



<h2 class="wp-block-heading"><strong>1. Déploiement de l’instance</strong></h2>



<p>Pour les premiers tests, afin de prendre en main l’environnement et de le tester, il peut s’avérer judicieux d’opter pour une instance assez modeste, de type Discovery. Une instance d2-2 sera ici utilisée. 1vCPU et 2&nbsp;Go de RAM peuvent être suffisants.</p>



<h2 class="wp-block-heading"><strong>2. Installation de la partie applicative</strong></h2>



<p>La source de vérité pour les étapes suivantes est le GitHub du projet vscode-server : <a href="https://github.com/coder/code-server" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://github.com/coder/code-server</a></p>



<p>Plusieurs possibilités existent pour l’installation. Dans ce chapitre, pour simplifier le déploiement et pour les personnes peu habituées à Docker, l’installation se fera via le script d’installation «&nbsp;natif&nbsp;», sans utiliser de conteneurs.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo apt update &amp;&amp; sudo apt upgrade<br>ubuntu@vscode-server:~$ curl -fsSL&nbsp;</strong></code><a href="https://code-server.dev/install.sh" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><strong>https://code-server.dev/install.sh</strong></a><code><strong> | sh</strong></code></td></tr></tbody></table></figure>



<p>Cette étape suffit à installer le nécessaire. Activez maintenant le service et vérifiez son bon fonctionnement.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl enable --now code-server@$USER<br>ubuntu@vscode-server:~$ sudo systemctl status code-server@$USER<br></strong>● </code><strong>code-server@ubuntu.servic</strong><code><strong>e</strong> -<strong> code-server<br>&nbsp; &nbsp; &nbsp;Loaded: loaded (/usr/lib/systemd/system/code-server@.service; enabled; preset: enabled)<br>&nbsp; &nbsp; &nbsp;Active: active (running) since Wed 2025-12-03 14:55:37 UTC; 15min ago<br>&nbsp;Invocation: 1b393d84bebe415cbb770a17a0c8d399<br>&nbsp; &nbsp;Main PID: 893 (node)<br>&nbsp; &nbsp; &nbsp; Tasks: 22 (limit: 4532)<br>&nbsp; &nbsp; &nbsp;Memory: 95.1M (peak: 112.1M)<br>&nbsp; &nbsp; &nbsp; &nbsp; CPU: 1.868s<br>&nbsp; &nbsp; &nbsp;CGroup: /system.slice/system-code\x2dserver.slice/code-server@ubuntu.service<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;├─ 893 /usr/lib/code-server/lib/node /usr/lib/code-server<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;└─1130 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry</strong></code></td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><strong>3. Validation de la configuration</strong></h2>



<p>À ce stade, le service est opérationnel, il reste à en finaliser la configuration, notamment la création du dossier qui contiendra le code ainsi que l’authentification.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ mkdir workspace </strong></code><strong><br></strong><code><strong>ubuntu@vscode-server:~$&nbsp;cat ~/.config/code-server/config.yaml<br>bind-addr: 127.0.0.1:8080<br>auth: password<br>password:&lt;secure_password&gt;<br>cert: false</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>Il est ici nécessaire de placer un mot de passe sécurisé et de vérifier que la <code>bind-addr</code> correspond à la configuration souhaitée.</p>



<p>Si vous souhaitez tester directement le service en l’état, utilisez <code>0.0.0.0:8080</code>. Relancez ensuite le service et accédez à l’interface via <code>http://&lt;IP_PUBLIQUE&gt;:8080</code>.</p>



<p>Après avoir fourni dans la fenêtre d’authentification le mot de passe présent dans le <code>config.yaml</code>,&nbsp;vous accédez directement à VS Code dans le navigateur.</p>



<p>Partant de ce déploiement, vous pouvez donc ici répondre, partiellement en l’état, à la problématique d’un environnement de développement stable.</p>



<p>À ce stade, il est possible de cloner directement vos repositories GitHub ou d’utiliser le dossier <code>workspace</code> pour les cloner.</p>



<p>C’est d’ailleurs ce qui est recommandé pour davantage de pérennité, comme vous pourrez le voir dans le second chapitre.</p>



<p>Pour réaliser un commit de test via l’interface vscode-server, vous devez configurer git en local (juste une fois) pour que l’authentification du remote repository s’effectue correctement.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ git config user.email </strong></code><strong>&#8220;mail@foo.bar&#8221;</strong><br><code><strong>ubuntu@vscode-server:~$ git config --global </strong></code><strong>user.name</strong><code><strong>"John Doe"</strong></code></td></tr></tbody></table></figure>



<p>Dès cette étape, vous pouvez utiliser l’environnement de développement distant avec vscode-server. Et ce, en profitant de quasiment toutes les fonctionnalités dont vous pourriez disposer en local, mais avec les avantages d’un environnement dédié à cet usage.</p>



<p>⚠️ Rappel&nbsp;: en l’état, le déploiement fait ici n’est pas en statut «&nbsp;production ready&nbsp;»&nbsp;!</p>



<p>Le but de ce premier chapitre est de découvrir le service, les manipulations vous étant proposées pour vous permettre de vous familiariser avec l’environnement. Ainsi, veillez à ne pas opérer le service tel que déployé ici plus que quelques heures&nbsp;!</p>



<p>Il sera nécessaire de sécuriser l’environnement, puisqu’il est exposé directement sur Internet. C’est l’objet des <a href="https://blog.ovhcloud.com/developpement-distance-2-securisation-performance/" type="link" id="https://blog.ovhcloud.com/chapter-2-security-and-performance" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">chapitres suivants</a>.</p>



<p>Ce premier chapitre se termine avec un environnement de développement opérationnel, déjà capable de supporter un vrai projet applicatif&nbsp;!</p>



<p>L’instance est en ligne, VS Code Server répond dans le navigateur, l’espace de travail est prêt et le premier dépôt a été cloné et ouvert comme sur un poste local. Cette base montre qu’il est possible de s’abstraire du matériel pour gagner en portabilité et partager plus facilement une configuration commune au sein d’une équipe ou d’un poste de développement nomade.</p>



<p>Dans les prochains chapitres, cet environnement au minimum viable sera progressivement renforcé avec du stockage persistant, des mécanismes de sauvegarde ainsi qu’un accès sécurisé en HTTPS. Il sera ensuite entièrement automatisé via de l’Infrastructure as Code, afin de passer d’un simple test technique à une véritable plateforme de développement prête pour la production interne.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeveloppement-distance-1-premier-deploiement%2F&amp;action_name=D%C3%A9veloppement%20%C3%A0%20distance%20%231%20%26%238211%3B%20Premier%20d%C3%A9ploiement&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Navigating OVHcloud Enterprise File Storage (EFS) with Trident CSI On Kubernetes clusters (MKS)</title>
		<link>https://blog.ovhcloud.com/navigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Mon, 11 May 2026 12:18:46 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[Storage]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31391</guid>

					<description><![CDATA[If you find yourself in need of shared persistent storage for applications running on OVHcloud Managed Kubernetes Service (MKS), then OVHcloud Enterprise File Storage (EFS) with Trident CSI offers you a practical way to provision and manage it. This blog post explains how to create and connect OVHcloud EFS to your MKS cluster using Trident [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fnavigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks%2F&amp;action_name=Navigating%20OVHcloud%20Enterprise%20File%20Storage%20%28EFS%29%20with%20Trident%20CSI%20On%20Kubernetes%20clusters%20%28MKS%29&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="1020" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-1024x1020.png" alt="" class="wp-image-31461" style="aspect-ratio:1.0039264898357345;width:426px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-1024x1020.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-768x765.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587-70x70.png 70w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/IMG_1587.png 1253w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you find yourself in need of shared persistent storage for applications running on OVHcloud Managed Kubernetes Service (MKS), then OVHcloud Enterprise File Storage (EFS) with Trident CSI offers you a practical way to provision and manage it.</p>



<p>This blog post explains how to create and connect OVHcloud EFS to your MKS cluster using Trident CSI, so you can dynamically provision persistent storage for Kubernetes workloads.</p>



<h3 class="wp-block-heading">OVHcloud Enterprise File System (EFS)</h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="100" height="100" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x.png" alt="" class="wp-image-31410" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x.png 100w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Enterprise-File-Storage@2x-70x70.png 70w" sizes="auto, (max-width: 100px) 100vw, 100px" /></figure>



<p><a href="https://www.ovhcloud.com/fr/storage-solutions/enterprise-file-storage/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">EFS</a> is a high-performance, fully managed file storage solution powered by NetApp ONTAP in an active-active architecture. It is designed for enterprise workloads requiring high availability, predictable performance, and seamless integration with cloud-native environments.</p>



<p>The service is available in multiple regions, including Roubaix, Gravelines, Strasbourg, Limbourg, and Beauharnois, with a strong SLA of 99.99% uptime. Storage capacity ranges from 50 GB up to 29 TB.</p>



<p>EFS delivers guaranteed performance with 4,000 IOPS and 64 MB/s throughput per TiB, scaling linearly with volume size thanks to NVMe SSD infrastructure.</p>



<p>Built for modern infrastructures, <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-storage-netapp-trident-csi?id=kb_article_view&amp;sysparm_article=KB0074862" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">EFS integrates natively with Kubernetes via Trident CSI</a> (compatible with MKS) and supports ReadWriteMany (RWX) access. It operates within a single availability zone (1AZ) and provides low-latency NFS storage over OVHcloud’s secure vRack network, ensuring strong security and compliance.</p>



<h3 class="wp-block-heading">NetApp Trident CSI</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="350" height="387" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9.png" alt="" class="wp-image-31406" style="width:201px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9.png 350w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/image-9-271x300.png 271w" sizes="auto, (max-width: 350px) 100vw, 350px" /></figure>



<p><a href="https://github.com/netApp/trident" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Trident</a> is an open-source, fully supported storage orchestration project maintained by <a href="https://www.netapp.com/fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">NetApp</a>. It is designed to help Kubernetes applications consume persistent storage using standard interfaces such as the Container Storage Interface (<a href="https://github.com/container-storage-interface/spec/blob/master/spec.md" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">CSI</a>).</p>



<p>Trident runs directly inside Kubernetes clusters as a set of <strong>Pods</strong> and enables dynamic provisioning and management of storage for containerized workloads. It allows applications to easily access persistent storage from NetApp’s ecosystem, including ONTAP systems (like the OVHcloud EFS).</p>



<h3 class="wp-block-heading">Let&#8217;s do it!</h3>



<h4 class="wp-block-heading">EFS creation</h4>



<p>We already have a MKS cluster, in GRA11 region, running inside a private network and a subnet, with a gateway.<br>We also already have a vRack and our Public Cloud Project attached to this vRack.<br>So in this blog post we will only create a new EFS in <strong>eu-west-rbx</strong> region, attached to a vRackServices, inside the same subnet that our existing MKS cluster.</p>



<p>Here you can see the architecture of all the services:</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1024x554.png" alt="" class="wp-image-31538" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1024x554.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-300x162.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-768x415.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-1536x831.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/Untitled-2026-05-04-11371-2048x1107.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ EFS and MKS regions may differ; be aware that latency between different regions may impact your storage workloads performance. <strong>It&#8217;s highly recommended to keep your storage and compute as close as possible.</strong></p>



<p>We will deploy the EFS in <strong>eu-west-rbx</strong> instead of in <strong>eu-west-gra</strong> region to show you that it is possible.</p>



<p>To deploy the EFS, we will use the <a href="https://registry.terraform.io/modules/ovh/efs/ovh/latest" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Terraform OVHcloud EFS module</a>.</p>



<p>The module we will use can deploy all the components necessary to use EFS with a MKS cluster (like you can see in the schema).</p>



<p>But in this blog post we will assume that we already deployed:</p>



<ul class="wp-block-list">
<li>a vRack</li>



<li>a Private Network</li>



<li>a Private Subnet</li>



<li>a Gateway</li>



<li>a MKS cluster</li>
</ul>



<p>So using the Terraform module we will fill the existing resources information and ask Terraform to create:</p>



<ul class="wp-block-list">
<li>an OAuth2 credential</li>



<li>an IAM policy</li>



<li>an EFS</li>



<li>a vRack Services</li>
</ul>



<p>Let&#8217;s deploy our components with Terraform!</p>



<p>Create a <strong>provider.tf </strong>file and fill it with the information:</p>



<pre class="wp-block-code"><code class="">terraform {<br>  required_providers {<br>    ovh = {<br>      source  = "ovh/ovh"<br>      version = "&gt;= 2.12.0"<br>    }<br>    null = {<br>      source  = "hashicorp/null"<br>      version = "&gt;= 3.0.0"<br>    }<br>  }<br><br>  required_version = "&gt;= 1.7.0"<br>}<br><br>provider "ovh" {<br>}</code></pre>



<p>If you don&#8217;t define the provider information inside this file, as was shown in this example, you can instead set the environment variables with your credentials:</p>



<pre class="wp-block-code"><code class=""># OVHcloud provider needed keys<br>export OVH_ENDPOINT="ovh-eu"<br>export OVH_APPLICATION_KEY="xxx"<br>export OVH_APPLICATION_SECRET="xxx"<br>export OVH_CONSUMER_KEY="xxx"<br>export OVH_CLOUD_PROJECT_SERVICE="xxx"</code></pre>



<p>Create a <strong>variable.tf.template</strong> file and fill it with these information:</p>



<pre class="wp-block-code"><code class=""># Existing services<br>variable "service_name" {<br>  default = "$OVH_CLOUD_PROJECT_SERVICE"<br>}<br><br>variable "vrack_id" {<br>  default = "pn-1234567" #ID of your existing vRack<br>}<br><br>variable "vlan_id" {<br>  default = "666" #ID of your VLAN<br>}<br><br>variable "private_network_id" {<br>  default = "d111cb65-1234-5678-9012-dac2e93b8944" #ID of your private network<br>}<br><br>variable "private_subnet_id" {<br>  default = "d8dc2469-1234-5678-9012-1f86551d3466" #ID of your subnet<br>}<br><br>variable "vrackservices_subnet_service_range_cidr" {<br>  default = "192.168.168.248/29" #CIDR of your private network<br>}<br><br>variable "private_subnet_cidr" {<br>  default = "192.168.168.0/24" #CIDR of your subnet<br>} <br><br>variable "mks_region" {<br>  default = "GRA11" #Region of your existing MKS cluster<br>}<br><br>variable "mks_cluster_id" {<br>  default = "7c3e1e6e-1234-5678-9012-4fb5a5b145e7" #ID of your existing MKS cluster<br>}<br><br># Services to create<br><br>variable "oauth2_client_name" {<br>  default = "efs-trident-client-example"<br>}<br><br>variable "oauth2_client_description" {<br>  default = "OAuth2 client for EFS Trident integration"<br>}<br><br>variable "iam_policy_name" {<br>  default = "efs-trident-policy-example"<br>}<br><br>variable "iam_policy_description" {<br>  default = "IAM policy for EFS Trident access"<br>}<br><br>variable "vrackservices_attach_to_efs" {<br>  description = "Whether to attach the EFS service endpoint to vRack Services. Set to false before destroying."<br>  type        = bool<br>  default     = true<br>}<br><br>variable "efs_region" {<br>  default = "eu-west-rbx"<br>}<br><br>variable "efs_name" {<br>  default = "my-efs-storage"<br>}<br><br>variable "efs_plan" {<br>  default = "enterprise-file-storage-premium-1tb"<br>}</code></pre>



<p>⚠️ In the file, replace the IDs, CIDR &amp; MKS region with your existing resources information.</p>



<p>Replace the value of the <strong>OVH_CLOUD_PROJECT_SERVICE</strong> environment variable in the <strong>variables.tf</strong> file: </p>



<pre class="wp-block-code"><code class="">envsubst &lt; variables.tf.template &gt; variables.tf</code></pre>



<p>Create a <strong>efs.tf</strong> file and fill it with the information:</p>



<pre class="wp-block-code"><code class="">module "ovh_efs_trident" {<br>  source = "ovh/efs/ovh//modules/efs-trident"<br><br>  # OVH region for EFS and vRack Services<br>  region = var.efs_region<br><br>  # Public Cloud region for MKS and private network<br>  public_cloud_region = var.mks_region<br><br>  # VLAN ID must be the same for vRack Services and Public Cloud private network<br>  vlan_id = var.vlan_id<br><br>  # Set to false before destroying to detach endpoint first<br>  vrackservices_attach_to_efs = var.vrackservices_attach_to_efs<br><br>  # EFS creation<br>  storage_efs_name      = var.efs_name<br>  storage_efs_plan_code = var.efs_plan<br><br>  # --- vRack ---<br>  create_vrack       = false<br>  vrack_service_name = var.vrack_id<br><br>  # --- Cloud Project ---<br>  create_cloud_project        = false<br>  cloud_project_id            = var.service_name<br>  bind_vrack_to_cloud_project = false # Set to false if already bound<br><br>  # --- Private Network ---<br>  create_private_network      = false<br>  private_network_id = var.private_network_id<br><br>  # --- Private Subnet ---<br>  create_private_subnet      = false<br>  private_subnet_id = var.private_subnet_id<br><br>  # --- Gateway ---<br>  create_gateway = false  # Set to false only if existing network has gateway<br><br>  # --- MKS Cluster ---<br>  create_mks_cluster = false<br>  mks_cluster_id     = var.mks_cluster_id # mks-priv-gra11<br>  create_node_pool   = false # Set to false if using existing node pool<br><br>  # OAuth2 and IAM<br>  oauth2_client_name        = var.oauth2_client_name<br>  oauth2_client_description = var.oauth2_client_description<br>  iam_policy_name           = var.iam_policy_name<br>  iam_policy_description    = var.iam_policy_description<br><br>  # Network (shared between vRack Services and Public Cloud)<br>  private_network_subnet_cidr             = var.private_subnet_cidr<br>  vrackservices_subnet_service_range_cidr = var.vrackservices_subnet_service_range_cidr # EFS gets IPs here<br>}</code></pre>



<p>Create an <strong>output.tf</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">output "client_id" {<br>    value = module.ovh_efs_trident.client_id<br>}<br><br>output "client_secret" {<br>    value = module.ovh_efs_trident.client_secret<br>    sensitive = true<br>}<br><br>output "efs_id" {<br>  value       = module.ovh_efs_trident.efs_id<br>}</code></pre>



<p>The Terraform configuration is ready. Let&#8217;s init it:</p>



<pre class="wp-block-code"><code class="">terraform init</code></pre>



<p>The output should be like this:</p>



<pre class="wp-block-code"><code class="">$ terraform init<br><br>Initializing the backend...<br>Initializing modules...<br>Initializing provider plugins...<br>- Reusing previous version of hashicorp/null from the dependency lock file<br>- Reusing previous version of ovh/ovh from the dependency lock file<br>- Using previously-installed hashicorp/null v3.2.4<br>- Using previously-installed ovh/ovh v2.13.1<br><br>Terraform has been successfully initialized!<br><br>You may now begin working with Terraform. Try running "terraform plan" to see<br>any changes that are required for your infrastructure. All Terraform commands<br>should now work.<br><br>If you ever set or change modules or backend configuration for Terraform,<br>rerun this command to reinitialize your working directory. If you forget, other<br>commands will detect it and remind you to do so if necessary.</code></pre>



<p>Apply it:</p>



<pre class="wp-block-code"><code class="">terraform apply</code></pre>



<p>The output should be like this:</p>



<pre class="wp-block-code"><code class="">$ terraform apply<br><br>module.ovh_efs_trident.data.ovh_me.my_account: Reading...<br>module.ovh_efs_trident.data.ovh_cloud_project_kube.existing[0]: Reading...<br>module.ovh_efs_trident.data.ovh_cloud_project.existing[0]: Reading...<br>module.ovh_efs_trident.data.ovh_me.my_account: Read complete after 1s [id=xx12345-ovh]<br>module.ovh_efs_trident.data.ovh_cloud_project.existing[0]: Read complete after 0s<br>module.ovh_efs_trident.data.ovh_order_cart.cart: Reading...<br>module.ovh_efs_trident.data.ovh_order_cart.cart: Read complete after 0s [id=d582ab7c-1234-5678-9012-4a6e702ea4c5]<br>module.ovh_efs_trident.data.ovh_cloud_project_kube.existing[0]: Read complete after 5s [id=7c3e1e6e-1234-5678-9012-4fb5a5b145e7]<br><br>Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:<br>  + create<br><br>Terraform will perform the following actions:<br><br>  # module.ovh_efs_trident.null_resource.config_validation will be created<br>  + resource "null_resource" "config_validation" {<br>      + id = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_iam_policy.iam_policy will be created<br>  + resource "ovh_iam_policy" "iam_policy" {<br>      + allow       = [<br>          + "storageNetApp:apiovh:get",<br>          + "storageNetApp:apiovh:serviceInfos/get",<br>          + "storageNetApp:apiovh:share/accessPath/get",<br>          + "storageNetApp:apiovh:share/acl/create",<br>          + "storageNetApp:apiovh:share/acl/delete",<br>          + "storageNetApp:apiovh:share/acl/get",<br>          + "storageNetApp:apiovh:share/create",<br>          + "storageNetApp:apiovh:share/delete",<br>          + "storageNetApp:apiovh:share/edit",<br>          + "storageNetApp:apiovh:share/extend",<br>          + "storageNetApp:apiovh:share/get",<br>          + "storageNetApp:apiovh:share/revertToSnapshot",<br>          + "storageNetApp:apiovh:share/snapshot/create",<br>          + "storageNetApp:apiovh:share/snapshot/delete",<br>          + "storageNetApp:apiovh:share/snapshot/edit",<br>          + "storageNetApp:apiovh:share/snapshot/get",<br>        ]<br>      + created_at  = (known after apply)<br>      + description = "IAM policy for EFS Trident access"<br>      + id          = (known after apply)<br>      + identities  = (known after apply)<br>      + name        = "efs-trident-policy-example"<br>      + owner       = (known after apply)<br>      + read_only   = (known after apply)<br>      + resources   = (known after apply)<br>      + updated_at  = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client will be created<br>  + resource "ovh_me_api_oauth2_client" "api_oauth2_client" {<br>      + client_id     = (known after apply)<br>      + client_secret = (sensitive value)<br>      + description   = "OAuth2 client for EFS Trident integration"<br>      + flow          = "CLIENT_CREDENTIALS"<br>      + id            = (known after apply)<br>      + identity      = (known after apply)<br>      + name          = "efs-trident-client-example"<br>    }<br><br>  # module.ovh_efs_trident.ovh_storage_efs.efs[0] will be created<br>  + resource "ovh_storage_efs" "efs" {<br>      + created_at        = (known after apply)<br>      + iam               = (known after apply)<br>      + id                = (known after apply)<br>      + name              = "my-efs-storage"<br>      + order             = (known after apply)<br>      + ovh_subsidiary    = "FR"<br>      + performance_level = (known after apply)<br>      + plan              = [<br>          + {<br>              + configuration = [<br>                  + {<br>                      + label = "region"<br>                      + value = "eu-west-rbx"<br>                    },<br>                  + {<br>                      + label = "network"<br>                      + value = "vrack"<br>                    },<br>                ]<br>              + duration      = "P1M"<br>              + plan_code     = "enterprise-file-storage-premium-1tb"<br>              + pricing_mode  = "default"<br>            },<br>        ]<br>      + product           = (known after apply)<br>      + quota             = (known after apply)<br>      + region            = (known after apply)<br>      + service_name      = (known after apply)<br>      + status            = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0] will be created<br>  + resource "ovh_vrack_vrackservices" "vrack-vrackservices-binding" {<br>      + id             = (known after apply)<br>      + service_name   = "pn-1234567"<br>      + vrack_services = (known after apply)<br>    }<br><br>  # module.ovh_efs_trident.ovh_vrackservices.vrackservices[0] will be created<br>  + resource "ovh_vrackservices" "vrackservices" {<br>      + checksum        = (known after apply)<br>      + created_at      = (known after apply)<br>      + current_state   = (known after apply)<br>      + current_tasks   = (known after apply)<br>      + iam             = (known after apply)<br>      + id              = (known after apply)<br>      + order           = (known after apply)<br>      + ovh_subsidiary  = "FR"<br>      + plan            = [<br>          + {<br>              + configuration = [<br>                  + {<br>                      + label = "region_name"<br>                      + value = "eu-west-rbx"<br>                    },<br>                ]<br>              + duration      = "P1M"<br>              + plan_code     = "vrack-services"<br>              + pricing_mode  = "default"<br>            },<br>        ]<br>      + resource_status = (known after apply)<br>      + target_spec     = {<br>          + subnets = [<br>              + {<br>                  + cidr              = "192.168.168.0/24"<br>                  + service_endpoints = [<br>                      + {<br>                          + managed_service_urn = (known after apply)<br>                        },<br>                    ]<br>                  + service_range     = {<br>                      + cidr = "192.168.168.248/29"<br>                    }<br>                  + vlan              = 666<br>                    # (1 unchanged attribute hidden)<br>                },<br>            ]<br>        }<br>      + updated_at      = (known after apply)<br>    }<br><br>Plan: 6 to add, 0 to change, 0 to destroy.<br><br>Changes to Outputs:<br>  + client_id     = (known after apply)<br>  + client_secret = (sensitive value)<br>  + efs_id        = (known after apply)<br><br>Do you want to perform these actions?<br>  Terraform will perform the actions described above.<br>  Only 'yes' will be accepted to approve.<br><br>  Enter a value: yes<br><br>module.ovh_efs_trident.null_resource.config_validation: Creating...<br>module.ovh_efs_trident.null_resource.config_validation: Creation complete after 0s [id=8553589333890826101]<br>module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client: Creating...<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Creating...<br>module.ovh_efs_trident.ovh_me_api_oauth2_client.api_oauth2_client: Creation complete after 0s [id=EU.xxxxxxxxxxxxx]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m20s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [00m30s elapsed]<br>...<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [03m40s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Still creating... [03m50s elapsed]<br>module.ovh_efs_trident.ovh_storage_efs.efs[0]: Creation complete after 3m52s [id=c2d759de-cd63-4e28-aaab-a7599aad2ca8]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Creating...<br>module.ovh_efs_trident.ovh_iam_policy.iam_policy: Creating...<br>module.ovh_efs_trident.ovh_iam_policy.iam_policy: Creation complete after 0s [id=a434d1a4-1234-5678-9012-cf54251eee52]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [00m20s elapsed]<br>...<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Still creating... [01m20s elapsed]<br>module.ovh_efs_trident.ovh_vrackservices.vrackservices[0]: Creation complete after 1m30s [id=vrs-a00-b11-c22-d33]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Creating...<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [00m10s elapsed]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [00m20s elapsed]<br>...<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Still creating... [01m40s elapsed]<br>module.ovh_efs_trident.ovh_vrack_vrackservices.vrack-vrackservices-binding[0]: Creation complete after 1m43s [id=vrack_pn-1234567-vrackServices_vrs-a00-b11-c22-d33]<br><br>Apply complete! Resources: 6 added, 0 changed, 0 destroyed.<br><br>Outputs:<br><br>client_id = "EU.xxxxxxxxxxxxx"<br>client_secret = &lt;sensitive&gt;<br>efs_id = "c2d759de-cd63-4e28-aaab-a7599aad2ca8"</code></pre>



<p>Save the OAuth2 credentials in environment variables:</p>



<pre class="wp-block-code"><code class="">export EFS_CLIENT_ID=$(terraform output -raw client_id)<br>export EFS_CLIENT_SECRET=$(terraform output -raw client_secret)</code></pre>



<h4 class="wp-block-heading">Trident CSI Installation</h4>



<p>Install the Trident operator in your MKS cluster:</p>



<pre class="wp-block-code"><code class="">helm repo add netapp-trident https://netapp.github.io/trident-helm-chart<br><br>helm install trident-operator netapp-trident/trident-operator \<br>  --version 100.2502.1 \<br>  --create-namespace \<br>  --namespace trident \<br>  --set tridentSilenceAutosupport=true \<br>  --set operatorImage="ovhcom/trident-operator:25.02.1-linux-amd64" \<br>  --set tridentImage="ovhcom/trident:25.02.1-linux-amd64"</code></pre>



<p>You should have a result like this:</p>



<pre class="wp-block-code"><code class="">$ helm install trident-operator netapp-trident/trident-operator \<br>  --version 100.2502.1 \<br>  --create-namespace \<br>  --namespace trident \<br>  --set tridentSilenceAutosupport=true \<br>  --set operatorImage="ovhcom/trident-operator:25.02.1-linux-amd64" \<br>  --set tridentImage="ovhcom/trident:25.02.1-linux-amd64"<br><br>NAME: trident-operator<br>LAST DEPLOYED: Tue Apr 28 14:01:19 2026<br>NAMESPACE: trident<br>STATUS: deployed<br>REVISION: 1<br>TEST SUITE: None<br>NOTES:<br>Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI<br>storage provisioner for Kubernetes.<br><br>Your release is named 'trident-operator' and is installed into the 'trident' namespace.<br>Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.<br><br>To configure Trident to manage storage resources, you will need a copy of tridentctl, which is<br>available in pre-packaged Trident releases.  You may find all Trident releases and source code<br>online at https://github.com/NetApp/trident.<br><br>To learn more about the release, try:<br><br>  $ helm status trident-operator<br>  $ helm get all trident-operator</code></pre>



<p>Once the installation is complete, verify that all Trident <strong>pods</strong> are in <code><strong>Running</strong></code> state in the trident <strong>namespace</strong> before proceeding:</p>



<pre class="wp-block-code"><code class="">$ kubectl get pods -n trident<br><br>NAME                                  READY   STATUS    RESTARTS      AGE<br>trident-controller-5bf6c8d6f6-g95jq   6/6     Running   0             119s<br>trident-node-linux-4xtjr              2/2     Running   1 (82s ago)   119s<br>trident-node-linux-6w5ff              2/2     Running   1 (82s ago)   119s<br>trident-node-linux-r7hxp              2/2     Running   0             119s<br>trident-operator-859f59c58b-2z2ts     1/1     Running   0             2m31s</code></pre>



<h4 class="wp-block-heading">Trident Backend Creation</h4>



<p>The Trident backend connects NetApp Trident to the OVHcloud EFS service using the IAM credentials previously created.</p>



<h5 class="wp-block-heading" id="1-secret-creation">1. Secret Creation</h5>



<p>Create a Kubernetes <strong>Secret</strong> containing the connection information that allows Trident to access the OVHcloud API. Create a <strong>trident-secret.yaml.template</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: v1<br>kind: Secret<br>metadata:<br>  name: ovh-efs-secret<br>type: Opaque<br>stringData:<br>  clientID: "$EFS_CLIENT_ID"         # your clientId<br>  clientSecret: "$EFS_CLIENT_SECRET" # your clientSecret</code></pre>



<p>Replace the <code>clientID</code> and <code>clientSecret</code> values by the OAuth2 client we created with Terraform:</p>



<pre class="wp-block-code"><code class="">envsubst &lt; trident-secret.yaml.template &gt; trident-secret.yaml</code></pre>



<p>Apply the secret in your cluster:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f trident-secret.yaml -n trident</code></pre>



<p>Check that the secret has been correctly created:</p>



<pre class="wp-block-code"><code class="">$ kubectl get secret ovh-efs-secret -n trident<br><br>NAME             TYPE     DATA   AGE<br>ovh-efs-secret   Opaque   2      3s</code></pre>



<h5 class="wp-block-heading" id="2-trident-backend-creation">2. Trident Backend Creation</h5>



<p>Create your backend with the command below:</p>



<pre class="wp-block-code"><code class="">cat &lt;&lt;EOF | kubectl create -n trident -f -<br>apiVersion: trident.netapp.io/v1<br>kind: TridentBackendConfig<br>metadata:<br>  name: ovh-efs-rbx<br>spec:<br>  version: 1<br>  backendName: backend-ovh-efs<br>  defaults:<br>    exportRule: "192.168.168.0/24"    # CIDR of your network for NFS ACLs<br>  storageDriverName: ovh-efs<br>  clientLocation: ovh-eu<br>  location: eu-west-rbx         # Location of your EFS service<br>  serviceLevel: premium<br>  nfsMountOptions: rw,hard,rsize=65536,wsize=65536,nfsvers=3,tcp<br>  credentials:<br>    name: ovh-efs-secret<br>  volumeCreateTimeout: "60" <br>EOF</code></pre>



<p>⚠️ The <code>ovh-efs</code> storage driver must be used. Replace <code><strong>exportRule</strong></code>, <code><strong>location</strong></code>, and other parameters with values matching your environment.</p>



<p>Verify that the backend has been created correctly with the command below:</p>



<pre class="wp-block-code"><code class="">$ kubectl get TridentBackendConfig -n trident<br><br>NAME          BACKEND NAME      BACKEND UUID                           PHASE   STATUS<br>ovh-efs-rbx   backend-ovh-efs   ace12d67-70ea-44e1-abd8-20d016f7f030   Bound   Success</code></pre>



<h4 class="wp-block-heading" id="storageclass-and-usage">Use EFS in your MKS cluster</h4>



<p>This section describes how to expose Enterprise File Storage to Kubernetes workloads using Trident.</p>



<h5 class="wp-block-heading" id="1-storageclass">1. StorageClass</h5>



<p>In a <strong>sc_efs.yaml</strong> file, define a <code>StorageClass</code> to enable dynamic provisioning via the Trident CSI driver:</p>



<pre class="wp-block-code"><code class="">apiVersion: storage.k8s.io/v1<br>kind: StorageClass<br>metadata:<br>  name: ovh-efs-premium<br>provisioner: csi.trident.netapp.io<br>parameters:<br>  backendType: "ovh-efs"<br>  fsType: "nfs"<br>allowVolumeExpansion: true</code></pre>



<p>Apply the StorageClass:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f sc_efs.yaml</code></pre>



<p>Check that the StorageClass has been created:</p>



<pre class="wp-block-code"><code class="">$ kubectl get sc ovh-efs-premium<br><br>NAME              PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE<br>ovh-efs-premium   csi.trident.netapp.io   Delete          Immediate           true                   3h13m</code></pre>



<p>This <strong>StorageClass</strong> allows volumes to be provisioned on demand and expanded dynamically.</p>



<h4 class="wp-block-heading" id="2-volume-creation-pvc">2. Volume Creation (PVC)</h4>



<p>Create a <code>PersistentVolumeClaim</code> with <code>ReadWriteMany</code> (RWX) access mode. Create a <strong>pvc_efs.yaml</strong> file with this content:</p>



<pre class="wp-block-code"><code class="">apiVersion: v1<br>kind: PersistentVolumeClaim<br>metadata:<br>  name: premium-pvc-efs<br>spec:<br>  accessModes:<br>    - ReadWriteMany<br>  resources:<br>    requests:<br>      storage: 100Gi<br>  storageClassName: ovh-efs-premium</code></pre>



<p>Apply it:</p>



<pre class="wp-block-code"><code class="">kubectl apply -f pvc_efs.yaml</code></pre>



<p>Verify that the <code><strong>PVC</strong></code> has been created with the command below:</p>



<pre class="wp-block-code"><code class="">kubectl get pvc premium-pvc-efs</code></pre>



<p>At this point, the <strong>EFS</strong> is creating a volume, attach the correct ACL to it and mount it in the PVC</p>



<p>After a little time, the output should show the PVC in <code>Bound</code> state:</p>



<pre class="wp-block-code"><code class="">$ kubectl get pvc<br><br>NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS   AGE<br>premium-pvc-efs   Bound    pvc-faca364d-ad76-44ec-9bc9-959c0d33c515   100Gi      RWX            ovh-efs-premium   &lt;unset&gt;                 3m43s</code></pre>



<p>The volume has been created through the <strong>PVC</strong> and you can now mount it in a <strong>Pod</strong> 🎉.</p>



<h3 class="wp-block-heading">Conclusion</h3>



<p>In this blog, we’ve explained how to create an EFS and use it in a MKS cluster through Trident CSI. This will give you a flexible, production-ready approach to persistent shared storage in Kubernetes.</p>



<p>We recommend you also take a look at our <a href="https://github.com/orgs/ovh/projects/16" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Cloud Roadmap &amp; Changelog</a> for an overview of all the coming features for OVHcloud Public Cloud products.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fnavigating-ovhcloud-enterprise-file-storage-efs-with-trident-csi-on-kubernetes-clusters-mks%2F&amp;action_name=Navigating%20OVHcloud%20Enterprise%20File%20Storage%20%28EFS%29%20with%20Trident%20CSI%20On%20Kubernetes%20clusters%20%28MKS%29&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🎙️ Tranches de Tech #28 &#8211; La dream team au complet</title>
		<link>https://blog.ovhcloud.com/tranches-de-tech-28-la-dream-team-au-complet/</link>
		
		<dc:creator><![CDATA[Stéphane Philippart]]></dc:creator>
		<pubDate>Mon, 11 May 2026 10:13:46 +0000</pubDate>
				<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Tranches de Tech]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31837</guid>

					<description><![CDATA[The Tranches de Tech team is back in full force for a new episode covering recent tech news, AI developments, developer tools, and the latest trends across cloud and open source.<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Ftranches-de-tech-28-la-dream-team-au-complet%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2328%20%26%238211%3B%20La%20dream%20team%20au%20complet&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="757" src="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond.png" alt="An avocado with a computer keyboard" class="wp-image-31036" style="width:640px" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond.png 759w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/04/Tranches-de-Tech-visuel-rond-70x70.png 70w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>



<ul class="wp-block-list">
<li>👤 Invitée : Thierry CHANTIER
<ul class="wp-block-list">
<li>Bluesky : <a href="https://bsky.app/profile/titimoby.bsky.social" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">@titimoby</a></li>



<li>LinkedIn : <a href="https://www.linkedin.com/in/thierrychantier/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.linkedin.com/in/thierrychantier/</a></li>
</ul>
</li>



<li>🗓️ Date d&#8217;enregistrement : 30 avril 2026</li>



<li>🎧 <a href="https://smartlink.ausha.co/tranches-de-tech/tranches-de-tech-26-la-dream-team-au-complet" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Lien vers l&#8217;épisode</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading">👤 Présentation de Thierry &#8211; ⏱️ 1&#8243;15s</h3>



<ul class="wp-block-list">
<li><a href="https://mixteen.org/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://mixteen.org/</a></li>



<li><a href="https://www.ingenieuses.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.ingenieuses.fr/</a></li>



<li><a href="https://tontoncodeur.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://tontoncodeur.fr/</a></li>



<li><a href="https://www.emaxilde.net/#reseaux" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.emaxilde.net/#reseaux</a></li>



<li><a href="https://techcafe.fr/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://techcafe.fr/</a></li>



<li><a href="https://lescastcodeurs.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://lescastcodeurs.com/</a></li>
</ul>



<h3 class="wp-block-heading">📰 News Techs&nbsp;</h3>



<h4 class="wp-block-heading">🤖 Intelligence Artificielle &#8211; ⏱️ 43&#8243;35s</h4>



<h5 class="wp-block-heading">Anthropic Claude Code leak</h5>



<p><a href="https://www.reddit.com/r/ClaudeAI/comments/1s9d9j9/claude_code_source_leak_megathread/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.reddit.com/r/ClaudeAI/comments/1s9d9j9/claude_code_source_leak_megathread/</a></p>



<h5 class="wp-block-heading">Qwen 3.6</h5>



<ul class="wp-block-list">
<li><a href="https://openrouter.ai/compare/qwen/qwen3.6-plus/anthropic/claude-sonnet-4.6" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://openrouter.ai/compare/qwen/qwen3.6-plus/anthropic/claude-sonnet-4.6</a></li>



<li><a href="https://rits.shanghai.nyu.edu/ai/qwen3-6-27b-a-dense-27b-model-that-beats-a-397b-moe-on-coding/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://rits.shanghai.nyu.edu/ai/qwen3-6-27b-a-dense-27b-model-that-beats-a-397b-moe-on-coding/</a></li>
</ul>



<h5 class="wp-block-heading">Quantization from the ground up</h5>



<p><a href="https://ngrok.com/blog/quantization" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://ngrok.com/blog/quantization</a></p>



<h5 class="wp-block-heading">MCP is dead. Long live the CLI</h5>



<p><a href="https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html</a></p>



<h4 class="wp-block-heading">👩‍💻 Développement &#8211; ⏱️ 1h07&#8243;26s</h4>



<h5 class="wp-block-heading">Thoughts on OpenAI acquiring Astral and uv/ruff/ty</h5>



<p><a href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://simonwillison.net/2026/Mar/19/openai-acquiring-astral</a></p>



<h5 class="wp-block-heading">SpaceX is working with Cursor and has an option to buy the startup for $60B</h5>



<p><a href="https://techcrunch.com/2026/04/21/spacex-is-working-with-cursor-and-has-an-option-to-buy-the-startup-for-60-billion/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://techcrunch.com/2026/04/21/spacex-is-working-with-cursor-and-has-an-option-to-buy-the-startup-for-60-billion/</a></p>



<h4 class="wp-block-heading">☁️ Cloud &#8211; ⏱️ 1h15&#8243;15s</h4>



<p>OVHcloud Kubernetes Review: Europe&#8217;s Quiet Powerhouse</p>



<p><a href="https://www.eucloudcost.com/blog/ovhcloud-cluster" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.eucloudcost.com/blog/ovhcloud-cluster</a></p>



<p>Discovering the External Secrets Operator (ESO) OVHcloud provider to manage your Kubernetes secrets</p>



<p><a href="https://blog.ovhcloud.com/discover-the-external-secret-operator-eso-ovhcloud-provider-to-manage-your-kubernetes-secrets-%f0%9f%8e%89/" data-wpel-link="internal">https://blog.ovhcloud.com/discover-the-external-secret-operator-eso-ovhcloud-provider-to-manage-your-kubernetes-secrets-%f0%9f%8e%89/</a></p>



<p>Secure your Software Supply Chain with OVHcloud Managed Private Registry (MPR)</p>



<p><a href="https://blog.ovhcloud.com/secure-your-software-supply-chain-with-ovhcloud-managed-private-registry-mpr/" data-wpel-link="internal">https://blog.ovhcloud.com/secure-your-software-supply-chain-with-ovhcloud-managed-private-registry-mpr/</a></p>



<h4 class="wp-block-heading">🎤 Conférences / meetup &#8211; ⏱️ 1h21&#8243;25s</h4>



<p><a href="https://developers.events/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://developers.events/</a></p>



<h5 class="wp-block-heading">Le prochain Riviera Dev</h5>



<p><a href="https://www.rivieradev.fr" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://www.rivieradev.fr</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="has-text-align-center">💡 Retrouvez l’ensemble des autres épisodes ici : <a href="https://smartlink.ausha.co/tranches-de-tech" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://smartlink.ausha.co/tranches-de-tech</a> 💡</p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Ftranches-de-tech-28-la-dream-team-au-complet%2F&amp;action_name=%F0%9F%8E%99%EF%B8%8F%20Tranches%20de%20Tech%20%2328%20%26%238211%3B%20La%20dream%20team%20au%20complet&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Remote development #1 &#8211; First Deployment</title>
		<link>https://blog.ovhcloud.com/remote-development-1-first-deployment/</link>
		
		<dc:creator><![CDATA[Rémy Vandepoel]]></dc:creator>
		<pubDate>Thu, 07 May 2026 16:00:42 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31612</guid>

					<description><![CDATA[A development environment is an essential day-to-day system, but it can quickly become complex to manage. In this three-part blog post, we will explore how to become more comfortable and productive with it! Endless meetings, slightly differing Docker environments on each machine, and untimely system updates: maintaining a reliable and consistent development workstation can quickly [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-1-first-deployment%2F&amp;action_name=Remote%20development%20%231%20%26%238211%3B%20First%20Deployment&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-1024x683.jpg" alt="" class="wp-image-31613" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-1024x683.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-300x200.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1-768x512.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/1.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>A development environment is an essential day-to-day system, but it can quickly become complex to manage. In this three-part blog post, we will explore how to become more comfortable and productive with it!</p>



<p>Endless meetings, slightly differing Docker environments on each machine, and untimely system updates: maintaining a reliable and consistent development workstation can quickly become a daily struggle.</p>



<p>With each new project, you have to reinstall the same tools, the same CLIs, and reconfigure the same SDKs or frameworks. And above all, hope that the local machine can handle the load when tests, the linter, and the database are all running simultaneously. Meanwhile, with remote work or working while travelling, individuals find themselves developing with a temperamental VPN, from a laptop that is sometimes close to obsolescence.</p>



<p>In this series of articles, we aim to transform this reality by building on a complete development environment hosted in the cloud and accessible from any browser via VS Code Server.</p>



<p><strong>The idea is to have a remote, powerful, and, if necessary, reproducible and independent “workstation”.</strong></p>



<p>This first chapter demonstrates how to easily deploy a Public Cloud instance manually and install VS Code Server on it. The following chapters will improve its security and automation. &nbsp;</p>



<h2 class="wp-block-heading"><strong>1. Deploying the instance</strong></h2>



<p>For the initial tests it may be wise to opt for a smaller, Discovery-type instance so that you can familiarise yourself with the environment and test it. A d2-2 instance will be used here. 1 vCPU and 2 GB of RAM should be enough.</p>



<h2 class="wp-block-heading"><strong>2. Installing the application element</strong></h2>



<p>The fountain of knowledge for the following steps is the GitHub for the vscode-server project: <a href="https://github.com/coder/code-server" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://github.com/coder/code-server</a></p>



<p>There are several options for the installation. In this chapter, to simplify the deployment and for those who are not very familiar with Docker, the installation will be done via the “native” installation script, without using containers.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo apt update &amp;&amp; sudo apt upgrade<br>ubuntu@vscode-server:~$ curl -fsSL&nbsp;</strong></code><a href="https://code-server.dev/install.sh" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><strong>https://code-server.dev/install.sh</strong></a> <code><strong>| sh</strong></code></td></tr></tbody></table></figure>



<p>This step is enough to install the essentials. Activate the service now and check that it is running correctly.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ sudo systemctl enable --now code-server@$USER<br>ubuntu@vscode-server:~$ sudo systemctl status code-server@$USER<br>● </strong></code><a href="mailto:code-server@ubuntu.servic"><strong>code-server@ubuntu.servic</strong></a><code><strong>e - code-server<br>&nbsp; &nbsp; &nbsp;Loaded: loaded (/usr/lib/systemd/system/code-server@.service; enabled; preset: enabled)<br>&nbsp; &nbsp; &nbsp;Active: active (running) since Wed 2025-12-03 14:55:37 UTC; 15min ago<br>&nbsp;Invocation: 1b393d84bebe415cbb770a17a0c8d399<br>&nbsp; &nbsp;Main PID: 893 (node)<br>&nbsp; &nbsp; &nbsp; Tasks: 22 (limit: 4532)<br>&nbsp; &nbsp; &nbsp;Memory: 95.1M (peak: 112.1M)<br>&nbsp; &nbsp; &nbsp; &nbsp; CPU: 1.868s<br>&nbsp; &nbsp; &nbsp;CGroup: /system.slice/system-code\x2dserver.slice/code-server@ubuntu.service<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;├─ 893 /usr/lib/code-server/lib/node /usr/lib/code-server<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;└─1130 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry</strong></code><strong></strong></td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><strong>3. Validate the configuration</strong></h2>



<p>At this stage, the service is operational; the configuration still needs to be finalised, particularly creating the folder that will contain the code as well as the authentication.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ mkdir workspace </strong></code><strong><br></strong><code><strong>ubuntu@vscode-server:~$ cat ~/.config/code-server/config.yaml<br>bind-addr: 127.0.0.1:8080<br>auth: password<br>password:&lt;secure_password&gt;<br>cert: false</strong></code><strong></strong></td></tr></tbody></table></figure>



<p>You need to set a secure password here and verify that the <code>bind-addr</code> corresponds to your desired configuration.</p>



<p>If you wish to directly test the service in its current state, use <code>0.0.0.0:8080</code>. Then restart the service and access the interface via <code>http://&lt;IP_PUBLIQUE&gt;:8080</code>.</p>



<p>After providing the password found in the <code>config.yaml</code> in the authentication window, you will gain direct access to VS Code in the browser.</p>



<p>From this deployment, you can then partially address the issue of getting a stable development environment.</p>



<p>At this stage, it is possible to directly clone your GitHub repositories or to use the <code>workspace</code> folder to clone them.<br>This is recommended for greater longevity, as you will see in the second chapter.</p>



<p>To perform a test commit via the vscode-server interface, you must configure git locally (just once) so that the authentication of the remote repository runs correctly.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><code><strong>ubuntu@vscode-server:~$ git config user.email </strong></code><strong>&#8220;mail@foo.bar&#8221;</strong><br><code><strong>ubuntu@vscode-server:~$ git config --global </strong></code><a href="http://user.name" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><strong>user.name</strong></a><code><strong>"John Doe"</strong></code></td></tr></tbody></table></figure>



<p>From this step onwards, you can use the remote development environment with vscode-server, while enjoying nearly all the features you might have locally, but with the advantages of having an environment dedicated to this use.</p>



<p>⚠️ <strong>Reminder: in its current state, the deployment made here is not “production ready”!</strong></p>



<p>The aim of this first chapter is to introduce the service, with the instructions here to help you familiarize yourself with the environment. Therefore, please ensure that you do not operate the service as deployed here for more than a few hours!</p>



<p>The environment will need to be secured, as it is directly exposed on the Internet. We’ll talk about this in the <a href="https://blog.ovhcloud.com/remote-development-2-security-performance/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">following chapters</a>.</p>



<p>By now, you have an operational development environment that is already capable of supporting a real application project!</p>



<p>The instance is online, VS Code Server is responding in the browser, the workspace is ready, and the first repository has been cloned and opened as if on a local machine. This foundation demonstrates that it is possible to abstract from the hardware to gain portability and more easily share a common configuration within a team or a remote development workstation.</p>



<p><strong>In the upcoming chapters</strong>, this minimum viable environment will be gradually enhanced with persistent storage, backup mechanisms, and secure access via HTTPS. It will then be fully automated through Infrastructure as Code, in order to transition from a simple technical test to a genuine development platform ready for internal production.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fremote-development-1-first-deployment%2F&amp;action_name=Remote%20development%20%231%20%26%238211%3B%20First%20Deployment&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Blockchain in depth: Public vs. private blockchains, infrastructure considerations and more</title>
		<link>https://blog.ovhcloud.com/blockchain-beyond-cryptocurrency-it-leaders/</link>
		
		<dc:creator><![CDATA[Omar Abi Issa&nbsp;and&nbsp;Elena Luoto]]></dc:creator>
		<pubDate>Thu, 07 May 2026 08:53:10 +0000</pubDate>
				<category><![CDATA[Accelerating with OVHcloud]]></category>
		<category><![CDATA[OVHcloud Education]]></category>
		<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=31540</guid>

					<description><![CDATA[For IT leaders, the important question is not whether blockchain is “the next big thing.”&#160; The question is actually much simpler: where and how does this technology solve real problems better than conventional architectures? To answer that, let’s begin with the fundamentals. What blockchain really is, and how it works A blockchain is a distributed [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fblockchain-beyond-cryptocurrency-it-leaders%2F&amp;action_name=Blockchain%20in%20depth%3A%20Public%20vs.%20private%20blockchains%2C%20infrastructure%20considerations%20and%20more&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1000" height="1000" src="https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth.png" alt="" class="wp-image-31541" style="width:463px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth.png 1000w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth-768x768.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2026/05/blockchain-in-depth-70x70.png 70w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p>For IT leaders, the important question is not whether blockchain is “the next big thing.”&nbsp;</p>



<p>The question is actually much simpler: where and how does this technology solve real problems better than conventional architectures?</p>



<p>To answer that, let’s begin with the fundamentals.</p>



<h2 class="wp-block-heading">What blockchain really is, and how it works</h2>



<p>A blockchain is a distributed database made up of blocks of data linked together in chronological order. Each new block contains information about transactions or events, along with a cryptographic reference to the previous block. This creates an auditable chain of records that is extremely difficult to alter retrospectively.</p>



<p>Unlike a traditional database, which is generally administered by one organisation, a blockchain is maintained collectively by participants in the network. Copies of the ledger are distributed across multiple systems, helping to ensure synchronisation, resilience and transparency.</p>



<p>When a transaction is submitted to a blockchain network, it is checked according to the rules of that network. Once validated, it is added to a block and propagated across the network so that participants agree on the updated state of the ledger. This agreement process is known as&nbsp;<strong>consensus</strong>.</p>



<p>The result is a system designed to support tamper-resistant, highly available and traceable record-keeping.</p>



<h2 class="wp-block-heading">Public, private, permissioned and permissionless blockchains</h2>



<p>Not all blockchains work in the same way. For business leaders, one of the most important distinctions is the difference between&nbsp;<strong>public</strong>&nbsp;and&nbsp;<strong>private</strong>&nbsp;networks, and between&nbsp;<strong>permissioned</strong>&nbsp;and&nbsp;<strong>permissionless</strong>&nbsp;models.</p>



<p><strong>Public blockchains</strong>&nbsp;are open networks. In general, anyone can access them, and they are often designed for broad transparency and participation. These networks are especially relevant where openness, interoperability and shared trust are important.</p>



<p><strong>Private blockchains</strong>&nbsp;are restricted to a specific organisation or group of participants. They are usually designed for tightly controlled business processes, where governance, confidentiality or performance requirements call for more control.</p>



<p>A second distinction concerns permissions.</p>



<p>In a&nbsp;<strong>permissionless blockchain</strong>, participants can typically join the network and interact with it without prior approval, provided they follow the network’s technical rules.</p>



<p>In a&nbsp;<strong>permissioned blockchain</strong>, roles and actions are controlled more tightly. Specific participants may be allowed to read, write, validate or administer the network based on predefined permissions.</p>



<p>These models are not interchangeable. The right choice depends on the use case, the governance model, the sensitivity of the data, and the degree of openness required.</p>



<h2 class="wp-block-heading">How infrastructure factors in</h2>



<p>Blockchain discussions often focus on tokens, protocols or applications. But for IT decision-makers, infrastructure is just as important.</p>



<p>A blockchain environment depends on reliable underlying systems to ensure performance and trust. Three requirements stand out in particular:&nbsp;<strong>security, speed and uptime</strong>.</p>



<p><strong>1. Security</strong></p>



<p>Security is indispensably foundational. Blockchain networks are designed to preserve data integrity, but they still need to be protected at the infrastructure and operational levels.</p>



<p>This includes safeguarding validator or node environments, protecting sensitive data during processing, enforcing strict identity and access controls, and defending services against network attacks such as DDoS events. In some blockchain contexts, security solutions must also be tailored carefully so that legitimate high-volume traffic is not mistaken for malicious traffic.</p>



<p><strong>2. Speed and low latency</strong></p>



<p>Many blockchain applications are highly sensitive to latency. Validation, data propagation and user-facing responsiveness all depend on fast, stable connectivity.</p>



<p>This is especially relevant for environments such as decentralised finance, exchanges, validator operations, RPC services and analytics pipelines, where milliseconds can affect performance and user experience. The network layer matters a great deal: bandwidth, routing quality, geographic distribution and private interconnection can all influence outcomes.</p>



<p><strong>3. High availability and resilience</strong></p>



<p>Blockchain systems are expected to operate continuously. Downtime can mean missed transactions, degraded service, failed validations or loss of trust.</p>



<p>That makes blockchain’s resiliency critical. Distributed hosting, strong service-level commitments, redundancy, and multi-regional design can all play an important role in keeping blockchain workloads available and synchronised.</p>



<p>For IT leaders evaluating providers or architectures, blockchain should therefore be treated as both an application question and an <a href="https://www.ovhcloud.com/en-gb/blockchain/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">infrastructure question</a>.</p>



<h2 class="wp-block-heading">Blockchain goes beyond cryptocurrency</h2>



<p>Perhaps the biggest misconception for blockchain is that it begins, and ends, with crypto.</p>



<p>Cryptocurrency is just one application of blockchain, and it is far from the only one. The technology can also support a wide range of business and public-sector use cases where transparency, traceability, automation or shared trust are needed.</p>



<p>Examples include:</p>



<ul class="wp-block-list">
<li><strong>Digital identity and access models</strong>, where blockchain can help verify claims or credentials while preserving control and traceability</li>



<li><strong>Supply chain tracking</strong>, where organisations need reliable visibility into provenance, handling and transfers across multiple parties</li>



<li><strong>Smart contracts</strong>, which can automate actions when predefined conditions are met</li>



<li><strong>Decentralised applications</strong>, where services run on distributed infrastructure rather than a single central backend</li>



<li><strong>Enterprise recordkeeping</strong>, where multiple stakeholders need a shared, verifiable source of truth</li>
</ul>



<p>The key point is that blockchain is valuable beyond the fact that it is decentralised. It is valuable when decentralisation, immutability and shared verification solve a real business or operational challenge together.</p>



<h2 class="wp-block-heading">A practical view for IT leaders</h2>



<p>For IT leaders, blockchain should be approached with the same discipline as any other architecture decision.</p>



<p>And that means asking:</p>



<ul class="wp-block-list">
<li>What trust problem are we solving?</li>



<li>Do we need a shared ledger across multiple parties?</li>



<li>What governance model fits the use case?</li>



<li>What are the performance, security and compliance requirements?</li>



<li>Which infrastructure will support this reliably at scale?</li>
</ul>



<p>In some cases, a conventional database will still be the right answer. In others, blockchain offers a stronger foundation for transparency, resilience and distributed trust.</p>



<p>The important thing is to move beyond the hype.&nbsp;<strong>Used in the right context, blockchain is a practical architectural model with applications that extend well beyond cryptocurrency.</strong></p>



<p>As adoption grows, IT leaders who understand both the technology and its infrastructure requirements will be those best placed to identify where it can deliver meaningful business value.</p>



<p>&nbsp;</p>



<p><em>This article is based on the guide “The Blockchain Blueprint”, available to <a href="https://www.ovhcloud.com/en-ie/lp/powering-blockchain-ethos/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">download for free</a>.</em></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fblockchain-beyond-cryptocurrency-it-leaders%2F&amp;action_name=Blockchain%20in%20depth%3A%20Public%20vs.%20private%20blockchains%2C%20infrastructure%20considerations%20and%20more&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
