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:
- Awalnya hosting web di GitHub Pages
- Migrasi hosting dari GitHub Pages ke Netlify
- Migrasi hosting dari Netlify ke GitHub Pages lagi
- Pindah DNS dari Hostry ke Cloudflare
- Pindah Nameserver (NS) dari NS Hostry ke NS Cloudflare (via nic.eu.org)
- Mengatasi error
NotServedByPagesErroryang 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.comtanpa 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
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.ioataunamaproject.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
- Buka repo GitHub-mu
- Buat file baru bernama
CNAME(tanpa ekstensi) di root folder - Isi dengan satu baris:
namadomain.com - 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
- Buka repo → Settings → Pages
- Di bagian "Custom domain", masukkan domain-mu
- 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:
| Type | Name | Value |
|---|---|---|
| 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:
| Type | Name | Value |
|---|---|---|
| CNAME | www | username.github.io |
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
| Penyebab | Penjelasan |
|---|---|
| DNS Record Bertentangan | Ada record tambahan (ALIAS, ANAME, AAAA) yang juga menunjuk ke root domain |
| Proxy Cloudflare Aktif | Ikon awan berwarna oranye (proxied) menghalangi validasi GitHub |
| Provisioning Job Macet | Sistem GitHub "keingetan" dengan konfigurasi domain lama |
| Propagasi DNS Belum Selesai | Server GitHub masih melihat data DNS lama |
4.3. Solusi Lengkap (Step-by-Step)
Langkah 1: Periksa Kembali DNS di Cloudflare
- Pastikan hanya ada 4 A record untuk root domain (
@) - Hapus semua record ganda (ALIAS, ANAME, AAAA) yang menunjuk ke
@ - Pastikan semua record ke GitHub dalam mode "DNS only"
Langkah 2: Reset Custom Domain di GitHub Pages
- Buka repo → Settings → Pages
- Hapus domain di "Custom domain" → klik Save
- Tunggu 5-10 menit (biarkan kosong)
- Tambahkan kembali domain → klik Save
Langkah 3: Periksa dan Perbaiki File CNAME
- Buka file
CNAMEdi root repo - Pastikan isinya hanya
namadomain.com(tanpa spasi) - Pastikan ada newline di akhir file
Langkah 4: Trigger Build Ulang
- Edit file
index.html(tambahkan komentar seperti<!-- trigger rebuild -->) - Commit dan push ke branch utama
- Tunggu proses build selesai di tab Actions
Langkah 5: Bersihkan Cache Cloudflare
Jika pakai Cloudflare:
- Dashboard Cloudflare → Caching → Configuration
- Klik Purge Everything
- Tunggu 5-10 menit
Langkah 6: Pantau Status
Di halaman Settings → Pages, status akan berubah:
| Status | Arti |
|---|---|
| 1 of 3 Authorization verification pending | Proses verifikasi dimulai |
| 2 of 3 Authorization verified | Domain sudah divalidasi |
| 3 of 3 Certificate issued | Sertifikat 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:
- Pindah hosting: Netlify → GitHub Pages
- Pindah DNS: Hostry → Cloudflare
- Pindah NS: NS Hostry → NS Cloudflare (via nic.eu.org)
5.2. Tantangan
| Tantangan | Dampak |
|---|---|
| Propagasi DNS lebih lama | Hingga 24-48 jam |
| Sistem GitHub dan Cloudflare butuh sinkronisasi | HTTPS macet |
Error NotServedByPagesError muncul | Membingungkan karena DNS sudah benar |
5.3. Tips Menghadapi Migrasi Sekaligus
- Lakukan perubahan DNS terlebih dahulu, tunggu propagasi 24 jam
- Setelah DNS stabil, baru pindahkan hosting
- Jika HTTPS macet, jangan panik → gunakan solusi di atas
- 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.comHTTP/1.1 200 OKContent-Type: text/html
6.3. Cara Cek Sertifikat SSL di Browser
- Buka
https://namadomain.comdi browser - Klik ikon gembok di address bar
- Klik "Certificate" atau "Connection is secure"
- Pastikan penerbit: "Let's Encrypt"
6.4. Alat Bantu Online
| Alat | Fungsi |
|---|---|
| DNS Checker | Cek propagasi DNS global |
| SSL Labs | Cek status sertifikat secara detail |
| What's My DNS | Cek status DNS dari berbagai lokasi |
7. Kesimpulan
Ringkasan Solusi
Jika HTTPS tidak mau aktif di GitHub Pages:
- Periksa DNS (pastikan 4 A record ke IP GitHub)
- Matikan proxy Cloudflare (DNS only)
- Reset custom domain di Settings → Pages
- Trigger build ulang dengan edit file
- Tunggu propagasi (15-30 menit)
Pelajaran Penting
| Pelajaran | Penjelasan |
|---|---|
Error NotServedByPagesError bisa false positive | Situs tetap bisa diakses dengan HTTPS meskipun error muncul |
| Cloudflare proxy harus dimatikan | Untuk record yang mengarah ke GitHub Pages |
| Propagasi DNS butuh waktu | Jangan panik jika tidak langsung berhasil |
| File CNAME harus bersih | Hanya 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:
- Kesabaran adalah kunci - DNS butuh waktu untuk propagasi
- Detail kecil penting - Newline di file CNAME, mode DNS only, dll.
- Error di dashboard tidak selalu fatal - Selalu cek dengan
curluntuk memastikan
Semoga artikel ini membantu kamu yang mengalami masalah serupa. Jika ada pertanyaan, jangan ragu untuk bertanya di kolom komentar!
9. Referensi
- GitHub Pages Documentation - Custom Domains
- GitHub Pages Documentation - Troubleshooting
- Cloudflare DNS Documentation
- Let's Encrypt Documentation
Artikel ini ditulis berdasarkan pengalaman pribadi pada Juli 2026. Semua solusi telah diuji dan terbukti berhasil.
Selamat mencoba, dan semoga berhasil! 🚀