anmaru.my.id

Pasang domain .my.id baru sampai hidup di Cloudflare + Caddy

16 Oktober 2026 · catatan operasional

Domain murah bukan bagian yang sulit. Yang bikin repot justru tiga lapis yang bergerak dengan kecepatan berbeda: panel registrar, registry PANDI, dan Cloudflare.

1. Nameserver: cuma dua yang perlu diisi

Cloudflare memberi tepat dua nameserver. Di panel registrar (Indowebsite) ada empat kolom NS, tapi NS 3 dan NS 4 wajib dikosongkan. Semua NS yang tersimpan ikut dipublikasikan ke registry; kalau NS3/NS4 masih menunjuk ke DNS lama, resolusi jadi naik-turun karena separuh resolver bertanya ke server yang recordnya kosong.

2. Panel sudah "tersimpan" bukan berarti registry sudah tahu

Ini bagian yang paling menipu. Setelah menyimpan NS baru, keadaan yang muncul justru SERVFAIL, bukan NXDOMAIN:

# apa yang MASIH dipublikasikan registry
dig @b.dns.id anmaru.my.id NS +norec   # AUTHORITY: dns1-4.indowebsite.net  <-- belum berubah
dig +short NS anmaru.my.id @1.1.1.1    # kosong / SERVFAIL
dig anmaru.my.id @dns1.indowebsite.net # REFUSED

Artinya DNS lama sudah melepas zona, tapi registry belum dipindah, dan kondisi ini disebut lame delegation. Tidak ada yang bisa diperbaiki dari sisi kita; ini jeda dorongan dari reseller ke PANDI. Di kasus ini perlu < 1 jam. Kalau lewat 24 jam, hubungi support reseller dan sebutkan persis: "registry masih mendelegasikan ke dns1 sampai dns4.indowebsite.net".

Sinyal yang bisa dipercaya: status zona Cloudflare. Ia baru berubah jadi active setelah delegasi terlihat. Zona pending tetap menjawab di nameserver Cloudflare, jadi "NS Cloudflare jawab" bukan bukti domain sudah hidup.

3. Record + Caddy

# Cloudflare: A apex -> IP VPS, proxied
POST /client/v4/zones/$ZONE/dns_records
{"type":"A","name":"anmaru.my.id","content":"94.237.79.14","proxied":true,"ttl":1}

# Caddyfile (origin hanya :80, auto_https off)
http://anmaru.my.id, http://www.anmaru.my.id {
  root * /home/ubuntu/www-anmaru
  file_server
}

Pola di server ini: Cloudflare yang menangani TLS, jadi setiap situs ditulis dengan prefiks http:// supaya Caddy mengikat port 80 saja.

4. Jebakan yang bikin 20 menit hilang: HTTP 521

Percobaan pertama balas 521 dari Cloudflare, padahal lokal sudah 200:

curl -H "Host: anmaru.my.id" http://127.0.0.1/ -o /dev/null -w '%{http_code}\n'  # 200
curl -s https://anmaru.my.id -o /dev/null -w '%{http_code}\n'                      # 521

Penyebabnya: zona Cloudflare baru default ke SSL mode full, artinya Cloudflare menghubungi origin di port 443, sedangkan Caddy di sini hanya mendengar di :80. Zona lama tidak kena karena mode-nya flexible. Obatnya satu panggilan API:

PATCH /client/v4/zones/$NEW_ZONE/settings/ssl   {"value":"flexible"}

Setelah itu 200 di apex maupun www. Pelajaran yang layak diingat: untuk origin HTTP-only, setiap zona Cloudflare baru harus disamakan SSL mode-nya sebelum mencari-cari masalah firewall atau tunnel.

Ringkasnya