Cara Custom Domain GitHub Pages, Lengkap Beserta Solusi Error

Cara Custom Domain GitHub Pages, Lengkap Beserta Solusi Error

COND.MY.ID - Pernahkah kamu mengalami situasi di mana website sudah bisa diakses melalui HTTP, tapi HTTPS tidak mau aktif? Atau mungkin kamu migrasi hosting dan DNS sekaligus, lalu bingung harus mulai dari mana?

Admin baru saja melalui pengalaman itu. Artikel ini adalah catatan perjalanan admin dalam:

  1. Awalnya hosting web di GitHub Pages
  2. Migrasi hosting dari GitHub Pages ke Netlify
  3. Migrasi hosting dari Netlify ke GitHub Pages lagi
  4. Pindah DNS dari Hostry ke Cloudflare
  5. Pindah Nameserver (NS) dari NS Hostry ke NS Cloudflare (via nic.eu.org)
  6. Mengatasi error NotServedByPagesError yang membuat HTTPS tidak mau aktif

Pengalaman ini admin tulis agar kamu tidak perlu melalui trial-and-error yang sama. Semua solusi di sini sudah terbukti berhasil.


2. Dua Strategi Kelola Custom Domain di GitHub Pages

Sebelum masuk ke teknis, penting untuk memahami dua pendekatan utama dalam mengelola custom domain di GitHub Pages.

2.1. Strategi A: Terpusat (User Site username.github.io)

Cara kerja: Kamu hanya memiliki satu repo utama bernama username.github.io sebagai "induk". Semua project lain diletakkan sebagai subdirektori atau repo terpisah yang tetap terhubung.

Kelebihan:

  • Setup DNS cukup sekali
  • Semua Project Site tanpa custom domain otomatis bisa diakses di domain-utama.com/nama-repo
  • Cocok untuk portofolio atau landing page perusahaan

Kekurangan:

  • Hanya 1 custom domain untuk semua (kecuali kamu set custom domain di masing-masing Project Site)
  • Setiap Project Site tetap bisa punya custom domain sendiri jika diinginkan

2.2. Strategi B: Independen (Project Site namaproject.github.io)

Cara kerja: Setiap project punya repo bernama namaproject.github.io dengan custom domain masing-masing.

Kelebihan:

  • Setiap project punya identitas domain terpisah
  • Bisa diakses melalui domain-project.com tanpa terikat dengan User Site
  • Cocok untuk project yang merupakan brand berbeda

Kekurangan:

  • Harus setup DNS dan file CNAME untuk setiap project
  • Pengelolaan lebih kompleks jika project banyak
Catatan Penting
Meskipun menggunakan pola namaproject.github.io, secara default situs ini tetap bisa diakses melalui username.github.io/nama-repo (bukan username.github.io/namaproject.github.io). Namun, jika kamu sudah menyetel custom domain di Project Site tersebut, maka ia akan menjadi independen dan tidak lagi terikat dengan User Site.

Kesimpulan: Pilih Strategi A jika semua project-mu berada di bawah satu brand. Pilih Strategi B jika setiap project adalah entitas terpisah yang butuh domain sendiri.


3. Panduan Setup Custom Domain di GitHub Pages

3.1. Persiapan

Sebelum memulai, pastikan kamu memiliki:

  • Repository GitHub (bisa username.github.io atau namaproject.github.io)
  • Custom domain (contoh: condrock.eu.org)
  • Akun di penyedia DNS (Cloudflare, Hostry, Niagahoster, dll)

3.2. Langkah 1: Tambahkan File CNAME di Repository

  1. Buka repo GitHub-mu
  2. Buat file baru bernama CNAME (tanpa ekstensi) di root folder
  3. Isi dengan satu baris: namadomain.com
  4. Penting: Pastikan ada newline di akhir file (biasanya otomatis jika buat via web GitHub)
condrock.eu.org

3.3. Langkah 2: Setting Custom Domain di GitHub Pages

  1. Buka repo → Settings → Pages
  2. Di bagian "Custom domain", masukkan domain-mu
  3. Klik Save

