Berbeda dengan ekosistem Next.js, men-deploy Laravel ke Vercel memerlukan konfigurasi yang sedikit lebih kompleks. Ditambah lagi, sangat jarang ada penyedia hosting Laravel yang menawarkan paket gratis secara cuma-cuma. Akibatnya, banyak proyek akhirnya hanya tertahan di localhost. Namun, jangan khawatir... ada trik khusus agar Laravel bisa berjalan mulus di Vercel. Kali ini, saya akan membagikan pengalaman saya ketika melakukan deployment Laravel di Vercel menggunakan database Supabase.
Namun, karena Laravel memiliki sifat stateless dan Vercel berbasis serverless, ada beberapa trik khusus agar Laravel berjalan mulus di Vercel. Mari kita bedah...
Persiapan Amunisi
Sebelum mulai, pastikan Anda sudah memiliki hal-hal berikut:
Karena Vercel berjalan di lingkungan serverless, alamat IP server akan berubah-ubah. Untuk menghindari masalah koneksi, kita wajib menggunakan Connection Pooler.
Vercel membutuhkan file handler di dalam folder api. Buat folder tersebut dan isi dengan file index.php:
php
<?php// Meneruskan request ke file index utama Laravelrequire__DIR__ . '/../public/index.php';
3. Konfigurasi .vercelignore
Agar proses deploy lebih cepat, abaikan file yang tidak diperlukan:
text
.env
/node_modules
/tests
/storage/logs
README.md
4. Penyesuaian .gitignore
Secara bawaan, Laravel mengabaikan folder public/build. Namun, jika Anda melakukan kompilasi aset (Vite) di lokal, folder ini harus ikut diunggah. Hapus atau beri komentar pada baris berikut di .gitignore:
pgsql
# /public/build <-- Matikan ignore agar aset ikut ter-upload
5. Memaksa Protokol HTTPS
Terkadang terjadi mixed content error di mana Vercel menggunakan HTTPS tetapi Laravel menganggapnya HTTP. Tambahkan kode berikut di app/Providers/AppServiceProvider.php:
php
publicfunctionboot(): void{
if ($this->app->environment('production')) {
\Illuminate\Support\Facades\URL::forceScheme('https');
}
}
Langkah 3: Build & Deploy
Sekarang saatnya meluncurkan aplikasi Anda ke internet.
Build Aset: Jalankan npm run build di terminal lokal Anda.
Push ke GitHub: Lakukan commit dan push seluruh perubahan.
Import di Vercel: Buka dashboard Vercel, pilih New Project, dan arahkan ke repositori Anda.
Environment Variables: Masukkan variabel berikut di bagian Environment Variables sebelum klik Deploy:
Key
Keterangan
APP_KEY
Salin dari .env lokal Anda (format base64:...)
DB_CONNECTION
pgsql
DB_HOST
Host dari Supabase (Connection Pooler)
DB_PORT
6543
DB_DATABASE
postgres
DB_USERNAME
Username database Anda
DB_PASSWORD
Password database Anda
Pro Tip: Jika muncul error prepared statement does not exist, tambahkan konfigurasi ini di config/database.php pada bagian pgsql:
Karena Vercel tidak menyediakan akses terminal SSH untuk menjalankan php artisan migrate, cara termudah adalah melakukannya dari komputer lokal Anda:
Buka file .env di lokal secara sementara.
Ganti kredensial database lokal dengan kredensial Supabase.
Jalankan perintah php artisan migrate dari terminal laptop Anda.
Setelah selesai, kembalikan isi .env lokal ke pengaturan semula.
Langkah 5: Penanganan File Upload
Penyimpanan di Vercel bersifat ephemeral (sementara). File yang diunggah ke folder storage akan hilang secara otomatis. Solusinya, kita gunakan Supabase Storage sebagai penggantinya.
1. Setup di Supabase
Buka menu Storage, buat bucket baru (misalnya: uploads).
Pastikan statusnya adalah Public.
2. Install Driver S3
Laravel dapat berkomunikasi dengan Supabase Storage menggunakan protokol S3. Jalankan:
Tambahkan variabel berikut di Vercel Dashboard agar Laravel tahu di mana harus menyimpan file:
FILESYSTEM_DISK = s3
AWS_ACCESS_KEY_ID = (Cek di Project Settings > API)
AWS_SECRET_ACCESS_KEY = (Cek di Project Settings > API)
AWS_DEFAULT_REGION = ap-southeast-1 (atau region Supabase Anda)
AWS_BUCKET = uploads
AWS_URL = (URL publik bucket Anda)
AWS_ENDPOINT = (Endpoint S3 dari Supabase)
Troubleshooting & Tips
CSS/JS Tidak Muncul? Pastikan Anda sudah menjalankan npm run build dan folder public/build tidak ter-ignore oleh Git.
Error 500? Periksa Function Logs di dashboard Vercel untuk melihat pesan error PHP yang lebih detail.
Session Bermasalah? Pastikan SESSION_DRIVER diatur ke cookie karena serverless tidak mendukung session berbasis file secara stabil.
Penutup
Sekarang aplikasi Laravel 12 Anda sudah mengudara secara gratis dengan performa yang mumpuni. Memanfaatkan infrastruktur serverless memang butuh sedikit penyesuaian, tapi hasilnya sangat sepadan.
Catatan cara mencabut partisi Ubuntu dengan aman tanpa merusak bootloader Windows.