<?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>Laurent Doguin, Author at Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/blog/author/doguin/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>From Code to Product</description>
	<lastBuildDate>Thu, 27 Nov 2025 14:43:07 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>Laurent Doguin, Author at Clever Cloud</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Our first USA zone is officially opened!</title>
		<link>https://www.clever.cloud/blog/company/2021/06/10/our-first-usa-zone/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Thu, 10 Jun 2021 10:20:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[new-york]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[zones]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2021/06/10/usa-zone-available/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="nyc zone release 1" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p>Today we are officially opening a new Clever Cloud zone located in New York city, our first in the USA. This comes in addition to our existing Paris, Roubaix, Warsaw, Montreal, Singapore and Sydney zones.

<span id="more-2780"></span>

The launch of this new USA zone has been made available thanks to our supplier BSO. BSO is a global pioneering infrastructure and connectivity provider, serving more than 400 data-intensive businesses across diverse markets such as financial services, technology, energy, ecommerce, media and more. The company owns and provides mission-critical infrastructure, including network connectivity, cloud solutions, managed services and hosting, that are specific and dedicated to each customer served. BSO’s network comprises 240+ Tier3+ Points of Presence across 33 markets across Europe, the Americas, the Middle East, Asia Pacific and South Africa.

The infrastructure is accessible through X POPS in North America, 10 DC in New Jersey and NYC area. The cloud Platform provides high availability with high-performance SLAs and is build for scale.
<h2 id="how">How?</h2>
<h3 id="in-the-console">In the console</h3>
When creating an application, in the Zone dropbox you should be able to select them:
<figure><center>
<img src="https://cdn.clever-cloud.com/uploads/2021/08/NY-app.png" alt="Equinix NY4 Datacenter" /></center></figure>
In the information tab, you can find our migration tool and you can change an existing zone to another and this will trigger a <a href="https://www.clever.cloud/developers/doc/administrate/database-migration/" target="_blank" rel="noopener">redeployment in the new zone</a>:
<figure><center>
<img src="https://cdn.clever-cloud.com/uploads/2021/08/NY-creation.png" alt="Creating a NYC Application" /></center></figure>
<h3 id="with-clever-tools">With Clever-Tools</h3>
If you are using clever-tools, or the API, the region flag is as follows:
<pre class="prettyprint lang-html">New-York, USA -&gt; nyc
Paris, France -&gt; par
Montréal, Canada -&gt; mtl
Singapore, Singapore -&gt; sgp
Roubaix, France -&gt; rbx
Warsaw, Poland -&gt; wsw
Sydney, Australia -&gt; syd
</pre>
So to create an application in the New York zone you have to run <code>clever create --type node --region nyc myApp</code>.

Please let us know what you think about this, and where/with whom you would like our next zones to show up.]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="nyc zone release 1" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/nyc-zone-release-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p>Today we are officially opening a new Clever Cloud zone located in New York city, our first in the USA. This comes in addition to our existing Paris, Roubaix, Warsaw, Montreal, Singapore and Sydney zones.

<span id="more-2780"></span>

The launch of this new USA zone has been made available thanks to our supplier BSO. BSO is a global pioneering infrastructure and connectivity provider, serving more than 400 data-intensive businesses across diverse markets such as financial services, technology, energy, ecommerce, media and more. The company owns and provides mission-critical infrastructure, including network connectivity, cloud solutions, managed services and hosting, that are specific and dedicated to each customer served. BSO’s network comprises 240+ Tier3+ Points of Presence across 33 markets across Europe, the Americas, the Middle East, Asia Pacific and South Africa.

The infrastructure is accessible through X POPS in North America, 10 DC in New Jersey and NYC area. The cloud Platform provides high availability with high-performance SLAs and is build for scale.
<h2 id="how">How?</h2>
<h3 id="in-the-console">In the console</h3>
When creating an application, in the Zone dropbox you should be able to select them:
<figure><center>
<img src="https://cdn.clever-cloud.com/uploads/2021/08/NY-app.png" alt="Equinix NY4 Datacenter" /></center></figure>
In the information tab, you can find our migration tool and you can change an existing zone to another and this will trigger a <a href="https://www.clever.cloud/developers/doc/administrate/database-migration/" target="_blank" rel="noopener">redeployment in the new zone</a>:
<figure><center>
<img src="https://cdn.clever-cloud.com/uploads/2021/08/NY-creation.png" alt="Creating a NYC Application" /></center></figure>
<h3 id="with-clever-tools">With Clever-Tools</h3>
If you are using clever-tools, or the API, the region flag is as follows:
<pre class="prettyprint lang-html">New-York, USA -&gt; nyc
Paris, France -&gt; par
Montréal, Canada -&gt; mtl
Singapore, Singapore -&gt; sgp
Roubaix, France -&gt; rbx
Warsaw, Poland -&gt; wsw
Sydney, Australia -&gt; syd
</pre>
So to create an application in the New York zone you have to run <code>clever create --type node --region nyc myApp</code>.

Please let us know what you think about this, and where/with whom you would like our next zones to show up.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introducing second based invoicing</title>
		<link>https://www.clever.cloud/blog/company/2021/03/23/second-invoicing/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Tue, 23 Mar 2021 16:00:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[billing]]></category>
		<category><![CDATA[credits]]></category>
		<category><![CDATA[invoice]]></category>
		<category><![CDATA[invoicing]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2021/03/23/second-invoicing/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="second based invoicing 1" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p>Starting April 1st, this is no joke, we will change the way we measure our customers consumption and start invoicing them by second slices.

<span id="more-2778"></span>

This also has some nice effects I will explain later.

<em>TL;DR</em>
<ul>
 	<li>We are changing the way we measure consumption, prices remain the same.</li>
 	<li>Uptime was billed by 10 minutes slices, it's now billed by one second slices.</li>
 	<li>You will be able to use credits for everything: Applications, Add-ons, custom tasks you ask to the support team.</li>
 	<li>Invoices will display every detail about your consumption.</li>
 	<li>Changing measurement should not have any major impact on your invoices.</li>
</ul>
All those changes are possible because we have put a lot of work on our invoicing infrastructure. We are still working on it and will introduce even more new features in the coming months. In the meantime let’s go over those first changes.
<h2 id="second-based-prices">Second based prices</h2>
We have always invoiced any started 10 minutes slice. It means if you have a build that takes 12 minutes and 42 seconds to complete, you will currently be invoiced for 20 minutes. Starting April 1st you will be invoiced for the duration of the build, so 12 minutes and 42 seconds. This should result in smaller invoices, especially if you run a lot of dedicated builds.
<h2 id="consume-everything-with-credits">Consume everything with Credits</h2>
This is probably the nicest side of effects of all, and you have asked this for years (and I have asked it for years), you can now use your credits for <em>everything</em>. Applications, add-ons or any micro interventions or custom deployments you could ask our support team to do.

This will give more fluidity to our <a href="https://www.clever.cloud/developers/api/howto" target="_blank" rel="noopener">API</a> and <a href="https://www.clever.cloud/developers/reference/clever-tools/getting_started/" target="_blank" rel="noopener">CLI</a> usage when creating add-ons.
<h2 id="an-invoice-with-every-details">An invoice with every details</h2>
Our current invoice only has one line summing up everything consumed over the past month. The new invoice will contain a line for everything that has been consumed, whether it is an application, an add-on or a custom task. Here’s what it should look like:
<figure style="position: relative; width: 100%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032101.png" alt="Clever Cloud new invoice for march 2021 summary" data-action="zoom" />
<img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032102.png" alt="Clever Cloud new invoice for march 2021 details 1" data-action="zoom" />
<img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032103.png" alt="Clever Cloud new invoice for march 2021 details 2" data-action="zoom" /></figure>
To sum up, in all likelihood you are not going to spend more, if anything you are going to spend a little less. Please let us know if you have any questions or if you experience any surprises.]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="second based invoicing 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/second-based-invoicing-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Starting April 1st, this is no joke, we will change the way we measure our customers consumption and start invoicing them by second slices.

<span id="more-2778"></span>

This also has some nice effects I will explain later.

<em>TL;DR</em>
<ul>
 	<li>We are changing the way we measure consumption, prices remain the same.</li>
 	<li>Uptime was billed by 10 minutes slices, it's now billed by one second slices.</li>
 	<li>You will be able to use credits for everything: Applications, Add-ons, custom tasks you ask to the support team.</li>
 	<li>Invoices will display every detail about your consumption.</li>
 	<li>Changing measurement should not have any major impact on your invoices.</li>
</ul>
All those changes are possible because we have put a lot of work on our invoicing infrastructure. We are still working on it and will introduce even more new features in the coming months. In the meantime let’s go over those first changes.
<h2 id="second-based-prices">Second based prices</h2>
We have always invoiced any started 10 minutes slice. It means if you have a build that takes 12 minutes and 42 seconds to complete, you will currently be invoiced for 20 minutes. Starting April 1st you will be invoiced for the duration of the build, so 12 minutes and 42 seconds. This should result in smaller invoices, especially if you run a lot of dedicated builds.
<h2 id="consume-everything-with-credits">Consume everything with Credits</h2>
This is probably the nicest side of effects of all, and you have asked this for years (and I have asked it for years), you can now use your credits for <em>everything</em>. Applications, add-ons or any micro interventions or custom deployments you could ask our support team to do.

