Cara Agar Supabase Gratis Tidak Pause: Ping Otomatis dengan cron-job.org (Tanpa Coding)

Kalau Anda memakai Supabase versi gratis, database Anda bisa "tertidur" (istilahnya pause) kalau seminggu tidak ada yang memakainya. Akibatnya situs atau aplikasi Anda ikut tidak bisa dibuka sampai database dibangunkan manual. Cara paling mudah mencegahnya adalah memasang "alarm" gratis di cron-job.org yang menyapa database Anda beberapa kali sehari. Semua diatur lewat browser, tanpa coding, dan tanpa server sendiri. Cara ini sudah dipakai untuk menjaga database situs OutsiderDev tetap aktif.
Kenapa database bisa tertidur?
- Aturan 7 hari. Supabase gratis menidurkan project yang sepi selama seminggu. Menurut Supabase, cukup ada beberapa kali akses setiap hari supaya tidak dianggap sepi.
- Data tidak hilang. Database yang tertidur bisa dibangunkan dengan tombol Resume project, tapi selama tertidur situs Anda tidak bisa menampilkan data.
- Kunjungan otomatis tetap dihitung. Inilah yang kita manfaatkan: cron-job.org akan "mengetuk pintu" database Anda secara terjadwal.
Kenapa cron-job.org?
- Gratis dan tanpa coding. Cukup isi formulir di browser.
- Bisa membawa "kartu tamu". Supabase hanya mau dibuka kalau pengunjung menunjukkan kunci. cron-job.org bisa menyertakan kunci itu.
- Ada catatan dan pemberitahuan. Anda bisa melihat hasil tiap ketukan dan mendapat email kalau gagal.
Istilah yang perlu Anda tahu
- Cronjob: tugas yang berjalan otomatis sesuai jadwal, seperti alarm di HP.
- Publishable key / anon key: "kunci tamu" Supabase. Aman dipakai di luar, karena aksesnya dibatasi aturan keamanan (RLS). Jangan tertukar dengan secret key atau service role, yang merupakan kunci induk dan harus dirahasiakan.
- Header: informasi tambahan yang ikut dikirim saat membuka sebuah alamat, misalnya kunci tadi.
Langkah 1: Siapkan alamat dan kunci Supabase
- Buka dashboard Supabase, pilih project, lalu masuk ke Project Settings > API Keys. Salin publishable key (pada project lama namanya anon key).
- Pilih satu tabel kecil yang boleh dibaca umum, misalnya tabel pengaturan situs.
- Susun alamat "ketukan" yang hanya membaca satu baris, supaya ringan:
https://ID-PROJECT-ANDA.supabase.co/rest/v1/settings?select=*&limit=1
Ganti ID-PROJECT-ANDA dengan kode project Anda (terlihat di Project URL) dan settings dengan nama tabel Anda.
Belum punya tabel yang boleh dibaca umum? Buka menu SQL Editor, tempel perintah di bawah, lalu klik Run. Perintah ini membuat tabel kecil bernama ping berisi satu baris, dan mengizinkan siapa saja membacanya:
create table public.ping (id int primary key, catatan text); insert into public.ping values (1, 'keep alive'); alter table public.ping enable row level security; create policy "ping bisa dibaca publik" on public.ping for select using (true);
Kalau memakai tabel ini, alamat ketukannya menjadi .../rest/v1/ping?select=*&limit=1.
Langkah 2: Buat alarm di cron-job.org
- Daftar gratis di cron-job.org, konfirmasi email, lalu masuk ke Console.
- Buka menu Cronjobs, lalu klik Create cronjob.
- Isi Title (judul), misalnya Supabase keep alive. Tempel alamat ketukan dari langkah 1 di kolom URL.
- Atur jadwal, misalnya setiap 6 jam. Sekali sehari sebenarnya cukup, tapi beberapa kali sehari lebih aman kalau ada yang gagal. Tidak perlu setiap menit.
- Nyalakan pemberitahuan saat gagal, supaya Anda tahu kalau ada masalah.
Langkah 3: Sertakan kunci tamu
Tanpa kunci, Supabase akan menolak dengan kode 401. Masih di formulir yang sama, buka tab Advanced, pastikan Request method adalah GET, lalu tambahkan header:
Key : apikey Value : (tempel publishable key / anon key Anda)
Klik Create untuk menyimpan.
Langkah 4: Pastikan alarm berhasil
- Setelah jadwal pertama lewat, buka History pada cronjob Anda. Kode 200 OK berarti berhasil.
- Kode 401 berarti kunci salah atau belum diisi. Kode 404 berarti nama tabel atau alamat salah. Hasil
[](kosong) berarti tabel belum diizinkan dibaca umum, jadi periksa lagi aturan RLS-nya. - Di dashboard Supabase, menu Logs akan menampilkan ketukan dari cron-job.org sesuai jadwal.
Hal yang perlu diketahui
- Batas 30 detik dan 64 KB. cron-job.org menunggu jawaban maksimal 30 detik dan membaca maksimal 64 KB. Karena kita hanya membaca satu baris, ini tidak jadi masalah.
- Alarm bisa mati sendiri kalau gagal lebih dari 25 kali berturut-turut. Pemberitahuan email membantu Anda segera memperbaikinya.
- Waktunya tidak selalu tepat ke menit, tapi untuk keperluan ini tidak masalah.
- Kunci Anda disimpan di layanan luar. Karena itu wajib memakai kunci tamu, bukan kunci induk.
- Punya beberapa project? Buat satu alarm untuk setiap project Supabase.
Alternatif lain
Kalau ingin semuanya di akun sendiri tanpa layanan luar, alarm yang sama bisa dipasang di Cloudflare (lihat artikel cara mencegah Supabase pause dengan Cloudflare Cron Trigger). Atau, kalau ingin database yang memang tidak pernah tertidur, pertimbangkan Cloudflare D1 (lihat artikel migrasi Apps Script ke Cloudflare D1).
Sumber: Project Pausing, Supabase Docs, cron-job.org, dan FAQ cron-job.org.