<?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>Fonctionnalités Archives | Clever Cloud</title>
	<atom:link href="https://stagingv6.cleverapps.io/fr/blog/category/fonctionnalites/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>From Code to Product</description>
	<lastBuildDate>Tue, 11 Jun 2024 11:59:45 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>Fonctionnalités Archives | Clever Cloud</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Materia KV : notre base de données clé-valeur serverless simple d’usage est accessible à tous</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2024/06/11/materia-kv-notre-base-de-donnees-cle-valeur-serverless/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 11 Jun 2024 11:38:03 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[développeur]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=12495</guid>

					<description><![CDATA[<p><img width="1600" height="800" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Materia KV : notre base de données clé-valeur serverless simple d’usage est accessible à tous" decoding="async" fetchpriority="high" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1368x684.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Ils “poussent” leur code, nous le déployons, tout en assurant la mise à jour et la mise en sécurité de l’environnement dans lequel ils fonctionnent avec un objectif : le maintien en conditions opérationnelles. Quelle que soit la situation, leur service répond.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Penser des services simples, robustes et innovants</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous le faisons en garantissant une empreinte minimale au sein de nos serveurs, en proposant une mise à l’échelle horizontale/verticale à la demande ou automatique. Nous pouvons ainsi multiplier les instances ou les faire grossir/réduire selon la charge de vos sites. Cette volonté de simplicité va au-delà des applications, puisque nous disposons également d’une large offre de base de données (BDD) “as-a-service” vous permettant<a href="https://console.clever-cloud.com"> de déployer en quelques secondes</a> des environnements <a href="https://stagingv6.cleverapps.io/fr/product/mongodb/">MongoDB</a>, <a href="https://stagingv6.cleverapps.io/fr/product/mysql/">MySQL</a>, <a href="https://stagingv6.cleverapps.io/fr/product/postgresql/">PostgreSQL</a> ou <a href="https://stagingv6.cleverapps.io/fr/product/redis/">Redis</a>, avec les mêmes outils et garanties.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces dernières années, nous faisions néanmoins face à des demandes récurrentes : outre la volonté de certains de nos clients d’avoir accès à d’autres solutions, ils nous demandaient régulièrement de disposer des avantages de <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">notre infrastructure répartie sur trois datacenters</a> afin d’obtenir des services à haute disponibilité. Mais dans le domaine des BDD, cela n'est pas toujours simple à mettre en place tout en assurant un bon niveau d’automatisation et la cohérence des données. Nous avons donc décidé de développer notre propre gamme de produits pour y parvenir.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le projet “<a href="https://stagingv6.cleverapps.io/fr/materia-serverless/">Materia</a>” était né, reposant sur le moteur transactionnel open source <a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">FoundationDB</a>, utilisé, par exemple, par <a href="https://www.apple.com/" target="_blank" rel="noreferrer noopener">Apple</a> pour ses services iCloud ainsi que par <a href="https://www.snowflake.com/en/" target="_blank" rel="noreferrer noopener">Snowflake</a>. Nous y contribuons et l’adaptons à nos besoins, tout en profitant de son aspect distribué et résilient, notamment du fait de son importante capacité de <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a>. Il nous permet d’imaginer un univers entier de solutions serverless, très simples d’usage, facturées à l'usage, avec des couches de comptabilité que nous développons pour permettre à nos clients de lui “parler” en utilisant des protocoles existants  tels que DynamoDB, GraphQL ou PostgreSQL par exemple.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV accessible à tous</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons commencé par le protocole Redis, afin de mettre en place Materia KV, actuellement en phase de test Alpha. Il s’agit d’une base de données clé-valeur répliquée de manière synchrone sur nos trois datacenters parisiens. Lorsque nos serveurs vous répondent, c’est que votre donnée à été écrite trois fois. Surtout, elle est très simple d’usage : rendez-vous dans notre <a href="https://console.clever-cloud.com">Console</a>, créez un add-on Materia KV, vous obtiendrez instantanément un jeton (token) utilisable avec n’importe quel client Redis ou même en envoyant des commandes à nos serveurs directement via le protocole TCP.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ainsi, vous pouvez dès maintenant bénéficier d’une solution pour stocker vos données sous la forme de clé-valeur, en haute disponibilité, sans avoir la moindre instance à configurer, sans tarification minimale mensuelle : vous payerez simplement ce que vous consommez. Surtout, nous assurons ce service en compatibilité avec des protocoles existants. Aujourd’hui Redis, demain DynamoDB et GraphQL. La liste des commandes supportées est disponible<a href="https://developers.clever-cloud.com/doc/addons/materia-kv/#supported-types-and-commands"> ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Lancée à<a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2024/04/16/materiadb-kv-functions/"> Devoxx France mi-avril</a>, Materia KV a fait forte impression sur place et lors de nos démonstrations depuis. Nous avons donc décidé de la rendre accessible à tous afin de permettre à l’ensemble de nos clients et des curieux de nous faire part de leurs retours sur son fonctionnement et de leurs besoins. Si la facturation se fera à l’usage à partir de la phase de Beta, pour le moment, c’est gratuit ! N’hésitez pas à tester et<a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener"> à nous donner votre avis</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://console.clever-cloud.com/users/me/addons/new" target="_blank" rel="noreferrer noopener">Créer un add-on Materia KV</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/materia-kv/" target="_blank" rel="noreferrer noopener">La documentation de Materia KV</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déjà intégré à nos outils et interfaces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Materia KV est bien entendu accessible via un addon-provider au sein<a href="https://developers.clever-cloud.com/api/"> de notre API</a>, <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs/" target="_blank" rel="noreferrer noopener">Terraform</a> (ou OpenTofu par exemple), mais aussi de notre CLI, les<a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener"> Clever Tools</a>. Pour créer un jeton d’accès il suffit de lancer la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create kv NAME</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cet add-on pourra être lié directement à une application Clever Cloud où ses variables d’environnement seront injectées. Mais vous pouvez également l’utiliser depuis n’importe quel service tiers, un client en ligne de commande (CLI) ou avec interface graphique (GUI).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Alors que le développement de Materia KV et de ses différentes interfaces va se faire sur la durée, nous avons commencé à réfléchir à son intégration au sein des Clever Tools. Ainsi, une branche de test, disponible<a href="https://github.com/CleverCloud/clever-tools/pull/725" target="_blank" rel="noreferrer noopener"> sous la forme de binaires</a> et<a href="https://github.com/CleverCloud/clever-tools/blob/davlgd-embedded-kv-client/docs/kv.md" target="_blank" rel="noreferrer noopener"> documentée</a>, propose une commande <code>clever kv</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Avec elle, vous pouvez directement envoyer des requêtes à Materia KV en ayant la variable d’environnement configurée localement, ou en indiquant un ID dans vos commandes :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># With Bash and Zsh
source <(clever addon env ADDON_ID --export)
# With Fish
clever addon env ADDON_ID --export | source

clever kv PING # PONG
clever kv set yourKey theValue
clever kv get yourKey</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Comme cette version de démonstration ne gère pas l’ensemble des commandes gérées par Materia KV, vous pouvez lui envoyer une commande “brute”, elle vous renverra alors la réponse :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv redis_raw 'hset key field1 value1 field2 value2' # 2
clever kv redis_raw 'hget key field2'                      # value2
clever kv redis_raw 'hgetall key'                          # the full hash</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Pour démontrer les possibilités d’une telle intégration, vous avez également la possibilité de faire directement des requêtes sur un objet JSON stocké dans une clé :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv set simpleJson '{"key": "value"}' # the set data
clever kv getJson simpleJson key            # value
clever kv set jsonKey '[{"key": "value"}, {"bigKey": {"subKey1": "subValue1","subKey2": "subValue2"}}]'
clever kv getjson jsonKey bigKey.subKey2    # subValue1
clever kv getjson jsonKey ''                # the full JSON</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Pour montrer à quel point de telles intégrations sont simples, nous avons mis à votre disposition un client Materia KV écrit<a href="https://github.com/CleverCloud/mkv-go-cli" target="_blank" rel="noreferrer noopener"> en Go</a> en utilisant Go-Redis. Si vous souhaitez plutôt comprendre comment vous pouvez envoyer des commandes et recevoir des réponses de Materia KV directement en TCP, vous trouverez des exemples,<a href="https://github.com/CleverCloud/mkv-raw-tcp-ruby" target="_blank" rel="noreferrer noopener"> en V</a> ou<a href="https://gist.github.com/davlgd/6762660218a82646ba648242aa1e4548"> en Ruby</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>N’hésitez pas à proposer les vôtres et à nous le faire savoir ;)</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une démonstration sur Twitch de Materia KV, un espace communautaire</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":12684,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2024/06/2024-06-05--clever-cloud--twitch--thumbnail--materia-kv--fr-1024x576.png" alt="Une démonstration en direct sur Twitch aura lieu le mardi 18 juin 2024 à 13h15 avec nos hosts Horacio González (LostInBrittany) et Yannick Guern (Akanoa)." class="wp-image-12684"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Envie d’en savoir plus ? Horacio González, notre DevRel en chef, fera une démonstration<a href="https://www.twitch.tv/clevercloud" target="_blank" rel="noreferrer noopener"> sur Twitch</a> mardi 18 juin à 13h15. Pierre Zemb, créateur de Materia chez Clever Cloud, échangera également avec notre CTO Steven Le Roux dans une vidéo publiée fin juin sur la chaîne <a href="https://www.youtube.com/c/Clevercloud-platform" target="_blank" rel="noreferrer noopener">YouTube de Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et pour nous faire part de votre avis, de vos questions et de vos besoins, rendez-vous sur la section dédiée à Materia de<a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener"> notre espace communautaire GitHub</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="800" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Materia KV : notre base de données clé-valeur serverless simple d’usage est accessible à tous" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/2024-06-04--clever-cloud--blog--materia-alpha-publique--fr-1368x684.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Ils “poussent” leur code, nous le déployons, tout en assurant la mise à jour et la mise en sécurité de l’environnement dans lequel ils fonctionnent avec un objectif : le maintien en conditions opérationnelles. Quelle que soit la situation, leur service répond.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Penser des services simples, robustes et innovants</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous le faisons en garantissant une empreinte minimale au sein de nos serveurs, en proposant une mise à l’échelle horizontale/verticale à la demande ou automatique. Nous pouvons ainsi multiplier les instances ou les faire grossir/réduire selon la charge de vos sites. Cette volonté de simplicité va au-delà des applications, puisque nous disposons également d’une large offre de base de données (BDD) “as-a-service” vous permettant<a href="https://console.clever-cloud.com"> de déployer en quelques secondes</a> des environnements <a href="https://stagingv6.cleverapps.io/fr/product/mongodb/">MongoDB</a>, <a href="https://stagingv6.cleverapps.io/fr/product/mysql/">MySQL</a>, <a href="https://stagingv6.cleverapps.io/fr/product/postgresql/">PostgreSQL</a> ou <a href="https://stagingv6.cleverapps.io/fr/product/redis/">Redis</a>, avec les mêmes outils et garanties.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces dernières années, nous faisions néanmoins face à des demandes récurrentes : outre la volonté de certains de nos clients d’avoir accès à d’autres solutions, ils nous demandaient régulièrement de disposer des avantages de <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">notre infrastructure répartie sur trois datacenters</a> afin d’obtenir des services à haute disponibilité. Mais dans le domaine des BDD, cela n'est pas toujours simple à mettre en place tout en assurant un bon niveau d’automatisation et la cohérence des données. Nous avons donc décidé de développer notre propre gamme de produits pour y parvenir.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le projet “<a href="https://stagingv6.cleverapps.io/fr/materia-serverless/">Materia</a>” était né, reposant sur le moteur transactionnel open source <a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">FoundationDB</a>, utilisé, par exemple, par <a href="https://www.apple.com/" target="_blank" rel="noreferrer noopener">Apple</a> pour ses services iCloud ainsi que par <a href="https://www.snowflake.com/en/" target="_blank" rel="noreferrer noopener">Snowflake</a>. Nous y contribuons et l’adaptons à nos besoins, tout en profitant de son aspect distribué et résilient, notamment du fait de son importante capacité de <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a>. Il nous permet d’imaginer un univers entier de solutions serverless, très simples d’usage, facturées à l'usage, avec des couches de comptabilité que nous développons pour permettre à nos clients de lui “parler” en utilisant des protocoles existants  tels que DynamoDB, GraphQL ou PostgreSQL par exemple.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV accessible à tous</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons commencé par le protocole Redis, afin de mettre en place Materia KV, actuellement en phase de test Alpha. Il s’agit d’une base de données clé-valeur répliquée de manière synchrone sur nos trois datacenters parisiens. Lorsque nos serveurs vous répondent, c’est que votre donnée à été écrite trois fois. Surtout, elle est très simple d’usage : rendez-vous dans notre <a href="https://console.clever-cloud.com">Console</a>, créez un add-on Materia KV, vous obtiendrez instantanément un jeton (token) utilisable avec n’importe quel client Redis ou même en envoyant des commandes à nos serveurs directement via le protocole TCP.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ainsi, vous pouvez dès maintenant bénéficier d’une solution pour stocker vos données sous la forme de clé-valeur, en haute disponibilité, sans avoir la moindre instance à configurer, sans tarification minimale mensuelle : vous payerez simplement ce que vous consommez. Surtout, nous assurons ce service en compatibilité avec des protocoles existants. Aujourd’hui Redis, demain DynamoDB et GraphQL. La liste des commandes supportées est disponible<a href="https://developers.clever-cloud.com/doc/addons/materia-kv/#supported-types-and-commands"> ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Lancée à<a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2024/04/16/materiadb-kv-functions/"> Devoxx France mi-avril</a>, Materia KV a fait forte impression sur place et lors de nos démonstrations depuis. Nous avons donc décidé de la rendre accessible à tous afin de permettre à l’ensemble de nos clients et des curieux de nous faire part de leurs retours sur son fonctionnement et de leurs besoins. Si la facturation se fera à l’usage à partir de la phase de Beta, pour le moment, c’est gratuit ! N’hésitez pas à tester et<a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener"> à nous donner votre avis</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://console.clever-cloud.com/users/me/addons/new" target="_blank" rel="noreferrer noopener">Créer un add-on Materia KV</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/materia-kv/" target="_blank" rel="noreferrer noopener">La documentation de Materia KV</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déjà intégré à nos outils et interfaces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Materia KV est bien entendu accessible via un addon-provider au sein<a href="https://developers.clever-cloud.com/api/"> de notre API</a>, <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs/" target="_blank" rel="noreferrer noopener">Terraform</a> (ou OpenTofu par exemple), mais aussi de notre CLI, les<a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener"> Clever Tools</a>. Pour créer un jeton d’accès il suffit de lancer la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create kv NAME</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cet add-on pourra être lié directement à une application Clever Cloud où ses variables d’environnement seront injectées. Mais vous pouvez également l’utiliser depuis n’importe quel service tiers, un client en ligne de commande (CLI) ou avec interface graphique (GUI).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Alors que le développement de Materia KV et de ses différentes interfaces va se faire sur la durée, nous avons commencé à réfléchir à son intégration au sein des Clever Tools. Ainsi, une branche de test, disponible<a href="https://github.com/CleverCloud/clever-tools/pull/725" target="_blank" rel="noreferrer noopener"> sous la forme de binaires</a> et<a href="https://github.com/CleverCloud/clever-tools/blob/davlgd-embedded-kv-client/docs/kv.md" target="_blank" rel="noreferrer noopener"> documentée</a>, propose une commande <code>clever kv</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Avec elle, vous pouvez directement envoyer des requêtes à Materia KV en ayant la variable d’environnement configurée localement, ou en indiquant un ID dans vos commandes :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># With Bash and Zsh
source <(clever addon env ADDON_ID --export)
# With Fish
clever addon env ADDON_ID --export | source

clever kv PING # PONG
clever kv set yourKey theValue
clever kv get yourKey</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Comme cette version de démonstration ne gère pas l’ensemble des commandes gérées par Materia KV, vous pouvez lui envoyer une commande “brute”, elle vous renverra alors la réponse :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv redis_raw 'hset key field1 value1 field2 value2' # 2
clever kv redis_raw 'hget key field2'                      # value2
clever kv redis_raw 'hgetall key'                          # the full hash</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Pour démontrer les possibilités d’une telle intégration, vous avez également la possibilité de faire directement des requêtes sur un objet JSON stocké dans une clé :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv set simpleJson '{"key": "value"}' # the set data
clever kv getJson simpleJson key            # value
clever kv set jsonKey '[{"key": "value"}, {"bigKey": {"subKey1": "subValue1","subKey2": "subValue2"}}]'
clever kv getjson jsonKey bigKey.subKey2    # subValue1
clever kv getjson jsonKey ''                # the full JSON</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Pour montrer à quel point de telles intégrations sont simples, nous avons mis à votre disposition un client Materia KV écrit<a href="https://github.com/CleverCloud/mkv-go-cli" target="_blank" rel="noreferrer noopener"> en Go</a> en utilisant Go-Redis. Si vous souhaitez plutôt comprendre comment vous pouvez envoyer des commandes et recevoir des réponses de Materia KV directement en TCP, vous trouverez des exemples,<a href="https://github.com/CleverCloud/mkv-raw-tcp-ruby" target="_blank" rel="noreferrer noopener"> en V</a> ou<a href="https://gist.github.com/davlgd/6762660218a82646ba648242aa1e4548"> en Ruby</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>N’hésitez pas à proposer les vôtres et à nous le faire savoir ;)</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une démonstration sur Twitch de Materia KV, un espace communautaire</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":12684,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2024/06/2024-06-05--clever-cloud--twitch--thumbnail--materia-kv--fr-1024x576.png" alt="Une démonstration en direct sur Twitch aura lieu le mardi 18 juin 2024 à 13h15 avec nos hosts Horacio González (LostInBrittany) et Yannick Guern (Akanoa)." class="wp-image-12684"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Envie d’en savoir plus ? Horacio González, notre DevRel en chef, fera une démonstration<a href="https://www.twitch.tv/clevercloud" target="_blank" rel="noreferrer noopener"> sur Twitch</a> mardi 18 juin à 13h15. Pierre Zemb, créateur de Materia chez Clever Cloud, échangera également avec notre CTO Steven Le Roux dans une vidéo publiée fin juin sur la chaîne <a href="https://www.youtube.com/c/Clevercloud-platform" target="_blank" rel="noreferrer noopener">YouTube de Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et pour nous faire part de votre avis, de vos questions et de vos besoins, rendez-vous sur la section dédiée à Materia de<a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener"> notre espace communautaire GitHub</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployez vos sites statiques sur Clever Cloud</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2024/01/25/deployez-vos-sites-statiques-sur-clever-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 09:33:17 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=11614</guid>

					<description><![CDATA[<p><img width="1556" height="600" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière de l&#039;article &quot;déployez vos sites statiques&quot;" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr.png 1556w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1536x592.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1368x528.png 1368w" sizes="auto, (max-width: 1556px) 100vw, 1556px" /></p><!-- wp:paragraph -->
<p>L’objectif de Clever Cloud a toujours été de fournir à ses clients un moyen rapide et simple de déployer des applications, en se basant sur les outils les plus standards possible.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Votre partenaire pour un hébergement efficace</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ils peuvent également bénéficier de nos capacités de mise à l'échelle horizontale et verticale pour s'assurer que les ressources sont allouées au plus près de leur charge, automatiquement si nécessaire, facturées à la seconde. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout cela peut se faire depuis <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">notre propre infrastructure dense à Paris</a> ou depuis les datacenters de nos partenaires tels qu'OVHcloud et <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/01/17/clever-cloud-et-scaleway-sassocient-pour-proposer-une-offre-platform-as-a-service-100-europeenne-et-souveraine/">Scaleway</a>. Ainsi, vous pouvez vous assurer que vous réduisez vos besoins en ressources informatiques, <em>by design</em>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais certains recherchent des solutions encore plus efficaces pour leurs sites web. Ces dernières années, une tendance est apparue pour répondre à cette demande : les générateurs de sites statiques (<a href="https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_site_statique" target="_blank" rel="noreferrer noopener">SSG</a>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Bien entendu, vous pouvez les déployer sur Clever Cloud !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployez n’importe quel site statique sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ils nécessitent très peu de ressources car ils ne s'appuient pas sur une couche logicielle complexe : pas de base de données ou de calculs côté serveur une fois déployés. Dans la plupart des cas, il s'agit simplement de HTML, CSS et JavaScript côté client, générés à partir d'un contenu <a href="https://fr.wikipedia.org/wiki/Markdown" target="_blank" rel="noreferrer noopener">Markdown</a>, avec un thème/modèle appliqué.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il existe de nombreux SSG open source sur le marché que vous pouvez utiliser pour des blogs, de la documentation ou des sites marketing par exemple. Nous pouvons les générer pour vous puis déployer et servir leurs fichiers: vous n'aurez besoin ni de GitHub actions ni d'autre CI/CD externe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour vous aider dans cette démarche, nous avons publié des tutoriels avec des exemples sur la manière de déployer un site web statique à l'aide d’<a href="https://developers.clever-cloud.com/guides/astro">Astro</a>, <a href="https://developers.clever-cloud.com/guides/docusaurus">Docusaurus</a>, <a href="https://developers.clever-cloud.com/guides/eleventy">Eleventy (11ty)</a>, <a href="https://developers.clever-cloud.com/guides/hexo">Hexo</a>, <a href="https://developers.clever-cloud.com/guides/hugo">Hugo</a>, <a href="https://developers.clever-cloud.com/guides/lume-deno">Lume (Deno)</a>, <a href="https://developers.clever-cloud.com/guides/mkdocs">MkDocs</a>, <a href="https://developers.clever-cloud.com/guides/mdbook">mdBook</a> ou <a href="https://developers.clever-cloud.com/guides/nuxt">Nuxt</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://developers.clever-cloud.com/guides/#static-site-generator-ssg">Nos guides pour déployer des sites statiques sur Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Mais d'autres sont également compatibles ! Vous voulez plus de guides ou de l'aide sur d'autres SSG ? Remplissez simplement <a href="https://github.com/CleverCloud/documentation/issues" target="_blank" rel="noreferrer noopener">une issue</a> : notre documentation est open source, statique, basée sur Hugo avec <a href="https://github.com/imfing/hextra" target="_blank" rel="noreferrer noopener">le thème Hextra</a>. Vous pouvez même <a href="https://github.com/CleverCloud/documentation" target="_blank" rel="noreferrer noopener">y contribuer</a> ;)</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1556" height="600" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière de l&#039;article &quot;déployez vos sites statiques&quot;" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr.png 1556w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1536x592.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/01/get-static-fr-1368x528.png 1368w" sizes="auto, (max-width: 1556px) 100vw, 1556px" /></p><!-- wp:paragraph -->
<p>L’objectif de Clever Cloud a toujours été de fournir à ses clients un moyen rapide et simple de déployer des applications, en se basant sur les outils les plus standards possible.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Votre partenaire pour un hébergement efficace</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ils peuvent également bénéficier de nos capacités de mise à l'échelle horizontale et verticale pour s'assurer que les ressources sont allouées au plus près de leur charge, automatiquement si nécessaire, facturées à la seconde. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout cela peut se faire depuis <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">notre propre infrastructure dense à Paris</a> ou depuis les datacenters de nos partenaires tels qu'OVHcloud et <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/01/17/clever-cloud-et-scaleway-sassocient-pour-proposer-une-offre-platform-as-a-service-100-europeenne-et-souveraine/">Scaleway</a>. Ainsi, vous pouvez vous assurer que vous réduisez vos besoins en ressources informatiques, <em>by design</em>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais certains recherchent des solutions encore plus efficaces pour leurs sites web. Ces dernières années, une tendance est apparue pour répondre à cette demande : les générateurs de sites statiques (<a href="https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_site_statique" target="_blank" rel="noreferrer noopener">SSG</a>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Bien entendu, vous pouvez les déployer sur Clever Cloud !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployez n’importe quel site statique sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ils nécessitent très peu de ressources car ils ne s'appuient pas sur une couche logicielle complexe : pas de base de données ou de calculs côté serveur une fois déployés. Dans la plupart des cas, il s'agit simplement de HTML, CSS et JavaScript côté client, générés à partir d'un contenu <a href="https://fr.wikipedia.org/wiki/Markdown" target="_blank" rel="noreferrer noopener">Markdown</a>, avec un thème/modèle appliqué.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il existe de nombreux SSG open source sur le marché que vous pouvez utiliser pour des blogs, de la documentation ou des sites marketing par exemple. Nous pouvons les générer pour vous puis déployer et servir leurs fichiers: vous n'aurez besoin ni de GitHub actions ni d'autre CI/CD externe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour vous aider dans cette démarche, nous avons publié des tutoriels avec des exemples sur la manière de déployer un site web statique à l'aide d’<a href="https://developers.clever-cloud.com/guides/astro">Astro</a>, <a href="https://developers.clever-cloud.com/guides/docusaurus">Docusaurus</a>, <a href="https://developers.clever-cloud.com/guides/eleventy">Eleventy (11ty)</a>, <a href="https://developers.clever-cloud.com/guides/hexo">Hexo</a>, <a href="https://developers.clever-cloud.com/guides/hugo">Hugo</a>, <a href="https://developers.clever-cloud.com/guides/lume-deno">Lume (Deno)</a>, <a href="https://developers.clever-cloud.com/guides/mkdocs">MkDocs</a>, <a href="https://developers.clever-cloud.com/guides/mdbook">mdBook</a> ou <a href="https://developers.clever-cloud.com/guides/nuxt">Nuxt</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://developers.clever-cloud.com/guides/#static-site-generator-ssg">Nos guides pour déployer des sites statiques sur Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Mais d'autres sont également compatibles ! Vous voulez plus de guides ou de l'aide sur d'autres SSG ? Remplissez simplement <a href="https://github.com/CleverCloud/documentation/issues" target="_blank" rel="noreferrer noopener">une issue</a> : notre documentation est open source, statique, basée sur Hugo avec <a href="https://github.com/imfing/hextra" target="_blank" rel="noreferrer noopener">le thème Hextra</a>. Vous pouvez même <a href="https://github.com/CleverCloud/documentation" target="_blank" rel="noreferrer noopener">y contribuer</a> ;)</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Un WordPress élégant dans le cloud en 2024</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2024/01/08/wordpress-cloud-2024/</link>
		
		<dc:creator><![CDATA[Julia March]]></dc:creator>
		<pubDate>Mon, 08 Jan 2024 13:11:06 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[composer]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=7433</guid>

					<description><![CDATA[<p><img width="1076" height="415" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="wordpress logo with tools and cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1.png 1076w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-768x296.png 768w" sizes="auto, (max-width: 1076px) 100vw, 1076px" /></p><!-- wp:paragraph -->
<p>Triste nouvelle pour les détracteurs de WordPress : vous pouvez l'installer facilement sur Clever Cloud avec une structure de fichiers sécurisée et moderne, grâce aux outils dont nous allons vous parler dans ce post. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans ce billet, nous ne vous montrons pas seulement comment déployer un WordPress chez Clever Cloud, mais aussi comment le faire en utilisant Git, pour celles et ceux qui n'ont jamais franchi le pas de son utilisation. On vous explique la procédure étape par étape, si vous avez envie de vous lancer. Si vous n'en avez pas envie, il reste toujours l'intégration GitHub. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Éléments requis  pour l'installation :</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Un compte <a href="https://stagingv6.cleverapps.io" target="_blank" rel="noreferrer noopener">Clever Cloud</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le <a href="https://github.com/CleverCloud/clever-wordpress" target="_blank" rel="noreferrer noopener">Composer de Bedrock</a> pour déployer WordPress avec Clever Cloud, mis à jour par nos soins.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un compte <a href="https://github.com" target="_blank" rel="noreferrer noopener">GitHub</a> si vous déployez le code avec l'intégration GitHub sur Clever Cloud, <strong>ou</strong> <a href="https://git-scm.com" target="_blank" rel="noreferrer noopener">Git </a>sur votre ordinateur si vous optez pour cette méthode.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:separator {"className":"is-style-default"} -->
<hr class="wp-block-separator has-alpha-channel-opacity is-style-default"/>
<!-- /wp:separator -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déploiement et configuration de WordPress</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>On va déployer WordPress en quelques minutes, en utilisant Composer, qui configurera une structure rapide, légère et sécurisée à notre site. Tout ce qu'on aime.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Suivez les instructions ci-dessous :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">1. Récupérer le code</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour récupérer le code, vous devez d'abord vous rendre dans son dépôt public. Allez sur notre dépôt  <a href="https://github.com/CleverCloud/clever-wordpress" target="_blank" rel="noreferrer noopener">"WordPress + Bedrock"</a> . Ce dépôt contient la structure d'un Wordpress compatible avec Composer. Vous pouvez le copier de deux façons : depuis GitHub (l'option la plus simple si vous n'êtes pas à l'aise avec les commandes du terminal) ou avec Git. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Même si vous n'êtes pas familiarisés avec les commandes du terminal et Git, nous profitons de cet article pour vous y initier. Pas d'inquiétude, vous pourrez utiliser cette méthode en suivant nos instructions, si vous ne souhaitez pas passer par GitHub. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Option A : Utiliser GitHub</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous n'êtes pas à l'aise avec Git, ou le Terminal tout court, vous pouvez créer un fork et déployer depuis GitHub sur la console. Pour cela, créez un fork, ce qui dupliquera le dépôt vers votre compte GitHub.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7536,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/github-fork.png" alt="" class="wp-image-7536"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ouvrez les paramètres de <a href="https://console.clever-cloud.com" target="_blank" rel="noreferrer noopener">la Console Clever Cloud</a>, cliquez sur "Profil" et connectez votre compte GitHub à votre compte Clever Cloud, si vous ne l'avez pas fait. C'est tout, passez directement à l'étape 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Option B : Utiliser Git, pas à pas</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'autre option consiste à télécharger le code sur votre ordinateur, donc en local. Si vous ne l'avez jamais fait, voici des instructions simples et adaptées aux débutants.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":5} -->
<h5 class="wp-block-heading">Set up</h5>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avant de se lancer, il vous faut autoriser votre machine à déployer sur votre compte Clever Cloud. Si vous ne l'avez pas fait, il faudra créer et ajouter une clé SSH à votre console. Si vous avez déjà réalisé cette étape, passez directement à la suite.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Ouvrez votre Terminal, puis : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>tapez <code>ssh-keygen -t ed25519 -C "[votre@email.ici]</code>` le mail doit être le même que celui que vous avez connecté à Clever Cloud.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Quand le terminal vous demande dans quel fichier vous souhaitez ajouter la clé, tapez simplement "Enter"</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ajoutez un mot de passe</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Copier le contenu de votre clé nouvellement créée avec la commande <code>pbcopy &lt; ~/.ssh/id_[rsa].pub</code> (remplacez le <code>[rsa]</code> par l'identifiant de votre clé, bien évidement)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ouvre la Console Clever Cloud, allez dans Profil &gt; Clés SSH, "Ajouter" et collez le contenu.  </li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Votre machine est à présent connectée à la Console et prête à envoyer du code vers Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":5} -->
<h5 class="wp-block-heading">Cloner le code</h5>
<!-- /wp:heading -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Créez un dossier <code>sites</code> sur votre ordinateur. Il hébergera vos applications et vos sites.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ouvrez votre terminal et tapez <code>cd sites</code>, cela ouvrira votre dossier nouvellement créé. </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Toujours dans le terminal, tapez <code>git clone git@github.com:CleverCloud/clever-wordpress.git'</code></li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Le dépôt a été téléchargé sur votre ordinateur ! Si vous ouvrez votre dossier <code>sites</code>, vous constaterez un nouveau dossier à l'intérieur, nommé <code>clever-wordpress</code>. Ouvrez ce dossier (<code>cd clever-wordpress</code>) et tapez <code class="lang-shell">ls -a</code> : vous verrez apparaître tous les dossiers et fichiers contenus dedans. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Si vous venez d'être initié à Git à travers cet article, nous vous conseillons de suivre <a href="https://www.nextinpact.com/article/43792/apprenez-a-utiliser-git-bases-pour-suivre-evolution-dun-document" target="_blank" rel="noreferrer noopener">les explications et tutos</a> de notre collègue David Legrand. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">2. Créer l'application sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Accédez à la Console Clever Cloud, cliquez sur "Créer", puis "Une application". Si vous utilisez l'intégration GitHub, vous pouvez créer une nouvelle application PHP en choisissant votre fork. Le code sera lancé depuis votre dépôt GitHub, vous n'aurez rien à faire. Si vous utilisez git, il faudra entrer une simple ligne de commande pour réviser la même action.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La Console va vous proposer d'ajouter un adon, sélectionnez <strong>une base de données MySQL</strong> et poursuivez.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Editez les <strong>variables d'environnement</strong> de l'application PHP en mode expert et collez les salts d'environnement produits sur <a href="https://cdn.roots.io/salts.html" target="_blank" rel="noreferrer noopener">cette page</a> (n'oubliez pas de sauvegarder vos modifications)</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7533,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/variables-environnement.png" alt="Console Clever Cloud variables d'environnement en mode expert" class="wp-image-7533"/></figure>
<!-- /wp:image -->

<!-- wp:list {"ordered":true,"start":6} -->
<ol start="6"><!-- wp:list-item -->
<li>Ajoutez 3 variables supplémentaires :<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><code>WP_ENV</code> avec la valeur <code>production</code> </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>WP_HOME</code> avec la valeur <code>https://yourdomain.tld</code> </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>WP_SITEURL</code> avec la valeur <code>https://your-domain.tld/wp</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:image {"id":7534,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/variables-simple.png" alt="Console Clever Cloud variables d'environnements mode simple" class="wp-image-7534"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Sauf si vous avez choisi l'intégration GitHub, la Console vous fournit les lignes de commandes à copier-coller dans votre terminal pour lancer votre code vers votre instance. Une fois cette action effectuée, le déploiement se lancera.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pendant le déploiement de l'application, <strong>créez un addon </strong>de stockage S3 Cellar et liez-le à votre application (cliquez sur votre application PHP, puis choisissez "Services Liés" pour la connecter au Cellar).&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Sur la page de configuration du Cellar, créez <strong>un bucket</strong> et donnez-lui un nom. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Revenez à la configuration de votre application et ajoutez la <strong>variable d'environnement</strong> suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>CELLAR_ADDON_BUCKET</code> avec le nom du bucket comme valeur.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Astuce : vous pouvez facilement obtenir un nom de domaine personnalisé sur votre bucket. Consultez<a href="https://stagingv6.cleverapps.io/doc/deploy/addon/cellar/#using-a-custom-domain" target="_blank" rel="noreferrer noopener"> la doc</a> pour savoir comment le configurer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Redémarrez votre application pour que les modifications soient prises en compte. &nbsp;<br>N'oubliez pas de configurer votre nom de domaine pour WP_HOME (ou un sous-domaine .cleverapps.io à des fins de test).&nbsp;<em> </em><br></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La page d'installation de WordPress se chargera alors. Configurez votre Wordpress (vous trouverez les informations de la base de données dans la Console, soit en cliquant sur lardon, soit dans l'onglet "Variables d'environnement" de votre appli). Une fois dans le tableau de Wordpress, allez sur votre page de plugins et activez le plugin <strong>S3 Uploads</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est tout. Vous avez maintenant un WordPress hébergé chez Clever Cloud. Vos fichiers et médias seront stockés dans le Cellar. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajouter un plugin avec une seule ligne de code</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le fichier  <code>composer.json</code> se charge de refléter le répertoire des plugins de WordPress ; il vous suffit donc de spécifier ce qui doit être reflété. Vous n'avez <strong>pas besoin du répertoire des plugins</strong> dans votre tableau de bord WordPress pour les ajouter à votre nouveau site. Vous utiliserez <a href="https://wpackagist.org">Wpackagist</a> pour localiser et ajouter manuellement les références du plugin au fichier <code>composer.json</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Localisez <code>require</code> , c'est ici que se trouvent les plugins : &nbsp; <br></p>
<!-- /wp:paragraph -->

<!-- wp:code {"className":"lang-json"} -->
<pre class="wp-block-code lang-json"><code>"require": 
//Here are your further plugins declarations. Add this line wherever you'd like (update the version if necessary)
"wpackagist-plugin/&#91;plugin]": "&#91;version]",</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>Vous pouvez trouver vos plugins  sur  <a href="https://wpackagist.org">Wpackagist</a> pour les ajouter également dans le fichier. Validez les changements (avec Git : <code>git add .</code>&nbsp; et  <code>git commit -m "un-message"</code>), poussez-les vers Clever Cloud et attendez que l'application soit redéployée avec les modifications. Vous pourrez ensuite les activer depuis votre tableau de bord WordPress.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p>Bienvenue à bord !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1076" height="415" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="wordpress logo with tools and cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1.png 1076w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/08/wp-composer-1-768x296.png 768w" sizes="auto, (max-width: 1076px) 100vw, 1076px" /></p><!-- wp:paragraph -->
<p>Triste nouvelle pour les détracteurs de WordPress : vous pouvez l'installer facilement sur Clever Cloud avec une structure de fichiers sécurisée et moderne, grâce aux outils dont nous allons vous parler dans ce post. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans ce billet, nous ne vous montrons pas seulement comment déployer un WordPress chez Clever Cloud, mais aussi comment le faire en utilisant Git, pour celles et ceux qui n'ont jamais franchi le pas de son utilisation. On vous explique la procédure étape par étape, si vous avez envie de vous lancer. Si vous n'en avez pas envie, il reste toujours l'intégration GitHub. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Éléments requis  pour l'installation :</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Un compte <a href="https://stagingv6.cleverapps.io" target="_blank" rel="noreferrer noopener">Clever Cloud</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Le <a href="https://github.com/CleverCloud/clever-wordpress" target="_blank" rel="noreferrer noopener">Composer de Bedrock</a> pour déployer WordPress avec Clever Cloud, mis à jour par nos soins.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un compte <a href="https://github.com" target="_blank" rel="noreferrer noopener">GitHub</a> si vous déployez le code avec l'intégration GitHub sur Clever Cloud, <strong>ou</strong> <a href="https://git-scm.com" target="_blank" rel="noreferrer noopener">Git </a>sur votre ordinateur si vous optez pour cette méthode.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:separator {"className":"is-style-default"} -->
<hr class="wp-block-separator has-alpha-channel-opacity is-style-default"/>
<!-- /wp:separator -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déploiement et configuration de WordPress</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>On va déployer WordPress en quelques minutes, en utilisant Composer, qui configurera une structure rapide, légère et sécurisée à notre site. Tout ce qu'on aime.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Suivez les instructions ci-dessous :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">1. Récupérer le code</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour récupérer le code, vous devez d'abord vous rendre dans son dépôt public. Allez sur notre dépôt  <a href="https://github.com/CleverCloud/clever-wordpress" target="_blank" rel="noreferrer noopener">"WordPress + Bedrock"</a> . Ce dépôt contient la structure d'un Wordpress compatible avec Composer. Vous pouvez le copier de deux façons : depuis GitHub (l'option la plus simple si vous n'êtes pas à l'aise avec les commandes du terminal) ou avec Git. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Même si vous n'êtes pas familiarisés avec les commandes du terminal et Git, nous profitons de cet article pour vous y initier. Pas d'inquiétude, vous pourrez utiliser cette méthode en suivant nos instructions, si vous ne souhaitez pas passer par GitHub. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Option A : Utiliser GitHub</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous n'êtes pas à l'aise avec Git, ou le Terminal tout court, vous pouvez créer un fork et déployer depuis GitHub sur la console. Pour cela, créez un fork, ce qui dupliquera le dépôt vers votre compte GitHub.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7536,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/github-fork.png" alt="" class="wp-image-7536"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ouvrez les paramètres de <a href="https://console.clever-cloud.com" target="_blank" rel="noreferrer noopener">la Console Clever Cloud</a>, cliquez sur "Profil" et connectez votre compte GitHub à votre compte Clever Cloud, si vous ne l'avez pas fait. C'est tout, passez directement à l'étape 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Option B : Utiliser Git, pas à pas</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'autre option consiste à télécharger le code sur votre ordinateur, donc en local. Si vous ne l'avez jamais fait, voici des instructions simples et adaptées aux débutants.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":5} -->
<h5 class="wp-block-heading">Set up</h5>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avant de se lancer, il vous faut autoriser votre machine à déployer sur votre compte Clever Cloud. Si vous ne l'avez pas fait, il faudra créer et ajouter une clé SSH à votre console. Si vous avez déjà réalisé cette étape, passez directement à la suite.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Ouvrez votre Terminal, puis : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>tapez <code>ssh-keygen -t ed25519 -C "[votre@email.ici]</code>` le mail doit être le même que celui que vous avez connecté à Clever Cloud.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Quand le terminal vous demande dans quel fichier vous souhaitez ajouter la clé, tapez simplement "Enter"</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ajoutez un mot de passe</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Copier le contenu de votre clé nouvellement créée avec la commande <code>pbcopy &lt; ~/.ssh/id_[rsa].pub</code> (remplacez le <code>[rsa]</code> par l'identifiant de votre clé, bien évidement)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ouvre la Console Clever Cloud, allez dans Profil &gt; Clés SSH, "Ajouter" et collez le contenu.  </li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Votre machine est à présent connectée à la Console et prête à envoyer du code vers Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":5} -->
<h5 class="wp-block-heading">Cloner le code</h5>
<!-- /wp:heading -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Créez un dossier <code>sites</code> sur votre ordinateur. Il hébergera vos applications et vos sites.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Ouvrez votre terminal et tapez <code>cd sites</code>, cela ouvrira votre dossier nouvellement créé. </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Toujours dans le terminal, tapez <code>git clone git@github.com:CleverCloud/clever-wordpress.git'</code></li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Le dépôt a été téléchargé sur votre ordinateur ! Si vous ouvrez votre dossier <code>sites</code>, vous constaterez un nouveau dossier à l'intérieur, nommé <code>clever-wordpress</code>. Ouvrez ce dossier (<code>cd clever-wordpress</code>) et tapez <code class="lang-shell">ls -a</code> : vous verrez apparaître tous les dossiers et fichiers contenus dedans. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Si vous venez d'être initié à Git à travers cet article, nous vous conseillons de suivre <a href="https://www.nextinpact.com/article/43792/apprenez-a-utiliser-git-bases-pour-suivre-evolution-dun-document" target="_blank" rel="noreferrer noopener">les explications et tutos</a> de notre collègue David Legrand. </p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">2. Créer l'application sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Accédez à la Console Clever Cloud, cliquez sur "Créer", puis "Une application". Si vous utilisez l'intégration GitHub, vous pouvez créer une nouvelle application PHP en choisissant votre fork. Le code sera lancé depuis votre dépôt GitHub, vous n'aurez rien à faire. Si vous utilisez git, il faudra entrer une simple ligne de commande pour réviser la même action.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La Console va vous proposer d'ajouter un adon, sélectionnez <strong>une base de données MySQL</strong> et poursuivez.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Editez les <strong>variables d'environnement</strong> de l'application PHP en mode expert et collez les salts d'environnement produits sur <a href="https://cdn.roots.io/salts.html" target="_blank" rel="noreferrer noopener">cette page</a> (n'oubliez pas de sauvegarder vos modifications)</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7533,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/variables-environnement.png" alt="Console Clever Cloud variables d'environnement en mode expert" class="wp-image-7533"/></figure>
<!-- /wp:image -->

<!-- wp:list {"ordered":true,"start":6} -->
<ol start="6"><!-- wp:list-item -->
<li>Ajoutez 3 variables supplémentaires :<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><code>WP_ENV</code> avec la valeur <code>production</code> </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>WP_HOME</code> avec la valeur <code>https://yourdomain.tld</code> </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>WP_SITEURL</code> avec la valeur <code>https://your-domain.tld/wp</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:image {"id":7534,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/09/variables-simple.png" alt="Console Clever Cloud variables d'environnements mode simple" class="wp-image-7534"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Sauf si vous avez choisi l'intégration GitHub, la Console vous fournit les lignes de commandes à copier-coller dans votre terminal pour lancer votre code vers votre instance. Une fois cette action effectuée, le déploiement se lancera.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pendant le déploiement de l'application, <strong>créez un addon </strong>de stockage S3 Cellar et liez-le à votre application (cliquez sur votre application PHP, puis choisissez "Services Liés" pour la connecter au Cellar).&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Sur la page de configuration du Cellar, créez <strong>un bucket</strong> et donnez-lui un nom. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Revenez à la configuration de votre application et ajoutez la <strong>variable d'environnement</strong> suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>CELLAR_ADDON_BUCKET</code> avec le nom du bucket comme valeur.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Astuce : vous pouvez facilement obtenir un nom de domaine personnalisé sur votre bucket. Consultez<a href="https://stagingv6.cleverapps.io/doc/deploy/addon/cellar/#using-a-custom-domain" target="_blank" rel="noreferrer noopener"> la doc</a> pour savoir comment le configurer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Redémarrez votre application pour que les modifications soient prises en compte. &nbsp;<br>N'oubliez pas de configurer votre nom de domaine pour WP_HOME (ou un sous-domaine .cleverapps.io à des fins de test).&nbsp;<em> </em><br></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La page d'installation de WordPress se chargera alors. Configurez votre Wordpress (vous trouverez les informations de la base de données dans la Console, soit en cliquant sur lardon, soit dans l'onglet "Variables d'environnement" de votre appli). Une fois dans le tableau de Wordpress, allez sur votre page de plugins et activez le plugin <strong>S3 Uploads</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est tout. Vous avez maintenant un WordPress hébergé chez Clever Cloud. Vos fichiers et médias seront stockés dans le Cellar. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajouter un plugin avec une seule ligne de code</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le fichier  <code>composer.json</code> se charge de refléter le répertoire des plugins de WordPress ; il vous suffit donc de spécifier ce qui doit être reflété. Vous n'avez <strong>pas besoin du répertoire des plugins</strong> dans votre tableau de bord WordPress pour les ajouter à votre nouveau site. Vous utiliserez <a href="https://wpackagist.org">Wpackagist</a> pour localiser et ajouter manuellement les références du plugin au fichier <code>composer.json</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Localisez <code>require</code> , c'est ici que se trouvent les plugins : &nbsp; <br></p>
<!-- /wp:paragraph -->

<!-- wp:code {"className":"lang-json"} -->
<pre class="wp-block-code lang-json"><code>"require": 
//Here are your further plugins declarations. Add this line wherever you'd like (update the version if necessary)
"wpackagist-plugin/&#91;plugin]": "&#91;version]",</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>Vous pouvez trouver vos plugins  sur  <a href="https://wpackagist.org">Wpackagist</a> pour les ajouter également dans le fichier. Validez les changements (avec Git : <code>git add .</code>&nbsp; et  <code>git commit -m "un-message"</code>), poussez-les vers Clever Cloud et attendez que l'application soit redéployée avec les modifications. Vous pourrez ensuite les activer depuis votre tableau de bord WordPress.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:separator {"opacity":"css"} -->
<hr class="wp-block-separator has-css-opacity"/>
<!-- /wp:separator -->

<!-- wp:paragraph -->
<p>Bienvenue à bord !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployez un ChatGPT personnalisé basé sur PHP</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Wed, 11 Oct 2023 07:21:04 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=10554</guid>

					<description><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière déployez un chatgpt PHP" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://stagingv6.cleverapps.io/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://stagingv6.cleverapps.io/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://stagingv6.cleverapps.io/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://stagingv6.cleverapps.io/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière déployez un chatgpt PHP" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://stagingv6.cleverapps.io/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://stagingv6.cleverapps.io/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://stagingv6.cleverapps.io/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://stagingv6.cleverapps.io/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bun : comment héberger vos applications sur Clever Cloud</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/09/19/bun-comment-heberger-vos-applications-sur-clever-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 19 Sep 2023 09:34:47 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[clevercloud]]></category>
		<category><![CDATA[développeur]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=8128</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/09/bannerbunonclevercloud.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Bun hébergé sur Clever Cloud" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Cela fait plus d’un an maintenant que Jarred Sumner et son équipe travaillent à un nouveau runtime JavaScript <strong>open source</strong> : <a href="https://github.com/oven-sh/bun" target="_blank" rel="noreferrer noopener">Bun</a>. Il est <strong>présenté comme plus performant et plus complet que les solutions actuelles telles que Node.js ou Deno. </strong>Sa version 1.0.3 <a href="https://github.com/oven-sh/bun/releases" target="_blank" rel="noreferrer noopener">vient de sortir</a>, vous pouvez d’ores et déjà l’utiliser pour vos projets hébergés par Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Car si nous aimons tout automatiser et simplifier pour nos clients, nous le faisons en leur laissant la plus grande liberté possible. Ainsi, héberger <a href="https://stagingv6.cleverapps.io/fr/product/applications-node-js/">une application Node.js</a> avec le framework ou le gestionnaire de paquets de votre choix se fait déjà sans contraintes particulières, et déployer un site ne prend que quelques minutes.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous supportons déjà <a href="https://stagingv6.cleverapps.io/blog/engineering/2020/05/19/deploy-deno/">Deno</a>, <a href="https://stagingv6.cleverapps.io/doc/deploy/application/javascript/by-framework/meteor/">Meteor.js</a>, <a href="https://stagingv6.cleverapps.io/doc/deploy/application/javascript/by-framework/nodejs/#supported-package-managers">yarn</a>. Si pour Bun, la décision n’a pas encore été prise de l’intégrer nativement à nos images, dans l’attente des premiers retours de nos clients, cela se fait très simplement.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Hello, Bun sur Clever Cloud !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Envie d’essayer ? Il vous suffit d’avoir un compte Clever Cloud ou d’en créer un depuis une adresse e-mail ou un compte GitHub. 20 euros de crédits vous seront offerts lors de votre inscription.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a> (et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour notre premier exemple, nous partirons du principe que vous disposez d’une machine avec <a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a> et <a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a> dans une version récente. Si vous n’avez pas encore installé notre interface open source en ligne de commande (CLI) <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>, tapez (avec les droits administrateur de votre système ou <code>sudo</code> si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Installons Bun et créons une première application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm install -g bun
mkdir clevbun &amp;&amp; cd clevbun
bun init -y &amp;&amp; git init</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cela va vous créer un dépôt git local et toute une série de fichiers, dont <code>package.json</code> qui contient la configuration de votre projet. Mais également <code>index.ts</code> et <code>ts.config.json</code> qui sont propres au langage TypeScript utilisé par défaut par Bun. N'ayez crainte, celui-ci gère tout aussi bien de simples fichiers JavaScript, du <a href="https://bun.sh/docs/runtime/jsx" target="_blank" rel="noreferrer noopener">JSX/TSX</a>, des modules ECMAScript et CommonJS qu'il importe <a href="https://bun.sh/docs/runtime/modules" target="_blank" rel="noreferrer noopener">de manière unifiée</a>, <a href="https://bun.sh/docs/api/ffi" target="_blank" rel="noreferrer noopener">des langages de bas niveau</a> ou <a href="https://bun.sh/docs/api/sqlite" target="_blank" rel="noreferrer noopener">SQLite</a>. C'est justement l'un de ses points forts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vérifions que tout a bien fonctionné :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">&gt; bun index.ts<br>Hello via Bun!</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une application avec le serveur HTTP de Bun</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre but étant d’héberger une application web, nous utiliserons un serveur HTTP. Cela tombe bien, Bun dispose du sien, en plus d’assurer une compatibilité (partielle) avec les fonctionnalités et API de Node.js. Développé en utilisant le langage <a href="https://fr.wikipedia.org/wiki/Zig_(langage)" target="_blank" rel="noreferrer noopener">Zig</a> et le moteur <a href="https://fr.wikipedia.org/wiki/JavaScriptCore" target="_blank" rel="noreferrer noopener">JavaScriptCore</a> plutôt que v8, avec une recherche poussée de l'optimisation, ce runtime se dit plus performant pour ce type d’usage.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Modifiez le contenu du fichier <code>index.ts</code> comme suit :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-javascript">Bun.serve({
  port: 8080,
  hostname: '0.0.0.0',
  fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/") return new Response("Home page!");
    if (url.pathname === "/blog") return new Response("Blog!");
    return new Response("404!");
  },
  error(error) {
    return new Response(`&lt;pre&gt;${error}\n${error.stack}&lt;/pre&gt;`, {
      headers: {
        "Content-Type": "text/html",
      },
    });
  },
});</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cela créé un serveur HTTP qui envoie une réponse différente selon la route (<code>url.pathname</code>) et une erreur 404 si aucune ne correspond. En cas de souci, une page spécifique sera affichée. Notez que le port 8080 est ici inscrit dans le code mais il pourrait être précisé avec une variable d’environnement : <code>$PORT</code>, <code>$BUN_PORT</code> ou <code>$NODE_PORT</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clever deploy !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Passons aux choses sérieuses avec un déploiement sur Clever Cloud en commençant par préparer l’application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever create -t node clevbun
clever env set CC_PRE_BUILD_HOOK "npm i -g bun"
clever env set CC_NODE_BUILD_TOOL "custom"
clever env set CC_CUSTOM_BUILD_TOOL "bun install"
clever env set CC_RUN_COMMAND "bun run index.ts"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>La première commande permet de créer l’application au sein de votre compte Clever Cloud. Nous définissons ensuite plusieurs variables d’environnement permettant d’installer Bun au sein de l’image, puis les instructions pour la configuration des dépendances et le lancement du projet. Comme pour Node.js, vous pouvez indiquer qu’une application est prête pour la production en attribuant la valeur <code>production</code> à la variable d’environnement <code>NODE_ENV</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notez que vous pouvez utiliser cette configuration pour utiliser Bun sur une application Node.js déjà hébergée par Clever Cloud en adaptant <code>CC_RUN_COMMAND</code> à votre projet. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notre application étant créée, elle peut être déployée. C’est simple comme un <code>git push</code> !</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . &amp;&amp; git commit -m "First commit"
clever deploy &amp;&amp; clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Elle est alors disponible depuis nos infrastructures puis ouverte dans votre navigateur. Vous pouvez ajouter <code>/blog</code> ou <code>/random</code> à la fin de l'URL pour vérifier que l'attribution des routes fonctionne bien.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">De nombreuses possibilités</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous n’avez pas à vous préoccuper de la configuration de l’accès HTTPS, de la collecte des logs ou des métriques, tout est déjà mis en place et accessible via Clever Tools ou <a href="https://console.clever-cloud.com/">la Console</a>. Vous pourrez d'ailleurs passer par cette dernière afin d'activer <a href="https://stagingv6.cleverapps.io/fr/blog/features/2021/10/28/grafana-pour-des-metriques-d-applications/">Grafana</a> dans les paramètres de votre compte. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour accéder aux informations de votre application dans la Console utilisez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>D’autres fonctionnalités de Clever Tools vous permettent de lui attribuer un domaine, voir ses paramètres, son activité, modifier le nombre et le type d’instance utilisée, l’arrêter ou la redémarrer. N’hésitez pas à regarder l’aide de notre CLI avec <code>--help</code> ou <a href="https://github.com/CleverCloud/clever-tools/tree/master#how-to-use" target="_blank" rel="noreferrer noopener">sa documentation</a> pour en savoir plus :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Bien entendu, vous pouvez également aller plus loin avec Bun et déployer des applications utilisant <a href="https://twitter.com/davlgd/status/1700478826755530822" target="_blank" rel="noreferrer noopener">le framework web Elysia</a> ou encore des générateurs de sites statiques <a href="https://twitter.com/davlgd/status/1700599956359262313" target="_blank" rel="noreferrer noopener">tels qu’Astro</a>. Nous vous détaillerons cela dans de prochains billets ! D'ici là, n'hésitez pas à nous faire savoir ce que vous attendez de nos images proposant des runtimes JavaScript.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/09/bannerbunonclevercloud.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Bun hébergé sur Clever Cloud" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Cela fait plus d’un an maintenant que Jarred Sumner et son équipe travaillent à un nouveau runtime JavaScript <strong>open source</strong> : <a href="https://github.com/oven-sh/bun" target="_blank" rel="noreferrer noopener">Bun</a>. Il est <strong>présenté comme plus performant et plus complet que les solutions actuelles telles que Node.js ou Deno. </strong>Sa version 1.0.3 <a href="https://github.com/oven-sh/bun/releases" target="_blank" rel="noreferrer noopener">vient de sortir</a>, vous pouvez d’ores et déjà l’utiliser pour vos projets hébergés par Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Car si nous aimons tout automatiser et simplifier pour nos clients, nous le faisons en leur laissant la plus grande liberté possible. Ainsi, héberger <a href="https://stagingv6.cleverapps.io/fr/product/applications-node-js/">une application Node.js</a> avec le framework ou le gestionnaire de paquets de votre choix se fait déjà sans contraintes particulières, et déployer un site ne prend que quelques minutes.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous supportons déjà <a href="https://stagingv6.cleverapps.io/blog/engineering/2020/05/19/deploy-deno/">Deno</a>, <a href="https://stagingv6.cleverapps.io/doc/deploy/application/javascript/by-framework/meteor/">Meteor.js</a>, <a href="https://stagingv6.cleverapps.io/doc/deploy/application/javascript/by-framework/nodejs/#supported-package-managers">yarn</a>. Si pour Bun, la décision n’a pas encore été prise de l’intégrer nativement à nos images, dans l’attente des premiers retours de nos clients, cela se fait très simplement.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Hello, Bun sur Clever Cloud !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Envie d’essayer ? Il vous suffit d’avoir un compte Clever Cloud ou d’en créer un depuis une adresse e-mail ou un compte GitHub. 20 euros de crédits vous seront offerts lors de votre inscription.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a> (et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour notre premier exemple, nous partirons du principe que vous disposez d’une machine avec <a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a> et <a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a> dans une version récente. Si vous n’avez pas encore installé notre interface open source en ligne de commande (CLI) <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>, tapez (avec les droits administrateur de votre système ou <code>sudo</code> si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Installons Bun et créons une première application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm install -g bun
mkdir clevbun &amp;&amp; cd clevbun
bun init -y &amp;&amp; git init</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cela va vous créer un dépôt git local et toute une série de fichiers, dont <code>package.json</code> qui contient la configuration de votre projet. Mais également <code>index.ts</code> et <code>ts.config.json</code> qui sont propres au langage TypeScript utilisé par défaut par Bun. N'ayez crainte, celui-ci gère tout aussi bien de simples fichiers JavaScript, du <a href="https://bun.sh/docs/runtime/jsx" target="_blank" rel="noreferrer noopener">JSX/TSX</a>, des modules ECMAScript et CommonJS qu'il importe <a href="https://bun.sh/docs/runtime/modules" target="_blank" rel="noreferrer noopener">de manière unifiée</a>, <a href="https://bun.sh/docs/api/ffi" target="_blank" rel="noreferrer noopener">des langages de bas niveau</a> ou <a href="https://bun.sh/docs/api/sqlite" target="_blank" rel="noreferrer noopener">SQLite</a>. C'est justement l'un de ses points forts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vérifions que tout a bien fonctionné :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">&gt; bun index.ts<br>Hello via Bun!</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une application avec le serveur HTTP de Bun</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre but étant d’héberger une application web, nous utiliserons un serveur HTTP. Cela tombe bien, Bun dispose du sien, en plus d’assurer une compatibilité (partielle) avec les fonctionnalités et API de Node.js. Développé en utilisant le langage <a href="https://fr.wikipedia.org/wiki/Zig_(langage)" target="_blank" rel="noreferrer noopener">Zig</a> et le moteur <a href="https://fr.wikipedia.org/wiki/JavaScriptCore" target="_blank" rel="noreferrer noopener">JavaScriptCore</a> plutôt que v8, avec une recherche poussée de l'optimisation, ce runtime se dit plus performant pour ce type d’usage.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Modifiez le contenu du fichier <code>index.ts</code> comme suit :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-javascript">Bun.serve({
  port: 8080,
  hostname: '0.0.0.0',
  fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/") return new Response("Home page!");
    if (url.pathname === "/blog") return new Response("Blog!");
    return new Response("404!");
  },
  error(error) {
    return new Response(`&lt;pre&gt;${error}\n${error.stack}&lt;/pre&gt;`, {
      headers: {
        "Content-Type": "text/html",
      },
    });
  },
});</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cela créé un serveur HTTP qui envoie une réponse différente selon la route (<code>url.pathname</code>) et une erreur 404 si aucune ne correspond. En cas de souci, une page spécifique sera affichée. Notez que le port 8080 est ici inscrit dans le code mais il pourrait être précisé avec une variable d’environnement : <code>$PORT</code>, <code>$BUN_PORT</code> ou <code>$NODE_PORT</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clever deploy !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Passons aux choses sérieuses avec un déploiement sur Clever Cloud en commençant par préparer l’application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever create -t node clevbun
clever env set CC_PRE_BUILD_HOOK "npm i -g bun"
clever env set CC_NODE_BUILD_TOOL "custom"
clever env set CC_CUSTOM_BUILD_TOOL "bun install"
clever env set CC_RUN_COMMAND "bun run index.ts"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>La première commande permet de créer l’application au sein de votre compte Clever Cloud. Nous définissons ensuite plusieurs variables d’environnement permettant d’installer Bun au sein de l’image, puis les instructions pour la configuration des dépendances et le lancement du projet. Comme pour Node.js, vous pouvez indiquer qu’une application est prête pour la production en attribuant la valeur <code>production</code> à la variable d’environnement <code>NODE_ENV</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notez que vous pouvez utiliser cette configuration pour utiliser Bun sur une application Node.js déjà hébergée par Clever Cloud en adaptant <code>CC_RUN_COMMAND</code> à votre projet. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notre application étant créée, elle peut être déployée. C’est simple comme un <code>git push</code> !</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . &amp;&amp; git commit -m "First commit"
clever deploy &amp;&amp; clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Elle est alors disponible depuis nos infrastructures puis ouverte dans votre navigateur. Vous pouvez ajouter <code>/blog</code> ou <code>/random</code> à la fin de l'URL pour vérifier que l'attribution des routes fonctionne bien.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">De nombreuses possibilités</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous n’avez pas à vous préoccuper de la configuration de l’accès HTTPS, de la collecte des logs ou des métriques, tout est déjà mis en place et accessible via Clever Tools ou <a href="https://console.clever-cloud.com/">la Console</a>. Vous pourrez d'ailleurs passer par cette dernière afin d'activer <a href="https://stagingv6.cleverapps.io/fr/blog/features/2021/10/28/grafana-pour-des-metriques-d-applications/">Grafana</a> dans les paramètres de votre compte. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour accéder aux informations de votre application dans la Console utilisez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>D’autres fonctionnalités de Clever Tools vous permettent de lui attribuer un domaine, voir ses paramètres, son activité, modifier le nombre et le type d’instance utilisée, l’arrêter ou la redémarrer. N’hésitez pas à regarder l’aide de notre CLI avec <code>--help</code> ou <a href="https://github.com/CleverCloud/clever-tools/tree/master#how-to-use" target="_blank" rel="noreferrer noopener">sa documentation</a> pour en savoir plus :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Bien entendu, vous pouvez également aller plus loin avec Bun et déployer des applications utilisant <a href="https://twitter.com/davlgd/status/1700478826755530822" target="_blank" rel="noreferrer noopener">le framework web Elysia</a> ou encore des générateurs de sites statiques <a href="https://twitter.com/davlgd/status/1700599956359262313" target="_blank" rel="noreferrer noopener">tels qu’Astro</a>. Nous vous détaillerons cela dans de prochains billets ! D'ici là, n'hésitez pas à nous faire savoir ce que vous attendez de nos images proposant des runtimes JavaScript.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Une tuile de métriques pour simplifier le suivi de vos applications</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/03/16/tuile-de-metriques/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Thu, 16 Mar 2023 11:16:45 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=7860</guid>

					<description><![CDATA[<p></p><!-- wp:paragraph -->
<p>Héberger ses sites à travers un service tel que Clever Cloud, ce n’est pas simplement envoyer ses fichiers vers un serveur. C’est gagner en simplicité d’exécution, en vélocité, et surtout s’assurer de leur maintien en conditions opérationnelles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ainsi, pour chaque application ou add-on déployé, vous disposez automatiquement de services tels que des sauvegardes, une gestion des logs ou de suivi des métriques. De quoi vous permettre de vous assurer d’être prêt pour un usage en production.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une nouvelle tuile de métrique</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cela passe aussi par de petits détails vous permettant d’avoir accès facilement aux informations essentielles à travers notre <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Console</a>. Parmi ses récentes améliorations, nous avons ajouté une nouvelle « tuile » dans la vue d’ensemble de chacune de vos applications :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7866,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/03/overview-fr.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/03/overview-fr.png" alt="Tableau de bord tuile de métrique" class="wp-image-7866"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous y trouverez le niveau d’utilisation des vCPU et de la mémoire sur une durée de 24 heures, sous la forme d’un graphique composé de 24 barres, représentant une heure chacune. Une valeur moyenne est également affichée, correspondant à la dernière heure.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Un code couleur à trois niveaux permet d’identifier directement une situation nécessitant votre attention, ou de vous assurer que tout va bien. Un panneau d’information vient détailler le fonctionnement des éléments en place et vous disposez de raccourcis renvoyant vers des métriques plus complètes ainsi que le dashboard Grafana lié à votre application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous ne voulez pas avoir à vous préoccuper du niveau de charge de votre application et cherchez à gagner en sérénité, pensez à activer l’auto-scalabilité. Elle permet d’augmenter ou de réduire constamment la taille ou le nombre de vos instances selon le besoin, tout en respectant des limites que vous avez définies.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un composant web pratique et accessible</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Bien entendu, cette tuile a été développée <a href="https://stagingv6.cleverapps.io/doc/clever-components/?path=/story/%F0%9F%9B%A0-overview-cc-tile-metrics--default-story" target="_blank" rel="noreferrer noopener">sous la forme d’un <strong>Web Component</strong>, documenté ici</a> et que vous pouvez librement exploiter. Il s’agit également de<strong> la première à suivre nos règles en matière d’accessibilité</strong>, que ce soit pour les boutons et liens ou la gestion par les lecteurs d’écrans : le graphique y sera représenté par un tableau.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p></p><!-- wp:paragraph -->
<p>Héberger ses sites à travers un service tel que Clever Cloud, ce n’est pas simplement envoyer ses fichiers vers un serveur. C’est gagner en simplicité d’exécution, en vélocité, et surtout s’assurer de leur maintien en conditions opérationnelles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ainsi, pour chaque application ou add-on déployé, vous disposez automatiquement de services tels que des sauvegardes, une gestion des logs ou de suivi des métriques. De quoi vous permettre de vous assurer d’être prêt pour un usage en production.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une nouvelle tuile de métrique</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cela passe aussi par de petits détails vous permettant d’avoir accès facilement aux informations essentielles à travers notre <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Console</a>. Parmi ses récentes améliorations, nous avons ajouté une nouvelle « tuile » dans la vue d’ensemble de chacune de vos applications :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7866,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/03/overview-fr.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/03/overview-fr.png" alt="Tableau de bord tuile de métrique" class="wp-image-7866"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous y trouverez le niveau d’utilisation des vCPU et de la mémoire sur une durée de 24 heures, sous la forme d’un graphique composé de 24 barres, représentant une heure chacune. Une valeur moyenne est également affichée, correspondant à la dernière heure.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Un code couleur à trois niveaux permet d’identifier directement une situation nécessitant votre attention, ou de vous assurer que tout va bien. Un panneau d’information vient détailler le fonctionnement des éléments en place et vous disposez de raccourcis renvoyant vers des métriques plus complètes ainsi que le dashboard Grafana lié à votre application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous ne voulez pas avoir à vous préoccuper du niveau de charge de votre application et cherchez à gagner en sérénité, pensez à activer l’auto-scalabilité. Elle permet d’augmenter ou de réduire constamment la taille ou le nombre de vos instances selon le besoin, tout en respectant des limites que vous avez définies.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un composant web pratique et accessible</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Bien entendu, cette tuile a été développée <a href="https://stagingv6.cleverapps.io/doc/clever-components/?path=/story/%F0%9F%9B%A0-overview-cc-tile-metrics--default-story" target="_blank" rel="noreferrer noopener">sous la forme d’un <strong>Web Component</strong>, documenté ici</a> et que vous pouvez librement exploiter. Il s’agit également de<strong> la première à suivre nos règles en matière d’accessibilité</strong>, que ce soit pour les boutons et liens ou la gestion par les lecteurs d’écrans : le graphique y sera représenté par un tableau.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La Console de Clever Cloud continue sa transformation</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/02/14/la-console-de-clever-cloud-continue-sa-transformation/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 14 Feb 2023 12:37:00 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=7807</guid>

					<description><![CDATA[<p><img width="2800" height="1080" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr.png 2800w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1536x592.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-2048x790.png 2048w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1368x528.png 1368w" sizes="auto, (max-width: 2800px) 100vw, 2800px" /></p><!-- wp:paragraph -->
<p>En 2022, Clever Cloud a plus que doublé ses effectifs afin d’améliorer ses services et en développer de nouveaux avec le renfort de son pôle R&amp;D. Nous voulions aussi prendre plus le temps de peaufiner ce qui fait le quotidien de nos clients : <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">la Console</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il s’agit de l’interface web qu’ils utilisent pour gérer et déployer leurs applications et add-ons, accéder à leurs métriques, logs, etc. Elle est développée par notre équipe en charge du front-end, dirigée par Hubert Sablonnière, qui a récemment accueilli 4 nouveaux membres.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Depuis, ils travaillent à une meilleure cohérence des éléments qui composent la Console, en mettant l’accent tant sur l’expérience utilisateur que l’accessibilité. Des travaux de fond ont également été entrepris : amélioration générale du code, des procédures de tests et de déploiement, refonte du système de notifications, de gestion des icônes, la génération de la documentation des <a href="https://stagingv6.cleverapps.io/doc/clever-components/" target="_blank" rel="noreferrer noopener">Clever Components</a> ou même la clarification de certains tarifs.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clés SSH : une interface plus utile et plus claire&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il y a quelques semaines, nous avons également mis en place un nouveau formulaire de gestion des clés SSH, utilisant les Clever Components pour une accessibilité renforcée et une adaptation à tous les écrans. Il est surtout plus clair, notamment avec des aides contextuelles, des messages d’erreur plus explicites, une meilleure gestion du focus, etc.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On y trouve désormais trois sections : une pour l'ajout d'une nouvelle clé, une seconde listant les clés existantes, que l’on peut supprimer, et enfin celle servant à l’import des clés GitHub. Dans chaque cas, les commandes de bases vous sont expliquées :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7834,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image size-large"><a href="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-previous-overview.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-previous-overview-1-667x375.png" alt="Clever Cloud Console SSH Keys 2022" class="wp-image-7834"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7829,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image size-large"><a href="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-overview.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-overview-667x375.png" alt="Clever Cloud Console SSH Keys 2023" class="wp-image-7829"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Gestion simplifiée des e-mails et des membres&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons procédé de la même manière avec la gestion des e-mails et des membres d’une organisation. Là aussi les éléments de base ont été revus pour utiliser nos composants et mieux s’adapter à différents formats d’appareils avec une meilleure accessibilité.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais nous avons surtout veillé à ce que des éléments utiles soient présentés de manière claire. Ainsi les e-mails primaires et secondaires d’un compte sont distingués, avec une mention en cas de vérification et la possibilité de changer de statut à tout moment :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7820,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/emails-before-not-verified.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/emails-before-not-verified.png" alt="Clever Cloud Console E-mails 2022" class="wp-image-7820"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7821,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/emails-after-not-verified.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/emails-after-not-verified.png" alt="Clever Cloud Console E-mails 2023" class="wp-image-7821"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans le cas de la gestion d’une organisation, une segmentation en trois zones a été mise en place : l’une pour inviter des membres, la seconde pour lister ceux qui sont présents et leurs rôle, ainsi que leur gestion (modification, suppression) et enfin une dernière permettant de quitter une organisation, identifiée comme une “zone de danger”.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ici aussi un travail de fond a été mené sur les messages et informations apportées, notamment pour mieux permettre l’identification de membres n’ayant pas activé la double authentification sur leur compte (2FA), un filtre spécifique vous étant proposé :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7823,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-before-editing.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-before-editing.png" alt="Clever Cloud Console Organisation 2022" class="wp-image-7823"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7822,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-after-overview-admin.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-after-overview-admin.png" alt="Clever Cloud Console Organisation 2023" class="wp-image-7822"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Ces améliorations ne sont que le début du travail sur la Console, qui va perdurer tout au long de 2023, avec une feuille de route déjà bien entamée et de gros projets sur le point d’aboutir. Bonne nouvelle d’ailleurs : la nouvelle interface de logs est en cours de finalisation, nous vous en reparlerons très bientôt ;)</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="2800" height="1080" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr.png 2800w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1536x592.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-2048x790.png 2048w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/02/bannerconsole-fr-1368x528.png 1368w" sizes="auto, (max-width: 2800px) 100vw, 2800px" /></p><!-- wp:paragraph -->
<p>En 2022, Clever Cloud a plus que doublé ses effectifs afin d’améliorer ses services et en développer de nouveaux avec le renfort de son pôle R&amp;D. Nous voulions aussi prendre plus le temps de peaufiner ce qui fait le quotidien de nos clients : <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">la Console</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il s’agit de l’interface web qu’ils utilisent pour gérer et déployer leurs applications et add-ons, accéder à leurs métriques, logs, etc. Elle est développée par notre équipe en charge du front-end, dirigée par Hubert Sablonnière, qui a récemment accueilli 4 nouveaux membres.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Depuis, ils travaillent à une meilleure cohérence des éléments qui composent la Console, en mettant l’accent tant sur l’expérience utilisateur que l’accessibilité. Des travaux de fond ont également été entrepris : amélioration générale du code, des procédures de tests et de déploiement, refonte du système de notifications, de gestion des icônes, la génération de la documentation des <a href="https://stagingv6.cleverapps.io/doc/clever-components/" target="_blank" rel="noreferrer noopener">Clever Components</a> ou même la clarification de certains tarifs.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clés SSH : une interface plus utile et plus claire&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il y a quelques semaines, nous avons également mis en place un nouveau formulaire de gestion des clés SSH, utilisant les Clever Components pour une accessibilité renforcée et une adaptation à tous les écrans. Il est surtout plus clair, notamment avec des aides contextuelles, des messages d’erreur plus explicites, une meilleure gestion du focus, etc.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On y trouve désormais trois sections : une pour l'ajout d'une nouvelle clé, une seconde listant les clés existantes, que l’on peut supprimer, et enfin celle servant à l’import des clés GitHub. Dans chaque cas, les commandes de bases vous sont expliquées :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7834,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image size-large"><a href="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-previous-overview.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-previous-overview-1-667x375.png" alt="Clever Cloud Console SSH Keys 2022" class="wp-image-7834"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7829,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image size-large"><a href="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-overview.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/ssh-keys-overview-667x375.png" alt="Clever Cloud Console SSH Keys 2023" class="wp-image-7829"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Gestion simplifiée des e-mails et des membres&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons procédé de la même manière avec la gestion des e-mails et des membres d’une organisation. Là aussi les éléments de base ont été revus pour utiliser nos composants et mieux s’adapter à différents formats d’appareils avec une meilleure accessibilité.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais nous avons surtout veillé à ce que des éléments utiles soient présentés de manière claire. Ainsi les e-mails primaires et secondaires d’un compte sont distingués, avec une mention en cas de vérification et la possibilité de changer de statut à tout moment :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7820,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/emails-before-not-verified.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/emails-before-not-verified.png" alt="Clever Cloud Console E-mails 2022" class="wp-image-7820"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7821,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/emails-after-not-verified.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/emails-after-not-verified.png" alt="Clever Cloud Console E-mails 2023" class="wp-image-7821"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans le cas de la gestion d’une organisation, une segmentation en trois zones a été mise en place : l’une pour inviter des membres, la seconde pour lister ceux qui sont présents et leurs rôle, ainsi que leur gestion (modification, suppression) et enfin une dernière permettant de quitter une organisation, identifiée comme une “zone de danger”.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ici aussi un travail de fond a été mené sur les messages et informations apportées, notamment pour mieux permettre l’identification de membres n’ayant pas activé la double authentification sur leur compte (2FA), un filtre spécifique vous étant proposé :</p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":7823,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-before-editing.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-before-editing.png" alt="Clever Cloud Console Organisation 2022" class="wp-image-7823"/></a><figcaption class="wp-element-caption">Avant</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":7822,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-after-overview-admin.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/02/orga-members-after-overview-admin.png" alt="Clever Cloud Console Organisation 2023" class="wp-image-7822"/></a><figcaption class="wp-element-caption">Après</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Ces améliorations ne sont que le début du travail sur la Console, qui va perdurer tout au long de 2023, avec une feuille de route déjà bien entamée et de gros projets sur le point d’aboutir. Bonne nouvelle d’ailleurs : la nouvelle interface de logs est en cours de finalisation, nous vous en reparlerons très bientôt ;)</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GlitchTip sur Clever Cloud, une alternative à Sentry</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/06/21/glitchtip-sur-clever-cloud-une-alternative-a-sentry/</link>
		
		<dc:creator><![CDATA[Aurélien Hebert]]></dc:creator>
		<pubDate>Tue, 21 Jun 2022 15:14:25 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[Observabilité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6922</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="glitchtip" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Chez Clever Cloud, nous aimons avoir un certain contexte sur le statut et les logs de nos applications. C'est pourquoi nous avons déployé un grand nombre d'outils pour obtenir une certaine observabilité. Beaucoup d'entre eux sont disponibles gratuitement pour nos clients (une vue des logs, une vue des métriques ou Grafana). Cependant, il existe des outils que nous utilisons en interne et qui pourraient être utiles à beaucoup. Nous avons récemment découvert <a href="https://glitchtip.com/" target="_blank" rel="noreferrer noopener">glichtip</a>, qui est un outil de suivi des erreurs en open source. Glichtip est une excellente alternative à Sentry et moins complexe à déployer. Nous ajouterons que Glichtip est compatible avec le <a href="https://docs.sentry.io/platforms/" target="_blank" rel="noreferrer noopener">SDK open source de Sentry</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Contexte</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons utilisé Sentry pour analyser les erreurs provenant des logs de nos propres applications. Nous utilisions encore la version 9.1 jusqu'à ce que nous ayons trop de difficultés à la faire fonctionner. Nous devions alors faire une mise à jour ou trouver une nouvelle solution. Toutes les versions de Sentry postérieures à 9.1 nécessitent beaucoup plus de composants à déployer (comme Kafka, Snuba ou Clickhouse). Il est toujours possible de le déployer avec un <a href="https://develop.sentry.dev/self-hosted/" target="_blank" rel="noreferrer noopener">script auto-hébergé</a>. Nous voulions que chaque composant soit autonome en dehors de l'application principale de Sentry, cela signifiait que nous devions fournir une authentification à tous les composants. Ce n'était pas un gros problème, mais cela nous aurait pris plus de temps que prévu. Et en même temps, nous avons découvert un nouveau projet : Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Glitchtip</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout a commencé par un <a href="https://twitter.com/aeris22/status/1516411508225417228?t=EdjijoImwBdKwOjI63m5-A&amp;s=19" target="_blank" rel="noreferrer noopener">tweet</a> français, sur la découverte d'un nouvel outil : <a href="https://glitchtip.com/" target="_blank" rel="noreferrer noopener">Glitchtip</a>. Ce tweet disait que Glitchtip était compatible avec Sentry, gratuit et facile à auto-héberger, c'était donc évident que nous allions l'essayer !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Que fournit Glitchtip ? A l'intérieur de votre application, avec le SDK Sentry, vous transférez certains de vos logs d'erreurs. Ensuite, l'outil vous aide à suivre ces erreurs, à mieux comprendre quand une nouvelle version de l'outil crée de nouvelles erreurs, à les organiser ou à les rechercher… En un mot, c'est un outil très utile pour déboguer vos logiciels déployés.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déploiement sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout d'abord, nous allons télécharger le projet Docker Glitchtip et le personnaliser un peu pour correspondre à la façon dont les applications Docker sont exécutées dans Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get latest Glitchtip release
git clone https://gitlab.com/glitchtip/glitchtip.git

# Go to the folder
cd glitchtip
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, ouvrez votre IDE de code préféré et ouvrez le <code>Dockerfile</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Remove
FROM glitchtip/glitchtip:latest

# And add instead:
FROM glitchtip/glitchtip:v1.12.2

COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ici, nous allons mettre en place la dernière version de Glitchtip. Au moment où nous écrivions ce blog, il s'agissait de la <code>v1.12.2. </code>Vous pouvez les trouver <a href="https://hub.docker.com/r/glitchtip/glitchtip/tags" target="_blank" rel="noreferrer noopener">ici</a>. Nous mettons en place un nouveau script pour utiliser <code>docker-entrypoint.sh</code> qui nous permettra de démarrer soit l'application web Glitchtip soit le travailleur Glitchtip. Le <code>docker-entrypoint.sh</code> doit contenir le script suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># docker-entrypoint.sh script:
#!/bin/bash

if [ "${START_TARGET}" = "worker" ]; then
  mkdir /tmp/sandboxed
	cd /tmp/sandboxed &amp;&amp; nohup python -m http.server 8080 &amp;
	/code/bin/run-celery-with-beat.sh
else
  /code/bin/start.sh
fi

# Don't forget to make it executable:
chmod u+x docker-entrypoint.sh
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Glitchtip est livré avec un <code>Dockerfile</code>, ce qui signifie que nous utiliserons un <a href="https://stagingv6.cleverapps.io/doc/deploy/application/java/java-jar/">runtime docker</a>. Il nécessite également une <a href="https://www.postgresql.org/" target="_blank" rel="noreferrer noopener">base de données PostgreSQL</a> et un<a href="https://redis.io/" target="_blank" rel="noreferrer noopener"> cache Redis</a>, ce qui signifie que nous allons déployer un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/postgresql/postgresql/">addon PostgreSQL</a> et un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/redis/">addon Redis</a>. L'ajout d'une option <code>-o</code> dans toutes les lignes de commande <code>create</code> peut être utilisé pour spécifier l'organisation à utiliser.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Create the docker applications:
clever create --type docker glitchtip-web
clever create --type docker glitchtip-worker

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 14 glitchtip-postgres

# Link the addon
clever service link-addon glitchtip-postgres -a glitchtip-web
clever service link-addon glitchtip-postgres -a glitchtip-worker

# Create the Redis addon
clever addon create redis-addon --plan s_mono glitchtip-redis

# Link the addon
clever service link-addon glitchtip-redis -a glitchtip-web
clever service link-addon glitchtip-redis -a glitchtip-worker
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour l'instant nous allons configurer Glitchtip à travers des variables d'environnement. Comme nous utilisons plusieurs applications, nous allons déployer un fournisseur de configuration addon.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Create a config addon:
clever addon create config-provider --plan std glitchtip-config

# Link the addon
clever service link-addon glitchtip-config -a glitchtip-web
clever service link-addon glitchtip-config -a glitchtip-worker

</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Maintenant que nous avons déployé un fournisseur d'addon de configuration, mettons à jour sa configuration. Pour ce faire, allez dans la console Clever Cloud et sélectionnez le <code>glitchtip-config</code>. Dans le panneau des variables, sélectionnez le mode expert et ajoutez la variable requise suivante, (remplissez leur valeur en fonction du commentaire fourni) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># In the config addon provider add:
CC_DOCKER_EXPOSED_HTTP_PORT="8080"
# Copy paste here the POSTGRESQL_ADDON_URI environment variable of the glitchtip-postgres addon 
DATABASE_URL="postgresql://user:password@host:port/database"
# Provide a valid email server
EMAIL_URL="smtp://email:password@smtp_url:port"
# Copy paste here the application domain name of the glitchtip-web application instead (should look like: https://app-da7a7a7a-da7a-4242-7a7a-da7a42427a7a.cleverapps.io)
GLITCHTIP_DOMAIN="MY_APP_DOMAIN_NAME"
# Copy paste here the REDIS_ADDON's environment variable of the glitchtip-redis addon 
REDIS_HOST= &lt; REDIS_HOST &gt;
REDIS_PASSWORD= &lt; REDIS_PASSWORD &gt; 
REDIS_PORT= &lt; REDIS_PORT &gt;
# Generate your own custom secret key for Glitchtip
SECRET_KEY= &lt; choose a secret key &gt;
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Notez que vous pouvez trouver plus d'informations sur la façon de configurer Glitchtip dans sa <a href="https://glitchtip.com/documentation/install#configuration" target="_blank" rel="noreferrer noopener">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chaque application docker nécessite également une certaine configuration personnalisée :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">#glitchtip-web custom env
clever env set CC_RUN_SUCCEEDED_HOOK "./manage.py migrate" -a glitchtip-web
clever env set START_TARGET "web" -a glitchtip-web
#glitchtip-worker custom env
clever env set START_TARGET "worker" -a glitchtip-worker
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer et exécuter</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Maintenant que tout est prêt, il est temps de déployer et d'exécuter votre application Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Remove initial git
rm -r .git 

# Init a git repository
git init

# Add your files
git add .

# Commit the changes
git commit -m "clever init and deploy"

# Deploy the application
clever deploy -a glitchtip-web
clever deploy -a glitchtip-worker

# Open Glitchtip in your browser
clever open -a glitchtip-web
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Votre glitchtip est maintenant presque prêt à être utilisé. Une dernière action est nécessaire : vous devez créer un super utilisateur pour administrer Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Connect in SSH to your Clever application:
clever ssh -a glitchtip-web

# Run 
./manage.py createsuperuser
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Bon travail ! Vous devriez maintenant avoir un accès à la page d'administration de glitchtip (disponible sur le path /admin de votre application). Vous pouvez alors créer des utilisateurs ou vous connecter à votre réseau/application sociale préférée pour authentifier vos utilisateurs. Vous trouverez plus d'informations sur la <a href="https://glitchtip.com/documentation/install#django-admin" target="_blank" rel="noreferrer noopener">documentation</a>. Vous pouvez définir <a href="https://stagingv6.cleverapps.io/blog/fonctionnalites/2022/05/11/how-to-deploy-keycloak-on-clever-cloud/">votre propre keycloak sur Clever Cloud</a> et l'utiliser pour vous connecter à Glitchtip !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Connecter Glitchtip à une application</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous allons réutiliser l'exemple d'application akka que nous avons utilisé pour <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/06/09/deployer-une-application-scala-akka-avec-integration-postgresql/">notre blogpost exemple scala</a>. Et nous verrons ensuite comment nous pouvons transmettre nos propres logs d'erreurs à Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un projet Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La première étape sera de se connecter avec le nouvel utilisateur root (ou tout utilisateur Glitchtip que vous avez créé ou lié à un réseau/application sociale). Glitchtip vous demandera de créer votre organisation. Dans notre cas, nous avons choisi <code>clever-cloud</code>. Comme nous voulons surveiller les logs d'erreur de notre application, nous devrons créer un nouveau projet directement dans l'interface de Glitchtip. Appelons-le "myakka" et créons l'équipe "Scala-dev" qui lui est associée.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une fois que ce projet est créé, vous serez en mesure d'obtenir un <code>DSN</code>. Nous le chargerons plus tard comme variable d'environnement pour l'application akka.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un Token Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Allez dans <code>Profile/auth token</code> et créez un nouveau jeton Glitchtip avec au moins les droits suivants : read, write et releases. Sauvegardez-le pour plus tard.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer l'application d'exemple AKKA sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La première étape consiste à déployer l'application AKKA sur Clever Cloud comme mentionné dans <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/06/09/deployer-une-application-scala-akka-avec-integration-postgresql/">le blogpost scala exemple</a>. <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example" target="_blank" rel="noreferrer noopener">Clonez</a> le projet, et au lieu de la branche principale, utilisez la branche <code>blogpost-sentry</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone Clever Cloud akka example project:
git clone https://github.com/CleverCloud/scala-akka-http-postgres-example.git

# Checkout blogpost-sentry
git checkout blogpost-sentry
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Dans cette branche, nous mettons à jour l’application pour se connecter à Sentry. Ensuite, nous envoyons seulement les logs HTTP du serveur de départ avec un statut personnalisé (succès ou échec). Voici le code que nous utilisons dans la branche <code>blogpost-sentry</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Register Sentry
Sentry.init(sentryConfig.sentryDsn)

# Send a message to Sentry with a tag
Sentry.getContext().addTag("status", status)
Sentry.capture(message)
Sentry.getContext().clear()
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><strong>De plus, vous devez ajouter </strong>un fichier <code>.sentryclirc</code>. Ce fichier doit contenir :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">[defaults]
url=GLITCHTIP_APP_DOMAIN_NAME
org=clever-cloud
project=myakka
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer les variables d'environnement de Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utilisez le script <code>post_build.sh</code> comme <code>CC_POST_BUILD_HOOK</code>. Ceci lancera le <code>sbt flywayMigrate</code> obligatoire ainsi que la création d'une nouvelle version sur Sentry (basée sur le commit ID).</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Set CC_POST_BUILD_HOOK
clever env -a myakka set CC_POST_BUILD_HOOK "./post_build.sh"
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devez également définir le jeton Glitchtip et le dsn Glitchtip comme variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Set Glitchip required env variables
clever env -a myakka set SENTRY_AUTH_TOKEN &lt; custom_glitchtip_token &gt;  
clever env -a myakka set SENTRY_DSN &lt; custom_glitchtip_dsn &gt;  
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer l'application</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant déployer le projet myakka :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Deploy myakka
clever deploy
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Essayez-la</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dès que c'est fait, vous devriez voir votre première issue sur Glitchip ! C'est tout, vous pouvez maintenant ajouter toutes les applications que vous voulez à Glitchtip et profiter de cet outil pour centraliser les logs et erreurs de vos applications. Si vous êtes habitué à ce produit ou si vous venez de l'essayer, n'hésitez pas à nous faire part de vos retours <a href="https://twitter.com/clever_cloudFR">sur Twitter</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="glitchtip" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/glitchtip-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Chez Clever Cloud, nous aimons avoir un certain contexte sur le statut et les logs de nos applications. C'est pourquoi nous avons déployé un grand nombre d'outils pour obtenir une certaine observabilité. Beaucoup d'entre eux sont disponibles gratuitement pour nos clients (une vue des logs, une vue des métriques ou Grafana). Cependant, il existe des outils que nous utilisons en interne et qui pourraient être utiles à beaucoup. Nous avons récemment découvert <a href="https://glitchtip.com/" target="_blank" rel="noreferrer noopener">glichtip</a>, qui est un outil de suivi des erreurs en open source. Glichtip est une excellente alternative à Sentry et moins complexe à déployer. Nous ajouterons que Glichtip est compatible avec le <a href="https://docs.sentry.io/platforms/" target="_blank" rel="noreferrer noopener">SDK open source de Sentry</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Contexte</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons utilisé Sentry pour analyser les erreurs provenant des logs de nos propres applications. Nous utilisions encore la version 9.1 jusqu'à ce que nous ayons trop de difficultés à la faire fonctionner. Nous devions alors faire une mise à jour ou trouver une nouvelle solution. Toutes les versions de Sentry postérieures à 9.1 nécessitent beaucoup plus de composants à déployer (comme Kafka, Snuba ou Clickhouse). Il est toujours possible de le déployer avec un <a href="https://develop.sentry.dev/self-hosted/" target="_blank" rel="noreferrer noopener">script auto-hébergé</a>. Nous voulions que chaque composant soit autonome en dehors de l'application principale de Sentry, cela signifiait que nous devions fournir une authentification à tous les composants. Ce n'était pas un gros problème, mais cela nous aurait pris plus de temps que prévu. Et en même temps, nous avons découvert un nouveau projet : Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Glitchtip</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout a commencé par un <a href="https://twitter.com/aeris22/status/1516411508225417228?t=EdjijoImwBdKwOjI63m5-A&amp;s=19" target="_blank" rel="noreferrer noopener">tweet</a> français, sur la découverte d'un nouvel outil : <a href="https://glitchtip.com/" target="_blank" rel="noreferrer noopener">Glitchtip</a>. Ce tweet disait que Glitchtip était compatible avec Sentry, gratuit et facile à auto-héberger, c'était donc évident que nous allions l'essayer !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Que fournit Glitchtip ? A l'intérieur de votre application, avec le SDK Sentry, vous transférez certains de vos logs d'erreurs. Ensuite, l'outil vous aide à suivre ces erreurs, à mieux comprendre quand une nouvelle version de l'outil crée de nouvelles erreurs, à les organiser ou à les rechercher… En un mot, c'est un outil très utile pour déboguer vos logiciels déployés.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déploiement sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout d'abord, nous allons télécharger le projet Docker Glitchtip et le personnaliser un peu pour correspondre à la façon dont les applications Docker sont exécutées dans Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get latest Glitchtip release
git clone https://gitlab.com/glitchtip/glitchtip.git

# Go to the folder
cd glitchtip
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, ouvrez votre IDE de code préféré et ouvrez le <code>Dockerfile</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Remove
FROM glitchtip/glitchtip:latest

# And add instead:
FROM glitchtip/glitchtip:v1.12.2

COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ici, nous allons mettre en place la dernière version de Glitchtip. Au moment où nous écrivions ce blog, il s'agissait de la <code>v1.12.2. </code>Vous pouvez les trouver <a href="https://hub.docker.com/r/glitchtip/glitchtip/tags" target="_blank" rel="noreferrer noopener">ici</a>. Nous mettons en place un nouveau script pour utiliser <code>docker-entrypoint.sh</code> qui nous permettra de démarrer soit l'application web Glitchtip soit le travailleur Glitchtip. Le <code>docker-entrypoint.sh</code> doit contenir le script suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># docker-entrypoint.sh script:
#!/bin/bash

if [ "${START_TARGET}" = "worker" ]; then
  mkdir /tmp/sandboxed
	cd /tmp/sandboxed &amp;&amp; nohup python -m http.server 8080 &amp;
	/code/bin/run-celery-with-beat.sh
else
  /code/bin/start.sh
fi

# Don't forget to make it executable:
chmod u+x docker-entrypoint.sh
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Glitchtip est livré avec un <code>Dockerfile</code>, ce qui signifie que nous utiliserons un <a href="https://stagingv6.cleverapps.io/doc/deploy/application/java/java-jar/">runtime docker</a>. Il nécessite également une <a href="https://www.postgresql.org/" target="_blank" rel="noreferrer noopener">base de données PostgreSQL</a> et un<a href="https://redis.io/" target="_blank" rel="noreferrer noopener"> cache Redis</a>, ce qui signifie que nous allons déployer un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/postgresql/postgresql/">addon PostgreSQL</a> et un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/redis/">addon Redis</a>. L'ajout d'une option <code>-o</code> dans toutes les lignes de commande <code>create</code> peut être utilisé pour spécifier l'organisation à utiliser.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Create the docker applications:
clever create --type docker glitchtip-web
clever create --type docker glitchtip-worker

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 14 glitchtip-postgres

# Link the addon
clever service link-addon glitchtip-postgres -a glitchtip-web
clever service link-addon glitchtip-postgres -a glitchtip-worker

# Create the Redis addon
clever addon create redis-addon --plan s_mono glitchtip-redis

# Link the addon
clever service link-addon glitchtip-redis -a glitchtip-web
clever service link-addon glitchtip-redis -a glitchtip-worker
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour l'instant nous allons configurer Glitchtip à travers des variables d'environnement. Comme nous utilisons plusieurs applications, nous allons déployer un fournisseur de configuration addon.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Create a config addon:
clever addon create config-provider --plan std glitchtip-config

# Link the addon
clever service link-addon glitchtip-config -a glitchtip-web
clever service link-addon glitchtip-config -a glitchtip-worker

</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Maintenant que nous avons déployé un fournisseur d'addon de configuration, mettons à jour sa configuration. Pour ce faire, allez dans la console Clever Cloud et sélectionnez le <code>glitchtip-config</code>. Dans le panneau des variables, sélectionnez le mode expert et ajoutez la variable requise suivante, (remplissez leur valeur en fonction du commentaire fourni) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># In the config addon provider add:
CC_DOCKER_EXPOSED_HTTP_PORT="8080"
# Copy paste here the POSTGRESQL_ADDON_URI environment variable of the glitchtip-postgres addon 
DATABASE_URL="postgresql://user:password@host:port/database"
# Provide a valid email server
EMAIL_URL="smtp://email:password@smtp_url:port"
# Copy paste here the application domain name of the glitchtip-web application instead (should look like: https://app-da7a7a7a-da7a-4242-7a7a-da7a42427a7a.cleverapps.io)
GLITCHTIP_DOMAIN="MY_APP_DOMAIN_NAME"
# Copy paste here the REDIS_ADDON's environment variable of the glitchtip-redis addon 
REDIS_HOST= &lt; REDIS_HOST &gt;
REDIS_PASSWORD= &lt; REDIS_PASSWORD &gt; 
REDIS_PORT= &lt; REDIS_PORT &gt;
# Generate your own custom secret key for Glitchtip
SECRET_KEY= &lt; choose a secret key &gt;
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Notez que vous pouvez trouver plus d'informations sur la façon de configurer Glitchtip dans sa <a href="https://glitchtip.com/documentation/install#configuration" target="_blank" rel="noreferrer noopener">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chaque application docker nécessite également une certaine configuration personnalisée :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">#glitchtip-web custom env
clever env set CC_RUN_SUCCEEDED_HOOK "./manage.py migrate" -a glitchtip-web
clever env set START_TARGET "web" -a glitchtip-web
#glitchtip-worker custom env
clever env set START_TARGET "worker" -a glitchtip-worker
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer et exécuter</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Maintenant que tout est prêt, il est temps de déployer et d'exécuter votre application Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Remove initial git
rm -r .git 

# Init a git repository
git init

# Add your files
git add .

# Commit the changes
git commit -m "clever init and deploy"

# Deploy the application
clever deploy -a glitchtip-web
clever deploy -a glitchtip-worker

# Open Glitchtip in your browser
clever open -a glitchtip-web
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Votre glitchtip est maintenant presque prêt à être utilisé. Une dernière action est nécessaire : vous devez créer un super utilisateur pour administrer Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Connect in SSH to your Clever application:
clever ssh -a glitchtip-web

# Run 
./manage.py createsuperuser
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Bon travail ! Vous devriez maintenant avoir un accès à la page d'administration de glitchtip (disponible sur le path /admin de votre application). Vous pouvez alors créer des utilisateurs ou vous connecter à votre réseau/application sociale préférée pour authentifier vos utilisateurs. Vous trouverez plus d'informations sur la <a href="https://glitchtip.com/documentation/install#django-admin" target="_blank" rel="noreferrer noopener">documentation</a>. Vous pouvez définir <a href="https://stagingv6.cleverapps.io/blog/fonctionnalites/2022/05/11/how-to-deploy-keycloak-on-clever-cloud/">votre propre keycloak sur Clever Cloud</a> et l'utiliser pour vous connecter à Glitchtip !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Connecter Glitchtip à une application</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous allons réutiliser l'exemple d'application akka que nous avons utilisé pour <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/06/09/deployer-une-application-scala-akka-avec-integration-postgresql/">notre blogpost exemple scala</a>. Et nous verrons ensuite comment nous pouvons transmettre nos propres logs d'erreurs à Glitchtip.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un projet Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La première étape sera de se connecter avec le nouvel utilisateur root (ou tout utilisateur Glitchtip que vous avez créé ou lié à un réseau/application sociale). Glitchtip vous demandera de créer votre organisation. Dans notre cas, nous avons choisi <code>clever-cloud</code>. Comme nous voulons surveiller les logs d'erreur de notre application, nous devrons créer un nouveau projet directement dans l'interface de Glitchtip. Appelons-le "myakka" et créons l'équipe "Scala-dev" qui lui est associée.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une fois que ce projet est créé, vous serez en mesure d'obtenir un <code>DSN</code>. Nous le chargerons plus tard comme variable d'environnement pour l'application akka.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un Token Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Allez dans <code>Profile/auth token</code> et créez un nouveau jeton Glitchtip avec au moins les droits suivants : read, write et releases. Sauvegardez-le pour plus tard.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer l'application d'exemple AKKA sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La première étape consiste à déployer l'application AKKA sur Clever Cloud comme mentionné dans <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/06/09/deployer-une-application-scala-akka-avec-integration-postgresql/">le blogpost scala exemple</a>. <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example" target="_blank" rel="noreferrer noopener">Clonez</a> le projet, et au lieu de la branche principale, utilisez la branche <code>blogpost-sentry</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone Clever Cloud akka example project:
git clone https://github.com/CleverCloud/scala-akka-http-postgres-example.git

# Checkout blogpost-sentry
git checkout blogpost-sentry
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Dans cette branche, nous mettons à jour l’application pour se connecter à Sentry. Ensuite, nous envoyons seulement les logs HTTP du serveur de départ avec un statut personnalisé (succès ou échec). Voici le code que nous utilisons dans la branche <code>blogpost-sentry</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Register Sentry
Sentry.init(sentryConfig.sentryDsn)

# Send a message to Sentry with a tag
Sentry.getContext().addTag("status", status)
Sentry.capture(message)
Sentry.getContext().clear()
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><strong>De plus, vous devez ajouter </strong>un fichier <code>.sentryclirc</code>. Ce fichier doit contenir :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">[defaults]
url=GLITCHTIP_APP_DOMAIN_NAME
org=clever-cloud
project=myakka
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer les variables d'environnement de Glitchtip</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utilisez le script <code>post_build.sh</code> comme <code>CC_POST_BUILD_HOOK</code>. Ceci lancera le <code>sbt flywayMigrate</code> obligatoire ainsi que la création d'une nouvelle version sur Sentry (basée sur le commit ID).</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Set CC_POST_BUILD_HOOK
clever env -a myakka set CC_POST_BUILD_HOOK "./post_build.sh"
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devez également définir le jeton Glitchtip et le dsn Glitchtip comme variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Set Glitchip required env variables
clever env -a myakka set SENTRY_AUTH_TOKEN &lt; custom_glitchtip_token &gt;  
clever env -a myakka set SENTRY_DSN &lt; custom_glitchtip_dsn &gt;  
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer l'application</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant déployer le projet myakka :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Deploy myakka
clever deploy
</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Essayez-la</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dès que c'est fait, vous devriez voir votre première issue sur Glitchip ! C'est tout, vous pouvez maintenant ajouter toutes les applications que vous voulez à Glitchtip et profiter de cet outil pour centraliser les logs et erreurs de vos applications. Si vous êtes habitué à ce produit ou si vous venez de l'essayer, n'hésitez pas à nous faire part de vos retours <a href="https://twitter.com/clever_cloudFR">sur Twitter</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Découvrez notre nouveau Ticket Center !</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/05/19/decouvrez-notre-nouveau-ticket-center/</link>
		
		<dc:creator><![CDATA[Julie Nolot]]></dc:creator>
		<pubDate>Thu, 19 May 2022 06:36:53 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6542</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ticket_center" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Nous sommes ravis de vous annoncer l'arrivée de notre nouveau système de support : Le Ticket Center. Afin de continuer à apporter un des meilleurs supports du marché, nous restons attentifs aux retours de nos clients sur notre qualité de service. Dans ce cadre, nous avons reçu de nombreuses demandes pour mettre en place un fonctionnement permettant de mieux distinguer chaque conversation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons donc réfléchi au meilleur moyen de continuer à apporter un service rapide et de qualité&nbsp;et instaurer un système de tickets nous a semblé être la solution la plus adaptée pour répondre aux besoins et attentes de nos utilisateurs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ce qu'il y a de nouveau </h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Usage orienté "ticket"</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>À présent, l'usage sur la plateforme est orienté "ticket" plus que "chat". Cela permet d'avoir une authentification unique de chaque demande afin d'assurer un meilleur suivi.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ajout de participants à la conversation  </h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez désormais choisir d'ajouter automatiquement des membres de l'organisation concernée au moment de l'ouverture d'un ticket. Ceci vient améliorer votre expérience sur Crisp en vous permettant que la réponse de notre service support soit bien accessible à toutes les personnes concernées.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Quand vous ouvrez un ticket :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Si vous êtes admin, les autres admins&nbsp;de l'organisation seront ajoutés</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Si votre rôle est autre que admin, les membres&nbsp;de l'organisation ayant le même rôle que vous seront ajoutées </li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne le Ticket Center ?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accéder au Ticket Center depuis une organisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons intégré un nouveau bouton “Contact support team” dans la console, en haut d'une organisation. Il vous permettra d'ouvrir le ticket center directement dans le contexte de l’organisation dns laquelle vous vous trouvez. Ce qui permet au support de savoir en un coup d'œil de quelle organisation il s'agit.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6641,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-42-00.png" alt="contacter_équipe_support" class="wp-image-6641"/><figcaption class="wp-element-caption">"Contacter l'équipe support" pour accéder au Ticket Center</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accéder au Ticket Center depuis le menu principal de la console</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le bouton utilisé jusqu'ici qui s’appelait “parler à un humain” existe toujours, sous l'appellation “contacter le service support”. Vous pouvez le retrouver comme avant, en bas à gauche du menu principal de la console. Une page "Select your organisation" va ensuite s'ouvrir pour vous permettre de préciser l'organisation pour laquelle vous souhaitez créer un ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6642,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-42-00-2.png" alt="ancien_bouton_parler_à_un_humain" class="wp-image-6642"/><figcaption class="wp-element-caption">Le bouton "Contacter l'équipe support", <br>anciennement appelé "parler à un humain" </figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"align":"center","id":6643,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-43-56.png" alt="choisissez_votre_organisation" class="wp-image-6643"/><figcaption class="wp-element-caption">Sélectionner l'organisation concernée par votre ticket </figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un ticket</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>En ouvrant le Ticket Center, vous retrouvez l'historique de vos précédents tickets. Veuillez noter que toutes vos précédentes conversations par chat avec le support ont été converties en un seul et unique ticket, vous pourrez donc accéder à l'ensemble de vos précédents échanges si besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6644,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-41-00.png" alt="historique_de_tickets" class="wp-image-6644"/><figcaption class="wp-element-caption">Historique de tickets</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ici vous pouvez également : obtenir des informations sur le statut de traitement de votre demande, consulter la conversation associée et ouvrir un nouveau ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6645,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-41-33.png" alt="ouvrir_un_ticket" class="wp-image-6645"/><figcaption class="wp-element-caption">Ouvrir un nouveau ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Donner son avis</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Une fois le ticket clôturé, vous recevez comme d'habitude un e-mail pour donner votre avis, c'est le moment de nous faire votre retour sur le service qui vous a été apporté par le support. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6556,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/donner-son-avis-crisp.png" alt="donner_son_avis_crisp" class="wp-image-6556"/><figcaption class="wp-element-caption">Donnez votre avis</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ce que ça permet </h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec l'ancien fonctionnement, les conversations entre le support et un user contenaient souvent plusieurs sujets différents. Aujourd’hui, chaque demande compte, de façon unique, ce qui apporte :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Un meilleur suivi des demandes.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un outil plus collaboratif, en vous permettant d'ajouter des participants à la conversation.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Une réponse plus efficace grâce à l’identification&nbsp;unique de chaque ticket.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Nous sommes convaincus que ce nouveau Ticket Center nous permettra de continuer à fournir un service rapide et de qualité. N'hésitez pas à nous contacter et à nous faire part de vos retours et idées concernant ce nouveau système.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ticket_center" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/ticket-center-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Nous sommes ravis de vous annoncer l'arrivée de notre nouveau système de support : Le Ticket Center. Afin de continuer à apporter un des meilleurs supports du marché, nous restons attentifs aux retours de nos clients sur notre qualité de service. Dans ce cadre, nous avons reçu de nombreuses demandes pour mettre en place un fonctionnement permettant de mieux distinguer chaque conversation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons donc réfléchi au meilleur moyen de continuer à apporter un service rapide et de qualité&nbsp;et instaurer un système de tickets nous a semblé être la solution la plus adaptée pour répondre aux besoins et attentes de nos utilisateurs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ce qu'il y a de nouveau </h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Usage orienté "ticket"</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>À présent, l'usage sur la plateforme est orienté "ticket" plus que "chat". Cela permet d'avoir une authentification unique de chaque demande afin d'assurer un meilleur suivi.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ajout de participants à la conversation  </h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez désormais choisir d'ajouter automatiquement des membres de l'organisation concernée au moment de l'ouverture d'un ticket. Ceci vient améliorer votre expérience sur Crisp en vous permettant que la réponse de notre service support soit bien accessible à toutes les personnes concernées.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Quand vous ouvrez un ticket :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Si vous êtes admin, les autres admins&nbsp;de l'organisation seront ajoutés</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Si votre rôle est autre que admin, les membres&nbsp;de l'organisation ayant le même rôle que vous seront ajoutées </li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne le Ticket Center ?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accéder au Ticket Center depuis une organisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous avons intégré un nouveau bouton “Contact support team” dans la console, en haut d'une organisation. Il vous permettra d'ouvrir le ticket center directement dans le contexte de l’organisation dns laquelle vous vous trouvez. Ce qui permet au support de savoir en un coup d'œil de quelle organisation il s'agit.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6641,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-42-00.png" alt="contacter_équipe_support" class="wp-image-6641"/><figcaption class="wp-element-caption">"Contacter l'équipe support" pour accéder au Ticket Center</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accéder au Ticket Center depuis le menu principal de la console</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le bouton utilisé jusqu'ici qui s’appelait “parler à un humain” existe toujours, sous l'appellation “contacter le service support”. Vous pouvez le retrouver comme avant, en bas à gauche du menu principal de la console. Une page "Select your organisation" va ensuite s'ouvrir pour vous permettre de préciser l'organisation pour laquelle vous souhaitez créer un ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6642,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-42-00-2.png" alt="ancien_bouton_parler_à_un_humain" class="wp-image-6642"/><figcaption class="wp-element-caption">Le bouton "Contacter l'équipe support", <br>anciennement appelé "parler à un humain" </figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"align":"center","id":6643,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-43-56.png" alt="choisissez_votre_organisation" class="wp-image-6643"/><figcaption class="wp-element-caption">Sélectionner l'organisation concernée par votre ticket </figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer un ticket</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>En ouvrant le Ticket Center, vous retrouvez l'historique de vos précédents tickets. Veuillez noter que toutes vos précédentes conversations par chat avec le support ont été converties en un seul et unique ticket, vous pourrez donc accéder à l'ensemble de vos précédents échanges si besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6644,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-41-00.png" alt="historique_de_tickets" class="wp-image-6644"/><figcaption class="wp-element-caption">Historique de tickets</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ici vous pouvez également : obtenir des informations sur le statut de traitement de votre demande, consulter la conversation associée et ouvrir un nouveau ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6645,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-du-2022-05-19-11-41-33.png" alt="ouvrir_un_ticket" class="wp-image-6645"/><figcaption class="wp-element-caption">Ouvrir un nouveau ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Donner son avis</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Une fois le ticket clôturé, vous recevez comme d'habitude un e-mail pour donner votre avis, c'est le moment de nous faire votre retour sur le service qui vous a été apporté par le support. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6556,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/donner-son-avis-crisp.png" alt="donner_son_avis_crisp" class="wp-image-6556"/><figcaption class="wp-element-caption">Donnez votre avis</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ce que ça permet </h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec l'ancien fonctionnement, les conversations entre le support et un user contenaient souvent plusieurs sujets différents. Aujourd’hui, chaque demande compte, de façon unique, ce qui apporte :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Un meilleur suivi des demandes.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un outil plus collaboratif, en vous permettant d'ajouter des participants à la conversation.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Une réponse plus efficace grâce à l’identification&nbsp;unique de chaque ticket.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Nous sommes convaincus que ce nouveau Ticket Center nous permettra de continuer à fournir un service rapide et de qualité. N'hésitez pas à nous contacter et à nous faire part de vos retours et idées concernant ce nouveau système.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comment déployer Keycloak sur Clever Cloud ?</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/05/11/comment-deployer-keycloak-sur-clever-cloud/</link>
		
		<dc:creator><![CDATA[Antoine BLONDEAU]]></dc:creator>
		<pubDate>Wed, 11 May 2022 06:43:59 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6249</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banniere_keycloak" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Keycloak est un moyen moderne et efficace de gérer les identités et les accès. Il permet l'authentification unique, la fédération d'utilisateurs à travers plusieurs annuaires d'utilisateurs. Il est également compatible avec les protocoles d'authentification standard comme OpenID Connect, OAuth2 ou SAML. Tous les détails sont disponibles <a href="https://www.keycloak.org/" target="_blank" rel="noreferrer noopener">sur son site</a>. Dans ce blogpost, nous verrons les étapes du déploiement de Keycloack et Grafana sur Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment déployer Keycloak ?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Setup</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Keycloak est écrit en Java, et fournit un fichier JAR dans sa version, ce qui signifie que nous allons utiliser <a href="https://stagingv6.cleverapps.io/doc/deploy/application/java/java-jar/" target="_blank" rel="noreferrer noopener">un runtime JAVA avec un déploiement JAR</a>. Il nécessite également une <a href="https://www.postgresql.org/" target="_blank" rel="noreferrer noopener">base de données PostgreSQL</a>, ce qui signifie que nous allons déployer un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/postgresql/postgresql/">addon PostgreSQL</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get lastest Keycloak release
wget https://github.com/keycloak/keycloak/releases/download/17.0.1/keycloak-17.0.1.zip

# Extract the archive
unzip keycloak-17.0.1.zip

# Go to the folder
cd keycloak-17.0.1

# Create the jar application
clever create --type jar keycloak-server
export KEYCLOAK_DOMAIN=$(clever domain | xargs)

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 10 keycloak-postgres

# Link the addon
clever service link-addon keycloak-postgres</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour l'instant, nous allons configurer Keycloak en utilisant des variables d'environnement. Notez que vous pouvez également configurer Keycloak via son CLI ou via un fichier, comme indiqué dans sa <a href="https://www.keycloak.org/server/configuration" target="_blank" rel="noreferrer noopener">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Pour la configuration via des variables d'environnement, le modèle à utiliser est <code>KC_</code> et le nom en majuscule de toute clé de configuration, séparés par des caractères de soulignement.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Export env for templating purpose
export $(clever env | sed '/^#/d;s/\"//g')

clever env set CC_JAR_PATH lib/quarkus-run.jar
clever env set CC_JAVA_VERSION 11
clever env set CC_RUN_COMMAND "bin/kc.sh start --auto-build"

clever env set KC_DB postgres
clever env set KC_DB_USERNAME $POSTGRESQL_ADDON_USER
clever env set KC_DB_PASSWORD $POSTGRESQL_ADDON_PASSWORD
clever env set KC_DB_URL "jdbc:postgresql://$POSTGRESQL_ADDON_HOST:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
clever env set KC_HOSTNAME $KEYCLOAK_DOMAIN
clever env set KC_HTTP_ENABLED true
clever env set KC_PROXY passthrough
clever env set KC_PROXY_ADDRESS_FORWARDING true</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>Envisagez de configurer KC_DB_POOL_MAX_SIZE (Le nombre maximum de connections parallèles a la base de donnée) avec une valeur basse (la valeur par défault est de 100) en fonction de la taille de la base de donnée que vous avez commandé plus tôt. Vous pouvez trouver les limites de connection par taille de base de donnée <a href="https://stagingv6.cleverapps.io/pricing/#databases">ici</a>. Si vous avez choisi la taille S_SML comme précisé plus tôt dans la commande fournie, vous pouvez ignorer ce message. vous pouvez aussi configurer plus finement le groupe de connection a la base de donnée en utilisant les variable DB_POOL_INITIAL_SIZE et KC_DB_POOL_MIN_SIZE</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Vous devez maintenant définir <code>KEYCLOAK_ADMIN</code> et <code>KEYCLOAK_ADMIN_PASSWORD</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set KEYCLOAK_ADMIN &lt;choose an admin username&gt;
clever env set KEYCLOAK_ADMIN_PASSWORD &lt;choose an admin password&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Déployer Keycloak sur Clever Cloud :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Init a git repository
git init

# Add your files
git add .

# Create the first commit
git commit -m "clever init"

# Deploy the application
clever deploy

# Open Keycloak in your browser
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Valider la configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez suivre la documentation de Keycloak <a href="https://www.keycloak.org/getting-started/getting-started-zip#_create_a_realm" target="_blank" rel="noreferrer noopener">en commençant ici</a> pour vous assurer que Keycloak fonctionne comme prévu. Elle vous guidera à travers la création d'un realm (tenant), la création d'un utilisateur et la création/test d'un client.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer une configuration initiale de Keycloak</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dans l'interface utilisateur de Keycloak, assurez-vous de créer un realm appelé "myrealm" (survolez "Master" dans le coin supérieur gauche). Assurez-vous que le realm "<code>myrealm</code>" est sélectionné.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ensuite, allez dans <strong><em>Utilisateurs &gt; Ajouter un utilisateur</em></strong>. Remplissez les champs Nom d'utilisateur, Email, Prénom et Nom de famille, puis cliquez sur Enregistrer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans l'onglet "credentials" de l'utilisateur, ajoutez le mot de passe de votre choix et <strong>désélectionnez "Temporary", le mot de passe défini</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est fait ! </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un scénario du monde réel</h2>
<!-- /wp:heading -->

<!-- wp:image {"align":"center","id":6184,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/04/giphy-1-1.webp" alt="" class="wp-image-6184"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Voyons comment nous pouvons utiliser Keycloak dans le monde réel : comme proxy SSO pour Grafana, en utilisant Oauth 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Grafana sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous avez besoin d'un guide détaillé sur la façon d'utiliser ou de déployer Grafana, veuillez lire <a href="https://stagingv6.cleverapps.io/fr/blog/features/2021/10/28/grafana-pour-des-metriques-d-applications/">cet article</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Utilisons <a href="https://github.com/CleverCloud/grafana-example">l'exemple Grafana</a> sur le dépôt Github de Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone the repository
git clone https://github.com/CleverCloud/grafana-example.git

# Enter the directory
cd grafana-example

# Create a NodeJS Application
clever create --type node grafana
export GRAFANA_DOMAIN=$(clever domain | xargs)

# Configure Grafana
clever env set GRAFANA_VERSION 8.5.2
clever env set GRAFANA_PLUGINS "grafana-worldmap-panel"
clever env set GF_PLUGIN_DIR ./data/plugins

clever env set GF_SERVER_HTTP_PORT 8080
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Dans cette section, vous devez définir vous-même la variable <code>GRAFANA_SHA_256</code>. Vous pouvez trouver la <code>SHA256SUM</code> nécessaire <a href="https://grafana.com/grafana/download/8.5.2?pg=get&amp;plcmt=selfmanaged-box1-cta1&amp;edition=oss" target="_blank" rel="noreferrer noopener">ici</a>, à côté de "Standalone Linux Binaries".</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GRAFANA_SHA_256 &lt;SHA256SUM&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Keycloak pour OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : dans cette section, vous devez remplacer <code>$GRAFANA_DOMAIN</code> par la valeur que vous avez exportée dans la dernière section. Vous pouvez trouver cette valeur en exécutant la commande suivante : <code>clever domain</code>.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Dans l'interface utilisateur de Keyloak, allez dans <strong><em>Configurer &gt; Clients &gt; Créer</em></strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Créez un nouveau client avec ces configurations :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Client ID: $GRAFANA_DOMAIN
Client Protocol: openid-connect
Root URL: https://$GRAFANA_DOMAIN</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Effectuez ensuite ces configurations :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Access Type: confidentials // The OAuth client must use a client id and secret.
Root URL: ${authBaseUrl}
Valid Redirect URIs: https://$GRAFANA_DOMAIN/login/generic_oauth
Base URL: /login/generic_oauth</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Effacez <strong>Admin URL</strong> et <strong>Web Origins</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cliquez sur enregistrer et ouvrez l'onglet <strong>Credentials</strong>. Copiez le secret dans une note séparée, nous en aurons besoin dans les deuxième et troisième parties de ce tutoriel.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez l'onglet <strong>Rôles</strong> et cliquez sur <strong>Ajouter un rôle</strong>. Créez un nouveau rôle avec le nom admin. Ce rôle définit le niveau d'accès pour Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Allez sur l'onglet <strong>Scope</strong> et définissez <strong>Full Scope Allowed</strong> sur OFF. Nous ne voulons pas partager d'autres détails sur le royaume dans le jeton client.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ensuite, nous allons configurer un mappeur client pour la propriété roles. Nous devons nous assurer que Grafana peut extraire le rôle d'accès à partir du jeton JWT. Ouvrez l'onglet <strong>Mappers</strong> et cliquez sur <strong>Create</strong>. Créez une entrée avec ces options :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"> 
Nom : Roles
Mapper Type : Rôle client utilisateur
ID du client : $GRAFANA_DOMAIN
Nom de la réclamation token : roles
Type JSON de la réclamation : string
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Enfin, attribuez le rôle client à votre utilisateur Keycloak : <strong><em>Allez dans Utilisateurs &gt; Afficher tous les utilisateurs</em></strong> et cliquez sur l'ID de votre <strong>utilisateur</strong>. Cliquez sur l'onglet <strong>Role Mapping</strong>, puis dans le sélecteur <strong>Client Roles</strong>, sélectionnez <strong><code>$GRAFANA_DOMAIN</code></strong>. Dans la section <strong>Available Roles</strong>, sélectionnez admin et cliquez sur <strong>Add selected</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Grafana pour OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Configurez les variables d'environnement appropriées</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Configure appropriate env vars
clever env set GF_SERVER_DOMAIN $GRAFANA_DOMAIN
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"
clever env set GF_AUTH_GENERIC_OAUTH_ENABLED true
clever env set GF_AUTH_GENERIC_OAUTH_NAME Keycloak
clever env set GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP true
clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_ID $GRAFANA_DOMAIN

clever env set GF_AUTH_GENERIC_OAUTH_SCOPES profile
clever env set GF_AUTH_GENERIC_OAUTH_AUTH_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/auth"
clever env set GF_AUTH_GENERIC_OAUTH_TOKEN_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/token"
clever env set GF_AUTH_GENERIC_OAUTH_API_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/userinfo"
clever env set GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH "contains(roles[*], 'admin') &amp;&amp; 'Admin' || contains(roles[*], 'editor') &amp;&amp; 'Editor' || 'Viewer'"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Dans cette section, vous devez définir vous-même <code>GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET</code>, en utilisant la valeur dans Keycloak UI, sous <code>Client &gt; $GRAFANA_URL &gt; Credentials</code></p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET &lt;KEYCLOAK_CLIENT_SECRET&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant déployer Grafana :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"> 
# Deploy grafana
clever deploy

# Open grafana and try the Login with Keycloak button !
clever open
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Maintenant, cliquez sur login with Keycloak, et utilisez le nom d'utilisateur et le mot de passe que vous avez définis pour l'utilisateur que vous avez créé plus tôt dans Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En utilisant la même procédure décrite précédemment pour créer le premier utilisateur, vous pouvez maintenant créer d'autres utilisateurs et rôles. Créez les rôles "éditeur" et/ou "visualisateur" et attribuez-les à vos nouveaux utilisateurs dans Keycloak. Essayez de vous connecter avec ceux-ci sur Grafana et vous verrez que les rôles sont propagés à Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Sources :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/">https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><span style="color: initial;"><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></span></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banniere_keycloak" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Keycloak est un moyen moderne et efficace de gérer les identités et les accès. Il permet l'authentification unique, la fédération d'utilisateurs à travers plusieurs annuaires d'utilisateurs. Il est également compatible avec les protocoles d'authentification standard comme OpenID Connect, OAuth2 ou SAML. Tous les détails sont disponibles <a href="https://www.keycloak.org/" target="_blank" rel="noreferrer noopener">sur son site</a>. Dans ce blogpost, nous verrons les étapes du déploiement de Keycloack et Grafana sur Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment déployer Keycloak ?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Setup</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Keycloak est écrit en Java, et fournit un fichier JAR dans sa version, ce qui signifie que nous allons utiliser <a href="https://stagingv6.cleverapps.io/doc/deploy/application/java/java-jar/" target="_blank" rel="noreferrer noopener">un runtime JAVA avec un déploiement JAR</a>. Il nécessite également une <a href="https://www.postgresql.org/" target="_blank" rel="noreferrer noopener">base de données PostgreSQL</a>, ce qui signifie que nous allons déployer un <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/postgresql/postgresql/">addon PostgreSQL</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get lastest Keycloak release
wget https://github.com/keycloak/keycloak/releases/download/17.0.1/keycloak-17.0.1.zip

# Extract the archive
unzip keycloak-17.0.1.zip

# Go to the folder
cd keycloak-17.0.1

# Create the jar application
clever create --type jar keycloak-server
export KEYCLOAK_DOMAIN=$(clever domain | xargs)

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 10 keycloak-postgres

# Link the addon
clever service link-addon keycloak-postgres</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour l'instant, nous allons configurer Keycloak en utilisant des variables d'environnement. Notez que vous pouvez également configurer Keycloak via son CLI ou via un fichier, comme indiqué dans sa <a href="https://www.keycloak.org/server/configuration" target="_blank" rel="noreferrer noopener">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Pour la configuration via des variables d'environnement, le modèle à utiliser est <code>KC_</code> et le nom en majuscule de toute clé de configuration, séparés par des caractères de soulignement.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Export env for templating purpose
export $(clever env | sed '/^#/d;s/\"//g')

clever env set CC_JAR_PATH lib/quarkus-run.jar
clever env set CC_JAVA_VERSION 11
clever env set CC_RUN_COMMAND "bin/kc.sh start --auto-build"

clever env set KC_DB postgres
clever env set KC_DB_USERNAME $POSTGRESQL_ADDON_USER
clever env set KC_DB_PASSWORD $POSTGRESQL_ADDON_PASSWORD
clever env set KC_DB_URL "jdbc:postgresql://$POSTGRESQL_ADDON_HOST:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
clever env set KC_HOSTNAME $KEYCLOAK_DOMAIN
clever env set KC_HTTP_ENABLED true
clever env set KC_PROXY passthrough
clever env set KC_PROXY_ADDRESS_FORWARDING true</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>Envisagez de configurer KC_DB_POOL_MAX_SIZE (Le nombre maximum de connections parallèles a la base de donnée) avec une valeur basse (la valeur par défault est de 100) en fonction de la taille de la base de donnée que vous avez commandé plus tôt. Vous pouvez trouver les limites de connection par taille de base de donnée <a href="https://stagingv6.cleverapps.io/pricing/#databases">ici</a>. Si vous avez choisi la taille S_SML comme précisé plus tôt dans la commande fournie, vous pouvez ignorer ce message. vous pouvez aussi configurer plus finement le groupe de connection a la base de donnée en utilisant les variable DB_POOL_INITIAL_SIZE et KC_DB_POOL_MIN_SIZE</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Vous devez maintenant définir <code>KEYCLOAK_ADMIN</code> et <code>KEYCLOAK_ADMIN_PASSWORD</code> :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set KEYCLOAK_ADMIN &lt;choose an admin username&gt;
clever env set KEYCLOAK_ADMIN_PASSWORD &lt;choose an admin password&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Déployer Keycloak sur Clever Cloud :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Init a git repository
git init

# Add your files
git add .

# Create the first commit
git commit -m "clever init"

# Deploy the application
clever deploy

# Open Keycloak in your browser
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Valider la configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous pouvez suivre la documentation de Keycloak <a href="https://www.keycloak.org/getting-started/getting-started-zip#_create_a_realm" target="_blank" rel="noreferrer noopener">en commençant ici</a> pour vous assurer que Keycloak fonctionne comme prévu. Elle vous guidera à travers la création d'un realm (tenant), la création d'un utilisateur et la création/test d'un client.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créer une configuration initiale de Keycloak</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dans l'interface utilisateur de Keycloak, assurez-vous de créer un realm appelé "myrealm" (survolez "Master" dans le coin supérieur gauche). Assurez-vous que le realm "<code>myrealm</code>" est sélectionné.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ensuite, allez dans <strong><em>Utilisateurs &gt; Ajouter un utilisateur</em></strong>. Remplissez les champs Nom d'utilisateur, Email, Prénom et Nom de famille, puis cliquez sur Enregistrer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans l'onglet "credentials" de l'utilisateur, ajoutez le mot de passe de votre choix et <strong>désélectionnez "Temporary", le mot de passe défini</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est fait ! </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un scénario du monde réel</h2>
<!-- /wp:heading -->

<!-- wp:image {"align":"center","id":6184,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/04/giphy-1-1.webp" alt="" class="wp-image-6184"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Voyons comment nous pouvons utiliser Keycloak dans le monde réel : comme proxy SSO pour Grafana, en utilisant Oauth 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Grafana sur Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous avez besoin d'un guide détaillé sur la façon d'utiliser ou de déployer Grafana, veuillez lire <a href="https://stagingv6.cleverapps.io/fr/blog/features/2021/10/28/grafana-pour-des-metriques-d-applications/">cet article</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Utilisons <a href="https://github.com/CleverCloud/grafana-example">l'exemple Grafana</a> sur le dépôt Github de Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone the repository
git clone https://github.com/CleverCloud/grafana-example.git

# Enter the directory
cd grafana-example

# Create a NodeJS Application
clever create --type node grafana
export GRAFANA_DOMAIN=$(clever domain | xargs)

# Configure Grafana
clever env set GRAFANA_VERSION 8.5.2
clever env set GRAFANA_PLUGINS "grafana-worldmap-panel"
clever env set GF_PLUGIN_DIR ./data/plugins

clever env set GF_SERVER_HTTP_PORT 8080
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Dans cette section, vous devez définir vous-même la variable <code>GRAFANA_SHA_256</code>. Vous pouvez trouver la <code>SHA256SUM</code> nécessaire <a href="https://grafana.com/grafana/download/8.5.2?pg=get&amp;plcmt=selfmanaged-box1-cta1&amp;edition=oss" target="_blank" rel="noreferrer noopener">ici</a>, à côté de "Standalone Linux Binaries".</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GRAFANA_SHA_256 &lt;SHA256SUM&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Keycloak pour OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : dans cette section, vous devez remplacer <code>$GRAFANA_DOMAIN</code> par la valeur que vous avez exportée dans la dernière section. Vous pouvez trouver cette valeur en exécutant la commande suivante : <code>clever domain</code>.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Dans l'interface utilisateur de Keyloak, allez dans <strong><em>Configurer &gt; Clients &gt; Créer</em></strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Créez un nouveau client avec ces configurations :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Client ID: $GRAFANA_DOMAIN
Client Protocol: openid-connect
Root URL: https://$GRAFANA_DOMAIN</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Effectuez ensuite ces configurations :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Access Type: confidentials // The OAuth client must use a client id and secret.
Root URL: ${authBaseUrl}
Valid Redirect URIs: https://$GRAFANA_DOMAIN/login/generic_oauth
Base URL: /login/generic_oauth</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Effacez <strong>Admin URL</strong> et <strong>Web Origins</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cliquez sur enregistrer et ouvrez l'onglet <strong>Credentials</strong>. Copiez le secret dans une note séparée, nous en aurons besoin dans les deuxième et troisième parties de ce tutoriel.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez l'onglet <strong>Rôles</strong> et cliquez sur <strong>Ajouter un rôle</strong>. Créez un nouveau rôle avec le nom admin. Ce rôle définit le niveau d'accès pour Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Allez sur l'onglet <strong>Scope</strong> et définissez <strong>Full Scope Allowed</strong> sur OFF. Nous ne voulons pas partager d'autres détails sur le royaume dans le jeton client.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ensuite, nous allons configurer un mappeur client pour la propriété roles. Nous devons nous assurer que Grafana peut extraire le rôle d'accès à partir du jeton JWT. Ouvrez l'onglet <strong>Mappers</strong> et cliquez sur <strong>Create</strong>. Créez une entrée avec ces options :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"> 
Nom : Roles
Mapper Type : Rôle client utilisateur
ID du client : $GRAFANA_DOMAIN
Nom de la réclamation token : roles
Type JSON de la réclamation : string
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Enfin, attribuez le rôle client à votre utilisateur Keycloak : <strong><em>Allez dans Utilisateurs &gt; Afficher tous les utilisateurs</em></strong> et cliquez sur l'ID de votre <strong>utilisateur</strong>. Cliquez sur l'onglet <strong>Role Mapping</strong>, puis dans le sélecteur <strong>Client Roles</strong>, sélectionnez <strong><code>$GRAFANA_DOMAIN</code></strong>. Dans la section <strong>Available Roles</strong>, sélectionnez admin et cliquez sur <strong>Add selected</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer Grafana pour OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Configurez les variables d'environnement appropriées</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Configure appropriate env vars
clever env set GF_SERVER_DOMAIN $GRAFANA_DOMAIN
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"
clever env set GF_AUTH_GENERIC_OAUTH_ENABLED true
clever env set GF_AUTH_GENERIC_OAUTH_NAME Keycloak
clever env set GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP true
clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_ID $GRAFANA_DOMAIN

clever env set GF_AUTH_GENERIC_OAUTH_SCOPES profile
clever env set GF_AUTH_GENERIC_OAUTH_AUTH_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/auth"
clever env set GF_AUTH_GENERIC_OAUTH_TOKEN_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/token"
clever env set GF_AUTH_GENERIC_OAUTH_API_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/userinfo"
clever env set GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH "contains(roles[*], 'admin') &amp;&amp; 'Admin' || contains(roles[*], 'editor') &amp;&amp; 'Editor' || 'Viewer'"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note</strong> : Dans cette section, vous devez définir vous-même <code>GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET</code>, en utilisant la valeur dans Keycloak UI, sous <code>Client &gt; $GRAFANA_URL &gt; Credentials</code></p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET &lt;KEYCLOAK_CLIENT_SECRET&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant déployer Grafana :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"> 
# Deploy grafana
clever deploy

# Open grafana and try the Login with Keycloak button !
clever open
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Maintenant, cliquez sur login with Keycloak, et utilisez le nom d'utilisateur et le mot de passe que vous avez définis pour l'utilisateur que vous avez créé plus tôt dans Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En utilisant la même procédure décrite précédemment pour créer le premier utilisateur, vous pouvez maintenant créer d'autres utilisateurs et rôles. Créez les rôles "éditeur" et/ou "visualisateur" et attribuez-les à vos nouveaux utilisateurs dans Keycloak. Essayez de vous connecter avec ceux-ci sur Grafana et vous verrez que les rôles sont propagés à Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Sources :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/">https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><span style="color: initial;"><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></span></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
