<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Documentation on vanityURLs</title><link>https://www.vanityurls.link/fr/docs/</link><description>Recent content in Documentation on vanityURLs</description><generator>Hugo</generator><language>fr-CA</language><atom:link href="https://www.vanityurls.link/fr/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Analytics serveur</title><link>https://www.vanityurls.link/fr/docs/server-side-analytics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/server-side-analytics/</guid><description>&lt;p&gt;vanityURLs enregistre les analytics depuis le Worker, pas depuis du JavaScript navigateur. Les redirections peuvent etre mesurees meme quand le visiteur ne charge jamais de page HTML, et les pages publiques n&amp;rsquo;ont pas besoin de script de tracking client.&lt;/p&gt;
&lt;p&gt;Les analytics sont non bloquants. Le Worker envoie les evenements avec &lt;code&gt;ctx.waitUntil()&lt;/code&gt;, donc la latence des redirections ne depend pas de la disponibilite de Umami, Fathom, ou autre fournisseur.&lt;/p&gt;
&lt;h2 id="fournisseurs"&gt;Fournisseurs&lt;/h2&gt;
&lt;p&gt;Definissez un ou plusieurs fournisseurs avec &lt;code&gt;ANALYTICS_PROVIDER&lt;/code&gt; :&lt;/p&gt;</description></item><item><title>Approche securite du runtime</title><link>https://www.vanityurls.link/fr/docs/runtime-security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/runtime-security/</guid><description>&lt;p&gt;Le runtime vanityURLs est volontairement simple. Ce n&amp;rsquo;est pas un service public de soumission de liens, pas une application avec base de donnees, et pas un framework web generaliste. C&amp;rsquo;est un moteur de redirection construit depuis Git : valider le registre, deployer les assets statiques, lire &lt;code&gt;v8s.json&lt;/code&gt;, puis retourner un petit nombre de resultats possibles.&lt;/p&gt;
&lt;p&gt;La simplicite fait partie du modele de securite. Le Worker a moins de pieces mobiles qu&amp;rsquo;un raccourcisseur classique : pas d&amp;rsquo;API d&amp;rsquo;ecriture publique, pas de comptes visiteurs, pas de cookies, pas d&amp;rsquo;analytics cote client, pas de couche de requete base de donnees, et pas de serveur d&amp;rsquo;origine derriere Cloudflare.&lt;/p&gt;</description></item><item><title>Checklist de release</title><link>https://www.vanityurls.link/fr/docs/release-checklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/release-checklist/</guid><description>&lt;p&gt;Utilisez cette checklist avant de lancer une nouvelle instance ou de promouvoir une mise a jour majeure. Une instance v8s est simple, mais un domaine court attire quand meme scanners, bots, et tentatives d&amp;rsquo;abus.&lt;/p&gt;
&lt;h2 id="depot"&gt;Depot&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Lancez &lt;code&gt;npm run clean&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rafraichissez &lt;code&gt;defaults/&lt;/code&gt; et &lt;code&gt;scripts/&lt;/code&gt; upstream avec le workflow de mise a jour.&lt;/li&gt;
&lt;li&gt;Gardez tous les fichiers propres a l&amp;rsquo;instance dans &lt;code&gt;custom/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Lancez &lt;code&gt;npm run check&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Relisez les changements de registre genere et de blocklist.&lt;/li&gt;
&lt;li&gt;Commitez et deployez depuis un working tree propre.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="worker-et-assets"&gt;Worker et assets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Confirmez que le Worker a un binding &lt;code&gt;ASSETS&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Confirmez que le domaine custom pointe vers le Worker.&lt;/li&gt;
&lt;li&gt;Desactivez les URL publiques &lt;code&gt;workers.dev&lt;/code&gt; et preview si elles ne font pas partie du service.&lt;/li&gt;
&lt;li&gt;Protegez &lt;code&gt;/_stats&lt;/code&gt; et &lt;code&gt;/_tests&lt;/code&gt; avec Cloudflare Access.&lt;/li&gt;
&lt;li&gt;Gardez les politiques &lt;code&gt;/_stats/*&lt;/code&gt; et &lt;code&gt;/_tests/*&lt;/code&gt; etroites.&lt;/li&gt;
&lt;li&gt;Confirmez que le Worker accepte seulement &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;HEAD&lt;/code&gt;, et &lt;code&gt;OPTIONS&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Confirmez que les assets d&amp;rsquo;implementation prives retournent 404.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration-domaine-cloudflare"&gt;Configuration domaine Cloudflare&lt;/h2&gt;
&lt;p&gt;Dans Cloudflare, les reglages pertinents sont repartis dans trois endroits :&lt;/p&gt;</description></item><item><title>CLI</title><link>https://www.vanityurls.link/fr/docs/cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/cli/</guid><description>&lt;p&gt;La CLI locale au depot est &lt;code&gt;./scripts/lnk&lt;/code&gt;. C&amp;rsquo;est un executable Node, donc il fonctionne sur macOS, Linux, Windows, et les environnements CI ou Node et Git sont disponibles.&lt;/p&gt;
&lt;p&gt;Bash n&amp;rsquo;est pas requis pour gerer les liens. Le helper Zsh reste optionnel et separe.&lt;/p&gt;
&lt;h2 id="prerequis"&gt;Prerequis&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 20 ou plus recent&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Wrangler pour les commandes de deploiement&lt;/li&gt;
&lt;li&gt;Un compte Cloudflare seulement pour deployer ou gerer les secrets Worker&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sur Windows, lancez les commandes depuis PowerShell, Windows Terminal, ou un shell qui voit Git. La CLI ne demande pas WSL.&lt;/p&gt;</description></item><item><title>Cloudflare Workers</title><link>https://www.vanityurls.link/fr/docs/cloudflare/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/cloudflare/</guid><description>&lt;p&gt;Le runtime vanityURLs actuel se deploie comme Worker Cloudflare avec assets statiques. Le Worker est l&amp;rsquo;origine du domaine court, donc utilisez un Custom Domain Worker plutot que l&amp;rsquo;ancien modele Pages &lt;code&gt;_redirects&lt;/code&gt; ou DNS &lt;code&gt;AAAA 100::&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="carte-de-navigation-cloudflare"&gt;Carte de navigation Cloudflare&lt;/h2&gt;
&lt;p&gt;Cloudflare repartit les reglages necessaires a vanityURLs dans trois zones differentes du dashboard. Verifiez le scope du dashboard avant de modifier un reglage; etre dans le bon produit Cloudflare ne suffit pas toujours.&lt;/p&gt;</description></item><item><title>Demarrage rapide</title><link>https://www.vanityurls.link/fr/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/getting-started/</guid><description>&lt;p&gt;vanityURLs est un moteur de liens courts gere dans Git pour votre propre domaine. Le runtime actuel se deploie comme Worker Cloudflare avec assets statiques. Le build part de &lt;code&gt;defaults/&lt;/code&gt;, applique vos fichiers &lt;code&gt;custom/&lt;/code&gt;, genere &lt;code&gt;build/v8s.json&lt;/code&gt;, puis publie le Worker avec Wrangler.&lt;/p&gt;
&lt;h2 id="prerequis"&gt;Prerequis&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Un depot GitHub base sur &lt;code&gt;vanityURLs/vanityURLs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Un domaine court, comme le domaine public de reference &lt;code&gt;v8s.link&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Un compte Cloudflare avec le domaine dans Cloudflare DNS&lt;/li&gt;
&lt;li&gt;Node.js 20 ou plus recent et npm&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Wrangler connecte au compte Cloudflare qui possede le Worker&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La CLI principale est &lt;code&gt;./scripts/lnk&lt;/code&gt;, un script Node qui tourne sur macOS, Linux, Windows, et les environnements CI ou Node et Git sont disponibles. Bash n&amp;rsquo;est pas requis pour gerer les liens, planifications, ou blocklists. Le helper optionnel &lt;code&gt;scripts/v8s.zsh&lt;/code&gt; sert seulement aux utilisateurs Zsh qui veulent ouvrir des redirections connues depuis leur shell.&lt;/p&gt;</description></item><item><title>Format des liens</title><link>https://www.vanityurls.link/fr/docs/link-format/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/link-format/</guid><description>&lt;p&gt;&lt;code&gt;v8s-links.txt&lt;/code&gt; est la source de verite humaine pour les liens. Chaque ligne non vide et non commentee est separee par des pipes :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;slug|target|state|title|description|tags|owner|expires_at|notes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Champ&lt;/th&gt;
 &lt;th style="text-align: right"&gt;Requis&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;slug&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;oui&lt;/td&gt;
 &lt;td&gt;Chemin sans &lt;code&gt;/&lt;/code&gt; initial&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;target&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;oui&lt;/td&gt;
 &lt;td&gt;URL &lt;code&gt;http&lt;/code&gt; ou &lt;code&gt;https&lt;/code&gt;, ou hostname normalise vers &lt;code&gt;https://&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;state&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;permanent&lt;/code&gt;, &lt;code&gt;ephemeral&lt;/code&gt;, &lt;code&gt;expired&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;, &lt;code&gt;maintenance&lt;/code&gt;, &lt;code&gt;deactivated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;Titre pour le dashboard&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;Usage humain du lien&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;Tags separes par virgules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;owner&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;recommande&lt;/td&gt;
 &lt;td&gt;Etiquette de responsabilite&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expires_at&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;Date ou timestamp ISO&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;notes&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: right"&gt;non&lt;/td&gt;
 &lt;td&gt;Notes internes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="liens-exacts"&gt;Liens exacts&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;social/x|https://x.com/vanityURLs|permanent|X / Twitter|Profil social|social,x|v8s||
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le lien resout seulement &lt;code&gt;/social/x&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Guide de migration</title><link>https://www.vanityurls.link/fr/docs/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/migration/</guid><description>&lt;p&gt;Utilisez ce guide pour passer de l&amp;rsquo;ancien modele Cloudflare Pages &lt;code&gt;_redirects&lt;/code&gt; au modele Worker actuel utilise par v8s.link.&lt;/p&gt;
&lt;h2 id="ce-qui-a-change"&gt;Ce qui a change&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wrangler.toml&lt;/code&gt; est la source de verite du deploiement&lt;/li&gt;
&lt;li&gt;Les fichiers statiques sont servis via le binding Worker &lt;code&gt;ASSETS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Le build copie &lt;code&gt;defaults/&lt;/code&gt;, applique &lt;code&gt;custom/&lt;/code&gt;, et genere &lt;code&gt;build/v8s.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom/v8s-links.txt&lt;/code&gt; est prefere quand il existe; sinon le build utilise &lt;code&gt;defaults/v8s-links.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/_stats&lt;/code&gt; et &lt;code&gt;/_tests&lt;/code&gt; sont proteges par Cloudflare Access&lt;/li&gt;
&lt;li&gt;Les analytics serveur sont emis par le Worker&lt;/li&gt;
&lt;li&gt;Les probes et destinations risquees sont bloquees par &lt;code&gt;v8s-blocklist.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="convertir-les-anciens-fichiers-lnk"&gt;Convertir les anciens fichiers .lnk&lt;/h2&gt;
&lt;p&gt;Les anciennes lignes ressemblaient a ceci :&lt;/p&gt;</description></item><item><title>Liens planifies</title><link>https://www.vanityurls.link/fr/docs/schedules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/schedules/</guid><description>&lt;p&gt;Les liens planifies permettent a un slug stable de pointer ailleurs pendant certaines plages horaires. Gardez le lien normal dans &lt;code&gt;v8s-links.txt&lt;/code&gt;, puis ajoutez les regles dans &lt;code&gt;v8s-schedules.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Les planifications s&amp;rsquo;appliquent actuellement aux liens exacts. Les liens splat restent bases sur le chemin.&lt;/p&gt;
&lt;p&gt;Pour les changements courants, utilisez la CLI Node au lieu de modifier le JSON a la main :&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;./scripts/lnk schedule add hangout https://zoom.us/j/work --label work --days mon,tue,wed,thu,fri --from 09:00 --to 17:00 --timezone America/Toronto --default https://discord.gg/personal
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./scripts/lnk schedule list hangout
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La CLI ecrit &lt;code&gt;custom/v8s-schedules.json&lt;/code&gt; par defaut. Definissez &lt;code&gt;V8S_SCHEDULES_FILE&lt;/code&gt; ou passez &lt;code&gt;--file&lt;/code&gt; pour utiliser un autre chemin.&lt;/p&gt;</description></item><item><title>Mettre a jour une instance</title><link>https://www.vanityurls.link/fr/docs/upgrading/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/upgrading/</guid><description>&lt;p&gt;Installer une instance vanityURLs est facile. La mettre a jour proprement demande un workflow reproductible, parce que le proprietaire doit garder ses liens, sa marque, sa politique et sa configuration Cloudflare tout en recevant les nouveaux defaults, scripts, correctifs et durcissements securite.&lt;/p&gt;
&lt;p&gt;La regle est simple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les fichiers propres a l&amp;rsquo;instance vivent dans &lt;code&gt;custom/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;les reglages de deploiement Cloudflare vivent dans &lt;code&gt;wrangler.toml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;la sortie generee est jetable&lt;/li&gt;
&lt;li&gt;les fichiers produit upstream vivent dans &lt;code&gt;defaults/&lt;/code&gt; et &lt;code&gt;scripts/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="commande-dupgrade"&gt;Commande d&amp;rsquo;upgrade&lt;/h2&gt;
&lt;p&gt;Lancez depuis un worktree propre :&lt;/p&gt;</description></item><item><title>Politique blocklist</title><link>https://www.vanityurls.link/fr/docs/blocklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/blocklist/</guid><description>&lt;p&gt;vanityURLs utilise &lt;code&gt;defaults/v8s-blocklist.json&lt;/code&gt; comme politique anti-abus upstream. La politique propre a l&amp;rsquo;instance vit dans &lt;code&gt;custom/v8s-blocklist.json&lt;/code&gt; et surcharge les defaults.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;objectif est de proteger la reputation d&amp;rsquo;un domaine court en reduisant phishing, malware, chaines de redirection, et formes d&amp;rsquo;URL risquees.&lt;/p&gt;
&lt;p&gt;Un redirecteur est une infrastructure puissante. N&amp;rsquo;utilisez pas une instance vanityURLs pour cacher des destinations malveillantes, contourner des systemes de confiance, blanchir une chaine d&amp;rsquo;autres raccourcisseurs, dissimuler des liens affiliés ou de tracking sans divulgation, ou envoyer les gens vers du contenu qu&amp;rsquo;ils ne pouvaient pas raisonnablement attendre. Un domaine court gagne la confiance lentement et peut la perdre tres vite.&lt;/p&gt;</description></item><item><title>Registre runtime</title><link>https://www.vanityurls.link/fr/docs/runtime-registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/runtime-registry/</guid><description>&lt;p&gt;Le Worker ne lit pas &lt;code&gt;v8s-links.txt&lt;/code&gt; a chaque requete. Le build cree un registre runtime prive dans &lt;code&gt;build/v8s.json&lt;/code&gt; et le publie comme asset interne. Les requetes publiques directes vers &lt;code&gt;v8s.json&lt;/code&gt;, &lt;code&gt;redirect-targets.json&lt;/code&gt;, et les assets de blocklist retournent 404.&lt;/p&gt;
&lt;p&gt;Le registre est volontairement simple : un fichier JSON genere, schema version &lt;code&gt;2.2&lt;/code&gt;, valide avant deploiement, consomme par un seul Worker.&lt;/p&gt;
&lt;h2 id="entrees-du-build"&gt;Entrees du build&lt;/h2&gt;
&lt;p&gt;Le registre est genere a partir de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;defaults/v8s-links.txt&lt;/code&gt;, puis &lt;code&gt;custom/v8s-links.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;defaults/v8s-schedules.json&lt;/code&gt;, puis &lt;code&gt;custom/v8s-schedules.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;defaults/v8s-blocklist.json&lt;/code&gt;, les donnees blocklist generees, et &lt;code&gt;custom/v8s-blocklist.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;les assets statiques de &lt;code&gt;defaults/public/&lt;/code&gt;, surcharges par &lt;code&gt;custom/public/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Utilisez &lt;code&gt;custom/&lt;/code&gt; pour chaque changement propre a une instance. Les mises a jour futures restent simples : upstream peut rafraichir &lt;code&gt;defaults/&lt;/code&gt; et &lt;code&gt;scripts/&lt;/code&gt;, pendant que l&amp;rsquo;instance garde ses liens, sa politique, son habillage, ses pages legales, et ses secrets generes.&lt;/p&gt;</description></item><item><title>Structure du depot</title><link>https://www.vanityurls.link/fr/docs/repository-layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/repository-layout/</guid><description>&lt;p&gt;Le depot separe les defaults du produit des changements propres a une instance. Cette separation rend v8s.link utile comme implementation de reference et permet de mettre a jour le code upstream sans perdre la marque locale.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;defaults/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; public/ # HTML, CSS, icones et pages localisees par defaut
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; public/_stats/ # shell du tableau stats en lecture seule
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-links.txt # registre demo/par defaut
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-schedules.json # regles de planification optionnelles
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-blocklist.json # politique anti-abus par defaut
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-blocklist-categories.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; public/ # marque et pages propres a l&amp;#39;instance
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-links.txt # liens de l&amp;#39;instance
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-schedules.json # planifications de l&amp;#39;instance
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-blocklist.json # politique locale allow/block
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; worker.mjs # source canonique du Worker runtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; worker.test.mjs # tests du Worker runtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lnk # CLI Node pour liens et planifications
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; build.mjs # build defaults + custom vers la sortie deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; clean.mjs # supprime la sortie generee
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; upgrade.mjs # rafraichit les fichiers produit depuis upstream
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;build/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s.json # registre runtime genere
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; v8s-blocklist.json # politique anti-abus generee
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ...assets statiques...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="defaults"&gt;Defaults&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;defaults/&lt;/code&gt; est la base du produit. L&amp;rsquo;instance publique v8s.link utilise ces fichiers pour montrer un raccourcisseur fonctionnel avec page d&amp;rsquo;accueil de recherche, page expand, pages d&amp;rsquo;etat localisees, icones, shell stats protege, et liens exemples.&lt;/p&gt;</description></item><item><title>Surcharges custom</title><link>https://www.vanityurls.link/fr/docs/custom-overrides/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/custom-overrides/</guid><description>&lt;p&gt;Utilisez &lt;code&gt;custom/&lt;/code&gt; pour les fichiers propres a l&amp;rsquo;instance. Cela garde les deploiements de type v8s.link faciles a mettre a jour, car les pages par defaut, la logique Worker et les politiques produit peuvent evoluer sans melanger tous les choix de marque locaux.&lt;/p&gt;
&lt;h2 id="ordre-de-build"&gt;Ordre de build&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Copier &lt;code&gt;defaults/public/&lt;/code&gt; dans &lt;code&gt;build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Appliquer &lt;code&gt;custom/public/&lt;/code&gt; s&amp;rsquo;il existe&lt;/li&gt;
&lt;li&gt;Copier &lt;code&gt;defaults/public/_stats/index.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Appliquer &lt;code&gt;custom/public/_stats/index.html&lt;/code&gt; s&amp;rsquo;il existe&lt;/li&gt;
&lt;li&gt;Construire &lt;code&gt;v8s.json&lt;/code&gt; depuis &lt;code&gt;custom/v8s-links.txt&lt;/code&gt; s&amp;rsquo;il existe, sinon depuis &lt;code&gt;defaults/v8s-links.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fusionner &lt;code&gt;defaults/v8s-blocklist.json&lt;/code&gt;, &lt;code&gt;custom/v8s-blocklist.json&lt;/code&gt; optionnel, et les donnees de blocklist generees&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="fichiers-custom-recommandes"&gt;Fichiers custom recommandes&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/v8s-links.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/v8s-schedules.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/v8s-blocklist.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/public/v8s-logo.svg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/public/v8s-redirected.svg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;custom/public/favicon.svg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ajoutez des surcharges HTML ou CSS seulement quand les assets de marque et les fichiers de contenu ne suffisent pas.&lt;/p&gt;</description></item><item><title>Tableau admin</title><link>https://www.vanityurls.link/fr/docs/admin-dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/admin-dashboard/</guid><description>&lt;p&gt;Le tableau admin est volontairement en lecture seule. C&amp;rsquo;est une vue operationnelle du registre genere, pas un CMS.&lt;/p&gt;
&lt;p&gt;Il lit :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/v8s.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ce-quil-montre"&gt;Ce qu&amp;rsquo;il montre&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Inventaire des routes&lt;/li&gt;
&lt;li&gt;Etat effectif&lt;/li&gt;
&lt;li&gt;Routage exact vs splat&lt;/li&gt;
&lt;li&gt;Revue des expirations&lt;/li&gt;
&lt;li&gt;Qualite des metadonnees&lt;/li&gt;
&lt;li&gt;Comportement de la table de routage&lt;/li&gt;
&lt;li&gt;Filtres expire bientot et metadata manquante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les analytics restent dans Umami ou Fathom. Le dashboard est le plan routage et cycle de vie; les outils analytics sont le plan mesure.&lt;/p&gt;</description></item><item><title>Validation et CI</title><link>https://www.vanityurls.link/fr/docs/validation-ci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.vanityurls.link/fr/docs/validation-ci/</guid><description>&lt;p&gt;Lancez la validation avant chaque deploiement. v8s est concu pour que les erreurs de liens, les cibles dangereuses, les assets generes perimes, et les regressions Worker echouent avant qu&amp;rsquo;une nouvelle version arrive sur Cloudflare.&lt;/p&gt;
&lt;h2 id="commandes-locales"&gt;Commandes locales&lt;/h2&gt;
&lt;p&gt;Utilisez le controle combine pour le travail normal :&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;npm run check
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il construit le runtime, lance le lint, et execute les tests Worker. Pour un travail cible, utilisez :&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;npm run lint
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run smoke:analytics
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lancez &lt;code&gt;npm run clean&lt;/code&gt; avant une release ou avant de comparer la sortie generee. Cela retire le cruft de build pour que le depot montre seulement les changements source intentionnels.&lt;/p&gt;</description></item></channel></rss>