Fix GitHub App Cloudflare Pages Error 404

Root cause & solusi permanen tanpa GitHub App

Kategori
Teknis / DevOps
Waktu Baca
5 Menit
Tingkat
Menengah

Beberapa waktu lalu, saya mengalami masalah yang membuat frustrasi: Cloudflare Pages tiba-tiba gagal deploy dengan error Repository not found. Semua deployments setelahnya berstatus "No deployment available".

Padahal sebelumnya berjalan normal — commit ke GitHub, auto-deploy ke Cloudflare Pages. Saya cek log: "fatal: repository 'https://github.com/...' not found". Repository jelas ada, SSH masih berfungsi. Ada apa?

1. Masalah: Error 404 GitHub App Cloudflare

Cloudflare Pages menggunakan GitHub App untuk meng-clone repository saat deploy. App ini terinstall di akun GitHub Anda dengan izin akses ke repo tertentu. Masalah terjadi ketika:

📌 Gejala Khas

2. Root Cause

Akar masalahnya ada di state management Cloudflare. Saat Anda pertama kali menghubungkan GitHub ke CF Pages, Cloudflare menyimpan installation_id dari GitHub App. Ketika App di-uninstall (karena expired atau revoke), ID itu menjadi tidak valid — tapi Cloudflare tetap menyimpannya.

Akibatnya, setiap kali Anda klik "Configure installation", Cloudflare mengirim request ke GitHub dengan ID yang sudah mati, dan GitHub menjawab 404. Bahkan setelah uninstall manual dari GitHub sekalipun, state di Cloudflare tetap nyangkut.

Memang ini bug di sisi Cloudflare — mereka seharusnya melakukan refresh token. Tapi yang penting bagi kita: ada solusi yang lebih baik.

3. Solusi #1: GitHub Actions + Wrangler (Rekomendasi)

Solusi paling stabil: Skip GitHub App sepenuhnya. Gunakan GitHub Actions yang memanggil Wrangler CLI untuk deploy.

Keuntungannya:

Langkah-langkah:

1. Buat CF API Token

Masuk ke Cloudflare Dashboard → My Profile → API Tokens → Create Token. Pilih "Create Custom Token":

Copy token saat muncul pertama kali — hanya keluar sekali.

2. Simpan Token di GitHub Secrets

Buka repo di GitHub → Settings → Secrets and variables → Actions → New repository secret:

3. Buat Workflow File

Buat file .github/workflows/deploy.yml di root repo:

name: Deploy to Cloudflare Pages

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to Cloudflare Pages
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          accountId: <CF_ACCOUNT_ID>
          command: pages deploy . --project-name=<PROJECT_NAME> --branch=main

Ganti <CF_ACCOUNT_ID> dengan Account ID dari Cloudflare Dashboard (ada di URL dashboard atau di ~/.wrangler/cache/wrangler-account.json). Ganti <PROJECT_NAME> dengan nama project Pages Anda.

4. Push & Deploy

Commit workflow file dan push ke GitHub. Buka tab Actions di repo Anda untuk melihat progress deployment. Selesai!

4. Solusi #2: Fix GitHub App (Kalo Masih Pengen)

Jika Anda tetap ingin menggunakan GitHub App, berikut cara bersihkannya:

  1. Buka https://github.com/settings/installations
  2. Cari "Cloudflare Workers and Pages" → Uninstall
  3. Buka https://github.com/settings/apps → tab Authorized OAuth Apps
  4. Cari "Cloudflare" → Revoke
  5. Clear cache browser, atau buka di incognito window
  6. Login dengan akun GitHub yang benar (yang punya repo)
  7. Buka https://github.com/apps/cloudflare-workers-and-pages/installations/new
  8. Pilih repo → Install

Catatan: Jika Anda punya beberapa akun GitHub, pastikan App terinstall di akun yang pemilik repo, bukan akun lain.

5. Kesimpulan

Error 404 saat setup GitHub App Cloudflare Pages bukan masalah yang langka. Root cause-nya adalah stale state di Cloudflare yang menyimpan ID instalasi lama setelah App di-uninstall atau token expired.

Solusi paling stabil: Gunakan GitHub Actions + Wrangler CLI. Metode ini tidak bergantung pada GitHub App, tidak pernah 404, dan memberikan kontrol lebih atas proses deployment.

Semoga membantu Anda yang mengalami masalah serupa. Feel free untuk reach out lewat kontak di bawah jika ada pertanyaan.

6. Refleksi: 100% atau 0%

Di balik error 404 ini, ada pelajaran yang lebih dalam dari sekadar teknis. Saat tekanan menumpuk dan task dikerjakan paralel, produktivitas justru turun. Kami mencoba mengerjakan dua repo sekaligus, dua task berbeda — dan hasilnya? 0% selesai. Dua-duanya mentok.

Prinsip yang sering kami pegang: "Apa yang kita fokuskan, itulah yang membesar." Fokus ke dua hal = tidak fokus ke satu pun = tidak ada yang membesar. Mengerjakan tugas secara sequential (satu per satu, 100% baru lanjut) jauh lebih produktif daripada paralel yang cuma 50%-50%.

Empat domain kehidupan — belajar, keluarga, bisnis, dakwah — semuanya harus 100% seimbang. Bukan 100% di satu domain, 0% di sisanya. Di sinilah kegagalan CF 404 ini menjadi guru: jika tidak 100%, hasilnya 0%. Error 404 itu adalah bukti bahwa kami tidak fokus 100%.

📌 Tiga Pelajaran dari Satu Error
  1. Satu per satu — jangan paralel. Sequential itu sunnatullah.
  2. 100% atau 0% — paruh hati = hasil paruh = tidak berguna.
  3. Aqad dalam kerja — setiap task adalah amanah. Menunaikannya 100% adalah bukti Tauhid dalam amal.

Semoga yang membaca error serupa tidak hanya menemukan solusi teknis, tapi juga cahaya dari pengalaman yang kami lewati.

Punya project yang butuh deployment automation?

Kami bantu setup CI/CD, Cloudflare Pages, atau infrastruktur lainnya.

Lihat case study lain →

🔧 Cara Membersihkan Webshell dari Hosting
🏢 Kenapa Shared Hosting Bahaya untuk Multi-Site
🔬 Anatomi Automated Attack