[{"data":1,"prerenderedAt":257},["ShallowReactive",2],{"\u002Fblog\u002Fsub-store-cloudflare\u002F:id":3,"\u002Fblog\u002Fsub-store-cloudflare\u002F-surround:id":152,"blog-all-posts:id":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.id.md","Saya memindahkan agregasi langganan proxy ke 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",{},"Saya sudah memakai layanan proxy selama tiga atau empat tahun, dan kadang-kadang menjalankan node VPS sendiri. Selalu ada satu hal yang menyebalkan: tiga atau lima langganan ditambah beberapa box self-hosted berserakan di klien, ditambahkan satu per satu, dengan aturan routing yang harus dikonfigurasi ulang di setiap klien. Ganti perangkat, ganti klien, atau menyiapkan untuk anggota keluarga — ritualnya harus diulang lagi.",[14,18,19,20,27],{},"Lalu saya berpikir: tidak ada alasan untuk mengelola langganan secara terpisah di dalam klien. Tarik semuanya menjadi satu tautan, definisikan aturannya di sisi server, dan biarkan klien tinggal berlangganan — bersih. Saya pernah memakai pendekatan Sub-Store sebelumnya, tetapi ia berjalan di server sendiri dan saya merasa perawatannya merepotkan. Jadi kali ini saya menulis sendiri versi yang di-hosting di Cloudflare, namanya sub-store-cloudflare, dan saya buka sumbernya di ",[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},"sebenarnya-ia-cuma-melakukan-satu-hal","Sebenarnya ia cuma melakukan satu hal",[14,34,35],{},"Menggabungkan beberapa sumber langganan menjadi satu langganan.",[14,37,38],{},"Secara konkret, Anda bisa memasukkan beberapa hal ke dalamnya:",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"Tautan langganan dari beberapa layanan proxy",[43,47,48],{},"Teks node dari VPS sendiri (vless, trojan, ss, vmess — semuanya bisa)",[43,50,51],{},"Bahkan menempelkan potongan node sementara",[14,53,54],{},"Begitu masuk, Worker akan menarik dan melakukan de-duplikasi, menyaring sesuai aturan yang Anda berikan, lalu mengganti nama, menambah bendera, dan me-resolve domain sesuai kebutuhan. Semuanya keluar tergabung menjadi satu langganan gabungan — klien berlangganan ke satu tautan itu dan selesai.",[14,56,57],{},"Aturan berada di sisi server. Ia sudah dibekali beberapa template Mihomo umum — acl4ssr, whitelist\u002Fblacklist milik Loyalsoldier, ai-streaming dan semacamnya — dengan grup routing dan rule set semuanya dikonfigurasi di cloud. Masukkan langganan ke klien seperti mihomo\u002Fclash, surge, sing-box, shadowrocket, dan yang terunduh adalah langganan jadi dengan aturan routing yang sudah terpasang — tanpa perlu menulis aturan manual atau merawat URL rule set di sisi itu.",[29,59,61],{"id":60},"mengapa-justru-di-cloudflare","Mengapa justru di Cloudflare",[14,63,64],{},"Alasannya pragmatis:",[40,66,67,74,80],{},[43,68,69,73],{},[70,71,72],"strong",{},"Tanpa server."," Workers + D1, dan kuota gratisnya cukup untuk penggunaan pribadi — menghemat biaya server sekaligus perawatannya.",[43,75,76,79],{},[70,77,78],{},"Domain workers.dev itu sendiri sudah berada di luar tembok."," Klien Anda terhubung untuk mengambil langganan langsung jalan tanpa hambatan — tidak ada omong kosong \"server di luar negeri tapi node masih perlu tangga untuk menarik langganannya sendiri\" yang seperti boneka bersarang (nesting doll).",[43,81,82,85],{},[70,83,84],{},"Setelah ter-deploy, ia adalah panel admin web plus satu endpoint unduhan."," Ganti klien di ponsel pun Anda masih bisa membuka halaman web untuk mengubah konfigurasi.",[14,87,88],{},"Saya sengaja menjaga tumpukan teknologinya tetap kecil: Worker + Static Assets + D1 + Worker Secrets. KV, R2, Durable Objects, Queue, Cron semuanya di luar jalur kritis — semakin sedikit semakin baik.",[29,90,92],{"id":91},"dua-jalur-deploy-dengan-sengaja","Dua jalur deploy, dengan sengaja",[14,94,95],{},"Jalur pertama untuk orang yang hanya ingin memakai: klik tombol Deploy to Cloudflare di repo. Cloudflare menarik repo, membuat Worker dan D1, meminta dua token, dan menyerahkan tautan manajemen ber-token saat selesai. Langkah demi langkah, tanpa baris perintah.",[14,97,98],{},"Jalur kedua untuk saya sendiri dan orang yang suka utak-atik: instal sekali klik dengan AI agent.",[14,100,101,102,106],{},"Repo ini menyertakan protokol agent (AGENTS.md + SKILL di dalam agent). Anda menulis sumber langganan, langganan gabungan yang diinginkan, dan template aturan ke dalam file konfigurasi lokal, jalankan ",[103,104,105],"code",{},"pnpm run install:cloudflare",", dan agent akan memeriksa login Cloudflare Anda, membuat database, menulis secret, migrasi, deploy, impor konfigurasi, verifikasi tautan, dan akhirnya menyerahkan tautan manajemen dan tautan unduhan ke tangan Anda.",[14,108,109,110,113],{},"Saya men-deploy tautan saya sendiri persis dengan cara ini, jadi saya merekomendasikan jalur ini — lebih sedikit repot. Saat memakainya dengan Codex \u002F Claude Code, cukup salin prompt dari ",[103,111,112],{},"agent\u002Finstall.prompt.md"," di repo.",[29,115,117],{"id":116},"untuk-siapa","Untuk siapa",[14,119,120],{},"Terus terang: jika Anda punya lebih dari satu layanan proxy plus beberapa node self-hosted dan ingin menggabungkannya menjadi satu langganan untuk dipakai sendiri — ini proyek Anda. Jika Anda sudah nyaman dengan satu layanan saja, Anda sebenarnya tidak butuh ini.",[14,122,123],{},"Kodenya sepenuhnya open source, AGPL. Interaksi frontend-nya memberi penghormatan pada Sub-Store asli; yang asli berjalan dalam container dan mencakup ekosistem klien yang lebih luas. Milik saya adalah bentuk yang lebih ramping dan Cloudflare-native — lebih mudah dimodifikasi dan langsung di-deploy, bukan klon baris per baris.",[14,125,126],{},"Yang berminat bisa menjelajahi repo — README-nya cukup lengkap, tinggal ikuti langkah-langkah deploy-nya.",{"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","Gabungkan beberapa layanan proxy plus node Anda sendiri menjadi satu langganan tunggal, dengan aturan routing dikonfigurasi di sisi server — klien tinggal berlangganan.","md",null,"id",{},4,true,"\u002Fblog\u002Fsub-store-cloudflare",false,{"title":5,"description":136},"blog\u002Fsub-store-cloudflare.id",[148,149,150],"Cloudflare","Menembus blokir","Proyek open source","QpLtMwZfhe6oHX1mXYRwaSMc3TKo9jnCwtKnic6PCBo",[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","Setelah mencoba Pi Agent, OMP, Codex, dan ZCode, inilah mengapa saya akhirnya memilih OpenCode + OpenChamber","Rekap pemilihan Agent Harness: tiga kriteria — pengalaman GUI, vendor lock-in, dan kebebasan pengembangan lanjutan — menyingkirkan Pi Agent, OMP, Codex, dan ZCode, dan pada akhirnya jatuh pada inti OpenCode + antarmuka OpenChamber.","2026-08-06",6,[161,162],"AI Agent","Pemilihan alat",{"path":164,"title":165,"description":166,"date":167,"minRead":159,"tags":168},"\u002Fblog\u002Fcloudflare-broke-stack","Praktik terbaik indie dev 2026: tumpukan Cloudflare all-in-one untuk yang bokek","Tumpukan teknologi tanpa biaya untuk pengembang indie: Codex untuk menulis kode, GitHub untuk kontrol versi, Stripe untuk pembayaran, TanStack Start untuk frontend, Hono + Workers untuk backend, D1 untuk database, R2 untuk penyimpanan, KV untuk cache — semuanya berjalan di atas Cloudflare.","2026-06-15",[148,169,170],"Pengembangan indie","Tumpukan teknologi",{"path":172,"title":173,"description":174,"date":175,"minRead":159,"tags":176},"\u002Fblog\u002Fdeepseek-api-web-search","API DeepSeek punya pencarian web bawaan — manfaatkan cuma-cuma kemampuan pencarian resmi lewat Responses API","DeepSeek membangun pencarian web langsung di dalam API-nya: panggil deepseek-v4-flash lewat antarmuka Responses dan deklarasikan tool web_search. Tanpa integrasi mesin pencari pihak ketiga, tanpa perlu kunci API pencarian.","2026-08-05",[177,178,179],"DeepSeek","API","Alat AI",{"path":181,"title":182,"description":183,"date":175,"minRead":184,"tags":185},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash rilis stabil, ulasan langsung: murah, cepat, konteks 1M, pencarian bawaan","Beberapa hari mendalami rilis stabil DeepSeek V4 Flash: murah gila-gilaan, secepat kilat, konteks 1M, pencarian web bawaan resmi, sepenuhnya open source. Satu-satunya kelemahan adalah multimodalitas — tapi bisa ditambal dengan mengombinasikan model lain.",7,[177,186,179],"Ulasan model",{"path":188,"title":189,"description":190,"date":167,"minRead":191,"tags":192},"\u002Fblog\u002Ffree-cloudflare","Bagaimana pengguna gratis bisa memeras Cloudflare sampai kering — sejauh apa tier gratis sebenarnya bisa membawa Anda?","Tier gratis Cloudflare mampu menopang hampir seluruh infrastruktur internet pribadi: DNS, CDN, Pages, Workers, KV, D1, R2, email, Tunnel, AI Gateway, dan lain-lain.",8,[148,193,194],"Tier gratis","Deployment",{"path":196,"title":197,"description":198,"date":199,"minRead":191,"tags":200},"\u002Fblog\u002Fmodel-harness-decoupling","Harness pabrikan tidak selalu jadi jawaban terbaik: di era model terbuka, pilih model dan Harness secara terpisah","Pakai Claude ya langsung Claude Code? Di era model terbuka, insting itu perlu di-upgrade. Keunggulan pabrikan itu nyata, tapi melatih model yang bagus dan membangun Harness yang bagus adalah dua bidang rekayasa yang berbeda — artikel ini menjelaskan kenapa pilihan model dan Harness kini bisa dipisahkan, plus peta posisi lima Harness.","2026-09-09",[161,201,162],"Harness",{"path":203,"title":204,"description":205,"date":199,"minRead":191,"tags":206},"\u002Fblog\u002Fopencode-productive-stack","Stabil, Cepat, Produktif, Murah: Rekam Lengkap AI Coding Stack-ku","OpenCode + OpenChamber + dua langganan DeepSeek V4 Flash: 15 proyek jalan kode bersamaan dan kuota cuma bergerak sedikit. Konfigurasi lengkap kubongkar: pemangkasan context, memori berlapis, otomasi desktop, dan pelajaran “tetap pada pasangan aslinya”.",[207,208,209],"OpenCode","Pemrograman AI","Konfigurasi",{"path":211,"title":212,"description":213,"date":214,"minRead":215,"tags":216},"\u002Fblog\u002Fproduct-faxin-principle","Prinsip niat awal: mengapa pengembang indie harus belajar melepas","Mengapa Anda memulai? Untuk siapa Anda memulai? Masalah mana yang sebenarnya ingin Anda selesaikan? Ketajaman sebuah produk berasal dari apa yang berani Anda buang.","2026-06-20",10,[217,169],"Pemikiran produk",{"path":219,"title":220,"description":221,"date":214,"minRead":191,"tags":222},"\u002Fblog\u002Fproduct-pain-vs-itch","Jangan terbawa suasana saat pengguna bilang 'keren': pain point vs. itch point","Pujian lisan tidak bernilai sama sekali. Hanya ada satu standar keras untuk menilai permintaan: lihat apa yang bersedia dibayar oleh pengguna.",[217,223],"Penilaian permintaan",{"path":225,"title":226,"description":227,"date":158,"minRead":228,"tags":229},"\u002Fblog\u002Fqwen-vision-for-deepseek","Memberi DeepSeek kemampuan multimodalitas: pendekatan visi Qwen-3.7-Flash","DeepSeek V4 Flash tidak punya multimodalitas — bagaimana untuk pemahaman gambar? Setelah menyurvei pasar, opsi yang paling hemat biaya saat ini adalah Qwen-3.7-Flash: mengenali gambar nyaris tanpa biaya, dan dipadukan dengan V4 Flash ia menambal celah ini.",5,[177,230,186],"Multimodalitas",{"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 Sedang Membunuh Bandwidth Kognitifmu: Saatnya Filter “Geek” dalam AI Coding Dihancurkan","Belakangan ini segambreng AI Coding Agent berlomba meluncurkan TUI, mengembalikan interaksi ke paradigma terminal tahun 1980-an, lalu menyebutnya “immersive” dan “menghormati programmer”. Artikel ini membedah tiga mekanisme di balik cara TUI menurunkan bandwidth kognitif secara sistematis, dan mengapa Web UI justru jawaban yang benar.",[208,238,239],"Desain interaksi","Esai",{"path":241,"title":242,"description":243,"date":244,"minRead":159,"tags":245},"\u002Fblog\u002Fvalue-not-external","Mendebat apakah sesuatu itu berharga — itu sendiri tidak berharga","Nilai kita tidak ditentukan oleh siapa pun. Di era AI, bagaimana seharusnya manusia memahami dirinya?","2026-06-18",[246,247],"Pemikiran AI","Esai humanis",{"path":249,"title":250,"description":251,"date":252,"minRead":253,"tags":254},"\u002Fblog\u002Fx-growth-1000-followers","Naik 1000+ pengikut dalam sehari lebih — ini yang saya lakukan","Pada bulan Juni saya mengoperasikan akun X dengan serius dan memperoleh 1000+ pengikut dalam sehari lebih. Posting ini mencatat apa yang saya lakukan dan umpan balik yang saya dapatkan.","2026-06-16",12,[255,256],"Operasi X","Pertumbuhan konten",1789752318981]