[{"data":1,"prerenderedAt":257},["ShallowReactive",2],{"\u002Fblog\u002Fsub-store-cloudflare\u002F:fr":3,"\u002Fblog\u002Fsub-store-cloudflare\u002F-surround:fr":152,"blog-all-posts:fr":153},{"id":4,"title":5,"author":6,"body":10,"date":135,"description":136,"extension":137,"image":138,"locale":139,"meta":140,"minRead":141,"navigation":142,"original":142,"path":143,"pinned":144,"seo":145,"source":138,"sourceUrl":138,"stem":146,"tags":147,"updated":138,"__hash__":151},"blog\u002Fblog\u002Fsub-store-cloudflare.fr.md","J'ai déplacé mon agrégateur d'abonnements vers Cloudflare",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":127},"minimark",[13,17,28,33,36,39,52,55,58,62,65,86,89,93,96,99,107,114,118,121,124],[14,15,16],"p",{},"Je suis avec les fournisseurs de proxy depuis trois-quatre ans, et j'ai aussi monté des nœuds VPS moi-même. Il y a un truc qui m'a toujours gonflé : trois-cinq abonnements en main, plus plusieurs nœuds maison, éparpillés dans le client à ajouter un par un, et les règles de routage à reconfigurer à chaque client. Changer d'appareil, changer de client, installer pour la famille : on rejoue tout à chaque fois.",[14,18,19,20,27],{},"Puis je me suis dit : pas besoin de gérer les abonnements à la main dans le client. Si on les rassemble en une seule URL, que les règles sont fixes côté serveur et que le client ne fait que s'abonner, tout devient simple. L'approche Sub-Store, je l'utilisais déjà, mais elle tournait sur mon propre serveur et j'avais la flemme de l'entretenir. Alors cette fois j'ai écrit ma propre version qui tourne sur Cloudflare : sub-store-cloudflare, open source sur ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fgithub.com\u002Frealchendahuang\u002Fsub-store-cloudflare",[25],"nofollow","GitHub",".",[29,30,32],"h2",{"id":31},"en-fait-elle-ne-fait-quune-chose","En fait, elle ne fait qu'une chose",[14,34,35],{},"Concaténer plusieurs sources d'abonnement en un seul abonnement.",[14,37,38],{},"Concrètement, tu peux y glisser plusieurs choses :",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"Les URL d'abonnement de quelques fournisseurs",[43,47,48],{},"Le texte des nœuds de ton VPS (vless, trojan, ss, vmess, peu importe)",[43,50,51],{},"Ou coller temporairement un bout de nœuds à la volée",[14,53,54],{},"Une fois entrées, le Worker va les récupérer, dédupliquer, filtrer selon tes règles, puis renommer, ajouter les drapeaux, résoudre les domaines selon le besoin. À la sortie, tout est poussé dans un abonnement combiné, et le client n'a qu'à s'abonner à cette seule URL.",[14,56,57],{},"Côté règles, j'ai tout mis côté serveur. Quelques modèles Mihomo courants sont intégrés — acl4ssr, whitelist\u002Fblacklist loyalsoldier, ai-streaming, etc. — et les groupes de routage et jeux de règles sont configurés dans le cloud. Tu balances l'abonnement dans mihomo \u002F clash, surge, sing-box, shadowrocket, et en le téléchargeant tu obtiens un produit fini avec les règles de routage incluses, sans écrire de règles à la main ni maintenir des URL de jeux de règles.",[29,59,61],{"id":60},"pourquoi-absolument-sur-cloudflare","Pourquoi absolument sur Cloudflare",[14,63,64],{},"Les raisons sont on ne peut plus pragmatiques :",[40,66,67,74,80],{},[43,68,69,73],{},[70,71,72],"strong",{},"Pas de serveur."," Workers + D1 : le quota gratuit suffit pour du perso, et on économise le coût et l'entretien d'un serveur.",[43,75,76,79],{},[70,77,78],{},"Le domaine workers.dev est déjà hors du mur."," La connexion de ton client pour aller chercher l'abonnement passe, pas de poupées russes du type « serveur à l'étranger, il faut un proxy pour tirer l'abonnement ».",[43,81,82,85],{},[70,83,84],{},"Une fois déployé, c'est une interface web de gestion plus un endpoint de téléchargement."," Même en changeant de client sur mobile, tu ouvres une page web pour modifier la config.",[14,87,88],{},"J'ai gardé la stack volontairement petite : Worker + Static Assets + D1 + Worker Secrets. KV, R2, Durable Objects, Queue, Cron ne sont pas dans le chemin critique : moins il y en a, mieux c'est.",[29,90,92],{"id":91},"deux-voies-de-déploiement-prévues-exprès","Deux voies de déploiement prévues exprès",[14,94,95],{},"La première est pour ceux qui veulent juste l'utiliser : cliquer sur Deploy to Cloudflare dans le repo, Cloudflare tire le repo, crée le Worker, crée le D1, te demande deux tokens, et à la fin te donne un lien de gestion avec token. Pas besoin de toucher au terminal.",[14,97,98],{},"La seconde, pour moi et pour les amateurs de bricolage : installation en une commande par un agent IA.",[14,100,101,102,106],{},"Le repo embarque le protocole agent (AGENTS.md + la SKILL dans agent). Tu écris les sources d'abonnement, les abonnements combinés souhaités et les modèles de règles voulus dans un fichier de config local, tu lances ",[103,104,105],"code",{},"pnpm run install:cloudflare",", et l'agent vérifie pour toi la connexion Cloudflare, crée la base, écrit les secrets, migre, déploie, importe la configuration, valide les liens, puis te remet le lien de gestion et le lien de téléchargement.",[14,108,109,110,113],{},"Moi, c'est cette voie que j'utilise pour la mise en production, donc je la recommande : c'est du tout confort. Pour Codex \u002F Claude Code, il suffit de copier le prompt dans ",[103,111,112],{},"agent\u002Finstall.prompt.md"," du repo.",[29,115,117],{"id":116},"pour-qui","Pour qui",[14,119,120],{},"Franchement : tu as plus d'un fournisseur, en plus quelques nœuds montés toi-même, et tu veux fondre le tout en un seul abonnement pour ton usage perso — voilà la cible de ce projet. Si tu n'as qu'un fournisseur et que ça te va, inutile de venir ici.",[14,122,123],{},"Tout le code est open source, AGPL. Le front rend hommage à la manière d'interagir du Sub-Store original ; l'original tourne dans un conteneur et couvre plus d'écosystèmes de clients, moi j'ai fait une forme plus petite, Cloudflare-native, facile à modifier et à déployer direct, ce n'est pas une réplique point par point.",[14,125,126],{},"Les curieux peuvent fouiller le repo, le README est assez complet : il n'y a qu'à suivre pour déployer.",{"title":128,"searchDepth":129,"depth":129,"links":130},"",2,[131,132,133,134],{"id":31,"depth":129,"text":32},{"id":60,"depth":129,"text":61},{"id":91,"depth":129,"text":92},{"id":116,"depth":129,"text":117},"2026-06-28","Plusieurs fournisseurs plus des nœuds maison, le tout concassé dans un seul abonnement ; les règles de routage configurées côté serveur, et le client n'a plus qu'à s'abonner.","md",null,"fr",{},4,true,"\u002Fblog\u002Fsub-store-cloudflare",false,{"title":5,"description":136},"blog\u002Fsub-store-cloudflare.fr",[148,149,150],"Cloudflare","Réseau","Projet open source","YO18vi94s9wNEDlBDlHk0m44UoHBwlsHDsI5Y0i0yDo",[138,138],[154,163,171,180,187,195,202,210,218,224,231,233,240,248],{"path":155,"title":156,"description":157,"date":158,"minRead":159,"tags":160},"\u002Fblog\u002Fagent-harness-selection","J'ai trifouillé Pi Agent, OMP, Codex et ZCode — voici pourquoi j'ai fini par choisir OpenCode + OpenChamber","Retour d'expérience sur le choix d'un Agent Harness : trois critères — expérience GUI, verrouillage fournisseur, liberté de développement — qui ont écarté Pi Agent, OMP, Codex et ZCode, pour atterrir sur le noyau OpenCode + l'interface OpenChamber.","2026-08-06",6,[161,162],"AI Agent","Choix d'outils",{"path":164,"title":165,"description":166,"date":167,"minRead":159,"tags":168},"\u002Fblog\u002Fcloudflare-broke-stack","Meilleures pratiques 2026 de l'indie dev : le combo Cloudflare du radin","La stack zéro coût de l'indépendant : Codex écrit le code, GitHub gère les versions, Stripe encaisse ; front TanStack Start, back Hono + Workers, base D1, stockage R2, cache KV — tout tourne sur Cloudflare.","2026-06-15",[148,169,170],"Développement indépendant","Stack technique",{"path":172,"title":173,"description":174,"date":175,"minRead":159,"tags":176},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek intègre la recherche web dans son API — la recherche officielle à l'œil via Responses API","DeepSeek a intégré la recherche web directement dans son API : il suffit d'appeler deepseek-v4-flash via l'interface Responses et de déclarer l'outil web_search. Pas besoin de moteur tiers, pas besoin de clé de recherche.","2026-08-05",[177,178,179],"DeepSeek","API","Outil IA",{"path":181,"title":182,"description":183,"date":175,"minRead":184,"tags":185},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash en profondeur : pas cher, rapide, 1M de contexte, recherche intégrée","Quelques jours de test intensif de DeepSeek V4 Flash : pas cher à l'extrême, rapide comme l'éclair, 1M de contexte, recherche web intégrée par défaut, totalement open source. Seul point faible : le multimodale, mais on le comble en l'associant à d'autres modèles.",7,[177,186,179],"Test de modèle",{"path":188,"title":189,"description":190,"date":167,"minRead":191,"tags":192},"\u002Fblog\u002Ffree-cloudflare","Comment presser Cloudflare comme un citron quand on est gratuit, jusqu'où va le plan gratuit ?","Le plan gratuit de Cloudflare peut supporter toute une infrastructure perso sur Internet : DNS, CDN, Pages, Workers, KV, D1, R2, email, Tunnel, AI Gateway, etc.",8,[148,193,194],"Quota gratuit","Déploiement",{"path":196,"title":197,"description":198,"date":199,"minRead":191,"tags":200},"\u002Fblog\u002Fmodel-harness-decoupling","Le Harness first-party n'est pas forcément la réponse du moment : à l'ère des modèles ouverts, choisissez le modèle et le Harness séparément","Claude ? Donc Claude Code. À l'ère des modèles ouverts, cet instinct mérite une mise à jour. L'avantage first-party est réel, mais entraîner un bon modèle et construire un bon Harness sont deux ingénieries différentes — cet article explique pourquoi modèle et Harness peuvent désormais se choisir séparément, avec une carte de positionnement de cinq Harness.","2026-09-09",[161,201,162],"Harness",{"path":203,"title":204,"description":205,"date":199,"minRead":191,"tags":206},"\u002Fblog\u002Fopencode-productive-stack","Stable, rapide, productif, pas cher : mon AI Coding stack complet, documenté","OpenCode + OpenChamber + deux abonnements DeepSeek V4 Flash : 15 projets compilent du code en même temps et le quota bouge à peine. Toute ma configuration dévoilée — élagage de Context, mémoire à étages, automatisation du bureau, et la leçon « rester avec la combinaison d'origine ».",[207,208,209],"OpenCode","Programmation IA","Configuration",{"path":211,"title":212,"description":213,"date":214,"minRead":215,"tags":216},"\u002Fblog\u002Fproduct-faxin-principle","Le principe de l'intention première : pourquoi l'indie dev doit savoir lâcher prise","Pourquoi tu pars ? Pour qui tu pars ? Quel problème tu veux vraiment résoudre ? La netteté d'un produit vient de ce qu'on accepte de perdre et d'abandonner.","2026-06-20",10,[217,169],"Pensée produit",{"path":219,"title":220,"description":221,"date":214,"minRead":191,"tags":222},"\u002Fblog\u002Fproduct-pain-vs-itch","Quand l'utilisateur dit « génial », ne monte pas sur ton nuage : douleur vs. démangeaison","L'approbation verbale ne vaut pas un clou. Pour juger un besoin, un seul critère dur : ce que l'utilisateur est prêt à débourser.",[217,223],"Jugement du besoin",{"path":225,"title":226,"description":227,"date":158,"minRead":228,"tags":229},"\u002Fblog\u002Fqwen-vision-for-deepseek","Apporter le multimodal à DeepSeek : la solution de lecture d'images Qwen-3.7-Flash","DeepSeek V4 Flash n'a pas de multimodal ; et pour lire les images ? Après comparaison, la solution au meilleur rapport qualité\u002Fprix est Qwen-3.7-Flash : coût de reconnaissance d'une image ultra bas, combinée à V4 Flash pour combler le manque.",5,[177,230,186],"Multimodal",{"path":143,"title":5,"description":136,"date":135,"minRead":141,"tags":232},[148,149,150],{"path":234,"title":235,"description":236,"date":199,"minRead":184,"tags":237},"\u002Fblog\u002Ftui-cognitive-bandwidth","Le TUI est en train de tuer votre bande passante cognitive : le « filtre geek » de l'AI Coding devrait se briser","Une flopée d'AI Coding Agents se précipitent pour sortir des TUI, refourbent l'interaction dans le paradigme terminal des années 80 et appellent ça « immersif » et « respectueux des développeurs ». Cet article démonte les trois mécanismes par lesquels le TUI réduit systématiquement la bande passante cognitive — et pourquoi le Web UI est la bonne réponse.",[208,238,239],"Design d'interaction","Essai",{"path":241,"title":242,"description":243,"date":244,"minRead":159,"tags":245},"\u002Fblog\u002Fvalue-not-external","Discuter de la valeur, c'est ça qui n'a aucune valeur","Notre valeur n'est définie par personne. À l'ère de l'IA, comment l'humain doit-il se comprendre lui-même ?","2026-06-18",[246,247],"Réflexion IA","Essai humaniste",{"path":249,"title":250,"description":251,"date":252,"minRead":253,"tags":254},"\u002Fblog\u002Fx-growth-1000-followers","Plus de 1000 followers en un jour et demi, voilà ce que j'ai fait","En juin, j'ai sérieusement animé mon compte X, et je suis passé à plus de 1000 followers en un jour et demi. Ce post raconte ce que j'ai fait et les retours que j'ai eus.","2026-06-16",12,[255,256],"Animation X","Croissance de contenu",1789752315665]