3.4. Langkah 3: Setting DNS di Penyedia DNS

Setting DNS berbeda tergantung jenis domain:

Untuk root domain (condrock.eu.org):
Tambahkan 4 A record yang mengarah ke IP GitHub Pages:

TypeNameValue
A@185.199.108.153
A@185.199.109.153
A@185.199.110.153
A@185.199.111.153

Untuk subdomain (www.condrock.eu.org):
Tambahkan 1 CNAME record:

TypeNameValue
CNAMEwwwusername.github.io
Catatan Penting untuk Pengguna Cloudflare:
Pastikan semua record yang mengarah ke GitHub Pages berada dalam mode "DNS only" (ikon awan abu-abu), BUKAN "Proxied" (ikon awan oranye). Proxy Cloudflare akan menghalangi proses validasi dan penerbitan sertifikat SSL.

3.5. Langkah 4: Tunggu Propagasi DNS

Propagasi DNS bisa memakan waktu:

  • 15-30 menit dalam kondisi normal
  • Hingga 24-48 jam jika ada perubahan Nameserver

Gunakan alat seperti whatsmydns.net untuk memantau propagasi DNS dari berbagai lokasi.


4. Masalah Umum: Error NotServedByPagesError dan HTTPS Tidak Aktif

4.1. Apa Itu Error Ini?

Pesan error yang muncul di dashboard GitHub Pages:

Both condrock.eu.org and its alternate name are improperly configured
Domain does not resolve to the GitHub Pages server.
For more information, see documentation (NotServedByPagesError).

Gejala: HTTP bisa diakses, tapi HTTPS tidak aktif. Sertifikat SSL tidak terbit.

4.2. Penyebab Umum

PenyebabPenjelasan
DNS Record BertentanganAda record tambahan (ALIAS, ANAME, AAAA) yang juga menunjuk ke root domain
Proxy Cloudflare AktifIkon awan berwarna oranye (proxied) menghalangi validasi GitHub
Provisioning Job MacetSistem GitHub "keingetan" dengan konfigurasi domain lama
Propagasi DNS Belum SelesaiServer GitHub masih melihat data DNS lama

4.3. Solusi Lengkap (Step-by-Step)

Langkah 1: Periksa Kembali DNS di Cloudflare

  1. Pastikan hanya ada 4 A record untuk root domain (@)
  2. Hapus semua record ganda (ALIAS, ANAME, AAAA) yang menunjuk ke @
  3. Pastikan semua record ke GitHub dalam mode "DNS only"

Langkah 2: Reset Custom Domain di GitHub Pages

  1. Buka repo → Settings → Pages
  2. Hapus domain di "Custom domain" → klik Save
  3. Tunggu 5-10 menit (biarkan kosong)
  4. Tambahkan kembali domain → klik Save

Langkah 3: Periksa dan Perbaiki File CNAME

  1. Buka file CNAME di root repo
  2. Pastikan isinya hanya namadomain.com (tanpa spasi)
  3. Pastikan ada newline di akhir file

Langkah 4: Trigger Build Ulang

  1. Edit file index.html (tambahkan komentar seperti <!-- trigger rebuild -->)
  2. Commit dan push ke branch utama
  3. Tunggu proses build selesai di tab Actions

Langkah 5: Bersihkan Cache Cloudflare

Jika pakai Cloudflare:

  1. Dashboard Cloudflare → Caching → Configuration
  2. Klik Purge Everything
  3. Tunggu 5-10 menit

Langkah 6: Pantau Status

Di halaman Settings → Pages, status akan berubah:

StatusArti
1 of 3 Authorization verification pendingProses verifikasi dimulai
2 of 3 Authorization verifiedDomain sudah divalidasi
3 of 3 Certificate issuedSertifikat sudah terbit ✅

Estimasi waktu: 15-30 menit (bisa sampai 1-2 jam jika ada antrian).


5. Kasus Khusus: Migrasi dengan Banyak Perubahan Sekaligus

