<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vercel on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/vercel/</link><description>Recent content in Vercel on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Sat, 30 Dec 2023 16:00:00 +0200</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/vercel/index.xml" rel="self" type="application/rss+xml"/><item><title>Migration du blog sur Clever Cloud</title><link>https://blog.zwindler.fr/2023/12/30/its-migration-day-again/</link><pubDate>Sat, 30 Dec 2023 16:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2023/12/30/its-migration-day-again/</guid><description>&lt;img src="https://blog.zwindler.fr/2022/05/clever-trott.webp" alt="Featured image of post Migration du blog sur Clever Cloud" /&gt;&lt;h2 id="its-groundhog-migration-day-again"&gt;It’s &lt;del&gt;groundhog&lt;/del&gt; migration day, again
&lt;/h2&gt;&lt;p&gt;Tous les 6 mois environ, une mouche me pique.&lt;/p&gt;
&lt;p&gt;Après avoir migré un nombre incalculable de fois mon blog wordpress à droite / à gauche, puis &lt;a class="link" href="https://blog.zwindler.fr/2019/06/10/comment-migrer-de-wordpress-a-hugo/" &gt;migré sur Hugo&lt;/a&gt;, autohébergé, utilisé du managé chez &lt;a class="link" href="https://vercel.com/" target="_blank" rel="noopener"
&gt;vercel&lt;/a&gt;, chez &lt;a class="link" href="https://froggit.fr/" target="_blank" rel="noopener"
&gt;froggit&lt;/a&gt;, autohébergé encore&amp;hellip;&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai décidé (un peu sur un coup de tête) de migrer le blog chez les copain⋅es de chez Clever Cloud.&lt;/p&gt;
&lt;p&gt;Et je vous montre comment j&amp;rsquo;ai fait.&lt;/p&gt;
&lt;h2 id="prérequis"&gt;Prérequis
&lt;/h2&gt;&lt;p&gt;Je pars du principe que vous avez comme moi un dépôt git / site hugo déjà fonctionnel. Et je ne vais pas non plus détailler la procédure pour activer un compte chez &lt;a class="link" href="https://www.clever-cloud.com/" target="_blank" rel="noopener"
&gt;Clever Cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je commence par installer la CLI, les &amp;ldquo;clever tools&amp;rdquo;. Pour les installer, il nous faut &lt;code&gt;npm&lt;/code&gt;. J&amp;rsquo;utilise rarement &lt;code&gt;npm&lt;/code&gt;, mais quand je le fais, j&amp;rsquo;utilise un autre tool, &lt;code&gt;volta&lt;/code&gt; (&lt;a class="link" href="https://volta.sh/" target="_blank" rel="noopener"
&gt;volta.sh&lt;/a&gt;), qui va me permettre de choisir la version dont j&amp;rsquo;ai besoin&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/idontalways.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl https://get.volta.sh | bash
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une fois installé, je peux télécharger la version qui m&amp;rsquo;intéresse de npm (18 par exemple, la version minimum pour installer les clever tools)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ volta install node@20
success: installed and set node@20.10.0 (with npm@10.2.3) as default
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je peux donc maintenant installer les clever tools :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;npm i -g clever-tools
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Puis me loguer depuis mon terminal&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ clever login
Opening https://console.clever-cloud.com/cli-oauth?cli_version=3.0.2&amp;amp;cli_token=xxxxxxxxxxxxxxxxx in your browser to log you in…
Login successful as [unspecified name] &amp;lt;xxx.yyy@example.org&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/clever-login.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Si jamais comme indiqué sur l&amp;rsquo;écran de login, vous avez besoin d&amp;rsquo;un token + secret (pour de la CI par exemple), sachez qu&amp;rsquo;ils sont stockés dans un fichier &lt;code&gt;~/.config/clever-cloud/clever-tools.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2024/01/clever-token.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Denier prérequis, je vais ajouter une &lt;a class="link" href="https://console.clever-cloud.com/users/me/ssh-keys" target="_blank" rel="noopener"
&gt;clé SSH dans ma console clever&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/add-ssh.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="création-de-lapplication"&gt;Création de l&amp;rsquo;application
&lt;/h2&gt;&lt;p&gt;A partir de maintenant, je suis capable d’interagir avec clever cloud en CLI. Je vais commencer par créer l&amp;rsquo;application qui va héberger mon site statique :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ clever create -t static-apache blog-zwindler
Your application has been successfully created!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Clever Cloud offre la possibilité de dissocier la taille des instances pour la partie run et la partie build. Je vais donc créer l&amp;rsquo;instance la plus petite possible pour le run (une nano), et une plus pêchue (une M) pour le build, histoire d&amp;rsquo;être plus réactif sur les commits de modifications :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ clever scale --build-flavor M
App rescaled successfully
$ clever scale --flavor nano
App rescaled successfully
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je peux ensuite configurer quelques variables d&amp;rsquo;environnement (trouvées sur la doc de clever cloud) pour générer mon site statique avec l&amp;rsquo;image &lt;strong&gt;static-apache&lt;/strong&gt; de clever.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ clever env &lt;span class="nb"&gt;set&lt;/span&gt; CC_WEBROOT &lt;span class="s2"&gt;&amp;#34;/public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ clever env &lt;span class="nb"&gt;set&lt;/span&gt; CC_OVERRIDE_BUILDCACHE &lt;span class="s2"&gt;&amp;#34;/public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ clever env &lt;span class="nb"&gt;set&lt;/span&gt; CC_PRE_BUILD_HOOK &lt;span class="s2"&gt;&amp;#34;bash setup_hugo.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ clever env &lt;span class="nb"&gt;set&lt;/span&gt; CC_POST_BUILD_HOOK &lt;span class="s2"&gt;&amp;#34;hugo --minify --gc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour finir, on crée le script &lt;code&gt;setup_hugo.sh&lt;/code&gt; à la racine de notre site statique Hugo :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt; setup_hugo.sh &lt;span class="s"&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;HUGO_VERSION=&amp;#34;0.121.1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;HUGO_URL=&amp;#34;https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;DEST_BIN=&amp;#34;${HOME}/.local/bin&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;FILENAME=&amp;#34;hugo.tar.gz&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;# Download Hugo Extended and place it in a folder in the $PATH
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;curl --create-dirs -s -L -o ${DEST_BIN}/${FILENAME} ${HUGO_URL}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;cd ${DEST_BIN}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;tar xvf ${FILENAME} -C ${DEST_BIN}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;rm ${FILENAME}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On commit les fichiers créés :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add .
git commit -m &amp;#34;Add clever&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="déployer-notre-code"&gt;Déployer notre code
&lt;/h2&gt;&lt;p&gt;A partir de là, on a notre instance qui est prête à démarrer, dès qu&amp;rsquo;elle aura reçu du code.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/app-created.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Ici, clever cloud attend un push sur un dépôt git.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/blog-zwindler-clever.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;La méthode la plus &amp;ldquo;simple&amp;rdquo; pour pousser du code sur clever à ce moment-là est donc de créer un dépôt distance (remote) :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git remote add clever git+ssh://git@push-n3-par-clevercloud-customers.services.clever-cloud.com/app_xxxxxxxxxxxxxxxxxxxx.git
git push clever master
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le &amp;ldquo;problème&amp;rdquo; dans mon cas est que (pour l&amp;rsquo;instant), le nom de la branche n&amp;rsquo;est pas configurable et est forcément &amp;ldquo;master&amp;rdquo;, ce qui ne m&amp;rsquo;arrange pas puisque je bosse habituellement sur &amp;ldquo;main&amp;rdquo;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;remote: Error: You tried to push to a custom branch. This is not allowed.
remote: error: hook declined to update refs/heads/main
To git+ssh://push-n3-par-clevercloud-customers.services.clever-cloud.com/app_xxxxxxxxxxxxxxxxxxxx.git
! [remote rejected] main -&amp;gt; main (hook declined)
error: impossible de pousser des références vers &amp;#39;git+ssh://push-n3-par-clevercloud-customers.services.clever-cloud.com/app_xxxxxxxxxxxxxxxxxxxx.git&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2 manières de contourner ce problème :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soit je force la branche master sur le remote clever dans git&lt;/li&gt;
&lt;li&gt;soit j&amp;rsquo;utilise la CLI &lt;code&gt;clever deploy&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans un premier temps, je me contente de feinter git :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git push clever main:master
Énumération des objets: 30, fait.
Décompte des objets: 100% (24/24), fait.
Compression par delta en utilisant jusqu&amp;#39;à 16 fils d&amp;#39;exécution
Compression des objets: 100% (16/16), fait.
Écriture des objets: 100% (16/16), 287.70 Kio | 31.97 Mio/s, fait.
Total 16 (delta 8), réutilisés 0 (delta 0), réutilisés du pack 0
remote: [SUCCESS] The application has successfully been queued for redeploy.
To git+ssh://push-n3-par-clevercloud-customers.services.clever-cloud.com/app_xxxxxxxxxxxxxxxxxxxx.git
54ff42f..960ce62 main -&amp;gt; master
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On termine par la configuration du nom de domaine :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ clever domain add blog.zwindler.fr
Your domain has been successfully saved
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Il ne nous reste plus qu&amp;rsquo;à mettre à jour le CNAME dans notre DNS (&lt;em&gt;domain.par.clever-cloud.com.&lt;/em&gt; dans mon cas, mais la bonne configuration est visible dans l&amp;rsquo;onglet &lt;strong&gt;Domain names&lt;/strong&gt; de l&amp;rsquo;application)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2023/12/dns.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="et-avec-clever-deploy-"&gt;Et avec &lt;code&gt;clever deploy&lt;/code&gt; ?
&lt;/h2&gt;&lt;p&gt;Eh bien en fait, c&amp;rsquo;est &amp;ldquo;encore plus simple&amp;rdquo;. Il me suffit juste de faire une modif, de commit&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add .
git commit -m &amp;#34;test clever deploy&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Puis de simplement lancer la commande &lt;code&gt;clever deploy&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ clever deploy
Remote git head commit is c4e3c283585cafff44f07c7d78d860065318cd68
Current deployed commit is c4e3c283585cafff44f07c7d78d860065318cd68
New local commit to push is 0b3536a9f1d61178a99f6238831ccb4197989ddf (from refs/heads/main)
Pushing source code to Clever Cloud…
Your source code has been pushed to Clever Cloud.
Waiting for deployment to start…
Deployment started (deployment_b5f841ff-a233-4bb4-8a16-f618ee69ef28)
Waiting for application logs…
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quelle est donc cette diablerie ?&lt;/p&gt;
&lt;p&gt;En réalité, les informations nécessaires pour pousser le code sont en réalité simplement dans un fichier &lt;code&gt;.clever.json&lt;/code&gt; qui a été créé à la racine lorsqu&amp;rsquo;on a lancé la commande &lt;code&gt;clever create -t static-apache blog-zwindler&lt;/code&gt; au tout début du tuto.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;apps&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;app_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;app_xxxxxxxxxxxxxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;org_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;user_yyyyyyyyyyyyyyyyyyyyy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deploy_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://push-n3-par-clevercloud-customers.services.clever-cloud.com/xxxxxxxxxxxxxxxxxxxx.git&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;blog-zwindler&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;alias&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;blog-zwindler&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Évidemment, je ne vais pas m&amp;rsquo;amuser à faire un &lt;code&gt;clever login&lt;/code&gt; / &lt;code&gt;clever deploy&lt;/code&gt; à chaque fois que je veux pousser une modif sur mon blog. Et c&amp;rsquo;est là où nos CLEVER_TOKEN / CLEVER_SECRET seront utiles !&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Après quelques heures d&amp;rsquo;usage, je peux dire que &lt;strong&gt;dans le cadre de l&amp;rsquo;hébergement de mon blog&lt;/strong&gt;, j&amp;rsquo;aime bien utiliser Clever Cloud.&lt;/p&gt;
&lt;p&gt;Qu&amp;rsquo;on soit bien clair, c&amp;rsquo;est pour mon cas d&amp;rsquo;usage et comparé à :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vercel : l&amp;rsquo;expérience utilisateur est incroyable sur Vercel, mais j&amp;rsquo;ai toujours été un peu gêné par le côté &amp;ldquo;boite noire&amp;rdquo; (on a pas accès à beaucoup plus que des variables d&amp;rsquo;environnement). Et je ne parle pas des problématiques de privacy&amp;hellip;&lt;/li&gt;
&lt;li&gt;Deux serveurs physiques avec Proxmox VE en cluster étendu chez One-provider : à l&amp;rsquo;inverse héberger moi-même mon blog sur une machine (en vrai, 2) louée résout les problèmes de privacy et j&amp;rsquo;ai la main sur toute la stack, mais ça me demande de la maintenance pour des perfs minables. Ok, c&amp;rsquo;est pas cher, mais j&amp;rsquo;ai 2 à 3 minutes de rebuild avec le CPU à 100% sur mon Atom de 2010 chez Online&amp;hellip;&lt;/li&gt;
&lt;li&gt;Froggit : c&amp;rsquo;était du Gitlab + Gitlab pages et c&amp;rsquo;était très cool car c&amp;rsquo;est plus flexible que Vercel, mais j&amp;rsquo;avais dû passer un peu de temps à configurer la pipeline et leur faire pousser les murs pour que mon site rentre (les 400 Mo de médias n&amp;rsquo;étaient pas supportés au début et les transferts Gitlab =&amp;gt; Gitlab pages étaient un peu longs).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec Clever, mes 450 articles (3600 pages générées, 400 Mo de média) sont très rapidement générés, transférés, et enfin mis à disposition (&amp;lt; 1 minute tout compris, plus rapide que les 3 solutions précédentes).&lt;/p&gt;
&lt;p&gt;Le tout avec une disponibilité/fiabilité sans aucun doute bien meilleure que ce que j&amp;rsquo;aurais pu faire moi-même en auto hébergé avec un coût similaire, et en très peu de temps.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai passé beaucoup plus de temps à écrire cet article qu&amp;rsquo;à migrer le blog, puisque la doc est bien écrite, le site est intuitif, et je n&amp;rsquo;ai été bloqué à aucun moment.&lt;/p&gt;
&lt;p&gt;Il me reste encore à optimiser l&amp;rsquo;étape de déploiement, pour qu&amp;rsquo;un commit/push sur mon dépôt git déclenche automatiquement un déploiement côté clever. Objectivement, ça ne devrait pas prendre trop longtemps (github action / gitlab CI)&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et par contre, ça manque d&amp;rsquo;IPv6 natif, screugneugneu !&lt;/p&gt;</description></item></channel></rss>