Cara Deploy Laravel ke Hosting Gratis

| | Laravel
Cara Deploy Laravel ke Hosting Gratis

deploy laravel ke hosting gratis kayak InfinityFree butuh beberapa penyesuaian, karena laravel biasanya jalan di VPS atau server dedicated. panduan ini bakal nunjukin cara tepatnya, dari nol sampai aplikasi jalan. sebelum deploy, pastikan kalian sudah baca tutorial laravel lengkap buat ngerti struktur project-nya, dan kalau nanti butuh kelola database, siapkan akses phpMyAdmin di Laragon.

semua langkah di sini proses yang pernah saya jalani sendiri, lengkap dengan error 500 yang sempat bikin saya bingung berhari-hari. kesimpulan saya: 90% masalah deploy laravel ke shared hosting bermuara pada struktur folder public_html dan konfigurasi .env, dua hal yang bakal kalian temui di artikel ini.

1. Pilih Hosting Gratis yang Tepat

sebelum mulai, penting tahu pilihan yang masih hidup di 2026:

  • InfinityFree, paling populer, support PHP 8.3 dan MySQL 8.0, tidak ada batasan masa trial, sudah 14 tahun online dan masih aktif
  • x10hosting, alternatif lama yang masih aktif
  • AwardSpace, ada versi gratis dengan dukungan dasar

catatan penting: kalau kalian nemu tutorial lama yang nyebut 000webhost, layanannya sudah ditutup permanen oleh Hostinger pada 8 Juli 2024 dan shutdown penuh 14 Oktober 2024, domainnya sekarang redirect ke Hostinger. jadi jangan buang waktu daftar ke sana. artikel ini pakai InfinityFree sebagai contoh karena paling stabil dan ada panduan resminya untuk Laravel.

2. Persiapan Aplikasi di Lokal

sebelum upload, siapkan dulu aplikasi laravel di komputer lokal biar ringan dan siap production:

# Install dependency tanpa dev (lebih kecil)
composer install --no-dev --optimize-autoloader

# Build asset javascript dan css
npm ci && npm run build

# Cache config biar lebih cepat di server
php artisan config:cache
php artisan route:cache
php artisan view:cache

# Generate APP_KEY kalau belum ada
php artisan key:generate

key:generate ini penting banget dan sering kelupaan. tanpa APP_KEY, laravel bakal error pas dipakai session atau enkripsi.

3. Struktur Folder di Hosting

hosting gratis biasanya kasih folder htdocs (InfinityFree) atau public_html sebagai root website. kuncinya, jangan taruh seluruh project laravel di sana, pisahkan biar file sensitif tidak bisa diakses dari browser:

htdocs/                ← root website InfinityFree (atau public_html di host lain)
├── .htaccess          ← rewrite ke public
└── ...
laravel_project/       ← folder terpisah, di luar htdocs
├── app/
├── bootstrap/
├── vendor/
├── public/            ← isi asli public laravel
├── .env
└── ...

struktur kayak gini bikin .env, kode aplikasi, dan vendor aman dari akses langsung lewat URL. di InfinityFree jangan upload langsung ke dalam htdocs, buat folder laravel_project sejajar htdocs.

4. Buat .htaccess di htdocs

karena htdocs adalah root website, kalian butuh .htaccess buat ngoper request ke folder public laravel. ini cara resmi InfinityFree:

# htdocs/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    # map /storage/* ke storage/app/public/* (karena symlink tidak support)
    RewriteRule ^storage/(.*)$ /laravel_project/storage/app/public/$1 [END]
    RewriteRule ^(.*)$ /laravel_project/public/$1 [L]
</IfModule>

dua rule ini inti dari trik deploy laravel di shared hosting. rule storage harus di atas, biar file upload tetap kebaca. kalau sudah benar, semua request ke domain bakal diteruskan ke public/index.php laravel.

alternatif lain yang juga umum: pindahkan isi laravel_project/public ke htdocs, lalu edit htdocs/index.php ubah require __DIR__.'/../vendor/autoload.php' jadi require __DIR__.'/../laravel_project/vendor/autoload.php' dan require_once __DIR__.'/../bootstrap/app.php' jadi require_once __DIR__.'/../laravel_project/bootstrap/app.php'. kedua cara jalan, pilih yang menurut kalian paling rapi.

5. Setup .env

isi .env dengan kredensial database dari panel hosting:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://namasite.infinityfreeapp.com

DB_CONNECTION=mysql
DB_HOST=sqlXXX.infinityfree.com
DB_PORT=3306
DB_DATABASE=if0_xxxxx_db
DB_USERNAME=if0_xxxxx
DB_PASSWORD=password

nilai DB_HOST, DB_DATABASE, dan DB_USERNAME bisa dilihat di halaman akun hosting, biasanya diawali sql atau if0 buat InfinityFree. APP_DEBUG=false wajib, jangan sampai error detail tampil ke pengunjung.

6. Upload File ke Server

ini bagian yang paling membedakan hosting gratis sama VPS. InfinityFree tidak kasih SSH, jadi semua harus lewat File Manager web:

  1. zip folder laravel di komputer (kecuali folder besar yang bisa di-upload terpisah)
  2. upload lewat File Manager hosting
  3. ekstrak zip-nya
  4. khusus vendor, karena composer install tidak bisa dijalankan tanpa SSH, jalankan composer di lokal dulu, lalu upload folder vendor yang sudah jadi

