Cara Setup VPS Ubuntu 24.04 untuk Production: Dari Zero to Deploy

by -8 Views
Cara Setup VPS Ubuntu 24.04 untuk Production

Ubuntu 24.04 LTS adalah rilis Long-Term Support terbaru dari Canonical yang akan didukung hingga tahun 2029. Untuk developer yang ingin deploy aplikasi web ke production, OS ini menjadi pilihan paling solid: stabil, aman, dan kompatibel dengan hampir semua stack modern. Artikel ini adalah guide lengkap untuk setup VPS Ubuntu 24.04 dari nol — dari pertama kali login sampai siap menerima traffic real.

Guide ini saya tulis berdasarkan setup yang saya pakai untuk production sendiri. Tidak ada teori berlebihan. Hanya command, konfigurasi, dan best practices yang benar-benar saya jalankan.


1. Pilih Provider & Spesifikasi VPS

Sebelum masuk ke terminal, pastikan Anda sudah punya VPS dengan spesifikasi minimal:

  • OS: Ubuntu 24.04 LTS (x64)
  • RAM: 1 GB (cukup untuk 1-2 aplikasi kecil)
  • CPU: 1 vCPU
  • Storage: 25 GB SSD
  • Bandwidth: 1 TB/bulan

Rekomendasi provider untuk audience Indonesia:

ProviderPlan MinimalHarga/BulanData Center
DigitalOceanBasic 1GB$6Singapore
VultrCloud Compute 1GB$5Singapore
LinodeShared 1GB$5Singapore

Tips: Pilih datacenter Singapore untuk latency terendah ke Indonesia (~30-50ms). Hindari datacenter US/Eropa kalau target user Anda di Indonesia.


2. Akses VPS Pertama Kali via SSH

Setelah VPS aktif, provider akan kirim email berisi:

  • IP Address VPS
  • Username default (biasanya root)
  • Password (atau instruksi SSH Key)

Buka terminal di laptop Anda (Windows bisa pakai PowerShell, Git Bash, atau PuTTY):

ssh root@IP_VPS_ANDA

Jika pertama kali, akan muncul prompt:

The authenticity of host '...' can't be established.
Are you sure you want to continue connecting (yes/no)?

Ketik yes dan Enter.

Masukkan password yang diberikan provider. Jika berhasil, prompt akan berubah menjadi:

root@vps-saya:~#

Anda sekarang berada di dalam server. Selamat datang di dunia Linux!


3. Update Sistem (Wajib Pertama Kali!)

Ubuntu 24.04 yang baru di-deploy biasanya belum ter-update sepenuhnya. Jalankan:

apt update && apt upgrade -y

Penjelasan:

  • apt update → Update daftar package terbaru dari repository
  • apt upgrade -y → Install update tanpa konfirmasi manual

Ini bisa memakan waktu 2-5 menit tergantung kecepatan network. Setelah selesai, reboot:

reboot

Tunggu 30 detik, lalu SSH kembali.


4. Buat User Baru (Jangan Pakai Root!)

Login sebagai root untuk setup awal adalah normal. Tapi untuk operasional harian, gunakan user biasa dengan sudo access. Ini adalah prinsip keamanan paling dasar.

Buat user baru (ganti zulfianto dengan nama Anda):

adduser zulfianto

Isi password dan informasi (bisa di-skip dengan Enter). Kemudian tambahkan ke grup sudo:

usermod -aG sudo zulfianto

Kenapa ini penting? Root punya akses tak terbatas. Kalau Anda salah ketik command, bisa menghapus sistem. User biasa + sudo memaksa Anda untuk sengaja menggunakan privilege admin.


5. Setup SSH Key (Lebih Aman dari Password)

Password bisa di-brute force. SSH Key jauh lebih aman karena menggunakan kriptografi public-private key.

Di Laptop Anda (Local Machine):

Jika belum punya SSH Key, generate:

ssh-keygen -t ed25519 -C "[email protected]"

Enter, Enter, Enter (default path, tanpa passphrase). Copy public key:

cat ~/.ssh/id_ed25519.pub

Copy output-nya (dimulai dengan ssh-ed25519).

Di VPS:

Login sebagai user baru:

su - zulfianto

Buat folder SSH dan paste key:

mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

Paste public key Anda, lalu simpan (Ctrl+O, Enter, Ctrl+X). Atur permission:

chmod 600 ~/.ssh/authorized_keys

Test: Buka terminal baru di laptop, coba login:

ssh zulfianto@IP_VPS_ANDA

Jika masuk tanpa password, SSH Key berhasil!


6. Hardening SSH: Matikan Root Login & Password

Edit konfigurasi SSH:

sudo nano /etc/ssh/sshd_config

Cari dan ubah baris berikut (atau tambahkan kalau belum ada):

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222

Catatan: Mengganti port dari 22 ke 2222 (atau angka lain) mengurangi serangan brute force bot yang selalu scan port 22.

Restart SSH:

sudo systemctl restart sshd

WARNING: Jangan tutup terminal yang sedang aktif! Buka terminal baru dan test login dulu. Kalau gagal, Anda masih punya terminal lama untuk perbaiki.

Test login baru:

ssh zulfianto@IP_VPS_ANDA -p 2222

7. Setup Firewall (UFW)

Ubuntu punya firewall bawaan yang sangat mudah: UFW (Uncomplicated Firewall). Hanya buka port yang benar-benar dibutuhkan:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Ketik y untuk konfirmasi. Cek status:

sudo ufw status

Output yang benar:

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

Port 80 (HTTP) dan 443 (HTTPS) untuk web server. Port 2222 untuk SSH Anda.


8. Install Fail2Ban (Lindungi dari Brute Force)

