[{"data":1,"prerenderedAt":1070},["ShallowReactive",2],{"blog-post-cara-deploy-laravel-ke-vps":3,"blog-related-cara-deploy-laravel-ke-vps":964,"blog-latest-cara-deploy-laravel-ke-vps":1011},{"post":4,"article":21},{"id":5,"slug":6,"title":7,"excerpt":8,"publishedAt":9,"updatedAt":9,"dateDisplay":10,"featuredImage":11,"categories":12,"author":16,"readingTime":18,"seoTitle":19,"seoDescription":20},"\u002Fblog\u002Fcara-deploy-laravel-ke-vps","cara-deploy-laravel-ke-vps","Cara Deploy Laravel ke VPS: Panduan Lengkap dari Nol sampai Website Online","Anda sudah menyelesaikan aplikasi Laravel dan kini bertanya bagaimana cara deploy Laravel ke VPS agar website online dan bisa diakses publik. Pertanyaan ini muncul di hampir setiap percakapan Clouden dengan developer Indonesia, karena aplikasi yang mulus di laptop sering terasa rumit saat dipindah ke server sungguhan. Kabar baiknya, proses deploy Laravel ke VPS jauh lebih terstruktur daripada yang dibayangkan, selama Anda mengikuti urutan langkah yang benar.","2026-10-19","19 Oktober 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FCara-Deploy-Laravel-ke-VPS.png",[13],{"slug":14,"name":15},"web-development","Web Development",{"name":17},"Tim Clouden",9,"Cara Deploy Laravel ke VPS: Panduan Lengkap 2026","Pelajari cara deploy Laravel ke VPS langkah demi langkah, dari instalasi LEMP hingga SSL gratis. Ikuti panduan Clouden, onlinekan aplikasi Anda sekarang.",{"id":22,"title":7,"author":17,"body":23,"categories":954,"coverImage":955,"description":8,"extension":956,"meta":957,"navigation":594,"ogImage":959,"path":5,"publishedAt":9,"robots":959,"schemaOrg":959,"seo":960,"seoDescription":20,"seoTitle":19,"sitemap":961,"stem":962,"updatedAt":9,"__hash__":963},"blog\u002Fblog\u002Fcara-deploy-laravel-ke-vps.md",{"type":24,"value":25,"toc":939},"minimark",[26,29,32,35,40,43,46,55,59,62,86,93,97,100,105,108,131,134,160,164,167,172,175,226,229,233,236,277,284,288,291,312,319,323,330,361,364,382,385,389,392,415,418,458,461,497,500,503,538,541,545,548,560,563,685,688,724,727,731,734,772,775,779,782,785,817,828,835,874,878,881,906,917,921,924,935],[27,28,8],"p",{},[27,30,31],{},"Panduan ini ditulis khusus untuk developer, programmer, dan administrator server yang sudah punya aplikasi Laravel siap rilis dan menginginkan kontrol penuh atas servernya. Kami memandu Anda dari nol sampai pemasangan SSL gratis, lengkap dengan perintah yang bisa langsung Anda jalankan di terminal Ubuntu 22.04 atau 24.04 LTS.",[27,33,34],{},"Berdasarkan pengalaman Clouden mendampingi ratusan developer menyelesaikan hosting Laravel, kesalahan paling umum terletak pada langkah yang terlewat, misalnya lupa mengatur permission folder storage. Artikel ini dirancang agar Anda melewati semua jebakan tersebut dan menyelesaikan deploy dalam satu sesi kerja selama 30 sampai 60 menit.",[36,37,39],"h2",{"id":38},"mengapa-deploy-laravel-ke-vps-bukan-shared-hosting","Mengapa Deploy Laravel ke VPS, Bukan Shared Hosting",[27,41,42],{},"Pada shared hosting, ratusan website berbagi CPU, RAM, dan bandwidth di satu server yang sama. Pada VPS, Anda mendapat resource yang tidak terganggu oleh pengguna lain. Untuk aplikasi Laravel dengan lalu lintas nyata, perbedaan ini sangat terasa pada kecepatan respons.",[27,44,45],{},"Anda juga memperoleh akses penuh ke server: menjalankan queue worker untuk job di latar belakang, menjadwalkan cron scheduler Laravel, mengatur versi PHP sesuai kebutuhan, dan menginstal tool tambahan seperti Redis atau Supervisor. Semua ini sulit dilakukan di shared hosting biasa.",[27,47,48,49,54],{},"Meski begitu, shared hosting tetap punya tempatnya untuk website company profile, blog, atau aplikasi kecil dengan lalu lintas rendah yang tidak butuh queue worker. Untuk kondisi seperti itu, ",[50,51,53],"a",{"href":52},"\u002Fhosting-laravel\u002F","hosting Laravel"," yang sudah dioptimalkan sejak awal menjadi pilihan yang lebih hemat waktu. Begitu aplikasi Anda tumbuh dan menuntut kontrol lebih dalam, tutorial cara deploy aplikasi Laravel ke VPS di bawah ini menjadi relevan.",[36,56,58],{"id":57},"persiapan-sebelum-deploy","Persiapan Sebelum Deploy",[27,60,61],{},"Pastikan prasyarat berikut terpenuhi sebelum Anda menyentuh terminal, karena persiapan yang rapi menghemat waktu di tahap troubleshooting.",[63,64,65,69,72,75,83],"ol",{},[66,67,68],"li",{},"VPS dengan spesifikasi minimum 1 GB RAM, 1 vCPU, dan storage 15 GB. Spesifikasi ini cukup untuk satu aplikasi Laravel dengan lalu lintas sedang. Untuk aplikasi yang menjalankan queue worker berat atau database besar, Clouden menyarankan 4 GB RAM ke atas.",[66,70,71],{},"Sistem operasi Ubuntu 22.04 atau 24.04 LTS. Kedua versi ini mendapat dukungan keamanan jangka panjang dan paling banyak didukung dokumentasi Laravel.",[66,73,74],{},"Domain yang sudah mengarah ke IP publik VPS melalui record A.",[66,76,77,78,82],{},"Akses SSH ke server, baik sebagai root maupun user dengan hak sudo. Jika Anda belum terbiasa, baca dulu panduan ",[50,79,81],{"href":80},"\u002Fblog\u002Fcara-akses-server-menggunakan-ssh\u002F","cara akses server menggunakan SSH",".",[66,84,85],{},"Kode aplikasi tersimpan di repositori Git, misalnya di GitHub atau GitLab, sehingga mudah ditarik ke server.",[27,87,88,89,82],{},"Satu catatan penting dari pengalaman Clouden: pilih VPS dengan virtualisasi KVM, bukan OpenVZ, karena KVM memberi isolasi resource dan kompatibilitas kernel yang lebih baik. Perbedaan lengkapnya kami bahas di artikel ",[50,90,92],{"href":91},"\u002Fblog\u002Fperbedaan-vps-openvz-dan-kvm\u002F","perbedaan VPS OpenVZ dan KVM",[36,94,96],{"id":95},"langkah-langkah-deploy-laravel-ke-vps-dari-nol-sampai-online","Langkah-Langkah Deploy Laravel ke VPS dari Nol sampai Online",[27,98,99],{},"Rangkaian inti di bawah ini terdiri dari enam langkah berurutan, mulai dari koneksi SSH, instalasi stack LEMP, penarikan kode dari repositori, konfigurasi aplikasi, pemasangan web server, hingga SSL gratis. Kerjakan setiap langkah sesuai urutan karena setiap tahap menyiapkan fondasi untuk tahap berikutnya. Seluruh perintah di bawah ini Anda jalankan langsung di terminal VPS Ubuntu, jadi pastikan Anda sudah login ke server sebelum memulai.",[101,102,104],"h3",{"id":103},"langkah-1-koneksi-ke-vps-dan-pembaruan-sistem","Langkah 1: Koneksi ke VPS dan Pembaruan Sistem",[27,106,107],{},"Buka terminal di komputer Anda, lalu hubungkan ke VPS menggunakan SSH. Ganti alamat IP dengan IP server milik Anda.",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-bash shiki shiki-themes github-light github-dark","ssh root@192.168.x.x\n","bash","",[116,117,118],"code",{"__ignoreMap":114},[119,120,123,127],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sScJk","ssh",[119,128,130],{"class":129},"sZZnC"," root@192.168.x.x\n",[27,132,133],{},"Setelah masuk, perbarui daftar paket dan upgrade seluruh sistem.",[109,135,137],{"className":111,"code":136,"language":113,"meta":114,"style":114},"apt update && apt upgrade -y\n",[116,138,139],{"__ignoreMap":114},[119,140,141,144,147,151,153,156],{"class":121,"line":122},[119,142,143],{"class":125},"apt",[119,145,146],{"class":129}," update",[119,148,150],{"class":149},"sVt8B"," && ",[119,152,143],{"class":125},[119,154,155],{"class":129}," upgrade",[119,157,159],{"class":158},"sj4cs"," -y\n",[101,161,163],{"id":162},"langkah-2-instalasi-stack-lemp","Langkah 2: Instalasi Stack LEMP",[27,165,166],{},"Laravel di VPS berjalan paling stabil di atas stack LEMP: Linux, Nginx, MySQL atau MariaDB, dan PHP. Di tahap ini Anda memasang tiga komponen terakhirnya satu per satu.",[168,169,171],"h4",{"id":170},"instal-nginx-dan-php-83","Instal Nginx dan PHP 8.3",[27,173,174],{},"Nginx menerima request pengunjung, sementara PHP FPM mengeksekusi kode Laravel. Jalankan perintah berikut untuk memasang Nginx, PHP 8.3, dan ekstensi wajib Laravel.",[109,176,178],{"className":111,"code":177,"language":113,"meta":114,"style":114},"apt install -y nginx\napt install -y php8.3-fpm php8.3-mbstring php8.3-xml php8.3-mysql php8.3-curl php8.3-zip php8.3-gd php8.3-intl\n",[116,179,180,193],{"__ignoreMap":114},[119,181,182,184,187,190],{"class":121,"line":122},[119,183,143],{"class":125},[119,185,186],{"class":129}," install",[119,188,189],{"class":158}," -y",[119,191,192],{"class":129}," nginx\n",[119,194,196,198,200,202,205,208,211,214,217,220,223],{"class":121,"line":195},2,[119,197,143],{"class":125},[119,199,186],{"class":129},[119,201,189],{"class":158},[119,203,204],{"class":129}," php8.3-fpm",[119,206,207],{"class":129}," php8.3-mbstring",[119,209,210],{"class":129}," php8.3-xml",[119,212,213],{"class":129}," php8.3-mysql",[119,215,216],{"class":129}," php8.3-curl",[119,218,219],{"class":129}," php8.3-zip",[119,221,222],{"class":129}," php8.3-gd",[119,224,225],{"class":129}," php8.3-intl\n",[27,227,228],{},"Melewatkan salah satu ekstensi di atas adalah penyebab klasik gagal instalasi dependensi, jadi pastikan semuanya terpasang sebelum lanjut.",[168,230,232],{"id":231},"instal-composer","Instal Composer",[27,234,235],{},"Composer adalah dependency manager yang wajib ada di server. Unduh installer resminya, pasang, lalu pindahkan ke path global.",[109,237,239],{"className":111,"code":238,"language":113,"meta":114,"style":114},"curl -sS https:\u002F\u002Fgetcomposer.org\u002Finstaller -o composer-setup.php\nphp composer-setup.php\nmv composer.phar \u002Fusr\u002Flocal\u002Fbin\u002Fcomposer\n",[116,240,241,258,265],{"__ignoreMap":114},[119,242,243,246,249,252,255],{"class":121,"line":122},[119,244,245],{"class":125},"curl",[119,247,248],{"class":158}," -sS",[119,250,251],{"class":129}," https:\u002F\u002Fgetcomposer.org\u002Finstaller",[119,253,254],{"class":158}," -o",[119,256,257],{"class":129}," composer-setup.php\n",[119,259,260,263],{"class":121,"line":195},[119,261,262],{"class":125},"php",[119,264,257],{"class":129},[119,266,268,271,274],{"class":121,"line":267},3,[119,269,270],{"class":125},"mv",[119,272,273],{"class":129}," composer.phar",[119,275,276],{"class":129}," \u002Fusr\u002Flocal\u002Fbin\u002Fcomposer\n",[27,278,279,280,283],{},"Verifikasi dengan ",[116,281,282],{},"composer -V",". Versi terbaru Composer sudah mendukung PHP 8.3 sepenuhnya.",[168,285,287],{"id":286},"instal-mysql-atau-mariadb","Instal MySQL atau MariaDB",[27,289,290],{},"MariaDB adalah pilihan populer untuk database Laravel karena performanya dan kompatibilitas penuh dengan MySQL.",[109,292,294],{"className":111,"code":293,"language":113,"meta":114,"style":114},"apt install -y mariadb-server\nmysql_secure_installation\n",[116,295,296,307],{"__ignoreMap":114},[119,297,298,300,302,304],{"class":121,"line":122},[119,299,143],{"class":125},[119,301,186],{"class":129},[119,303,189],{"class":158},[119,305,306],{"class":129}," mariadb-server\n",[119,308,309],{"class":121,"line":195},[119,310,311],{"class":125},"mysql_secure_installation\n",[27,313,314,315,318],{},"Ikuti wizard ",[116,316,317],{},"mysql_secure_installation"," untuk mengamankan akses database, lalu buat database dan user khusus untuk aplikasi Laravel Anda. Hindari memakai user root database untuk aplikasi produksi.",[101,320,322],{"id":321},"langkah-3-menarik-kode-aplikasi-dari-repositori","Langkah 3: Menarik Kode Aplikasi dari Repositori",[27,324,325,326,329],{},"Konvensi umum menempatkan aplikasi di folder ",[116,327,328],{},"var\u002Fwww",". Masuk ke direktori tersebut, lalu clone repositori Anda.",[109,331,333],{"className":111,"code":332,"language":113,"meta":114,"style":114},"cd \u002Fvar\u002Fwww\ngit clone https:\u002F\u002Fgithub.com\u002Fusername\u002Fnama-aplikasi.git\ncd nama-aplikasi\n",[116,334,335,343,354],{"__ignoreMap":114},[119,336,337,340],{"class":121,"line":122},[119,338,339],{"class":158},"cd",[119,341,342],{"class":129}," \u002Fvar\u002Fwww\n",[119,344,345,348,351],{"class":121,"line":195},[119,346,347],{"class":125},"git",[119,349,350],{"class":129}," clone",[119,352,353],{"class":129}," https:\u002F\u002Fgithub.com\u002Fusername\u002Fnama-aplikasi.git\n",[119,355,356,358],{"class":121,"line":267},[119,357,339],{"class":158},[119,359,360],{"class":129}," nama-aplikasi\n",[27,362,363],{},"Selanjutnya pasang seluruh dependensi PHP. Di lingkungan produksi, lewatkan paket pengembangan agar aplikasi lebih ringan dan aman.",[109,365,367],{"className":111,"code":366,"language":113,"meta":114,"style":114},"composer install --no-dev --optimize-autoloader\n",[116,368,369],{"__ignoreMap":114},[119,370,371,374,376,379],{"class":121,"line":122},[119,372,373],{"class":125},"composer",[119,375,186],{"class":129},[119,377,378],{"class":158}," --no-dev",[119,380,381],{"class":158}," --optimize-autoloader\n",[27,383,384],{},"Perintah ini biasanya selesai dalam satu sampai tiga menit. Jika muncul error tentang ekstensi PHP yang hilang, kembali ke Langkah 2.",[101,386,388],{"id":387},"langkah-4-konfigurasi-file-env-dan-inisialisasi-aplikasi","Langkah 4: Konfigurasi File Env dan Inisialisasi Aplikasi",[27,390,391],{},"File konfigurasi Laravel berisi kredensial database, kunci aplikasi, dan mode lingkungan. Salin contoh konfigurasi, lalu sesuaikan isinya.",[109,393,395],{"className":111,"code":394,"language":113,"meta":114,"style":114},"cp .env.example .env\nnano .env\n",[116,396,397,408],{"__ignoreMap":114},[119,398,399,402,405],{"class":121,"line":122},[119,400,401],{"class":125},"cp",[119,403,404],{"class":129}," .env.example",[119,406,407],{"class":129}," .env\n",[119,409,410,413],{"class":121,"line":195},[119,411,412],{"class":125},"nano",[119,414,407],{"class":129},[27,416,417],{},"Ubah nilai berikut di dalam file konfigurasi Anda. Mode lingkungan harus berubah dari local menjadi production agar Laravel menonaktifkan mode debug dan menampilkan halaman error yang aman.",[109,419,423],{"className":420,"code":421,"language":422,"meta":114,"style":114},"language-env shiki shiki-themes github-light github-dark","APP_ENV=production\nAPP_DEBUG=false\nAPP_URL=https:\u002F\u002Fdomainlaravel.com\nDB_DATABASE=laravel_db\nDB_USERNAME=laravel_user\nDB_PASSWORD=passwordkuatanda\n","env",[116,424,425,430,435,440,446,452],{"__ignoreMap":114},[119,426,427],{"class":121,"line":122},[119,428,429],{},"APP_ENV=production\n",[119,431,432],{"class":121,"line":195},[119,433,434],{},"APP_DEBUG=false\n",[119,436,437],{"class":121,"line":267},[119,438,439],{},"APP_URL=https:\u002F\u002Fdomainlaravel.com\n",[119,441,443],{"class":121,"line":442},4,[119,444,445],{},"DB_DATABASE=laravel_db\n",[119,447,449],{"class":121,"line":448},5,[119,450,451],{},"DB_USERNAME=laravel_user\n",[119,453,455],{"class":121,"line":454},6,[119,456,457],{},"DB_PASSWORD=passwordkuatanda\n",[27,459,460],{},"Simpan file, lalu jalankan rangkaian inisialisasi berikut secara berurutan.",[109,462,464],{"className":111,"code":463,"language":113,"meta":114,"style":114},"php artisan key:generate\nphp artisan migrate --force\nphp artisan storage:link\n",[116,465,466,476,488],{"__ignoreMap":114},[119,467,468,470,473],{"class":121,"line":122},[119,469,262],{"class":125},[119,471,472],{"class":129}," artisan",[119,474,475],{"class":129}," key:generate\n",[119,477,478,480,482,485],{"class":121,"line":195},[119,479,262],{"class":125},[119,481,472],{"class":129},[119,483,484],{"class":129}," migrate",[119,486,487],{"class":158}," --force\n",[119,489,490,492,494],{"class":121,"line":267},[119,491,262],{"class":125},[119,493,472],{"class":129},[119,495,496],{"class":129}," storage:link\n",[27,498,499],{},"Perintah pertama membuat kunci enkripsi aplikasi, perintah kedua membangun struktur tabel database, dan perintah ketiga menghubungkan folder penyimpanan file publik.",[27,501,502],{},"Terakhir, atur permission folder agar web server bisa menulis cache dan file upload, tetapi tidak lebih dari itu.",[109,504,506],{"className":111,"code":505,"language":113,"meta":114,"style":114},"chown -R www-data:www-data \u002Fvar\u002Fwww\u002Fnama-aplikasi\nchmod -R 775 storage bootstrap\u002Fcache\n",[116,507,508,522],{"__ignoreMap":114},[119,509,510,513,516,519],{"class":121,"line":122},[119,511,512],{"class":125},"chown",[119,514,515],{"class":158}," -R",[119,517,518],{"class":129}," www-data:www-data",[119,520,521],{"class":129}," \u002Fvar\u002Fwww\u002Fnama-aplikasi\n",[119,523,524,527,529,532,535],{"class":121,"line":195},[119,525,526],{"class":125},"chmod",[119,528,515],{"class":158},[119,530,531],{"class":158}," 775",[119,533,534],{"class":129}," storage",[119,536,537],{"class":129}," bootstrap\u002Fcache\n",[27,539,540],{},"Berdasarkan pengalaman Clouden mendampingi developer, urutan ini adalah titik paling sering terlewat. Aplikasi yang permissionnya belum diatur akan langsung menampilkan error 500 saat pertama diakses.",[101,542,544],{"id":543},"langkah-5-konfigurasi-nginx-dan-php-fpm","Langkah 5: Konfigurasi Nginx dan PHP FPM",[27,546,547],{},"Buat file konfigurasi baru untuk situs Anda.",[109,549,551],{"className":111,"code":550,"language":113,"meta":114,"style":114},"nano \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdomainlaravel.com\n",[116,552,553],{"__ignoreMap":114},[119,554,555,557],{"class":121,"line":122},[119,556,412],{"class":125},[119,558,559],{"class":129}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdomainlaravel.com\n",[27,561,562],{},"Isi dengan blok server berikut. Root harus menunjuk ke folder public, bukan folder root aplikasi, karena folder public adalah gerbang masuk request Laravel.",[109,564,568],{"className":565,"code":566,"language":567,"meta":114,"style":114},"language-nginx shiki shiki-themes github-light github-dark","server {\n    listen 80;\n    server_name domainlaravel.com www.domainlaravel.com;\n    root \u002Fvar\u002Fwww\u002Fnama-aplikasi\u002Fpublic;\n\n    index index.php index.html;\n    client_max_body_size 32M;\n\n    location \u002F {\n        try_files $uri $uri\u002F \u002Findex.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        include snippets\u002Ffastcgi-php.conf;\n        fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.3-fpm.sock;\n    }\n\n    location ~ \u002F\\.ht {\n        deny all;\n    }\n}\n","nginx",[116,569,570,575,580,585,590,596,601,607,612,617,623,629,634,640,646,652,657,662,668,674,679],{"__ignoreMap":114},[119,571,572],{"class":121,"line":122},[119,573,574],{},"server {\n",[119,576,577],{"class":121,"line":195},[119,578,579],{},"    listen 80;\n",[119,581,582],{"class":121,"line":267},[119,583,584],{},"    server_name domainlaravel.com www.domainlaravel.com;\n",[119,586,587],{"class":121,"line":442},[119,588,589],{},"    root \u002Fvar\u002Fwww\u002Fnama-aplikasi\u002Fpublic;\n",[119,591,592],{"class":121,"line":448},[119,593,595],{"emptyLinePlaceholder":594},true,"\n",[119,597,598],{"class":121,"line":454},[119,599,600],{},"    index index.php index.html;\n",[119,602,604],{"class":121,"line":603},7,[119,605,606],{},"    client_max_body_size 32M;\n",[119,608,610],{"class":121,"line":609},8,[119,611,595],{"emptyLinePlaceholder":594},[119,613,614],{"class":121,"line":18},[119,615,616],{},"    location \u002F {\n",[119,618,620],{"class":121,"line":619},10,[119,621,622],{},"        try_files $uri $uri\u002F \u002Findex.php?$query_string;\n",[119,624,626],{"class":121,"line":625},11,[119,627,628],{},"    }\n",[119,630,632],{"class":121,"line":631},12,[119,633,595],{"emptyLinePlaceholder":594},[119,635,637],{"class":121,"line":636},13,[119,638,639],{},"    location ~ \\.php$ {\n",[119,641,643],{"class":121,"line":642},14,[119,644,645],{},"        include snippets\u002Ffastcgi-php.conf;\n",[119,647,649],{"class":121,"line":648},15,[119,650,651],{},"        fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.3-fpm.sock;\n",[119,653,655],{"class":121,"line":654},16,[119,656,628],{},[119,658,660],{"class":121,"line":659},17,[119,661,595],{"emptyLinePlaceholder":594},[119,663,665],{"class":121,"line":664},18,[119,666,667],{},"    location ~ \u002F\\.ht {\n",[119,669,671],{"class":121,"line":670},19,[119,672,673],{},"        deny all;\n",[119,675,677],{"class":121,"line":676},20,[119,678,628],{},[119,680,682],{"class":121,"line":681},21,[119,683,684],{},"}\n",[27,686,687],{},"Aktifkan situs tersebut, uji konfigurasi, lalu muat ulang Nginx.",[109,689,691],{"className":111,"code":690,"language":113,"meta":114,"style":114},"ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdomainlaravel.com \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nnginx -t\nsystemctl reload nginx\n",[116,692,693,707,714],{"__ignoreMap":114},[119,694,695,698,701,704],{"class":121,"line":122},[119,696,697],{"class":125},"ln",[119,699,700],{"class":158}," -s",[119,702,703],{"class":129}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdomainlaravel.com",[119,705,706],{"class":129}," \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\n",[119,708,709,711],{"class":121,"line":195},[119,710,567],{"class":125},[119,712,713],{"class":158}," -t\n",[119,715,716,719,722],{"class":121,"line":267},[119,717,718],{"class":125},"systemctl",[119,720,721],{"class":129}," reload",[119,723,192],{"class":129},[27,725,726],{},"Baris fastcgi_pass menghubungkan Nginx ke socket PHP FPM versi 8.3, kunci kerja sama nginx php fpm yang membuat kode Laravel tereksekusi dengan benar. Buka browser dan akses domain Anda. Jika halaman utama aplikasi tampil, deployment inti sudah berhasil.",[101,728,730],{"id":729},"langkah-6-pasang-ssl-gratis-dengan-certbot-dari-let-us-encrypt","Langkah 6: Pasang SSL Gratis dengan Certbot dari Let us Encrypt",[27,732,733],{},"Website produksi wajib berjalan di atas HTTPS. Cara termudah dan gratis adalah memasang sertifikat dari Let us Encrypt menggunakan Certbot.",[109,735,737],{"className":111,"code":736,"language":113,"meta":114,"style":114},"apt install -y certbot python3-certbot-nginx\ncertbot --nginx -d domainlaravel.com -d www.domainlaravel.com\n",[116,738,739,753],{"__ignoreMap":114},[119,740,741,743,745,747,750],{"class":121,"line":122},[119,742,143],{"class":125},[119,744,186],{"class":129},[119,746,189],{"class":158},[119,748,749],{"class":129}," certbot",[119,751,752],{"class":129}," python3-certbot-nginx\n",[119,754,755,758,761,764,767,769],{"class":121,"line":195},[119,756,757],{"class":125},"certbot",[119,759,760],{"class":158}," --nginx",[119,762,763],{"class":158}," -d",[119,765,766],{"class":129}," domainlaravel.com",[119,768,763],{"class":158},[119,770,771],{"class":129}," www.domainlaravel.com\n",[27,773,774],{},"Certbot akan memverifikasi kepemilikan domain, memasang sertifikat, dan mengarahkan semua traffic ke HTTPS secara otomatis. Sertifikat ini berlaku 90 hari dan diperbarui otomatis oleh timer bawaan Certbot. Di VPS Clouden, proses ini umumnya selesai kurang dari dua menit.",[36,776,778],{"id":777},"optimasi-setelah-deploy-laravel","Optimasi Setelah Deploy Laravel",[27,780,781],{},"Deploy berhasil bukan akhir pekerjaan. Beberapa optimasi berikut membuat aplikasi Anda lebih cepat dan siap melayani pengguna secara stabil.",[27,783,784],{},"Pertama, cache seluruh konfigurasi, rute, dan tampilan agar Laravel tidak membaca ulang file di setiap request.",[109,786,788],{"className":111,"code":787,"language":113,"meta":114,"style":114},"php artisan config:cache\nphp artisan route:cache\nphp artisan view:cache\n",[116,789,790,799,808],{"__ignoreMap":114},[119,791,792,794,796],{"class":121,"line":122},[119,793,262],{"class":125},[119,795,472],{"class":129},[119,797,798],{"class":129}," config:cache\n",[119,800,801,803,805],{"class":121,"line":195},[119,802,262],{"class":125},[119,804,472],{"class":129},[119,806,807],{"class":129}," route:cache\n",[119,809,810,812,814],{"class":121,"line":267},[119,811,262],{"class":125},[119,813,472],{"class":129},[119,815,816],{"class":129}," view:cache\n",[27,818,819,820,823,824,827],{},"Kedua, jika aplikasi Anda memakai queue, jalankan queue worker secara permanen dengan Supervisor. Tanpa Supervisor, worker mati begitu sesi SSH Anda tertutup dan job pengguna berhenti diproses. Pasang Supervisor dengan ",[116,821,822],{},"apt install -y supervisor",", buat file konfigurasi worker di folder supervisor, lalu aktifkan dengan ",[116,825,826],{},"supervisorctl start all",". Detail konfigurasinya bisa Anda ikuti dari dokumentasi resmi Laravel bagian queues.",[27,829,830,831,834],{},"Ketiga, daftarkan cron scheduler Laravel agar tugas terjadwal seperti pengiriman email dan pembersihan data berjalan otomatis. Buka crontab dengan ",[116,832,833],{},"crontab -e",", lalu tambahkan baris berikut.",[109,836,838],{"className":111,"code":837,"language":113,"meta":114,"style":114},"* * * * * cd \u002Fvar\u002Fwww\u002Fnama-aplikasi && php artisan schedule:run >> \u002Fdev\u002Fnull 2>&1\n",[116,839,840],{"__ignoreMap":114},[119,841,842,846,849,851,853,855,858,860,862,865,868,871],{"class":121,"line":122},[119,843,845],{"class":844},"szBVR","*",[119,847,848],{"class":844}," *",[119,850,848],{"class":844},[119,852,848],{"class":844},[119,854,848],{"class":844},[119,856,857],{"class":149}," cd \u002Fvar\u002Fwww\u002Fnama-aplikasi && ",[119,859,262],{"class":125},[119,861,472],{"class":129},[119,863,864],{"class":129}," schedule:run",[119,866,867],{"class":844}," >>",[119,869,870],{"class":129}," \u002Fdev\u002Fnull",[119,872,873],{"class":844}," 2>&1\n",[36,875,877],{"id":876},"troubleshooting-error-umum-saat-deploy","Troubleshooting Error Umum Saat Deploy",[27,879,880],{},"Meski mengikuti panduan dengan cermat, Anda mungkin menemui error di perjalanan. Berikut tiga masalah yang paling sering dilaporkan developer kepada tim Clouden beserta solusinya.",[63,882,883,890,896],{},[66,884,885,889],{},[886,887,888],"strong",{},"Error 500 saat aplikasi diakses."," Penyebab paling umum adalah permission folder storage dan bootstrap cache yang belum diatur, atau kunci aplikasi yang belum dibuat. Jalankan ulang perintah chown, chmod, dan key:generate pada Langkah 4.",[66,891,892,895],{},[886,893,894],{},"Error 502 Bad Gateway."," Error ini muncul ketika Nginx gagal berkomunikasi dengan PHP FPM, biasanya karena versi socket tidak cocok. Jika Anda memasang PHP 8.3, pastikan baris fastcgi_pass menunjuk ke php8.3-fpm.sock, bukan versi lain.",[66,897,898,901,902,905],{},[886,899,900],{},"Halaman error karena kunci aplikasi hilang."," Kunci aplikasi tersimpan di file konfigurasi yang biasanya tidak ikut ter-commit di repositori. Jalankan kembali ",[116,903,904],{},"php artisan key:generate",", tetapi ingat bahwa mengganti kunci membuat data terenkripsi lama tidak terbaca, jadi lakukan ini sebelum aplikasi melayani pengguna.",[27,907,908,909,912,913,916],{},"Tips tambahan: setelah mengubah konfigurasi di server produksi, jalankan ",[116,910,911],{},"php artisan config:clear"," dan ",[116,914,915],{},"php artisan cache:clear"," karena cache konfigurasi sering menyimpan nilai lama.",[36,918,920],{"id":919},"kesimpulan","Kesimpulan",[27,922,923],{},"Kini Anda memahami cara deploy Laravel ke VPS secara menyeluruh, dari koneksi SSH dan instalasi stack LEMP, penarikan kode dari repositori, konfigurasi aplikasi dan Nginx, pemasangan SSL gratis, hingga optimasi dengan cache, queue worker, dan cron scheduler. Dengan latihan, seluruh proses deploy Laravel ubuntu ini bisa Anda selesaikan di bawah satu jam.",[27,925,926,927,931,932,934],{},"Jika Anda membutuhkan VPS dengan resource yang siap pakai untuk Laravel, ",[50,928,930],{"href":929},"\u002Fvps\u002F","VPS Clouden"," menyediakan server berbasis KVM di data center lokal Indonesia dengan akses root penuh, jadi semua langkah di atas bisa langsung Anda praktikkan tanpa hambatan. Dan jika Anda memang tidak ingin repot mengelola server, tim Clouden juga menyiapkan ",[50,933,53],{"href":52}," yang sudah terkonfigurasi sejak awal, sehingga Anda cukup fokus menulis kode dan melihat aplikasi Anda online. Selamat mencoba, dan semoga deployment pertama Anda berjalan mulus.",[936,937,938],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":114,"searchDepth":195,"depth":195,"links":940},[941,942,943,951,952,953],{"id":38,"depth":195,"text":39},{"id":57,"depth":195,"text":58},{"id":95,"depth":195,"text":96,"children":944},[945,946,947,948,949,950],{"id":103,"depth":267,"text":104},{"id":162,"depth":267,"text":163},{"id":321,"depth":267,"text":322},{"id":387,"depth":267,"text":388},{"id":543,"depth":267,"text":544},{"id":729,"depth":267,"text":730},{"id":777,"depth":195,"text":778},{"id":876,"depth":195,"text":877},{"id":919,"depth":195,"text":920},[14],"Cara-Deploy-Laravel-ke-VPS.png","md",{"seoKeyword":958},"cara deploy laravel ke vps",null,{"title":7,"description":8},{"loc":5,"lastmod":9},"blog\u002Fcara-deploy-laravel-ke-vps","45ZKZxscIZ6hqVQIXHsBnrlg09w5slhDDFEuAhd3sKs",{"posts":965,"page":122,"perPage":442,"total":1010,"totalPages":454},[966,977,988,999],{"id":967,"slug":968,"title":969,"excerpt":970,"publishedAt":971,"updatedAt":971,"dateDisplay":972,"featuredImage":973,"categories":974,"author":976,"readingTime":18,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fcara-install-docker-compose-di-vps","cara-install-docker-compose-di-vps","Cara Install Docker Compose di VPS Ubuntu: Panduan Lengkap untuk Developer","Bayangkan Anda baru saja menyelesaikan sebuah aplikasi yang terdiri dari web server, database, dan cache. Di laptop, semuanya berjalan mulus. Begitu dipindahkan ke server, konfigurasi mulai berantakan karena versi PHP berbeda, ekstensi database tidak terpasang, dan port saling bertabrakan. Di sinilah banyak developer akhirnya mencari cara install docker compose di VPS, karena Docker Compose mengubah seluruh kerumitan tersebut menjadi satu file konfigurasi yang rapi.","2026-11-03","3 November 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FCara-Install-Docker-Compose-di-VPS.png",[975],{"slug":14,"name":15},{"name":17},{"id":978,"slug":979,"title":980,"excerpt":981,"publishedAt":982,"updatedAt":982,"dateDisplay":983,"featuredImage":984,"categories":985,"author":987,"readingTime":603,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fpanduan-memilih-server-python","panduan-memilih-server-python","Panduan Memilih Server Python yang Tepat untuk Aplikasi Django dan Flask","Anda sudah menulis aplikasi Python yang siap tayang, lalu muncul pertanyaan besar: di mana aplikasi itu akan berjalan? Kode sudah lulus uji di laptop, dependensi terpasang rapi, tetapi begitu disebarkan ke server, aplikasi justru error atau tidak merespons. Masalahnya hampir selalu bukan pada kode, melainkan pada pilihan hosting python yang kurang sesuai dengan karakter aplikasi Anda.","2026-11-02","2 November 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FPanduan-Memilih-Server-Python.png",[986],{"slug":14,"name":15},{"name":17},{"id":989,"slug":990,"title":991,"excerpt":992,"publishedAt":993,"updatedAt":993,"dateDisplay":994,"featuredImage":995,"categories":996,"author":998,"readingTime":603,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fpengertian-database","pengertian-database","Apa Itu Database dan Bagaimana Perannya dalam Mengelola Data Website Anda","Dalam dunia internet yang sangat luas, setiap interaksi yang kita lakukan meninggalkan jejak digital. Saat Anda masuk ke akun media sosial, menyimpan produk di keranjang belanja toko online, atau sekadar membaca artikel di sebuah blog, ada sebuah sistem raksasa yang bekerja dengan sangat rapi untuk menyimpan dan menyajikan informasi tersebut. Sistem ini merupakan pondasi bagi setiap website dan aplikasi modern yang kita gunakan setiap hari, yaitu database.","2026-04-03","3 April 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FPengertian-Database.png",[997],{"slug":14,"name":15},{"name":17},{"id":1000,"slug":1001,"title":1002,"excerpt":1003,"publishedAt":1004,"updatedAt":1004,"dateDisplay":1005,"featuredImage":1006,"categories":1007,"author":1009,"readingTime":609,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fpengertian-php","pengertian-php","Apa Itu PHP dan Bagaimana Perannya dalam Membangun Website Dinamis","Saat Anda menjelajahi internet, Anda mungkin sering berinteraksi dengan berbagai fitur interaktif seperti formulir pendaftaran, sistem login anggota, hingga keranjang belanja di toko online. Pernahkah Anda bertanya bagaimana sebuah website bisa mengingat nama Anda setelah login atau menampilkan stok barang secara otomatis? Keajaiban teknis tersebut terjadi karena adanya bahasa pemrograman yang bekerja di balik layar server. Salah satu pemain paling dominan dan legendaris dalam ekosistem ini adalah PHP.","2026-03-26","26 Maret 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FPengertian-PHP.png",[1008],{"slug":14,"name":15},{"name":17},22,{"posts":1012,"page":122,"perPage":454,"total":1069,"totalPages":681},[1013,1017,1021,1034,1045,1056],{"id":967,"slug":968,"title":969,"excerpt":970,"publishedAt":971,"updatedAt":971,"dateDisplay":972,"featuredImage":973,"categories":1014,"author":1016,"readingTime":18,"seoTitle":-1,"seoDescription":-1},[1015],{"slug":14,"name":15},{"name":17},{"id":978,"slug":979,"title":980,"excerpt":981,"publishedAt":982,"updatedAt":982,"dateDisplay":983,"featuredImage":984,"categories":1018,"author":1020,"readingTime":603,"seoTitle":-1,"seoDescription":-1},[1019],{"slug":14,"name":15},{"name":17},{"id":1022,"slug":1023,"title":1024,"excerpt":1025,"publishedAt":1026,"updatedAt":1026,"dateDisplay":1027,"featuredImage":1028,"categories":1029,"author":1033,"readingTime":609,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fcara-menghubungkan-domain-ke-vps","cara-menghubungkan-domain-ke-vps","Cara Menghubungkan Domain ke VPS: Panduan Lengkap A Record dan Nameserver","Baru saja memesan VPS dan ingin website Anda tampil di alamat domain sendiri? Kabar baiknya, prosesnya tidak sesulit yang banyak orang bayangkan. Artikel ini membahas cara menghubungkan domain ke VPS secara lengkap, mulai dari menyiapkan IP Address, membuat A Record, hingga memasang SSL agar website berjalan mulus di HTTPS.","2026-10-26","26 Oktober 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FCara-Menghubungkan-Domain-ke-VPS.png",[1030],{"slug":1031,"name":1032},"server-hosting","Server Hosting",{"name":17},{"id":1035,"slug":1036,"title":1037,"excerpt":1038,"publishedAt":1039,"updatedAt":1039,"dateDisplay":1040,"featuredImage":1041,"categories":1042,"author":1044,"readingTime":454,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fkelebihan-dan-kekurangan-vps","kelebihan-dan-kekurangan-vps","Kelebihan dan Kekurangan VPS yang Perlu Diketahui Sebelum Menggunakannya","Memilih infrastruktur hosting yang tepat merupakan keputusan krusial yang menentukan performa, keamanan, dan pertumbuhan aksesibilitas platform digital Anda. Seiring dengan berkembangnya jumlah pengunjung dan kompleksitas aplikasi, layanan hosting tradisional seperti Shared Hosting sering kali tidak lagi mampu memenuhi kebutuhan resource yang semakin tinggi. Kondisi ini membuat banyak pemilik website, developer, hingga pelaku bisnis mulai mempertimbangkan penggunaan Virtual Private Server atau VPS.","2026-10-12","12 Oktober 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FKelebihan-dan-Kekurangan-VPS.png",[1043],{"slug":1031,"name":1032},{"name":17},{"id":1046,"slug":1047,"title":1048,"excerpt":1049,"publishedAt":1050,"updatedAt":1050,"dateDisplay":1051,"featuredImage":1052,"categories":1053,"author":1055,"readingTime":454,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fapa-itu-addon-domain","apa-itu-addon-domain","Apa Itu Addon Domain dan Cara Menggunakannya pada Hosting","Memiliki lebih dari satu website sering kali menjadi kebutuhan penting bagi pemilik bisnis, blogger, freelancer, hingga developer. Anda mungkin ingin membangun toko online baru, membuat blog terpisah untuk niche tertentu, atau menyediakan portofolio khusus untuk klien tanpa mengganggu website utama. Namun, menyewa paket hosting baru untuk setiap domain tentu membutuhkan biaya operasional yang tidak sedikit.","2026-10-05","5 Oktober 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FApa-Itu-Addon-Domain.png",[1054],{"slug":1031,"name":1032},{"name":17},{"id":1057,"slug":1058,"title":1059,"excerpt":1060,"publishedAt":1061,"updatedAt":1061,"dateDisplay":1062,"featuredImage":1063,"categories":1064,"author":1068,"readingTime":603,"seoTitle":-1,"seoDescription":-1},"\u002Fblog\u002Fperbedaan-domain-com-dan-id","perbedaan-domain-com-dan-id","Perbedaan Domain .com dan .id serta Cara Memilih yang Tepat untuk Website","Memilih ekstensi domain merupakan salah satu langkah paling awal yang sangat menentukan arah perkembangan website. Nama domain berfungsi sebagai identitas digital, pintu masuk bagi pengunjung, serta pondasi utama pembentukan reputasi bisnis di internet. Saat memulai proyek digital, banyak pemilik bisnis, pelaku UMKM, blogger, freelancer, hingga pengembang startup menghadapi dilema dalam memilih dua ekstensi paling populer di Indonesia, yaitu domain .com dan domain .id.","2026-09-28","28 September 2026","\u002Fassets\u002Fimages\u002Fblogs\u002FPerbedaan-Domain-.com-dan-.id_.png",[1065],{"slug":1066,"name":1067},"website","Website",{"name":17},122,1794457658656]