This will give more fluidity to our <a href="https://www.clever.cloud/developers/api/howto" target="_blank" rel="noopener">API</a> and <a href="https://www.clever.cloud/developers/reference/clever-tools/getting_started/" target="_blank" rel="noopener">CLI</a> usage when creating add-ons.
<h2 id="an-invoice-with-every-details">An invoice with every details</h2>
Our current invoice only has one line summing up everything consumed over the past month. The new invoice will contain a line for everything that has been consumed, whether it is an application, an add-on or a custom task. Here’s what it should look like:
<figure style="position: relative; width: 100%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032101.png" alt="Clever Cloud new invoice for march 2021 summary" data-action="zoom" />
<img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032102.png" alt="Clever Cloud new invoice for march 2021 details 1" data-action="zoom" />
<img src="https://cdn.clever-cloud.com/uploads/2021/08/invoice032103.png" alt="Clever Cloud new invoice for march 2021 details 2" data-action="zoom" /></figure>
To sum up, in all likelihood you are not going to spend more, if anything you are going to spend a little less. Please let us know if you have any questions or if you experience any surprises.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ISV Partnership @ Clever Cloud</title>
		<link>https://www.clever.cloud/blog/company/2021/03/05/isv-partnership/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 10:00:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[isv]]></category>
		<category><![CDATA[partnership]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2021/03/05/isv-partnership/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="isv partner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>There have been some changes in licensing models for certain software vendors recently, Elastic in particular. While we are not going to go over those in detail, we want to reassure you that Clever Cloud is an Elastic official partner, and as such <strong>nothing</strong> changes for our customers. We will continue to support and extend our Elastic integration.</p>
<span id="more-2777"></span>

<p>Now that it has been cleared out let me tell you more about how we envision partnership at Clever Cloud. We believe that Cloud providers, as infrastructure providers, should be enablers of other Software Vendors. It might seem like a triviality but seeing how some other cloud providers behave, it seems unclear.</p>
<h2 id="responsabilities-as-a-service">Responsabilities as a Service</h2>
<p>A cloud provider is infrastructure. Infrastructure is a necessary condition to business. Being necessary can put you in an abusive position. It’s even more true when you have a monopolistic position on a market. Basically you can behave like a bully or a child.</p>
<p>If you want to address AWS or the Apple store users, you have to play by their rules. And the bigger they are the more they get to decide what rules apply. This also gives them power to retaliate.</p>
<p>They could for instance tell the world they are in a partnership with you while it’s false. Some will take it for granted because they don’t necessarily know you. Then offer the same service without giving back, capitalizing on all the efforts made by the vendor and its community.</p>
<p>Here we need to state that laws and regulations have always lagged behind innovation in the Software industry. This is partly the reason why we see new Software licences(AGPL, SSPL and the likes) being adopted to protect IPs or trademarks from possible abuse.</p>
<p>That’s not right. Usually supporters of these methods will answer something like “yes but it’s legal”. Resorting to this authority argument usually means you have nothing else to say and know you are losing ground on everything else. (and in Elastic’s case, the “it’s legal” argument hardly holds as AWS has been abusing Elastic’s trademark).</p>
<blockquote>
<p>It’s about doing the right thing. Don’t be a bully.</p>
</blockquote>
<p>Because we think it’s important to do what’s right, we have always had the following approach towards Vendors.</p>
<p>Before providing anything as a service we propose a revenue sharing model: the vendor gets a cut of the money we made with the product. This is currently the best way we found to respect a cloud consumption/pay as you go model. Granted this goes against the traditional yearly subscription model and how sales teams traditionally operate. But we are talking about a partnership here.</p>
<h2 id="what-can-clever-cloud-bring-you">What can Clever Cloud bring you?</h2>
<p>If this is of interest to you let&#39;s go quickly over some Clever Cloud facts.</p>
<ul>
<li>Clever Cloud is a European company and as such is not subjected to the US Cloud Act.</li>
<li>It works as a public, private, hybrid or on-premises cloud, and is available on other public Cloud like OVH, and several others are planned this year.</li>
<li>As our infrastructure and orchestrator is proprietary we will manage all the product integration, which usually results in 0 integration cost for the vendor.</li>
<li>We will handle level1/level2 support.</li>
</ul>
<p>When integrating a product we make sure we don&#39;t require any help from the vendor, to result in us sending them money every quarter without any effort on their part. They should not have to engage resources. It’s our job to provide this for them. This situation is often reversed because of the monopolistic situation of the major Cloud providers.</p>
<p>Let it be known that we always come to vendors with this proposal when considering to add their product to our catalog. And we have had a wide range of reactions. From “why would you give me money this is open source” to “You need to buy this much upfront. If you can’t why don’t you ask your VCs to pitch in ?”. And everything you can think of in the middle.</p>
<blockquote>
<p>Again, Cloud providers must be <strong>enablers</strong> for software vendors.</p>
</blockquote>
<h2 id="our-technical-differencies">Our Technical Differencies</h2>
<p>Running a cloud platform is something technical and as such we have several specificity you may want to know about:</p>
<p>There is always a point in our conversation where we talk about how the vendor support team can only support us if we use this specific version of Linux. And as it turns out we use a different version than most. We rely on Exherbo, an upstream, source based distribution. Here&#39;s two main points to why.</p>
<p>Being upstream allows us to use the latest version of each software, with the latest security patches. Look there was a time where it was super important to be on a battle-tested version of X or y. Because the primary security issue was to avoid segfault. It was a software stability issue. it&#39;s 2021. Things have changed. The main security concern is to have your SSL library up to date to protect yourself from external attack. Take the heartbleed security bug for instance. Our infrastructure was long patched when this became a known issue.</p>
<p>Being source based allows us to be in control. We can patch all our infrastructure faster. And since we compile everything we make sure it&#39;s optimized for the hardware it runs on. Most other distributions are just compiled to support everything, so it&#39;s optimized for nothing. It&#39;s the price to pay for genericity.</p>
<p>This is also the reason why as a PaaS provider we encourage people to simply deploy their source code instead of an unoptimized binary. And why when we provide closed source solutions, we are more than happy to sign an NDA to access the sources and make sure it&#39;s compiled for our platform. In this process we are also more than happy to contribute anything we may find interesting.</p>
<h2 id="become-a-registered-isv">Become a Registered ISV</h2>
<p>Now you should have a fairly good understanding of our partnership vision, and the role we envision for Cloud providers in our global economy. If you are a software vendor looking for a partnership, we would be happy to talk :)</p>
<p>Simply send us an email to <a href="mailto:&#100;&#x65;&#118;&#x72;&#x65;&#x6c;&#64;&#99;&#x6c;&#x65;&#x76;&#101;&#114;&#x2d;&#x63;&#108;&#x6f;&#x75;&#100;&#46;&#99;&#111;&#109;">&#100;&#x65;&#118;&#x72;&#x65;&#x6c;&#64;&#99;&#x6c;&#x65;&#x76;&#101;&#114;&#x2d;&#x63;&#108;&#x6f;&#x75;&#100;&#46;&#99;&#111;&#109;</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="isv partner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/isv-partner-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>There have been some changes in licensing models for certain software vendors recently, Elastic in particular. While we are not going to go over those in detail, we want to reassure you that Clever Cloud is an Elastic official partner, and as such <strong>nothing</strong> changes for our customers. We will continue to support and extend our Elastic integration.</p>
<span id="more-2777"></span>