Fail2Ban memonitor log dan blok IP yang gagal login berkali-kali:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Secara default, Fail2Ban sudah proteksi SSH. Setelah 5 gagal login, IP akan dibanned selama 10 menit. Cukup untuk kebanyakan kasus.


9. Install Stack Web Server (LEMP)

Untuk production, Anda butuh stack yang solid. Kita install LEMP: Linux + Nginx + MySQL + PHP.

9.1 Install Nginx

sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Cek: Buka browser, ketik http://IP_VPS_ANDA. Jika muncul “Welcome to nginx!”, berhasil.

9.2 Install MySQL

sudo apt install mysql-server -y
sudo mysql_secure_installation

Ikuti wizard:

  • Setup VALIDATE PASSWORD: Y → pilih level 2 (strong)
  • Set password root
  • Remove anonymous users: Y
  • Disallow root login remotely: Y
  • Remove test database: Y
  • Reload privilege tables: Y

9.3 Install PHP 8.3 + Extensions

sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-intl php8.3-sqlite3 -y

Verifikasi:

php -v

Harus muncul PHP 8.3.x.

Restart PHP-FPM:

sudo systemctl restart php8.3-fpm

10. Konfigurasi Nginx Server Block

Nginx menggunakan konsep “server block” (seperti virtual host di Apache). Buat untuk domain Anda:

sudo nano /etc/nginx/sites-available/zulfianto.com

Isi dengan konfigurasi dasar:

server {
    listen 80;
    listen [::]:80;
    server_name zulfianto.com www.zulfianto.com;
    root /var/www/zulfianto.com;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Aktifkan:

sudo ln -s /etc/nginx/sites-available/zulfianto.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Buat folder root:

sudo mkdir -p /var/www/zulfianto.com
sudo chown -R $USER:$USER /var/www/zulfianto.com
echo "<h1>Hello from Ubuntu 24.04!</h1>" | sudo tee /var/www/zulfianto.com/index.html

Test: Buka http://zulfianto.com (pastikan domain sudah pointing ke IP VPS).


11. Install SSL Gratis dengan Let’s Encrypt

HTTPS wajib untuk production. Let’s Encrypt memberikan SSL gratis dengan auto-renewal:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d zulfianto.com -d www.zulfianto.com

Ikuti wizard:

  • Masukkan email untuk notifikasi expiry
  • Accept terms
  • Pilih 2: Redirect (force HTTPS)

Test auto-renewal:

sudo certbot renew --dry-run

SSL akan auto-renew setiap 3 bulan. Tidak perlu manual lagi!


12. Setup Timezone & Locale

Server harus pakai timezone yang sama dengan target audience:

sudo timedatectl set-timezone Asia/Jakarta
sudo timedatectl status

Install locale Indonesia:

sudo locale-gen id_ID.UTF-8
sudo update-locale LANG=id_ID.UTF-8

13. Monitoring Dasar & Log

Beberapa command yang harus Anda hafal untuk cek kesehatan server:

htop              # Monitor CPU & RAM real-time
df -h             # Cek penggunaan disk
free -m           # Cek memory usage
sudo ufw status   # Cek firewall
sudo systemctl status nginx   # Cek status web server
sudo systemctl status mysql   # Cek status database
sudo tail -f /var/log/nginx/error.log   # Monitor error web server

14. Setup Backup Otomatis (Jangan Lupakan!)

Sebelum deploy aplikasi apapun, setup backup dulu. Script sederhana untuk backup file ke Google Drive (via rclone) atau S3:

sudo apt install rclone -y
rclone config   # Setup Google Drive / S3

Buat script backup:

sudo nano /usr/local/bin/backup.sh

Isi:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /tmp/backup_$DATE.tar.gz /var/www /etc/nginx/sites-available
rclone copy /tmp/backup_$DATE.tar.gz gdrive:server-backups
find /tmp -name "backup_*.tar.gz" -mtime +7 -delete

Jadwalkan dengan cron:

sudo crontab -e

Tambahkan:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Backup akan berjalan setiap jam 2 pagi. File backup lebih dari 7 hari akan dihapus otomatis.


Kesimpulan: VPS Anda Sudah Production-Ready

Dari nol, Anda sekarang punya:

  • ✅ Ubuntu 24.04 LTS yang ter-update
  • ✅ User non-root dengan sudo
  • ✅ SSH Key (tanpa password)
  • ✅ SSH di port custom (bukan 22)
  • ✅ Firewall UFW aktif
  • ✅ Fail2Ban proteksi brute force
  • ✅ Nginx web server
  • ✅ MySQL database
  • ✅ PHP 8.3 + extensions
  • ✅ SSL HTTPS auto-renewal
  • ✅ Timezone Jakarta
  • ✅ Backup otomatis

Server ini sudah siap untuk deploy aplikasi Laravel, Next.js, WordPress, atau apapun stack Anda.

Tapi ini baru fondasi. Langkah selanjutnya adalah:

  • Deploy aplikasi Laravel dengan konfigurasi Nginx yang tepat
  • Setup Node.js + PM2 untuk Next.js / Express
  • Setup Docker untuk environment yang konsisten
  • Monitoring advanced dengan alerting

Semua langkah lanjutan itu — deploy Laravel, Next.js, Docker, monitoring — saya ajarkan secara praktis dan terstruktur di kursus step-by-step dari nol.

Bukan bacaan tebal, tapi video hands-on yang Anda bisa ikuti sambil praktik di VPS Anda sendiri.

Jika ada error saat setup di atas, DM saya di Twitter atau cek log dengan sudo tail -f /var/log/syslog. Selamat menguasai server Anda!

— Ditulis di Ubuntu 24.04 LTS, Mei 2026

No More Posts Available.

No more pages to load.