[{"data":1,"prerenderedAt":257},["ShallowReactive",2],{"\u002Fblog\u002Fsub-store-cloudflare\u002F:de":3,"\u002Fblog\u002Fsub-store-cloudflare\u002F-surround:de":152,"blog-all-posts:de":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.de.md","Ich habe meine Sub-Abo-Aggregation auf Cloudflare verlegt",{"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",{},"Ich nutze Proxy-Dienste seit drei, vier Jahren und habe zwischendurch auch eigene VPS-Nodes betrieben. Dabei nervte mich immer eins: Ich hatte drei, fünf Abos plus ein paar eigene Server, verstreut im Client, einzeln hinzugefügt – und die Routing-Regeln musste ich in jedem Client einzeln neu einstellen. Neues Gerät, neuer Client, jemanden in der Familie einrichten – und schon ging das ganze Ritual von vorn.",[14,18,19,20,27],{},"Dann dachte ich mir: Abos muss man gar nicht verstreut im Client pflegen. Zieh alles zu einem Link zusammen, definiere die Regeln serverseitig, und der Client abonniert einfach – fertig, sauber. Den Ansatz von Sub-Store hatte ich früher schon genutzt, aber der lief auf einem eigenen Server, und die Pflege fand ich lästig. Also habe ich diesmal selbst eine Version geschrieben, die auf Cloudflare läuft: sub-store-cloudflare, Open Source auf ",[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},"es-macht-eigentlich-genau-eine-sache","Es macht eigentlich genau eine Sache",[14,34,35],{},"Mehrere Abo-Quellen zu einem einzigen Abo verkneten.",[14,37,38],{},"Konkret kannst du ein paar Sachen reinwerfen:",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"Abo-Links von mehreren Proxy-Diensten",[43,47,48],{},"Node-Text von deinem eigenen VPS (vless, trojan, ss, vmess – alles geht)",[43,50,51],{},"Auch mal einen temporär eingefügten Batzen Nodes",[14,53,54],{},"Im Hintergrund holt der Worker die Quellen, entfernt Duplikate, filtert nach deinen Regeln, benennt um, ergänzt Flaggen und löst Domains auf. Raus kommt ein kombiniertes Abo – und der Client abonniert genau diese eine Adresse.",[14,56,57],{},"Die Regeln liegen serverseitig. Eingebaut sind ein paar gängige Mihomo-Templates: acl4ssr, die White-\u002FBlacklist von Loyalsoldier, ai-streaming und Co. – Routing-Gruppen und Regelsets sind komplett in der Cloud konfiguriert. Wirfst du das Abo in Clients wie mihomo \u002F clash, surge, sing-box oder shadowrocket, lädst du dir ein fertiges Abo mit eingebauten Routing-Regeln herunter – kein manuelles Regel-Schreiben, kein Pflegen von Regelset-URLs.",[29,59,61],{"id":60},"warum-unbedingt-cloudflare","Warum unbedingt Cloudflare?",[14,63,64],{},"Sehr pragmatische Gründe:",[40,66,67,74,80],{},[43,68,69,73],{},[70,71,72],"strong",{},"Kein Server."," Workers + D1, das Gratis-Kontingent reicht für den persönlichen Gebrauch – Serverkosten und Pflege sind gestrichen.",[43,75,76,79],{},[70,77,78],{},"Die workers.dev-Domain liegt selbst außerhalb der Mauer."," Dein Client verbindet sich problemlos, um das Abo zu ziehen – kein „Server im Ausland, Node-Abo braucht trotzdem einen Proxy\"-Schachtelscheiß.",[43,81,82,85],{},[70,83,84],{},"Nach dem Deploy hast du ein Web-Admin-Interface plus einen Download-Endpunkt."," Auch beim Client-Wechsel auf dem Handy kannst du die Config per Browser anpassen.",[14,87,88],{},"Den Tech-Stack habe ich bewusst klein gehalten: Worker + Static Assets + D1 + Worker Secrets. KV, R2, Durable Objects, Queue, Cron – alles nicht im Kernpfad, so wenig wie möglich ist am besten.",[29,90,92],{"id":91},"zwei-deploy-wege-extra-eingebaut","Zwei Deploy-Wege, extra eingebaut",[14,94,95],{},"Der erste für alle, die es einfach nutzen wollen: Den „Deploy to Cloudflare\"-Button im Repo klicken, Cloudflare zieht das Repo, legt Worker und D1 an, fragt dich nach zwei Token und liefert dir danach einen Admin-Link mit Token. Schritt für Schritt, keine Kommandozeile nötig.",[14,97,98],{},"Der zweite – für mich selbst und alle Bastler: per AI Agent in einem Rutsch.",[14,100,101,102,106],{},"Im Repo steckt ein Agent-Protokoll (AGENTS.md + SKILL im agent-Verzeichnis). Du schreibst Abo-Quellen, das gewünschte Kombi-Abo und die Regeltemplates in eine lokale Config, rennst ",[103,104,105],"code",{},"pnpm run install:cloudflare",", und der Agent prüft deinen Cloudflare-Login, legt die Datenbank an, schreibt Secrets, migriert, deployt, importiert die Config, verifiziert die Links – und reicht dir am Ende Admin- und Download-Link.",[14,108,109,110,113],{},"Ich habe selbst den Weg über die Schiene genommen und empfehle ihn deshalb auch – weniger Fummelei. Für Codex \u002F Claude Code einfach die Prompts aus ",[103,111,112],{},"agent\u002Finstall.prompt.md"," im Repo kopieren.",[29,115,117],{"id":116},"für-wen-das-ist","Für wen das ist",[14,119,120],{},"Geradewegs gesagt: Wer mehr als einen Proxy-Dienst hat, dazu ein paar eigene Nodes, und das Ganze zu einem einzigen Abo für sich zusammenführen will – genau der ist die Zielgruppe. Kommst du mit einem einzigen Dienst gut zurecht, brauchst du das hier wirklich nicht.",[14,122,123],{},"Der Code ist vollständig Open Source, unter AGPL. Das Frontend-Konzept zollt dem Original Sub-Store Respekt; das Original läuft im Container und deckt ein breiteres Client-Ökosystem ab, ich habe die schlankere Cloudflare-native Form gebaut – einfach für mich anzupassen und direkt zu deployen, kein Eins-zu-eins-Nachbau.",[14,125,126],{},"Interessierte können im Repo stöbern, die README ist ziemlich komplett – folg einfach der Anleitung zum Deployen.",{"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","Mehrere Proxy-Dienste plus eigene Nodes zu einem einzigen Abo verkneten, Routing-Regeln serverseitig konfigurieren – der Client muss nur noch abonnieren.","md",null,"de",{},4,true,"\u002Fblog\u002Fsub-store-cloudflare",false,{"title":5,"description":136},"blog\u002Fsub-store-cloudflare.de",[148,149,150],"Cloudflare","Zensurumgehung","Open-Source-Projekt","bX-z8yE32xnhZbWDRx5-sGIkfxA7V6i9W1T-ccrmsdY",[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","Nach Pi Agent, OMP, Codex und ZCode: Warum ich am Ende OpenCode + OpenChamber gewählt habe","Meine Retro zur Agent-Harness-Auswahl: Nach den drei Kriterien GUI-Erlebnis, Vendor Lock-in und Freiheit zur Weiterentwicklung flogen Pi Agent, OMP, Codex und ZCode raus – die Wahl fiel schließlich auf den OpenCode-Kernel mit der OpenChamber-Oberfläche.","2026-08-06",6,[161,162],"AI Agent","Tool-Auswahl",{"path":164,"title":165,"description":166,"date":167,"minRead":159,"tags":168},"\u002Fblog\u002Fcloudflare-broke-stack","Best Practices für Indie-Devs 2026: Das Cloudflare-Komplettpaket für Sparfüchse","Die Nullkosten-Technologie-Stack von unabhängigen Entwicklern: Codex schreibt Code, GitHub verwaltet Versionen, Stripe kassiert – Frontend mit TanStack Start, Backend mit Hono + Workers, Datenbank D1, Storage R2, Cache KV, alles auf Cloudflare.","2026-06-15",[148,169,170],"Indie-Entwicklung","Tech-Stack",{"path":172,"title":173,"description":174,"date":175,"minRead":159,"tags":176},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek baut Websuche direkt in die API – mit der Responses API die offizielle Suchpower gratis abgreifen","DeepSeek hat Websuche offiziell in die API eingebaut: Rufe deepseek-v4-flash über den Responses-Endpoint auf, deklariere das web_search-Tool, fertig – kein Drittanbieter-Suchdienst, kein eigener Such-Key nötig.","2026-08-05",[177,178,179],"DeepSeek","API","AI-Tools",{"path":181,"title":182,"description":183,"date":175,"minRead":184,"tags":185},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash im Deep-Test: billig, schnell, 1M Kontext, integrierte Suche","Ein paar Tage Deep-Test mit dem offiziellen DeepSeek V4 Flash: extrem billig, blitzschnell, 1M Kontext, offiziell eingebaute Websuche, komplett Open Source. Die einzige Schwäche ist Multimodalität – die lässt sich aber mit anderen Modellen ausgleichen.",7,[177,186,179],"Modell-Review",{"path":188,"title":189,"description":190,"date":167,"minRead":191,"tags":192},"\u002Fblog\u002Ffree-cloudflare","Wie Gratis-Nutzer Cloudflare bis aufs Blut ausquetschen – wie viel gibt's wirklich umsonst?","Die Cloudflare-Gratisversion trägt eine komplette persönliche Internet-Infrastruktur: DNS, CDN, Pages, Workers, KV, D1, R2, E-Mail, Tunnel, AI Gateway und mehr.",8,[148,193,194],"Gratis-Kontingent","Deployment",{"path":196,"title":197,"description":198,"date":199,"minRead":191,"tags":200},"\u002Fblog\u002Fmodel-harness-decoupling","Das First-Party-Harness ist nicht immer die beste Wahl: In der Ära offener Modelle wählt man Modell und Harness getrennt","Claude? Dann Claude Code. In der Ära offener Modelle verdient dieser Instinkt ein Upgrade. Der First-Party-Vorteil ist echt, aber ein gutes Modell zu trainieren und ein gutes Harness zu bauen sind zwei verschiedene Ingenieurskünste — dieser Artikel erklärt, warum sich Modell und Harness heute getrennt wählen lassen, plus eine Positionierungskarte von fünf Harnesses.","2026-09-09",[161,201,162],"Harness",{"path":203,"title":204,"description":205,"date":199,"minRead":191,"tags":206},"\u002Fblog\u002Fopencode-productive-stack","Stabil, schnell, produktiv, günstig: Mein AI-Coding-Stack, vollständig dokumentiert","OpenCode + OpenChamber + zwei DeepSeek V4 Flash Abos: 15 Projekte laufen gleichzeitig Code, und das Kontingent bewegt sich kaum. Der komplette Aufbau offengelegt — Context-Beschneidung, gestufte Memory, Desktop-Automatisierung und die Lektion „beim Original bleiben“.",[207,208,209],"OpenCode","AI-Coding","Konfiguration",{"path":211,"title":212,"description":213,"date":214,"minRead":215,"tags":216},"\u002Fblog\u002Fproduct-faxin-principle","Das Prinzip des ursprünglichen Antriebs: Warum Indie-Entwickler das Weglassen lernen müssen","Warum startest du? Für wen startest du? Welches Problem willst du wirklich lösen? Die Schärfe eines Produkts entsteht aus Loslassen und Verzichten.","2026-06-20",10,[217,169],"Produktdenken",{"path":219,"title":220,"description":221,"date":214,"minRead":191,"tags":222},"\u002Fblog\u002Fproduct-pain-vs-itch","Wenn Nutzer „geil\" sagen, nicht abheben: Schmerz- vs. Juckpunkte","Verbales Lob ist keinen Cent wert. Es gibt nur einen harten Maßstab, um Bedürfnisse zu beurteilen: Schau, was Nutzer bereit sind zu geben.",[217,223],"Bedürfnis-Validierung",{"path":225,"title":226,"description":227,"date":158,"minRead":228,"tags":229},"\u002Fblog\u002Fqwen-vision-for-deepseek","DeepSeek Multimodalität verpassen: Das Qwen-3.7-Flash-Bilderkennungs-Setup","DeepSeek V4 Flash kann keine multimodalen Eingaben – was tun, wenn es ans Bilderlesen geht? Nach meiner Recherche ist das Setup mit dem besten Preis-Leistungs-Verhältnis Qwen-3.7-Flash: Eine Bilderkennung kostet fast nichts, und kombiniert mit V4 Flash deckt es die Schwäche ab.",5,[177,230,186],"Multimodalität",{"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","TUI frisst deine kognitive Bandbreite: Der „Geek-Filter“ im AI Coding sollte endlich zerbrechen","Ein Haufen AI Coding Agents liefert um die Wette TUIs aus, drückt die Interaktion zurück ins Terminal-Paradigma der 80er und nennt das dann „immersive“ und „respektvoll gegenüber Programmierern“. Dieser Artikel zerlegt die drei Mechanismen, mit denen TUI die kognitive Bandbreite systematisch senkt – und warum Web UI die richtige Antwort ist.",[208,238,239],"Interaktionsdesign","Essay",{"path":241,"title":242,"description":243,"date":244,"minRead":159,"tags":245},"\u002Fblog\u002Fvalue-not-external","Zu diskutieren, ob etwas Wert hat – genau das ist selbst wertlos","Unser Wert ist von niemandem definierbar. Wie sollte der Mensch im AI-Zeitalter sich selbst verstehen?","2026-06-18",[246,247],"AI-Reflexion","Literarischer Essay",{"path":249,"title":250,"description":251,"date":252,"minRead":253,"tags":254},"\u002Fblog\u002Fx-growth-1000-followers","Über 1000 Follower an einem Tag – was ich gemacht habe","Im Juni habe ich X richtig ernst genommen, und an etwas mehr als einem Tag kamen 1000+ Follower dazu. Dieser Beitrag hält fest, was ich damals getan und welches Feedback ich bekommen habe.","2026-06-16",12,[255,256],"X-Wachstum","Content-Wachstum",1789752316191]