proses upload vendor bisa makan waktu karena isinya ribuan file, tapi itu jalur yang tersedia di hosting gratis. bersabarlah, dan pakai koneksi stabil biar tidak putus di tengah.

7. Atasi Error 500

error 500 di laravel shared hosting itu hampir selalu karena salah satu dari ini:

  • cek log dulu: buka storage/logs/laravel.log, biasanya penyebab aslinya langsung kelihatan
  • permission folder: chmod -R 775 storage bootstrap/cache lewat File Manager (775 atau 755, yang penting writable)
  • APP_KEY kosong: jalankan php artisan key:generate di lokal, lalu upload ulang .env-nya
  • versi PHP kurang: Laravel 11 dan 12 butuh minimal PHP 8.2, Laravel 13 butuh 8.3, cek dan ubah di panel hosting. InfinityFree sekarang sudah support PHP 8.3.
  • cache nyangkut: hapus isi folder bootstrap/cache dan storage/framework/views kalau config lama masih terbaca, atau jalankan php artisan optimize:clear di lokal sebelum upload
  • file hilang >1MB: InfinityFree diam-diam menolak file PHP >1MB, biasanya vendor/composer/autoload_classmap.php kalau optimize. solusinya composer dump-autoload --no-dev --optimize=false sebelum upload

kalau APP_DEBUG masih true, laravel bakal nampilin detail errornya langsung di browser, itu cara tercepat buat tahu masalahnya saat debug. jangan lupa balikin ke false begitu beres.

php artisan storage:link bikin symlink dari storage/app/public ke public/storage, tapi hosting gratis biasanya tidak bisa bikin symlink:

# jalan di lokal kalau hosting tidak support SSH
php artisan storage:link

di InfinityFree solusi resminya bukan symlink manual, tapi pakai rewrite di .htaccess seperti di bab 4 (RewriteRule ^storage/(.*)$ /storage/app/public/$1). alternatif lain, upload isi folder storage/app/public ke public/storage lewat File Manager, atau buat route PHP darurat Route::get('/link', fn() => symlink(storage_path('app/public'), public_path('storage'))) lalu buka sekali. kekurangannya copy manual, file baru tidak otomatis tersalin, tapi buat project kecil cukup.

9. Kendala Hosting Gratis yang Perlu Kalian Tahu

biar tidak kaget, ini realita hosting gratis:

  • tidak ada SSH, jadi proses yang biasa jalan di terminal harus dikerjakan manual atau di lokal
  • batasan resource, trafik tinggi bisa bikin akun ditangguhkan sementara
  • tidak ada jaminan uptime, jangan dipakai buat bisnis yang butuh website selalu online
  • cron job terbatas atau tidak ada, scheduler laravel mungkin tidak bisa jalan

buat belajar, portofolio, dan testing, hosting gratis sangat layak. begitu project kalian mulai serius, pindah ke shared hosting berbayar atau VPS murah, proses deploy-nya mirip, tapi kalian dapat SSH dan resource lebih.

Kesimpulan

deploy laravel ke hosting gratis, intinya:

  1. pisahkan folder laravel dari public_html, arahkan lewat index.php dan .htaccess
  2. siapkan dependency di lokal karena tidak ada SSH di server
  3. upload lewat File Manager, termasuk folder vendor yang sudah jadi
  4. setup .env dengan kredensial database hosting dan APP_DEBUG=false
  5. atasi error 500 lewat storage/logs/laravel.log dan cek permission storage/ serta bootstrap/cache/
  6. storage link dikerjakan manual karena symlink tidak tersedia

Baca Juga Mengenai :


Pertanyaan yang Sering Diajukan

Apa hosting gratis terbaik untuk Laravel?

InfinityFree paling sering dipakai karena support PHP, MySQL, dan gratis tanpa masa trial. dulu 000webhost populer tapi layanannya sudah ditutup Hostinger, jadi pilihannya sekarang InfinityFree, x10hosting, atau AwardSpace.

Kenapa folder Laravel harus dipisah dari public_html?

supaya file sensitif seperti .env, vendor, dan kode aplikasi tidak bisa diakses langsung dari browser. public_html diarahkan ke folder public Laravel, sisanya ditaruh di luar folder publik.

Apakah bisa composer install di hosting gratis?

kebanyakan hosting gratis seperti InfinityFree tidak menyediakan SSH, jadi tidak bisa jalanin composer install di server. solusinya jalankan composer install di komputer lokal, lalu upload folder vendor yang sudah jadi.

Kenapa muncul error 500 setelah deploy?

penyebab paling umum itu permission folder storage dan bootstrap/cache yang belum 775, APP_KEY belum dibuat, atau konfigurasi .env yang salah. cek storage/logs/laravel.log buat lihat pesan error aslinya.

Bagaimana cara bikin storage link tanpa SSH?

jalankan php artisan storage:link di lokal, lalu upload hasilnya, atau upload isi folder storage/app/public ke public/storage secara manual lewat File Manager hosting.

Apakah hosting gratis cocok untuk production?

cocok buat belajar, portofolio, atau testing, tapi tidak untuk bisnis serius. hosting gratis biasanya tidak ada jaminan uptime, support terbatas, dan bisa ada batasan request atau mati kalau trafik tinggi.

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.