Kehidupan

Drama GitHub App Cloudflare 404

Cerita frustrasi: GitHub App Cloudflare error 404, berjam-jam debugging, sampai akhirnya nemu solusi pakai GitHub Actions + Wrangler.

Cerita hari ini: error 404 saat install GitHub App Cloudflare. Berjam-jam muter-muter. Ujung-ujungnya nemu solusi yang lebih baik.

Awal Mula

Website GINK Digital di Cloudflare Pages tiba-tiba gagal deploy. Log-nya cuma satu baris: “fatal: repository ‘https://github.com/…’ not found”.

Padahal repo-nya ada, SSH masih jalan, commit masih bisa push. Tapi Cloudflare nolak clone via HTTPS. Saya cek dashboard CF, semua deployment terbaru statusnya “No deployment available”.

“Mungkin token GitHub App-nya expired,” pikir saya. Coba uninstall lalu install ulang.

Error 404: Nyangkut

Nah, ini masalahnya. Setiap kali klik “Configure installation” di Cloudflare, saya malah diarahkan ke halaman 404 GitHub. URL-nya selalu mengandung parameter target_id yang, entah kenapa, sudah stale.

Saya coba:

  • Uninstall GitHub App dari dashboard GitHub
  • Revoke OAuth authorization
  • Clear cache browser
  • Incognito window
  • Login akun yang benar

Tapi tetap saja, installasi langsung dari URL https://github.com/apps/cloudflare-workers-and-pages/installations/new selalu redirect ke .../permissions?target_id=... yang stale.

Frustrasi tingkat dewa.

Root Cause

Setelah investigasi, akar masalahnya sederhana: Cloudflare nyimpen state ID instalasi yang sudah tidak valid. Pas GitHub App di-uninstall (karena expired atau revoke), ID-nya mati, tapi Cloudflare tidak tahu. Jadilah error 404 setiap kali mau install ulang.

Ini bug di sisi Cloudflare, dan sayangnya belum ada tombol “reset state” di dashboard.

Solusi: GitHub Actions + Wrangler

Daripada terus berdebat dengan halaman 404, saya ambil jalan lain: skip GitHub App sepenuhnya.

Caranya? Gunakan GitHub Actions yang memanggil Wrangler CLI untuk deploy. Autentikasi pakai API Token, bukan GitHub App. Dijamin tidak akan 404 lagi.

Langkahnya:

  1. Buat CF API Token: dari dashboard Cloudflare → My Profile → API Tokens
  2. Simpan di GitHub Secrets: repo Settings → Secrets → CF_API_TOKEN
  3. Buat workflow file .github/workflows/deploy.yml
  4. Push: GitHub Actions otomatis jalan, deploy selesai

Workflow-nya sederhana. Isinya kira-kira gini:

name: Deploy to Cloudflare Pages
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          accountId: [ACCOUNT_ID]
          command: pages deploy . --project-name=[NAMA] --branch=main

Hasilnya? Mulus. Commit ke GitHub → otomatis terdeploy. Tidak ada lagi error 404, tidak ada lagi GitHub App yang bandel.

Pelajaran

Dua pelajaran dari pengalaman ini:

  1. Jangan terlalu bergantung pada GitHub App. GitHub Actions + API Token lebih transparan dan tidak kena masalah state stale.
  2. Kalau stuck di satu solusi, cari alternatif. Saya bisa saja menghabiskan waktu berjam-jam lagi debugging GitHub App, tapi solusi lain sudah menunggu.

Semoga cerita ini membantu yang mengalami masalah serupa.

Masih sejalan