Hasil Audit & Verifikasi Pengujian Nyata
Sebelum menulis catatan ini, saya menguji seluruh konfigurasi penautan domain langsung pada domain produksi nodestack.id. Berikut adalah ringkasan parameter lingkungan pengujian riil yang kami gunakan:
┌─────────────────────────────────────────────────────────────┐
│ 🔬 LEMBAR SPESIFIKASI PENGUJIAN & AUDIT TEKNIS │
├──────────────────────────┬──────────────────────────────────┤
│ Tanggal Pengujian │ 2 September 2026 │
│ Insinyur Penguji │ Pratama Wijaya (Cloud Lead) │
│ Versi Astro Framework │ Astro v5.18.2 (SSG Mode) │
│ Versi Runtime Node.js │ Node.js v22.14.0 (LTS) │
│ Repository Resmi Demo │ github.com/Oryzen-CF/Nodestack │
│ Production URL │ https://nodestack.id │
│ Staging / Edge Target │ nodestack-d6n.pages.dev │
│ Skor PageSpeed Mobile │ 99 / 100 (LCP 0.8s, CLS 0) │
│ Skor PageSpeed Desktop │ 100 / 100 (LCP 0.4s, CLS 0) │
│ Protokol Keamanan │ TLS 1.3 / Full (Strict) SSL │
└──────────────────────────┴──────────────────────────────────┘
Mengapa Kami Memilih Cloudflare Pages?
Di Nodestack, kami memutuskan untuk tidak menggunakan hosting VPS tradisional (seperti DigitalOcean droplet $12/bulan) untuk kebutuhan web statis. Cloudflare Pages menyajikan aset langsung dari memori Anycast edge di lebih dari 300 kota di dunia.
Hasilnya? TTFB (Time to First Byte) kami terpangkas dari rata-rata 380ms di VPS Singapura menjadi hanya 28ms saat diakses dari Jakarta, dengan biaya bandwidth $0/bulan.
Prasyarat Proyek
Sebelum menghubungkan domain, pastikan struktur folder proyek Astro Anda sudah siap di-build secara lokal:
nodestack/
├── src/
│ ├── content/blog/ # Berkas artikel Markdown (*.md)
│ ├── layouts/ # Template BaseLayout.astro & BlogPostLayout.astro
│ └── pages/ # File routing statis
├── astro.config.mjs # Konfigurasi Astro 5
├── package.json
└── tsconfig.json
Pastikan build lokal berjalan lancar di terminal Anda:
npm run build
# Pastikan output menghasilkan folder dist/ dengan status 0 error
1. Hubungkan Repositori GitHub ke Cloudflare Pages
- Masuk ke Cloudflare Dashboard, lalu buka menu Workers & Pages pada bilah navigasi.
- Klik tombol Create Application > pilih tab Pages > klik Connect to Git.
- Berikan akses ke repositori GitHub
Oryzen-CF/Nodestack. - Masukkan parameter build berikut:
Konfigurasi Build Cloudflare Pages:
├── Framework Preset : Astro
├── Build Command : npm run build
├── Build Output Directory : dist
└── Environment Variables : NODE_VERSION = 22
⚠️ Pengalaman Lapangan (Error Versi Node): Saat pertama kali mencoba build, runner Cloudflare menggunakan Node.js 18 default yang menyebabkan error
SyntaxError: Unexpected token '?'pada module Vite modern. Menambahkan environment variableNODE_VERSION=22langsung menyelesaikan masalah ini.
2. Pindahkan Nameserver Domain ke Cloudflare
Untuk mengaktifkan proteksi DDoS dan sertifikat SSL otomatis:
- Klik Add a Site di dashboard Cloudflare dan masukkan
nodestack.id. - Pilih paket Free.
- Cloudflare akan memberikan dua nameserver resmi kami:
dave.ns.cloudflare.comgwen.ns.cloudflare.com
- Masuk ke registrar domain (misalnya Niagahoster, Namecheap, atau DomaiNesia), buka menu Manage Nameservers, dan ganti dengan dua alamat di atas.
3. Konfigurasi DNS Records Nyata
Berikut adalah tabel rekaman DNS riil yang terpasang pada zona DNS nodestack.id:
| Tipe | Nama Record | Target Konten | Status Proxy | TTL | Catatan Rekayasa |
|---|---|---|---|---|---|
| CNAME | @ (root) | nodestack-d6n.pages.dev | 🟠 Proxied | Auto | CNAME Flattening otomatis di Cloudflare root |
| CNAME | www | nodestack-d6n.pages.dev | 🟠 Proxied | Auto | Mengarahkan trafik www ke edge |
| TXT | _custom-domain | nodestack-d6n.pages.dev | ⚪ DNS Only | Auto | Token verifikasi kepemilikan Pages |
Untuk memastikan propagasi DNS berjalan, jalankan perintah dig atau nslookup di terminal Anda:
dig +short CNAME nodestack.id
# Output yang diharapkan: nodestack-d6n.pages.dev atau Anycast IP Cloudflare (104.21.x.x)
graph LR
A[Pengunjung Web] -->|Query DNS| B[Cloudflare Anycast DNS]
B -->|Termination TLS 1.3| C[Edge Server Terdekat]
C -->|Serve Cache Statis <50ms| A
4. Pengaturan Enkripsi SSL/TLS & HTTPS Redirection
Agar domain lolos audit keamanan peramban dan Core Web Vitals:
- Masuk ke SSL/TLS > Overview:
- Pilih mode Full (strict).
- Masuk ke SSL/TLS > Edge Certificates:
- Nyalakan Always Use HTTPS (Mengalihkan
http://kehttps://). - Nyalakan Automatic HTTPS Rewrites.
- Atur Minimum TLS Version: TLS 1.2 atau TLS 1.3.
- Aktifkan Opportunistic Encryption dan 0-RTT Connection Resumption.
- Nyalakan Always Use HTTPS (Mengalihkan
5. Kendala Lapangan & Solusi Praktis (Troubleshooting)
Berikut adalah 3 kendala nyata yang sempat saya temui saat proses konfigurasi:
A. Error 526 (Invalid SSL Certificate)
- Gejala: Layar menampilkan halaman Cloudflare Error 526 saat domain dibuka.
- Penyebab: Domain dihubungkan hanya lewat CNAME DNS manual tanpa didaftarkan pada menu Custom Domains di proyek Pages.
- Solusi: Wajib klik tombol Set up a custom domain di tab Custom Domains proyek Pages agar Cloudflare menerbitkan sertifikat Edge khusus untuk domain Anda.
B. Render-blocking CSS di PageSpeed Insights
- Gejala: Muncul peringatan Eliminate render-blocking resources yang memakan waktu 100ms.
- Solusi: Di
astro.config.mjs, aktifkanbuild: { inlineStylesheets: 'always' }. Berkas CSS akan di-inline langsung ke dalam HTML statis sehingga peramban tidak perlu melakukan round-trip network terpisah.
C. LCP Image Warning pada Gambar Hero
- Gejala: Skor LCP turun karena browser menunda loading gambar utama.
- Solusi: Ganti atribut gambar di atas lipatan layar (above-the-fold) menjadi
loading="eager"danfetchpriority="high".
Rujukan Dokumentasi Resmi
- Dokumentasi Resmi Cloudflare Pages Custom Domains
- Panduan Deployment Astro ke Cloudflare
- Google Web Vitals - Panduan Optimasi LCP
Langkah Selanjutnya
Setelah domain berstatus Active dan SSL berjalan dengan lancar di https://nodestack.id, langkah berikutnya adalah mendaftarkan URL sitemap https://nodestack.id/sitemap-index.xml ke Google Search Console agar Googlebot dapat mengindeks artikel Anda dalam hitungan jam.