Selamat datang! Panduan ini akan membantumu membangun situs statis yang super cepat, ringan, dan otomatis ter-deploy ke Cloudflare Pages menggunakan repository Layar Kosong.
Konsepnya: Kamu cukup fokus menulis di GitHub, dan biarkan GitHub Actions + Cloudflare Wrangler yang bekerja mengirimkan artikelmu ke internet secara instan.
Fitur Unggulan:
- Direct Deploy: Menggunakan Wrangler untuk pengiriman kilat tanpa branch perantara.
- Search Engine: Client-side JavaScript super ngebut menggunakan data dari
artikel.json& Cloudflare D1. - Clean URLs: Mendukung URL tanpa
.htmluntuk navigasi yang lebih elegan dan rapi.
Penasaran bagaimana "Layar Kosong" memproses draf kasarmu menjadi situs yang live? Berikut adalah alur kerja estafet otomatisnya:
graph TD
%% ==========================================
%% WORKFLOW 1: π PROSES ARTIKELX
%% ==========================================
subgraph WF1 ["π Workflow 1: Proses ArtikelX (Persiapan Awal)"]
direction TB
Start1(((Mulai))) --> Trig1{"Trigger:<br>Push (artikelx/*.html)<br>atau Manual"}
Trig1 --> Check1["1οΈβ£ Checkout Repo & Setup Bun.js"]
Check1 --> S_HTML[/"2οΈβ£ Edit Komponen HTML (Edit-Komponen-HTML.ts)"/]
S_HTML --> S_Clean[/"3οΈβ£ Sterilize Schema (clean-schema.ts)"/]
S_Clean --> S_Font[/"4οΈβ£ Ganti Aset ke Lokal (gantifontshighlight.ts)"/]
S_Font --> S_SEO[/"5οΈβ£ Injeksi SEO, Mirror, WebP (seo-fixer.ts)"/]
S_SEO --> Move["6οΈβ£ Pindah file HTML dari 'artikelx/' ke 'artikel/'"]
Move --> Commit1["7οΈβ£ Commit & Push Perubahan"]
end
%% ==========================================
%% WORKFLOW 2: β’οΈ BUILD AND GENERATE
%% ==========================================
subgraph WF2 ["β’οΈ Workflow 2: Build & Generate Site Files (Pabrik Produksi)"]
direction TB
Trig2{"Trigger:<br>WF1 Sukses<br>atau Manual (Toggles)"}
Trig2 --> Check2["1οΈβ£ Checkout Repo & Setup Bun.js"]
Check2 --> Build1{"Generate Data?"}
Build1 -- Ya --> S_Gen[/"2οΈβ£ generator-pro.ts<br>(JSON, XML, RSS)"/] --> Build2
Build1 -- Tidak --> Build2{"Generate Srcset?"}
S_Gen --> Build2
Build2 -- Ya --> S_Srcset[/"3οΈβ£ srcset-generator.ts"/] --> Build3
Build2 -- Tidak --> Build3{"Update Sitemap TXT?"}
S_Srcset --> Build3
Build3 -- Ya --> S_SiteTXT[/"4οΈβ£ koki.ts, bikin-sitemap-txt.ts, dll"/] --> Build4
Build3 -- Tidak --> Build4{"Inject Schema?"}
S_SiteTXT --> Build4
Build4 -- Ya --> S_Inject[/"5οΈβ£ inject-schema.ts"/] --> Build5
Build4 -- Tidak --> Build5{"Ubah ke Markdown?"}
S_Inject --> Build5
Build5 -- Ya --> S_MD[/"6οΈβ£ html-to-markdown.ts"/] --> Build6
Build5 -- Tidak --> Build6{"Minify File?"}
S_MD --> Build6
Build6 -- Ya --> S_Min[/"7οΈβ£ Minify HTML, JSON & XML"/] --> Commit2
Build6 -- Tidak --> Commit2["8οΈβ£ Commit, Pull --rebase & Push Data"]
end
%% ==========================================
%% WORKFLOW 3: π CLOUDFLARE DEPLOYER
%% ==========================================
subgraph WF3 ["π Workflow 3: Cloudflare Deployer (Peluncuran Publik)"]
direction TB
Trig3{"Trigger:<br>WF2 Sukses<br>atau Push (Paths: _redirects, _headers)"}
Trig3 --> Check3["1οΈβ£ Checkout Branch 'main' (ke folder 'source')"]
Check3 --> Setup3["2οΈβ£ Setup Node v24 & Bun.js"]
Setup3 --> Rsync["3οΈβ£ Bersihkan Direktori & Pindahkan File<br>(rsync ke 'deploy_dir')"]
Rsync --> Config["4οΈβ£ Injeksi Kredensial Cloudflare (D1 & KV)<br>ke /tmp/wrangler.toml"]
Config --> D1Build[/"5οΈβ£ Eksekusi build-d1.ts (Update Database D1)"/]
D1Build --> DeploySetup["6οΈβ£ Pindahkan 'wrangler.toml' dan folder 'functions'<br>ke root direktori"]
DeploySetup --> Cloudflare{"7οΈβ£ Deploy ke Cloudflare Pages<br>(bunx wrangler pages deploy)"}
Cloudflare -- "Berhasil" --> Success(((Layar Kosong<br>Go Live! π)))
Cloudflare -- "Gagal" --> Retry["β οΈ Coba Ulang (Maksimal 3x)"]
Retry --> Cloudflare
end
%% ==========================================
%% CONNECTIONS (ESTAFET)
%% ==========================================
Commit1 -- Memicu (workflow_run) --> Trig2
Commit2 -- Memicu (workflow_run) --> Trig3
Tertarik melihat jeroan kode di balik arsitektur di atas? Berikut adalah tautan langsung ke script penggeraknya:
1οΈβ£ Script Tahap Persiapan (Proses ArtikelX)
Edit-Komponen-HTML.tsβ Memodifikasi struktur dasar HTML agar sesuai standar SEO.clean-schema.tsβ Membersihkan tag atau schema markup yang tidak diperlukan.gantifontshighlight.tsβ Menarik aset third-party (font, CSS eksternal) menjadi aset lokal.seo-fixer.tsβ Injeksi meta SEO, mirroring gambar otomatis, dan konversi ke WebP.
2οΈβ£ Script Tahap Produksi (Build & Generate)
generator-pro.tsβ Otak utama pembuat fileartikel.json, XML, dan RSS Feed.srcset-generator.tsβ Mengoptimasi ukuran gambar untuk berbagai resolusi layar.- Sitemap & Redirect Bundle: Pasukan pembuat peta situs dan routing (
koki.ts,bikin-sitemap-txt.ts,generate_llms.ts,redirectmap.ts). inject-schema.tsβ Menyuntikkan Schema.org untuk rich snippet Google.html-to-markdown.tsβ Melakukan konversi format HTML menjadi Markdown.- Minifier: Kompresor file tingkat tinggi untuk load secepat kilat (
minify-html.ts,minify-jsonxml.ts).
3οΈβ£ Script Tahap Deploy (Cloudflare)
build-d1.tsβ Membangun indeks pencarian dan melemparnya ke Cloudflare D1 Database.
Langkah pertama: Pastikan Git dan Bun sudah terpasang karena kita akan menggunakan perintah bunx wrangler.
- Git: Download di sini (Atau gunakan
winget install Git.Gitdi Windows). - Bun: Panduan instalasi di sini (Runtime super cepat pengganti Node.js).
Unduh dan instal installer resmi dari git-scm.com. Tinggal "Next, Next, Finish"! Atau bisa juga gunakan winget:
winget install --id Git.Git -e --source wingetBuka terminal dan ketik perintah berikut (jika menggunakan Homebrew):
brew install git- Debian, Ubuntu, Linux Mint, MX Linux, Kali:
sudo apt update sudo apt install git
- Fedora, Red Hat (RHEL), CentOS, AlmaLinux:
sudo dnf install git # atau untuk versi lama: sudo yum install git - Arch Linux, CachyOS, Manjaro, EndeavourOS:
sudo pacman -S git
- NixOS:
Tambahkan
gitkeenvironment.systemPackagesdiconfiguration.nixatau jalankan:nix-env -i git
- OpenSUSE:
sudo zypper install git
- Fork Repository: Lakukan Fork pada repository ini ke akunmu. Cukup centang branch
mainsaja (kita sudah tidak butuh branchsite).
- Mendaftar di Cloudflare Pages:
- Login ke dashboard Cloudflare.
- Pilih Workers & Pages > Create application > Pages > Upload assets.
- Beri nama proyekmu (misal:
blog-saya).
- Ambil API Token:
- Buka My Profile > API Tokens > Create Token.
- Gunakan template "Edit Cloudflare Workers" atau beri akses untuk Account: Cloudflare Pages.
- Simpan Account ID dan API Token kamu.
Sekarang saatnya bersih-bersih dan mulai menyiapkan jalurnya.
Hapus semua file contoh bawaan agar situsmu bersih:
- Hapus semua isi di dalam folder
artikel/. - Hapus seluruh gambar di dalam folder
img/.
Agar GitHub bisa mengirim file ke Cloudflare secara otomatis, masukkan kredensialmu ke repo hasil fork:
- Buka tab Settings > Secrets and variables > Actions pada repository GitHub-mu.
- Klik New repository secret dan tambahkan dua rahasia ini:
CF_API_TOKEN: (Isi dengan token API Cloudflare-mu).CF_ACCOUNT_ID: (Isi dengan ID akun Cloudflare-mu).
Di sinilah keajaiban terjadi. Kamu tidak perlu repot menaruh file langsung di folder publik, cukup ikuti alur "dapur" ini:
- Buat file HTML artikel barumu.
- Masukkan file tersebut ke dalam folder
artikelx/(perhatikan akhiran 'x'). - Lakukan
git commitdangit pushke repositori. - Biarkan Action Bekerja: Sistem otomatis (workflow) akan mendeteksi file baru, memprosesnya (injeksi SEO, webp, sitemap, dll), dan memindahkannya ke etalase utama yang siap tayang!
π Selesai! Halaman pertamamu sudah terbit ke seluruh penjuru dunia. Ulangi langkah ini untuk artikel-artikel berikutnya.
Setelah uji coba sukses, saatnya mengklaim situs ini menjadi milikmu sepenuhnya. Jangan lupa ubah data-data berikut agar SEO dan identitas situsmu relevan.
wrangler.toml: Gantiname = "layarkosong"menjadi nama proyek Cloudflare-mu.artikel.json: Ini adalah nyawa mesin pencari blogmu, biarkan sistem yang mengupdatenya secara otomatis.- Folder
ext/: Sesuaikan URL dan nama domain pada seluruh file konfigurasi di dalam folder ini.
Edit dan sesuaikan informasi di file-file berikut yang ada di halaman utama (root):
index.html- Halaman utama.search.html- Halaman pencarian.404.html- Halaman untuk tautan URL yang tidak ditemukan.BingSiteAuth.xml- Verifikasi Bing Webmaster.CODE_OF_CONDUCT.md- Kode etik repository.data-deletion-form.html&data-deletion.html- Halaman terkait privasi & penghapusan data.disclaimer.html&disclaimer.md- Disclaimer situs.favicon.ico/favicon.png/favicon.svg- Icon situs.feed.html- Halaman RSS Feed Terbaru.img.html- Galeri gambar.robots.txt- Instruksi untuk crawler mesin pencari.sitemap.html- Daftar Isi / Peta Situs.thumbnail.jpg/thumbnail.png/thumbnail.webp- Thumbnail default untuk social share.
- Ganti semua URL dari
dalam.web.idke domain kamu. - Update informasi kontak dan metadata.
- Sesuaikan warna, logo, dan branding.
- Periksa semua link internal.
- Verifikasi
sitemapdanrobots.txt.
Jika kamu punya domain sendiri dan tidak ingin menggunakan bawaan Cloudflare Pages (*.pages.dev):
- Tambahkan file
CNAMEdi root repository. - Isi dengan nama domain kamu (contoh:
example.com). - Atur DNS di provider domain kamu:
- Tambahkan record A ke IP GitHub Pages (jika pakai Pages).
- Atau cukup atur langsung via dashboard Cloudflare Pages > Custom Domains untuk integrasi paling mulus.
Jika workflow macet atau bingung set-up Cloudflare, langsung saja meluncur ke repository aslinya.
Silakan cek file Lisensi di repository untuk informasi lisensi.
Terima kasih untuk semua yang telah berkontribusi pada halaman ini. π
β‘ Klik untuk Status Teknis βοΈ
Otomatisasi & CI/CD:
Stack:
Format Data:
Sosial Media:
Dukungan AI:
docker pull ghcr.io/frijal/layarkosong:latest