<p>Now that it has been cleared out let me tell you more about how we envision partnership at Clever Cloud. We believe that Cloud providers, as infrastructure providers, should be enablers of other Software Vendors. It might seem like a triviality but seeing how some other cloud providers behave, it seems unclear.</p>
<h2 id="responsabilities-as-a-service">Responsabilities as a Service</h2>
<p>A cloud provider is infrastructure. Infrastructure is a necessary condition to business. Being necessary can put you in an abusive position. It’s even more true when you have a monopolistic position on a market. Basically you can behave like a bully or a child.</p>
<p>If you want to address AWS or the Apple store users, you have to play by their rules. And the bigger they are the more they get to decide what rules apply. This also gives them power to retaliate.</p>
<p>They could for instance tell the world they are in a partnership with you while it’s false. Some will take it for granted because they don’t necessarily know you. Then offer the same service without giving back, capitalizing on all the efforts made by the vendor and its community.</p>
<p>Here we need to state that laws and regulations have always lagged behind innovation in the Software industry. This is partly the reason why we see new Software licences(AGPL, SSPL and the likes) being adopted to protect IPs or trademarks from possible abuse.</p>
<p>That’s not right. Usually supporters of these methods will answer something like “yes but it’s legal”. Resorting to this authority argument usually means you have nothing else to say and know you are losing ground on everything else. (and in Elastic’s case, the “it’s legal” argument hardly holds as AWS has been abusing Elastic’s trademark).</p>
<blockquote>
<p>It’s about doing the right thing. Don’t be a bully.</p>
</blockquote>
<p>Because we think it’s important to do what’s right, we have always had the following approach towards Vendors.</p>
<p>Before providing anything as a service we propose a revenue sharing model: the vendor gets a cut of the money we made with the product. This is currently the best way we found to respect a cloud consumption/pay as you go model. Granted this goes against the traditional yearly subscription model and how sales teams traditionally operate. But we are talking about a partnership here.</p>
<h2 id="what-can-clever-cloud-bring-you">What can Clever Cloud bring you?</h2>
<p>If this is of interest to you let&#39;s go quickly over some Clever Cloud facts.</p>
<ul>
<li>Clever Cloud is a European company and as such is not subjected to the US Cloud Act.</li>
<li>It works as a public, private, hybrid or on-premises cloud, and is available on other public Cloud like OVH, and several others are planned this year.</li>
<li>As our infrastructure and orchestrator is proprietary we will manage all the product integration, which usually results in 0 integration cost for the vendor.</li>
<li>We will handle level1/level2 support.</li>
</ul>
<p>When integrating a product we make sure we don&#39;t require any help from the vendor, to result in us sending them money every quarter without any effort on their part. They should not have to engage resources. It’s our job to provide this for them. This situation is often reversed because of the monopolistic situation of the major Cloud providers.</p>
<p>Let it be known that we always come to vendors with this proposal when considering to add their product to our catalog. And we have had a wide range of reactions. From “why would you give me money this is open source” to “You need to buy this much upfront. If you can’t why don’t you ask your VCs to pitch in ?”. And everything you can think of in the middle.</p>
<blockquote>
<p>Again, Cloud providers must be <strong>enablers</strong> for software vendors.</p>
</blockquote>
<h2 id="our-technical-differencies">Our Technical Differencies</h2>
<p>Running a cloud platform is something technical and as such we have several specificity you may want to know about:</p>
<p>There is always a point in our conversation where we talk about how the vendor support team can only support us if we use this specific version of Linux. And as it turns out we use a different version than most. We rely on Exherbo, an upstream, source based distribution. Here&#39;s two main points to why.</p>
<p>Being upstream allows us to use the latest version of each software, with the latest security patches. Look there was a time where it was super important to be on a battle-tested version of X or y. Because the primary security issue was to avoid segfault. It was a software stability issue. it&#39;s 2021. Things have changed. The main security concern is to have your SSL library up to date to protect yourself from external attack. Take the heartbleed security bug for instance. Our infrastructure was long patched when this became a known issue.</p>
<p>Being source based allows us to be in control. We can patch all our infrastructure faster. And since we compile everything we make sure it&#39;s optimized for the hardware it runs on. Most other distributions are just compiled to support everything, so it&#39;s optimized for nothing. It&#39;s the price to pay for genericity.</p>
<p>This is also the reason why as a PaaS provider we encourage people to simply deploy their source code instead of an unoptimized binary. And why when we provide closed source solutions, we are more than happy to sign an NDA to access the sources and make sure it&#39;s compiled for our platform. In this process we are also more than happy to contribute anything we may find interesting.</p>
<h2 id="become-a-registered-isv">Become a Registered ISV</h2>
<p>Now you should have a fairly good understanding of our partnership vision, and the role we envision for Cloud providers in our global economy. If you are a software vendor looking for a partnership, we would be happy to talk :)</p>
<p>Simply send us an email to <a href="mailto:&#100;&#x65;&#118;&#x72;&#x65;&#x6c;&#64;&#99;&#x6c;&#x65;&#x76;&#101;&#114;&#x2d;&#x63;&#108;&#x6f;&#x75;&#100;&#46;&#99;&#111;&#109;">&#100;&#x65;&#118;&#x72;&#x65;&#x6c;&#64;&#99;&#x6c;&#x65;&#x76;&#101;&#114;&#x2d;&#x63;&#108;&#x6f;&#x75;&#100;&#46;&#99;&#111;&#109;</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Documentation Update</title>
		<link>https://www.clever.cloud/blog/company/2020/11/20/documentation-update/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Fri, 20 Nov 2020 13:23:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/11/20/documentation-update/</guid>

					<description><![CDATA[<p><img width="2100" height="810" src="https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="docupdate 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1.png 2100w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1536x592.png 1536w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-2048x790.png 2048w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1368x528.png 1368w" sizes="auto, (max-width: 2100px) 100vw, 2100px" /></p><p>Today we are releasing an updated, rebranded version of our documentation.</p>
<span id="more-2776"></span>

<p>It has been a change long in the making, we have a new documentation portal. New layout, new organization, new content but it&#39;s still available at the same place: <a href="https://www.clever.cloud/developers/">https://www.clever.cloud/developers/</a></p>
<p>The content still lives under <a href="https://github.com/CleverCloud/doc.clever-cloud.com/">https://github.com/CleverCloud/doc.clever-cloud.com/</a> and has been reorganized. We are, of course, always welcoming new contributions, whether it is for a single typo, filling an issue or a detailed tutorial. Guidelines are available on the <a href="https://www.clever.cloud/developers/contribute/writing/">&#39;Writing new Content&#39; page</a>.</p>
<p>Please give us feedback. We would love to know what page is missing or what you would like to read.</p>
<p>A quick word about how it&#39;s made. We are using <a href="https://gohugo.io/">Hugo</a> to generate the website. The theme used for this website is also available on Github: <a href="https://github.com/CleverCloud/hugo-cc-doc-theme">https://github.com/CleverCloud/hugo-cc-doc-theme</a></p>
<p>One of the reasons for this choice is that we are selling white-label version of Clever Cloud, and our customers want their own documentation. This allows us to keep working on the same content and to offer them a quick and easy way to deploy their own documentation.</p>
<p>I would like to finish this post with a big thank you to <a href="https://twitter.com/valeriane_IT">Valeriane Venance</a> who started this project with me and made a good chunk of it, to the Clever Cloud team and to all our <a href="https://github.com/CleverCloud/doc.clever-cloud.com/graphs/contributors">contributors</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="2100" height="810" src="https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="docupdate 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1.png 2100w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1536x592.png 1536w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-2048x790.png 2048w, https://cdn.clever-cloud.com/uploads/2021/08/docupdate-1-1368x528.png 1368w" sizes="auto, (max-width: 2100px) 100vw, 2100px" /></p><p>Today we are releasing an updated, rebranded version of our documentation.</p>
<span id="more-2776"></span>

<p>It has been a change long in the making, we have a new documentation portal. New layout, new organization, new content but it&#39;s still available at the same place: <a href="https://www.clever.cloud/developers/">https://www.clever.cloud/developers/</a></p>
<p>The content still lives under <a href="https://github.com/CleverCloud/doc.clever-cloud.com/">https://github.com/CleverCloud/doc.clever-cloud.com/</a> and has been reorganized. We are, of course, always welcoming new contributions, whether it is for a single typo, filling an issue or a detailed tutorial. Guidelines are available on the <a href="https://www.clever.cloud/developers/contribute/writing/">&#39;Writing new Content&#39; page</a>.</p>
<p>Please give us feedback. We would love to know what page is missing or what you would like to read.</p>
<p>A quick word about how it&#39;s made. We are using <a href="https://gohugo.io/">Hugo</a> to generate the website. The theme used for this website is also available on Github: <a href="https://github.com/CleverCloud/hugo-cc-doc-theme">https://github.com/CleverCloud/hugo-cc-doc-theme</a></p>
<p>One of the reasons for this choice is that we are selling white-label version of Clever Cloud, and our customers want their own documentation. This allows us to keep working on the same content and to offer them a quick and easy way to deploy their own documentation.</p>
<p>I would like to finish this post with a big thank you to <a href="https://twitter.com/valeriane_IT">Valeriane Venance</a> who started this project with me and made a good chunk of it, to the Clever Cloud team and to all our <a href="https://github.com/CleverCloud/doc.clever-cloud.com/graphs/contributors">contributors</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>New Clever Cloud Zones in APAC and EMEA</title>
		<link>https://www.clever.cloud/blog/features/2020/11/05/ovh-clever-cloud-zones/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Thu, 05 Nov 2020 17:40:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[region]]></category>
		<category><![CDATA[zone]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/11/05/ovh-clever-cloud-zones/</guid>

					<description><![CDATA[<p><img width="1680" height="648" src="https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ovh zones 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1.png 1680w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1536x592.png 1536w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1368x528.png 1368w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></p>Today we are adding new Clever Cloud zones. You will now be able to deploy applications and managed databases in Sydney, Singapore, Warsaw and Roubaix. And all these new zones are deployed on top of OVHcloud. This comes in additon to our existing Paris and Montreal zones.

<span id="more-2981"></span>

This was the mantra of the latest OVHcloud summit, it's all about the ecosystem, a vibrant, diverse, innovating ecosystem. We fully agree and as such we are really happy to provide to all our customers a complete PaaS offering on infrastructure provided by OVHcloud.

We realize that big companies sometimes make 'group' decision when it comes to choosing a cloud provider. And we are happy to answer those many who chose OVHcloud.

While we think you should not put all your eggs in the same basket, it can also become quite expensive to manage different cloud providers. This is the perfect time to remind you that Clever Cloud is Multi-Cloud ready. We can run it on any bare metal infrastructure. It provides the same experience everywhere as there is only one version of our cloud.
<h2 id="how">How!?</h2>
<h3 id="in-the-console">In the console</h3>
When creating an application, in the Zone dropbox you should be able to select them:
<figure style="position: relative; width: 50%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/create-app-zone.png" alt="index of meetups in Kibana" data-action="zoom" /></figure>
In the information tab, you can change an existing zone to another and this will trigger a <a href="https://www.clever.cloud/developers/doc/administrate/database-migration/" target="_blank" rel="noopener">redeployment in the new zone</a>:
<figure style="position: relative; width: 50%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/change-zone-info.png" alt="index of meetups in Kibana" data-action="zoom" /></figure>
<h3 id="with-clever-tools">With Clever-Tools</h3>
If you are using clever-tools, or the API, the region flag is as follows:
<ul>
 	<li>Paris, France -&gt; par</li>
 	<li>Montréal, Canada -&gt; mtl</li>
 	<li>Singapore, Singapore -&gt; sgp</li>
 	<li>Roubaix, France -&gt; rbx</li>
 	<li>Warsaw, Poland -&gt; wsw</li>
 	<li>Sydney, Australia -&gt; syd</li>
</ul>
So to create an application in the Sydney zone you have to run <code>clever create --type node --region syd myApp</code>.

Please let us know what you think about this, and where/with whom you would like our new Clever Cloud zones to show up.]]></description>
										<content:encoded><![CDATA[<p><img width="1680" height="648" src="https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ovh zones 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1.png 1680w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1536x592.png 1536w, https://cdn.clever-cloud.com/uploads/2021/08/ovh-zones-1-1368x528.png 1368w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></p>Today we are adding new Clever Cloud zones. You will now be able to deploy applications and managed databases in Sydney, Singapore, Warsaw and Roubaix. And all these new zones are deployed on top of OVHcloud. This comes in additon to our existing Paris and Montreal zones.

<span id="more-2981"></span>

This was the mantra of the latest OVHcloud summit, it's all about the ecosystem, a vibrant, diverse, innovating ecosystem. We fully agree and as such we are really happy to provide to all our customers a complete PaaS offering on infrastructure provided by OVHcloud.

We realize that big companies sometimes make 'group' decision when it comes to choosing a cloud provider. And we are happy to answer those many who chose OVHcloud.

While we think you should not put all your eggs in the same basket, it can also become quite expensive to manage different cloud providers. This is the perfect time to remind you that Clever Cloud is Multi-Cloud ready. We can run it on any bare metal infrastructure. It provides the same experience everywhere as there is only one version of our cloud.
<h2 id="how">How!?</h2>
<h3 id="in-the-console">In the console</h3>
When creating an application, in the Zone dropbox you should be able to select them:
<figure style="position: relative; width: 50%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/create-app-zone.png" alt="index of meetups in Kibana" data-action="zoom" /></figure>
In the information tab, you can change an existing zone to another and this will trigger a <a href="https://www.clever.cloud/developers/doc/administrate/database-migration/" target="_blank" rel="noopener">redeployment in the new zone</a>:
<figure style="position: relative; width: 50%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/change-zone-info.png" alt="index of meetups in Kibana" data-action="zoom" /></figure>
<h3 id="with-clever-tools">With Clever-Tools</h3>
If you are using clever-tools, or the API, the region flag is as follows:
<ul>
 	<li>Paris, France -&gt; par</li>
 	<li>Montréal, Canada -&gt; mtl</li>
 	<li>Singapore, Singapore -&gt; sgp</li>
 	<li>Roubaix, France -&gt; rbx</li>
 	<li>Warsaw, Poland -&gt; wsw</li>
 	<li>Sydney, Australia -&gt; syd</li>
</ul>
So to create an application in the Sydney zone you have to run <code>clever create --type node --region syd myApp</code>.

Please let us know what you think about this, and where/with whom you would like our new Clever Cloud zones to show up.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setup a directory listing for an S3 bucket</title>
		<link>https://www.clever.cloud/blog/features/2020/10/08/s3-directory-listing/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Thu, 08 Oct 2020 15:35:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[cellar]]></category>
		<category><![CDATA[s3]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/10/08/s3-directory-listing/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="directorylistingbanner" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Yesterday I had a customer asking me how to make a simple directory listing like you have with apache server, but with the content stored in an S3 bucket. This way they can replace their git lfs + apache setup with something possibly simpler and more suited to binary storage.

<span id="more-2977"></span>

As it turns out it's not that complicated. You need to get the permissions right, and to be aware of a listing option in S3 API. Let's see how to make this work on Clever Cloud.
<h2 id="create-a-cellar-addon">Create a Cellar Addon</h2>
Clever Cloud is a Platform as a Service. We provide many <a href="https://www.clever.cloud/developers/addons/">managed services</a> and one of them is Cellar, our S3 compatible storage. Assuming you already have an account, here's how to create a Cellar add-on.
<h3 id="using-the-cli">Using the CLI</h3>
Assuming you are already using <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>, all you have to do is run <code>clever addon create cellar-addon --plan S myCellarService</code>.
<h3 id="using-the-web-console">Using the Web Console</h3>
You can login to our console on <code>https://console.clever-cloud.com/</code>. From there click on Create, an add-on and choose Cellar. There is only one plan available since Cellar is billed based on consumption so click next. We have no need to link it to an existing application so click next again, give it a name and click on create.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/create-cellar.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/create-cellar.webm" type="video/webm" /></video>
<h2 id="setup-a-bucket">Setup a Bucket</h2>
Now that you have your S3 add-on, the easiest way to manage buckets is probably to use <a href="https://s3tools.org/s3cmd">s3cmd</a> or <a href="https://rclone.org/">Rclone</a>. Here's how to create a bucket, make it public and store some files.

First get your configuration file. It's waiting for you on the add-on dashboard. Browse your Cellar add-on from the console, you should see some details and a link to <code>Download a pre-filled s3cfg file.</code>. Download it and place it under your home directory. If you are a linux user it should be <code>~/.s3cfg</code>.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.webm" type="video/webm" /></video>

Now s3cmd will use this configuration. Nothing else to do. Typing <code>s3cmd la</code> list all resources available. If you just created the Cellar add-on, you should see nothing listed. To create your bucket run <code>s3cmd mb s3://your-unique-bucket-name/</code>. The chosen name should be lower case and unique. If I insist on the uniqueness of that name, it's because it can't be already taken by someone else. All buckets are made available by default on <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code>. You can see why they have to be unique.

You can also name it after your domain name, and put a CNAME redirection to <code>cellar-c2.services.clever-cloud.com.</code>. This way it will be available from your domain name directly. You will find more information on <a href="https://www.clever.cloud/developers/addons/cellar/">our documenation</a>.

Once you have created your bucket, you are ready to upload your files. Run <code>s3cmd sync ./ s3://your-unique-bucket-name/</code> and the content of the current folder will be automatically updated to your bucket.

By default everything is private so if you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code> you should get an XML error saying access denied. To change this and make it readable by everyone, run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name/*</code>. This will grant read access to all anonymous users.

Each file should be accessible separately but you still cannot list the content of the bucket. This is because the bucket itself has to be set to public. Run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name</code> and it will allow you to see the list of objects as XML. You can get a simpler list by adding <code>type-list=2</code> as query param. So by browsing <a href="https://www.clever.cloud/developers/deploy/addon/fs-bucket/">http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/?type-list=2</a>, you should see something like:
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"&gt;
&lt;Name&gt;ldoguinbucket&lt;/Name&gt;
&lt;Prefix&gt;&lt;/Prefix&gt;
&lt;MaxKeys&gt;1000&lt;/MaxKeys&gt;
&lt;IsTruncated&gt;false&lt;/IsTruncated&gt;
&lt;Contents&gt;
    &lt;Key&gt;hello.txt&lt;/Key&gt;
    &lt;LastModified&gt;2020-10-05T13:07:08.664Z&lt;/LastModified&gt;
    &lt;ETag&gt;&amp;quot;b1946ac92492d2347c6235b4d2611184&amp;quot;&lt;/ETag&gt;
    &lt;Size&gt;6&lt;/Size&gt;
    &lt;StorageClass&gt;STANDARD&lt;/StorageClass&gt;
    &lt;Owner&gt;
        &lt;ID&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b&lt;/ID&gt;
        &lt;DisplayName&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b@user_51f7098f-604e-4d9e-8fb6-4026fd1767bb&lt;/DisplayName&gt;
    &lt;/Owner&gt;
    &lt;Type&gt;Normal&lt;/Type&gt;
&lt;/Contents&gt;
&lt;Marker&gt;&lt;/Marker&gt;
&lt;/ListBucketResult&gt;
</code></pre>
You can of course adjust the permissions to your liking. Not everything has to be public. You can make that listing look much better and be actually browsable. Here's how.
<h2 id="add-the-listing">Add the Listing</h2>
As you have seen it's easy to get an XML list of your bucket content. You will find many examples on GitHub of single page HTML that fetch the XML list with an XHR request and then renders it nicely. All you have to do is usually upload that files at the root of your bucket and everything should work.

I have tried with <a href="https://github.com/qoomon/aws-s3-bucket-browser">https://github.com/qoomon/aws-s3-bucket-browser</a> and it works great. Simply clone this repo and upload all the files at the root of your bucket with the public ACL.
<pre><code class="language-bash">git clone https://github.com/qoomon/aws-s3-bucket-browser/ 
s3cmd put --acl-public aws-s3-bucket-browser/favicon.ico s3://your-unique-bucket-name/favicon.ico
s3cmd put --acl-public aws-s3-bucket-browser/index.html s3://your-unique-bucket-name/index.html
s3cmd put --acl-public aws-s3-bucket-browser/logo.png s3://your-unique-bucket-name/logo.png
</code></pre>
<figure><img style="width: 70%; margin: 0 auto; display: block; max-width: 100%;" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylisting.png" alt="S3 directory listing" />
<figcaption>Cellar directory listing</figcaption></figure>
From there you should see a very nice listing when you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/index.html</code>. Thanks to <a href="https://github.com/qoomon">Bengt Brodersen</a> for providing this :)]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="directorylistingbanner" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/directorylistingbanner-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Yesterday I had a customer asking me how to make a simple directory listing like you have with apache server, but with the content stored in an S3 bucket. This way they can replace their git lfs + apache setup with something possibly simpler and more suited to binary storage.

<span id="more-2977"></span>

As it turns out it's not that complicated. You need to get the permissions right, and to be aware of a listing option in S3 API. Let's see how to make this work on Clever Cloud.
<h2 id="create-a-cellar-addon">Create a Cellar Addon</h2>
Clever Cloud is a Platform as a Service. We provide many <a href="https://www.clever.cloud/developers/addons/">managed services</a> and one of them is Cellar, our S3 compatible storage. Assuming you already have an account, here's how to create a Cellar add-on.
<h3 id="using-the-cli">Using the CLI</h3>
Assuming you are already using <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>, all you have to do is run <code>clever addon create cellar-addon --plan S myCellarService</code>.
<h3 id="using-the-web-console">Using the Web Console</h3>
You can login to our console on <code>https://console.clever-cloud.com/</code>. From there click on Create, an add-on and choose Cellar. There is only one plan available since Cellar is billed based on consumption so click next. We have no need to link it to an existing application so click next again, give it a name and click on create.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/create-cellar.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/create-cellar.webm" type="video/webm" /></video>
<h2 id="setup-a-bucket">Setup a Bucket</h2>
Now that you have your S3 add-on, the easiest way to manage buckets is probably to use <a href="https://s3tools.org/s3cmd">s3cmd</a> or <a href="https://rclone.org/">Rclone</a>. Here's how to create a bucket, make it public and store some files.

First get your configuration file. It's waiting for you on the add-on dashboard. Browse your Cellar add-on from the console, you should see some details and a link to <code>Download a pre-filled s3cfg file.</code>. Download it and place it under your home directory. If you are a linux user it should be <code>~/.s3cfg</code>.

<video style="margin: 0 auto; display: block;" autoplay="autoplay" loop="loop" width="70%" height="150"><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.mp4" type="video/mp4" /><source src="//assets.clever-cloud.com/website/blog/get-cellar-conf.webm" type="video/webm" /></video>

Now s3cmd will use this configuration. Nothing else to do. Typing <code>s3cmd la</code> list all resources available. If you just created the Cellar add-on, you should see nothing listed. To create your bucket run <code>s3cmd mb s3://your-unique-bucket-name/</code>. The chosen name should be lower case and unique. If I insist on the uniqueness of that name, it's because it can't be already taken by someone else. All buckets are made available by default on <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code>. You can see why they have to be unique.

You can also name it after your domain name, and put a CNAME redirection to <code>cellar-c2.services.clever-cloud.com.</code>. This way it will be available from your domain name directly. You will find more information on <a href="https://www.clever.cloud/developers/addons/cellar/">our documenation</a>.

Once you have created your bucket, you are ready to upload your files. Run <code>s3cmd sync ./ s3://your-unique-bucket-name/</code> and the content of the current folder will be automatically updated to your bucket.

By default everything is private so if you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com</code> you should get an XML error saying access denied. To change this and make it readable by everyone, run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name/*</code>. This will grant read access to all anonymous users.

Each file should be accessible separately but you still cannot list the content of the bucket. This is because the bucket itself has to be set to public. Run <code>s3cmd setacl --acl-public s3://your-unique-bucket-name</code> and it will allow you to see the list of objects as XML. You can get a simpler list by adding <code>type-list=2</code> as query param. So by browsing <a href="https://www.clever.cloud/developers/deploy/addon/fs-bucket/">http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/?type-list=2</a>, you should see something like:
<pre><code class="language-xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"&gt;
&lt;Name&gt;ldoguinbucket&lt;/Name&gt;
&lt;Prefix&gt;&lt;/Prefix&gt;
&lt;MaxKeys&gt;1000&lt;/MaxKeys&gt;
&lt;IsTruncated&gt;false&lt;/IsTruncated&gt;
&lt;Contents&gt;
    &lt;Key&gt;hello.txt&lt;/Key&gt;
    &lt;LastModified&gt;2020-10-05T13:07:08.664Z&lt;/LastModified&gt;
    &lt;ETag&gt;&amp;quot;b1946ac92492d2347c6235b4d2611184&amp;quot;&lt;/ETag&gt;
    &lt;Size&gt;6&lt;/Size&gt;
    &lt;StorageClass&gt;STANDARD&lt;/StorageClass&gt;
    &lt;Owner&gt;
        &lt;ID&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b&lt;/ID&gt;
        &lt;DisplayName&gt;cellar_0e275449-c02a-4e07-b100-2e357b532e3b@user_51f7098f-604e-4d9e-8fb6-4026fd1767bb&lt;/DisplayName&gt;
    &lt;/Owner&gt;
    &lt;Type&gt;Normal&lt;/Type&gt;
&lt;/Contents&gt;
&lt;Marker&gt;&lt;/Marker&gt;
&lt;/ListBucketResult&gt;
</code></pre>
You can of course adjust the permissions to your liking. Not everything has to be public. You can make that listing look much better and be actually browsable. Here's how.
<h2 id="add-the-listing">Add the Listing</h2>
As you have seen it's easy to get an XML list of your bucket content. You will find many examples on GitHub of single page HTML that fetch the XML list with an XHR request and then renders it nicely. All you have to do is usually upload that files at the root of your bucket and everything should work.

I have tried with <a href="https://github.com/qoomon/aws-s3-bucket-browser">https://github.com/qoomon/aws-s3-bucket-browser</a> and it works great. Simply clone this repo and upload all the files at the root of your bucket with the public ACL.
<pre><code class="language-bash">git clone https://github.com/qoomon/aws-s3-bucket-browser/ 
s3cmd put --acl-public aws-s3-bucket-browser/favicon.ico s3://your-unique-bucket-name/favicon.ico
s3cmd put --acl-public aws-s3-bucket-browser/index.html s3://your-unique-bucket-name/index.html
s3cmd put --acl-public aws-s3-bucket-browser/logo.png s3://your-unique-bucket-name/logo.png
</code></pre>
<figure><img style="width: 70%; margin: 0 auto; display: block; max-width: 100%;" src="https://cdn.clever-cloud.com/uploads/2021/08/directorylisting.png" alt="S3 directory listing" />
<figcaption>Cellar directory listing</figcaption></figure>
From there you should see a very nice listing when you browse <code>http://your-unique-bucket-name.cellar-c2.services.clever-cloud.com/index.html</code>. Thanks to <a href="https://github.com/qoomon">Bengt Brodersen</a> for providing this :)]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Deploy a Static Site on Cellar</title>
		<link>https://www.clever.cloud/blog/engineering/2020/06/24/deploy-cellar-s3-static-site/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Wed, 24 Jun 2020 12:00:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[cellar]]></category>
		<category><![CDATA[static]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/06/24/deploy-cellar-s3-static-site/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/staticsite.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="staticsite" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/staticsite.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>You don't need an application to deploy a static site on Clever Cloud anymore. Let's see how :)

<span id="more-2830"></span>

For years the only way to deploy a static website on Clever Cloud was to create an application. While the type of this application says static, it's in fact a PHP application in disguise. The good thing about this is it allows you to play with Apache's configuration to manage custom redirection and the likes. But sometimes you don't need any flexibility. And you don't want to pay for an application running when you don't need one.

Enter <a href="https://www.clever.cloud/developers/addons/cellar/">Cellar</a>, our S3 compatible object storage. You can use it to serve static assets. By default it uses the Cellar cluster URL, but with the right CNAME redirection and naming convention, it will serve your website behind your own custom domain. Cellar prices are available in <a href="https://www.clever.cloud/developers/addons/cellar/#clever-cloud-cellar-plans">our documentation</a>.

Here's how it works.
<h2 id="domain-redirection">Domain Redirection</h2>
To redirect your domain name to Clever Cloud's server, go to your domain name registrar dashboard and select the domain you want to redirect. In my case it's <code>ldoguin.name</code> on OVHCloud.
<figure style="position: relative; width: 100%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/ovh-cname-redirect.png" alt="Domain CNAME redirection" data-action="zoom" /></figure>
You need to add a CNAME redirection to our Cellar's CNAME: <code>cellar-c2.services.clever-cloud.com.</code> CNAME redirection are not available for root domains. If you want to redirect a root domain you will need all the public IPs of our cluster. You can easily get them by typing <code>dig cellar-c2.services.clever-cloud.com</code> in a terminal.
<h2 id="create-the-bucket">Create the Bucket</h2>
Once you have redirected your domain name to the Cellar cluster, create the Cellar add-on and add a new bucket named after your domain name, in my case <code>blog.ldoguin.name</code>.

An auto-renewed Let's Encrypt certificate will be setup automatically shortly after the bucket creation.

Everything you will upload to this bucket will be served as a static file.
<h2 id="upload-your-site">Upload your Site</h2>
If you already have your files ready, my favorite solution to upload them is to use <a href="https://rclone.org">rclone</a>. It's great to sync your files to many different cloud storage from Cellar to S3, Google drive, Swift, Dropbox and more.

Assuming all the files are in a folder called <code>public</code> and that you have a configured connection to Cellar called <code>mys3</code>, this is what you need to type:

<code>rclone sync ./public mys3:blog.ldoguin.name --progress --s3-acl=public-read</code>

This is pretty much rsync but for cloud storage :) To configure my connection I had the following environment variables:
<pre><code class="language-bash">export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=$CELLAR_ADDON_KEY_ID
export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=$CELLAR_ADDON_KEY_SECRET
export RCLONE_CONFIG_MYS3_ENDPOINT=$CELLAR_ADDON_HOST
export RCLONE_CONFIG_MYS3_TYPE="s3"
</code></pre>
I copied them from the my Cellar add-on dashboard. We could stop here. You have a static website hosted on Clever Cloud without a running application. Let's take this a bit further by using an application to build the website.
<h2 id="build-and-upload-your-static-site">Build and Upload your Static Site</h2>
I wrote about Hugo in a <a href="https://www.clever.cloud/blog/engineering/2020/06/18/deploy-static-site-hugo/">previous post</a>. This is going to be almost similar so I'll be quick.

The plan is to create a Clever Cloud application. Each time you will push new content to this application, it will start, generate the Hugo website, upload it to Cellar then stop itself.

Assuming you have installed Hugo and clever-tools, this is everything you need to do to have a generated website:
<pre><code class="language-bash">mkdir hugo-cellar-static # Create the site root folder
cd hugo-cellar-static/
hugo new site . # Generate a new Hugo site
git init # initialize the git repository
git submodule add https://github.com/jakewies/hugo-theme-codex themes/codex # add a theme
cp themes/codex/exampleSite/config.toml config.toml # copy the default configuration
cp -r themes/codex/exampleSite/content/ . # copy default content for the exemple
gedit config.toml  # edit the configuration, like the theme or the baseUrl
clever create --type static-apache myapp # Create a new clever cloud application
clever service link-addon MyCellar # link the app to the Cellar add-on 
cat ~/.config/clever-cloud  # Get the clever-tools token
</code></pre>
At that point you should have created a website structure and a Clever Cloud application. These are the environment variables needed to configure it:
<pre><code class="language-bash">CC_PHP_VERSION="7"
CC_PRE_RUN_HOOK="./hugo.sh" # A prerun hook to execute the build and sync it to Cellar
CC_RUN_SUCCEEDED_HOOK="clever stop" # use clever-tools to turn off the app when finished 
CLEVER_SECRET="xxxx" # Tokens for clever-tools
CLEVER_TOKEN="xxxxx" # Tokens for clever-tools
DL_RCLONE_VERSION="1.52.1" # which version of rclone to use
HUGO_VERSION="0.62.0" # which version of hugo to use
MY_DOMAIN="blog.ldoguin.name/" # The name of the bucket to sync
PORT="8080"
HUGO_ENV="production"
</code></pre>
The <code>clever stop</code> trick is likely to be replaced by something cleaner in the coming weeks, with something like a task or job. The build and sync of the site is done when the pre run hook executes <code>hugo.sh</code>, which has the following content:
<pre><code class="language-bash"># Configure rclone Cellar connection
export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=$CELLAR_ADDON_KEY_ID
export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=$CELLAR_ADDON_KEY_SECRET
export RCLONE_CONFIG_MYS3_ENDPOINT=$CELLAR_ADDON_HOST
export RCLONE_CONFIG_MYS3_TYPE="s3"

# Download and unpack rclone and hugo
wget https://downloads.rclone.org/v$DL_RCLONE_VERSION/rclone-v$DL_RCLONE_VERSION-linux-amd64.zip
wget https://github.com/gohugoio/hugo/releases/download/v$HUGO_VERSION/hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
unzip rclone-v$DL_RCLONE_VERSION-linux-amd64.zip
tar xvf hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz

# Execute the site generation with Hugo
chmod +x ./hugo
./hugo --gc --minify

# Sync the site to Cellar
./rclone-v$DL_RCLONE_VERSION-linux-amd64/rclone sync ./public mys3:$MY_DOMAIN --progress --s3-acl=public-read
</code></pre>
Now what's left to do is add and commit all the files and deploy.
<pre><code class="language-bash">git add .  # add the current folder to git
git commit -m"init" # commit
clever deploy # Deploy your website
</code></pre>
The application will start, generate the website and sync it to Cellar then stop itself. So there it is you will still have your website running, but without running an application.

Please let us know what you think and what kind of features you would like to see supported for static sites :)]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/staticsite.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="staticsite" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/staticsite.jpg 1400w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-300x116.jpg 300w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-1024x395.jpg 1024w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-768x296.jpg 768w, https://cdn.clever-cloud.com/uploads/2021/08/staticsite-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>You don't need an application to deploy a static site on Clever Cloud anymore. Let's see how :)

<span id="more-2830"></span>

For years the only way to deploy a static website on Clever Cloud was to create an application. While the type of this application says static, it's in fact a PHP application in disguise. The good thing about this is it allows you to play with Apache's configuration to manage custom redirection and the likes. But sometimes you don't need any flexibility. And you don't want to pay for an application running when you don't need one.

Enter <a href="https://www.clever.cloud/developers/addons/cellar/">Cellar</a>, our S3 compatible object storage. You can use it to serve static assets. By default it uses the Cellar cluster URL, but with the right CNAME redirection and naming convention, it will serve your website behind your own custom domain. Cellar prices are available in <a href="https://www.clever.cloud/developers/addons/cellar/#clever-cloud-cellar-plans">our documentation</a>.

Here's how it works.
<h2 id="domain-redirection">Domain Redirection</h2>
To redirect your domain name to Clever Cloud's server, go to your domain name registrar dashboard and select the domain you want to redirect. In my case it's <code>ldoguin.name</code> on OVHCloud.
<figure style="position: relative; width: 100%; height: auto; margin: 0 auto;"><img src="https://cdn.clever-cloud.com/uploads/2021/08/ovh-cname-redirect.png" alt="Domain CNAME redirection" data-action="zoom" /></figure>
You need to add a CNAME redirection to our Cellar's CNAME: <code>cellar-c2.services.clever-cloud.com.</code> CNAME redirection are not available for root domains. If you want to redirect a root domain you will need all the public IPs of our cluster. You can easily get them by typing <code>dig cellar-c2.services.clever-cloud.com</code> in a terminal.
<h2 id="create-the-bucket">Create the Bucket</h2>
Once you have redirected your domain name to the Cellar cluster, create the Cellar add-on and add a new bucket named after your domain name, in my case <code>blog.ldoguin.name</code>.

An auto-renewed Let's Encrypt certificate will be setup automatically shortly after the bucket creation.

Everything you will upload to this bucket will be served as a static file.
<h2 id="upload-your-site">Upload your Site</h2>
If you already have your files ready, my favorite solution to upload them is to use <a href="https://rclone.org">rclone</a>. It's great to sync your files to many different cloud storage from Cellar to S3, Google drive, Swift, Dropbox and more.

Assuming all the files are in a folder called <code>public</code> and that you have a configured connection to Cellar called <code>mys3</code>, this is what you need to type:

<code>rclone sync ./public mys3:blog.ldoguin.name --progress --s3-acl=public-read</code>

This is pretty much rsync but for cloud storage :) To configure my connection I had the following environment variables:
<pre><code class="language-bash">export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=$CELLAR_ADDON_KEY_ID
export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=$CELLAR_ADDON_KEY_SECRET
export RCLONE_CONFIG_MYS3_ENDPOINT=$CELLAR_ADDON_HOST
export RCLONE_CONFIG_MYS3_TYPE="s3"
</code></pre>
I copied them from the my Cellar add-on dashboard. We could stop here. You have a static website hosted on Clever Cloud without a running application. Let's take this a bit further by using an application to build the website.
<h2 id="build-and-upload-your-static-site">Build and Upload your Static Site</h2>
I wrote about Hugo in a <a href="https://www.clever.cloud/blog/engineering/2020/06/18/deploy-static-site-hugo/">previous post</a>. This is going to be almost similar so I'll be quick.

The plan is to create a Clever Cloud application. Each time you will push new content to this application, it will start, generate the Hugo website, upload it to Cellar then stop itself.

Assuming you have installed Hugo and clever-tools, this is everything you need to do to have a generated website:
<pre><code class="language-bash">mkdir hugo-cellar-static # Create the site root folder
cd hugo-cellar-static/
hugo new site . # Generate a new Hugo site
git init # initialize the git repository
git submodule add https://github.com/jakewies/hugo-theme-codex themes/codex # add a theme
cp themes/codex/exampleSite/config.toml config.toml # copy the default configuration
cp -r themes/codex/exampleSite/content/ . # copy default content for the exemple
gedit config.toml  # edit the configuration, like the theme or the baseUrl
clever create --type static-apache myapp # Create a new clever cloud application
clever service link-addon MyCellar # link the app to the Cellar add-on 
cat ~/.config/clever-cloud  # Get the clever-tools token
</code></pre>
At that point you should have created a website structure and a Clever Cloud application. These are the environment variables needed to configure it:
<pre><code class="language-bash">CC_PHP_VERSION="7"
CC_PRE_RUN_HOOK="./hugo.sh" # A prerun hook to execute the build and sync it to Cellar
CC_RUN_SUCCEEDED_HOOK="clever stop" # use clever-tools to turn off the app when finished 
CLEVER_SECRET="xxxx" # Tokens for clever-tools
CLEVER_TOKEN="xxxxx" # Tokens for clever-tools
DL_RCLONE_VERSION="1.52.1" # which version of rclone to use
HUGO_VERSION="0.62.0" # which version of hugo to use
MY_DOMAIN="blog.ldoguin.name/" # The name of the bucket to sync
PORT="8080"
HUGO_ENV="production"
</code></pre>
The <code>clever stop</code> trick is likely to be replaced by something cleaner in the coming weeks, with something like a task or job. The build and sync of the site is done when the pre run hook executes <code>hugo.sh</code>, which has the following content:
<pre><code class="language-bash"># Configure rclone Cellar connection
export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=$CELLAR_ADDON_KEY_ID
export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=$CELLAR_ADDON_KEY_SECRET
export RCLONE_CONFIG_MYS3_ENDPOINT=$CELLAR_ADDON_HOST
export RCLONE_CONFIG_MYS3_TYPE="s3"

# Download and unpack rclone and hugo
wget https://downloads.rclone.org/v$DL_RCLONE_VERSION/rclone-v$DL_RCLONE_VERSION-linux-amd64.zip
wget https://github.com/gohugoio/hugo/releases/download/v$HUGO_VERSION/hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
unzip rclone-v$DL_RCLONE_VERSION-linux-amd64.zip
tar xvf hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz

# Execute the site generation with Hugo
chmod +x ./hugo
./hugo --gc --minify

# Sync the site to Cellar
./rclone-v$DL_RCLONE_VERSION-linux-amd64/rclone sync ./public mys3:$MY_DOMAIN --progress --s3-acl=public-read
</code></pre>
Now what's left to do is add and commit all the files and deploy.
<pre><code class="language-bash">git add .  # add the current folder to git
git commit -m"init" # commit
clever deploy # Deploy your website
</code></pre>
The application will start, generate the website and sync it to Cellar then stop itself. So there it is you will still have your website running, but without running an application.

Please let us know what you think and what kind of features you would like to see supported for static sites :)]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Deploy a Hugo Static Site</title>
		<link>https://www.clever.cloud/blog/engineering/2020/06/18/deploy-static-site-hugo/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Thu, 18 Jun 2020 12:35:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[hugo]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[static]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/06/18/deploy-static-site-hugo/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="hugobanner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<strong>The process has been simplified!</strong> Check out our new static runtime with automatic build for Hugo with version management.
<div class="push-documentation__content"><a class="button --white-border" href="https://www.clever.cloud/developers/doc/applications/static/">🚀 Discover easy Hugo deployment</a></div>
</div>
Clever Cloud launched a <a href="https://clever-cloud.com/fr/podcast">french speaking podcast</a> about two weeks ago. We decided to use the Hugo static site generator to make it available online. This post explains how we deployed it.

There are many technical solutions out there to host your podcast, like Ausha or Anchor. They will allow you to configure everything needed and upload your material so you get a proper RSS feed in the end. Because Podcast subscribtions are basically RSS feed subscribtions. And these services can also go the extra mile and automatically distribute your podcast to other sites. This is actually the main reason why we use Ausha. It's way easier.

That being said we still want to have a dedicated page on our existing website and host the RSS and media files ourselves. And it turns out there is a great <a href="https://github.com/mattstratton/castanet">Hugo theme</a> for podcast hosting.

If you are not familiar with <a href="https://gohugo.io/">Hugo</a> it's one of the most popular static site generator. It's fast, mature, loaded with cool features and still in active development. Community is super helpful and you will find many different themes for different purposes like blog, documentation, FAQ or even podcast.

To follow along you need to install git, hugo and <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>. Let's see how this works.
<h2 id="create-a-new-hugo-website">Create a new Hugo website</h2>
Creating a new Hugo website is pretty straightforward. Create a folder to contain your site and inside it run <code>hugo new site</code>. Then you can add the theme you want as a submodule, copy the theme sample configuration and you should be ready to start working on your site. Here's what I did:
<pre><code class="language-bash">mkdir mysite
cd mysite
hugo new site .
git init
git submodule add https://github.com/mattstratton/castanet themes/castanet
cp themes/castanet/exampleSite/config.toml config.toml 
git add .
git commit -m'init'
</code></pre>
From here you can run <code>hugo server</code> and your site will be available at <code>localhost:1313</code>, with automatic reloading and file modification watching. This command will fail because it cannot find the theme. No worries, it's because we copied the config file from the theme directory, and its theme folder location is hardcoded. We don't need it anymore. So go ahead and edit <code>config.toml</code>. Start by removing or commenting <code>themesdir</code> on line 6. Then add your own configuration and create new content. I have set the baseUrl to <code>clever-cloud.com/fr/podcast</code>.

Notice that this is not a traditional baseUrl as it's assuming something else is already running on clever-cloud.com. And this is fine, Clever Cloud knows how to manage this. From here you can add some content and finish your own configuration. Then it's time to deploy on Clever Cloud.
<h2 id="deploy-to-clever-cloud">Deploy to Clever Cloud</h2>
At the root of your website create a file called <code>hugo.sh</code> with the following content:
<pre><code class="language-bash">wget https://github.com/gohugoio/hugo/releases/download/v$HUGO_VERSION/hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
tar xvf hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
chmod +x ./hugo
./hugo --gc --minify --destination public/fr/podcast
</code></pre>
Don't forget to make it executable with <code>chmod +x hugo.sh</code>, add and commit it. This script will be executed by Clever Cloud thanks to our <a href="https://www.clever.cloud/developers/clever-cloud-overview/hooks/">deployment hooks</a>. It downloads Hugo with the version you specified in the environment variables then run the build of the website. The build destination is specified manually as <code>public/fr/podcast</code>, the default would be <code>public</code>. This is because we need to serve the content on <em>clever-cloud.com/fr/podcast</em> and not just <em>clever-cloud.com</em>.

Now let's use clever-tools to create, configure and deploy the application. In the terminal run the following:
<pre><code class="language-bash">clever create --type static-apache mysite
clever domain add clever-cloud.com/fr/podcast
clever config set force-https enabled
clever env set CC_PRE_BUILD_HOOK "./hugo.sh"
clever env set CC_WEBROOT "/public"
clever env set HUGO_ENV "production"
clever env set HUGO_VERSION "0.68.3"
clever deploy
</code></pre>
This will create the application on Clever Cloud, add the custom domain <code>clever-cloud.com/fr/podcast</code>, and yes this works even though we already have an application serving <code>clever-cloud.com</code>. The new domain will take precedence. Then we enforce HTTPS redirection and set a bunch of environment variable for our configuration. Last command deploys the website to Clever Cloud. From here you should see logs popping up.

And this is it. You have deployed a static website in production that will be updated automatically each time you push new content, on top of an existing website. Please let us know if you have any questions about static site deployment.]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="hugobanner 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/hugobanner-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<strong>The process has been simplified!</strong> Check out our new static runtime with automatic build for Hugo with version management.
<div class="push-documentation__content"><a class="button --white-border" href="https://www.clever.cloud/developers/doc/applications/static/">🚀 Discover easy Hugo deployment</a></div>
</div>
Clever Cloud launched a <a href="https://clever-cloud.com/fr/podcast">french speaking podcast</a> about two weeks ago. We decided to use the Hugo static site generator to make it available online. This post explains how we deployed it.

There are many technical solutions out there to host your podcast, like Ausha or Anchor. They will allow you to configure everything needed and upload your material so you get a proper RSS feed in the end. Because Podcast subscribtions are basically RSS feed subscribtions. And these services can also go the extra mile and automatically distribute your podcast to other sites. This is actually the main reason why we use Ausha. It's way easier.

That being said we still want to have a dedicated page on our existing website and host the RSS and media files ourselves. And it turns out there is a great <a href="https://github.com/mattstratton/castanet">Hugo theme</a> for podcast hosting.

If you are not familiar with <a href="https://gohugo.io/">Hugo</a> it's one of the most popular static site generator. It's fast, mature, loaded with cool features and still in active development. Community is super helpful and you will find many different themes for different purposes like blog, documentation, FAQ or even podcast.

To follow along you need to install git, hugo and <a href="https://github.com/CleverCloud/clever-tools">clever-tools</a>. Let's see how this works.
<h2 id="create-a-new-hugo-website">Create a new Hugo website</h2>
Creating a new Hugo website is pretty straightforward. Create a folder to contain your site and inside it run <code>hugo new site</code>. Then you can add the theme you want as a submodule, copy the theme sample configuration and you should be ready to start working on your site. Here's what I did:
<pre><code class="language-bash">mkdir mysite
cd mysite
hugo new site .
git init
git submodule add https://github.com/mattstratton/castanet themes/castanet
cp themes/castanet/exampleSite/config.toml config.toml 
git add .
git commit -m'init'
</code></pre>
From here you can run <code>hugo server</code> and your site will be available at <code>localhost:1313</code>, with automatic reloading and file modification watching. This command will fail because it cannot find the theme. No worries, it's because we copied the config file from the theme directory, and its theme folder location is hardcoded. We don't need it anymore. So go ahead and edit <code>config.toml</code>. Start by removing or commenting <code>themesdir</code> on line 6. Then add your own configuration and create new content. I have set the baseUrl to <code>clever-cloud.com/fr/podcast</code>.

Notice that this is not a traditional baseUrl as it's assuming something else is already running on clever-cloud.com. And this is fine, Clever Cloud knows how to manage this. From here you can add some content and finish your own configuration. Then it's time to deploy on Clever Cloud.
<h2 id="deploy-to-clever-cloud">Deploy to Clever Cloud</h2>
At the root of your website create a file called <code>hugo.sh</code> with the following content:
<pre><code class="language-bash">wget https://github.com/gohugoio/hugo/releases/download/v$HUGO_VERSION/hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
tar xvf hugo_extended_"$HUGO_VERSION"_Linux-64bit.tar.gz
chmod +x ./hugo
./hugo --gc --minify --destination public/fr/podcast
</code></pre>
Don't forget to make it executable with <code>chmod +x hugo.sh</code>, add and commit it. This script will be executed by Clever Cloud thanks to our <a href="https://www.clever.cloud/developers/clever-cloud-overview/hooks/">deployment hooks</a>. It downloads Hugo with the version you specified in the environment variables then run the build of the website. The build destination is specified manually as <code>public/fr/podcast</code>, the default would be <code>public</code>. This is because we need to serve the content on <em>clever-cloud.com/fr/podcast</em> and not just <em>clever-cloud.com</em>.

Now let's use clever-tools to create, configure and deploy the application. In the terminal run the following:
<pre><code class="language-bash">clever create --type static-apache mysite
clever domain add clever-cloud.com/fr/podcast
clever config set force-https enabled
clever env set CC_PRE_BUILD_HOOK "./hugo.sh"
clever env set CC_WEBROOT "/public"
clever env set HUGO_ENV "production"
clever env set HUGO_VERSION "0.68.3"
clever deploy
</code></pre>
This will create the application on Clever Cloud, add the custom domain <code>clever-cloud.com/fr/podcast</code>, and yes this works even though we already have an application serving <code>clever-cloud.com</code>. The new domain will take precedence. Then we enforce HTTPS redirection and set a bunch of environment variable for our configuration. Last command deploys the website to Clever Cloud. From here you should see logs popping up.

And this is it. You have deployed a static website in production that will be updated automatically each time you push new content, on top of an existing website. Please let us know if you have any questions about static site deployment.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to deploy a Deno application</title>
		<link>https://www.clever.cloud/blog/engineering/2020/05/19/deploy-deno/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Tue, 19 May 2020 14:00:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[deno]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/05/19/deploy-deno/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="denobanner1 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<strong>The process has been simplified!</strong> You can now download and use any Deno version with Mise package manager from any Clever Cloud runtime.
<div class="push-documentation__content"><a class="push-documentation__link button --white-border" href="https://www.clever.cloud/developers/doc/applications/nodejs/#supported-package-managers">🚀 How to deploy JavaScript on CleverCloud</a></div>
</div>
Rejoice! The long-awaited <a href="https://deno.land/v1">Deno 1.0</a> release is among us. What is Deno you ask?
<blockquote>Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.</blockquote>
More Rust code is often something that makes us happy at Clever Cloud. So purely based on this, and because we like new, shiny toys, here's how to deploy a Deno application on Clever Cloud.

Clever Cloud being a PaaS, there are a bunch of things that can happen automatically, some that can be configured through environment variables. But Deno is not fully integrated to all our tooling yet, so instead we are going to use a NodeJS application with a twist.

I am going to assume you already have our CLI <a href="https://github.com/CleverCloud/clever-tools/">Clever-tools</a> installed, npm and git as well.

First thing first, create a git repo and a node package:
<pre><code class="language-bash">git init
npm init
</code></pre>
Then we install Deno. And if there is something I do not like, it's executing arbitrary shell script from the internet. So I am not going to use their installer. Deno is available as a downloadable binary from their Github Repo. It will do just fine in our case. Create a new folder for your application. From now on every file should be created in that folder.

Here's a shell script that will manage the download and extraction of a specific Deno version:
<pre><code class="language-bash">wget https://github.com/denoland/deno/releases/download/$DENO_VERSION/deno-x86_64-unknown-linux-gnu.zip
unzip deno-x86_64-unknown-linux-gnu.zip
</code></pre>
Notice the use of <code>$DENO_VERSION</code> that will define which one will be downloaded. Let's call this file <code>installdeno.sh</code> and make it executable:
<pre><code class="language-bash">chmod +x installdeno.sh
</code></pre>
And now we can create the Clever Cloud application:
<pre><code class="language-bash">clever create --type node myDenoApplication
</code></pre>
As I wrote earlier, we can specify custom behavior with environment variable. So let's add one that will automate the installation of Deno with our script and one to specify the version we want:
<pre><code class="language-bash">clever env set CC_PRE_BUILD_HOOK ./installdeno.sh
clever env set DENO_VERSION v1.0.0 
</code></pre>
You can execute arbitrary scripts during the deployment of the application; here we want to execute <code>installdeno.sh</code> before the build phase. You'll find the list of hooks in our <a href="https://www.clever.cloud/developers/clever-cloud-overview/hooks/">dedicated documentation</a>.

For the application itself, I took a look at the available Deno module and because I am super lazy I chose the first web framework of the list, <a href="https://github.com/zhmushan/abc">abc</a>. There is an Hello World example in the Readme, that's perfect for this test. So go ahead and create <code>abc.js</code> with the following content:
<pre><code class="language-javascript">import { Application } from "https://deno.land/x/abc/mod.ts";

const app = new Application();

app
  .get("/", (c) =&gt; {
    return "Hello, Abc!";
  })
  .start({ port: 8080 });
</code></pre>
The remaining question is, how do we launch this application? Remember that on Clever Cloud, the run process looks at your <code>package.json</code> the <code>main</code> file or <code>start</code> script to know what to execute. Let's use this to our advantage and simply add a start script that uses the Deno binary downloaded by the script.
<pre><code class="language-json">{
  "name": "abc-test",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "start":"./deno run --allow-net abc.js",
    "test": "echo \"Error: no test specified\" &amp;&amp; exit 1"
  },
  "author": "",
  "license": "ISC"
}
</code></pre>
The only thing left to do is to commit your code and deploy it:
<pre><code class="language-bash">git add abc.js installdeno.sh package.json
clever deploy
</code></pre>
From there you should see logs of your deployment showing up. The final message should be <code>Deployment successful</code>. Now type <code>clever open</code> and it will automatically open the website in your default browser.

Granted, this is a little raw and it could feel like cheating but it works and your app benefits from all the Clever Cloud good stuffs, just like any another application:
<ul>
 	<li>environment variables injection</li>
 	<li>monitoring &amp; alerting (auto restart)</li>
 	<li>zero downtime deployments</li>
 	<li>metrics (data &amp; charts)</li>
 	<li>live logs</li>
 	<li>automatic scalability</li>
</ul>
If we see a growing interest in Deno in our community we will make sure it's available with a proper, dedicated and simpler support. Let us know what you think about it and if you intend to use it!]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="denobanner1 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/denobanner1-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<strong>The process has been simplified!</strong> You can now download and use any Deno version with Mise package manager from any Clever Cloud runtime.
<div class="push-documentation__content"><a class="push-documentation__link button --white-border" href="https://www.clever.cloud/developers/doc/applications/nodejs/#supported-package-managers">🚀 How to deploy JavaScript on CleverCloud</a></div>
</div>
Rejoice! The long-awaited <a href="https://deno.land/v1">Deno 1.0</a> release is among us. What is Deno you ask?
<blockquote>Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.</blockquote>
More Rust code is often something that makes us happy at Clever Cloud. So purely based on this, and because we like new, shiny toys, here's how to deploy a Deno application on Clever Cloud.

Clever Cloud being a PaaS, there are a bunch of things that can happen automatically, some that can be configured through environment variables. But Deno is not fully integrated to all our tooling yet, so instead we are going to use a NodeJS application with a twist.

I am going to assume you already have our CLI <a href="https://github.com/CleverCloud/clever-tools/">Clever-tools</a> installed, npm and git as well.

First thing first, create a git repo and a node package:
<pre><code class="language-bash">git init
npm init
</code></pre>
Then we install Deno. And if there is something I do not like, it's executing arbitrary shell script from the internet. So I am not going to use their installer. Deno is available as a downloadable binary from their Github Repo. It will do just fine in our case. Create a new folder for your application. From now on every file should be created in that folder.

Here's a shell script that will manage the download and extraction of a specific Deno version:
<pre><code class="language-bash">wget https://github.com/denoland/deno/releases/download/$DENO_VERSION/deno-x86_64-unknown-linux-gnu.zip
unzip deno-x86_64-unknown-linux-gnu.zip
</code></pre>
Notice the use of <code>$DENO_VERSION</code> that will define which one will be downloaded. Let's call this file <code>installdeno.sh</code> and make it executable:
<pre><code class="language-bash">chmod +x installdeno.sh
</code></pre>
And now we can create the Clever Cloud application:
<pre><code class="language-bash">clever create --type node myDenoApplication
</code></pre>
As I wrote earlier, we can specify custom behavior with environment variable. So let's add one that will automate the installation of Deno with our script and one to specify the version we want:
<pre><code class="language-bash">clever env set CC_PRE_BUILD_HOOK ./installdeno.sh
clever env set DENO_VERSION v1.0.0 
</code></pre>
You can execute arbitrary scripts during the deployment of the application; here we want to execute <code>installdeno.sh</code> before the build phase. You'll find the list of hooks in our <a href="https://www.clever.cloud/developers/clever-cloud-overview/hooks/">dedicated documentation</a>.

For the application itself, I took a look at the available Deno module and because I am super lazy I chose the first web framework of the list, <a href="https://github.com/zhmushan/abc">abc</a>. There is an Hello World example in the Readme, that's perfect for this test. So go ahead and create <code>abc.js</code> with the following content:
<pre><code class="language-javascript">import { Application } from "https://deno.land/x/abc/mod.ts";

const app = new Application();

app
  .get("/", (c) =&gt; {
    return "Hello, Abc!";
  })
  .start({ port: 8080 });
</code></pre>
The remaining question is, how do we launch this application? Remember that on Clever Cloud, the run process looks at your <code>package.json</code> the <code>main</code> file or <code>start</code> script to know what to execute. Let's use this to our advantage and simply add a start script that uses the Deno binary downloaded by the script.
<pre><code class="language-json">{
  "name": "abc-test",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "start":"./deno run --allow-net abc.js",
    "test": "echo \"Error: no test specified\" &amp;&amp; exit 1"
  },
  "author": "",
  "license": "ISC"
}
</code></pre>
The only thing left to do is to commit your code and deploy it:
<pre><code class="language-bash">git add abc.js installdeno.sh package.json
clever deploy
</code></pre>
From there you should see logs of your deployment showing up. The final message should be <code>Deployment successful</code>. Now type <code>clever open</code> and it will automatically open the website in your default browser.

Granted, this is a little raw and it could feel like cheating but it works and your app benefits from all the Clever Cloud good stuffs, just like any another application:
<ul>
 	<li>environment variables injection</li>
 	<li>monitoring &amp; alerting (auto restart)</li>
 	<li>zero downtime deployments</li>
 	<li>metrics (data &amp; charts)</li>
 	<li>live logs</li>
 	<li>automatic scalability</li>
</ul>
If we see a growing interest in Deno in our community we will make sure it's available with a proper, dedicated and simpler support. Let us know what you think about it and if you intend to use it!]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TCP ports are now configurable from Clever Tools</title>
		<link>https://www.clever.cloud/blog/features/2020/05/12/tcp-redirection/</link>
		
		<dc:creator><![CDATA[Laurent Doguin]]></dc:creator>
		<pubDate>Tue, 12 May 2020 10:35:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[changelog]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[wpu]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2020/05/12/tcp-redirection/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannertcpports 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Good news everyone, you can now open a TCP port on your application. Everything you need is now available in our <a href="https://www.clever.cloud/developers/api/">API</a> and <a href="https://www.clever.cloud/developers/clever-tools/tcp-redirections/">Clever Tools</a>.

<span id="more-2974"></span>

Before this new release of <a href="https://github.com/CleverCloud/clever-tools/">clever-tools</a> you were limited to HTTP only applications. Or you had to ask our support team to open a TCP port if you needed one. Now you can open one yourself like so:
<pre><code class="language-bash">$ clever tcp-redirs add --namespace cleverapps
Successfully added tcp redirection on port: 21562
</code></pre>
What happened here is we changed the configuration of all the cleverapps.io proxies to forward every incoming request from yourapp.cleverapps.io:21562 to the port 4040 of the VM that runs your app. The <code>--namespace</code> option is here to tell us on which proxy we need to update the configuration. The <code>cleverapps</code> namespace is used for the cleverapps.io domain. The <code>default</code> namespace is used for all your custom domains. If you have your own set of proxies, you will also have a custom namespace. You can get the list of available domains with:
<pre><code class="language-bash">$ clever tcp-redirs list-namespaces
Available namespaces: default, cleverapps
</code></pre>
You will find more details about it on our <a href="https://www.clever.cloud/developers/clever-tools/tcp-redirections/">dedicated documentation</a>.

Please keep in mind that this feature is still in Beta, as such it is currently free, but will be billed once we get out of Beta.

To make sure everything works as it should, your application has to listen to port 4040 for TCP and the usual 8080 for HTTP. We still run health check of your applications on port 8080 so you still need an HTTP server.

This opens a door to new possibilities like deploying MQTT servers, LDAP directories, or this quick TCP chat that my colleague Hubert wrote: <a href="https://github.com/CleverCloud/tcp-chat">https://github.com/CleverCloud/tcp-chat</a>

Let's try this out:
<pre><code class="language-bash">$ git clone https://github.com/CleverCloud/tcp-chat
$ cd tcp-chat
$ clever create --type node tcp-chat
$ clever tcp-redirs add --namespace cleverapps
$ Successfully added tcp redirection on port: 21562
$ clever domain add mychat.cleverapps.io
$ telnet mychat.cleverapps.io 21562
</code></pre>
And now you are in a <a href="https://en.wikipedia.org/wiki/Telnet">telnet</a> session chatting with whoever join that telnet session as well. Are you aware that vi and telnet have one thing in common? No one remembers how to quit(type <code>]</code> then <code>exit</code>).

Please let us know what you want to deploy thanks to this new feature.]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannertcpports 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/bannertcpports-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p>Good news everyone, you can now open a TCP port on your application. Everything you need is now available in our <a href="https://www.clever.cloud/developers/api/">API</a> and <a href="https://www.clever.cloud/developers/clever-tools/tcp-redirections/">Clever Tools</a>.

<span id="more-2974"></span>

Before this new release of <a href="https://github.com/CleverCloud/clever-tools/">clever-tools</a> you were limited to HTTP only applications. Or you had to ask our support team to open a TCP port if you needed one. Now you can open one yourself like so:
<pre><code class="language-bash">$ clever tcp-redirs add --namespace cleverapps
Successfully added tcp redirection on port: 21562
</code></pre>
What happened here is we changed the configuration of all the cleverapps.io proxies to forward every incoming request from yourapp.cleverapps.io:21562 to the port 4040 of the VM that runs your app. The <code>--namespace</code> option is here to tell us on which proxy we need to update the configuration. The <code>cleverapps</code> namespace is used for the cleverapps.io domain. The <code>default</code> namespace is used for all your custom domains. If you have your own set of proxies, you will also have a custom namespace. You can get the list of available domains with:
<pre><code class="language-bash">$ clever tcp-redirs list-namespaces
Available namespaces: default, cleverapps
</code></pre>
You will find more details about it on our <a href="https://www.clever.cloud/developers/clever-tools/tcp-redirections/">dedicated documentation</a>.

Please keep in mind that this feature is still in Beta, as such it is currently free, but will be billed once we get out of Beta.

To make sure everything works as it should, your application has to listen to port 4040 for TCP and the usual 8080 for HTTP. We still run health check of your applications on port 8080 so you still need an HTTP server.

This opens a door to new possibilities like deploying MQTT servers, LDAP directories, or this quick TCP chat that my colleague Hubert wrote: <a href="https://github.com/CleverCloud/tcp-chat">https://github.com/CleverCloud/tcp-chat</a>

Let's try this out:
<pre><code class="language-bash">$ git clone https://github.com/CleverCloud/tcp-chat
$ cd tcp-chat
$ clever create --type node tcp-chat
$ clever tcp-redirs add --namespace cleverapps
$ Successfully added tcp redirection on port: 21562
$ clever domain add mychat.cleverapps.io
$ telnet mychat.cleverapps.io 21562
</code></pre>
And now you are in a <a href="https://en.wikipedia.org/wiki/Telnet">telnet</a> session chatting with whoever join that telnet session as well. Are you aware that vi and telnet have one thing in common? No one remembers how to quit(type <code>]</code> then <code>exit</code>).

Please let us know what you want to deploy thanks to this new feature.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