5.1. Skenario yang Admin Alami

Admin melakukan 3 perubahan besar sekaligus:

  1. Pindah hosting: Netlify → GitHub Pages
  2. Pindah DNS: Hostry → Cloudflare
  3. Pindah NS: NS Hostry → NS Cloudflare (via nic.eu.org)

5.2. Tantangan

TantanganDampak
Propagasi DNS lebih lamaHingga 24-48 jam
Sistem GitHub dan Cloudflare butuh sinkronisasiHTTPS macet
Error NotServedByPagesError munculMembingungkan karena DNS sudah benar

5.3. Tips Menghadapi Migrasi Sekaligus

  1. Lakukan perubahan DNS terlebih dahulu, tunggu propagasi 24 jam
  2. Setelah DNS stabil, baru pindahkan hosting
  3. Jika HTTPS macet, jangan panik → gunakan solusi di atas
  4. Siapkan waktu 24-48 jam untuk semua proses selesai

6. Debugging dan Verifikasi

6.1. Cara Cek DNS dengan dig

dig condrock.eu.org +noall +answer

Hasil yang benar: menampilkan 4 IP GitHub:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

6.2. Cara Cek HTTP/HTTPS dengan curl

# Cek HTTP
curl -I http://condrock.eu.org

# Cek HTTPS
curl -I https://condrock.eu.org

Hasil yang diharapkan:

  • Server: GitHub.com
  • HTTP/1.1 200 OK
  • Content-Type: text/html

6.3. Cara Cek Sertifikat SSL di Browser

  1. Buka https://namadomain.com di browser
  2. Klik ikon gembok di address bar
  3. Klik "Certificate" atau "Connection is secure"
  4. Pastikan penerbit: "Let's Encrypt"

6.4. Alat Bantu Online

AlatFungsi
DNS CheckerCek propagasi DNS global
SSL LabsCek status sertifikat secara detail
What's My DNSCek status DNS dari berbagai lokasi

7. Kesimpulan

Ringkasan Solusi

Jika HTTPS tidak mau aktif di GitHub Pages:

  1. Periksa DNS (pastikan 4 A record ke IP GitHub)
  2. Matikan proxy Cloudflare (DNS only)
  3. Reset custom domain di Settings → Pages
  4. Trigger build ulang dengan edit file
  5. Tunggu propagasi (15-30 menit)

Pelajaran Penting

PelajaranPenjelasan
Error NotServedByPagesError bisa false positiveSitus tetap bisa diakses dengan HTTPS meskipun error muncul
Cloudflare proxy harus dimatikanUntuk record yang mengarah ke GitHub Pages
Propagasi DNS butuh waktuJangan panik jika tidak langsung berhasil
File CNAME harus bersihHanya berisi domain, tanpa spasi, dengan newline di akhir

Rekomendasi Pengelolaan Banyak Project

Untuk kamu yang punya banyak project dengan domain berbeda:

Gunakan pola namaproject.github.io untuk setiap project. Ini memudahkan:

  • Setting DNS (cukup copy-paste konfigurasi)
  • Identifikasi project (nama project = nama repo)
  • Pengelolaan (setiap project independen)

8. Catatan Akhir

Setelah melalui trial-and-error yang cukup panjang, admin berhasil membuat semua project berjalan dengan HTTPS aktif. Pengalaman ini mengajarkan admin bahwa:

  1. Kesabaran adalah kunci - DNS butuh waktu untuk propagasi
  2. Detail kecil penting - Newline di file CNAME, mode DNS only, dll.
  3. Error di dashboard tidak selalu fatal - Selalu cek dengan curl untuk memastikan

Semoga artikel ini membantu kamu yang mengalami masalah serupa. Jika ada pertanyaan, jangan ragu untuk bertanya di kolom komentar!


9. Referensi


Artikel ini ditulis berdasarkan pengalaman pribadi pada Juli 2026. Semua solusi telah diuji dan terbukti berhasil.

Selamat mencoba, dan semoga berhasil! 🚀