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:
| Provider | Plan Minimal | Harga/Bulan | Data Center |
|---|---|---|---|
| DigitalOcean | Basic 1GB | $6 | Singapore |
| Vultr | Cloud Compute 1GB | $5 | Singapore |
| Linode | Shared 1GB | $5 | Singapore |
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_ANDAJika 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 -yPenjelasan:
apt update→ Update daftar package terbaru dari repositoryapt upgrade -y→ Install update tanpa konfirmasi manual
Ini bisa memakan waktu 2-5 menit tergantung kecepatan network. Setelah selesai, reboot:
rebootTunggu 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 zulfiantoIsi password dan informasi (bisa di-skip dengan Enter). Kemudian tambahkan ke grup sudo:
usermod -aG sudo zulfiantoKenapa 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.pubCopy output-nya (dimulai dengan ssh-ed25519).
Di VPS:
Login sebagai user baru:
su - zulfiantoBuat folder SSH dan paste key:
mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keysPaste public key Anda, lalu simpan (Ctrl+O, Enter, Ctrl+X). Atur permission:
chmod 600 ~/.ssh/authorized_keysTest: Buka terminal baru di laptop, coba login:
ssh zulfianto@IP_VPS_ANDAJika masuk tanpa password, SSH Key berhasil!
6. Hardening SSH: Matikan Root Login & Password
Edit konfigurasi SSH:
sudo nano /etc/ssh/sshd_configCari dan ubah baris berikut (atau tambahkan kalau belum ada):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222Catatan: Mengganti port dari 22 ke 2222 (atau angka lain) mengurangi serangan brute force bot yang selalu scan port 22.
Restart SSH:
sudo systemctl restart sshdWARNING: 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 22227. 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 enableKetik y untuk konfirmasi. Cek status:
sudo ufw statusOutput yang benar:
To Action From
-- ------ ----
2222/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW AnywherePort 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 fail2banSecara 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 nginxCek: 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_installationIkuti wizard:
- Setup VALIDATE PASSWORD:
Y→ pilih level2(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 -yVerifikasi:
php -vHarus muncul PHP 8.3.x.
Restart PHP-FPM:
sudo systemctl restart php8.3-fpm10. 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.comIsi 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 nginxBuat 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.htmlTest: 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.comIkuti wizard:
- Masukkan email untuk notifikasi expiry
- Accept terms
- Pilih
2: Redirect(force HTTPS)
Test auto-renewal:
sudo certbot renew --dry-runSSL 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 statusInstall locale Indonesia:
sudo locale-gen id_ID.UTF-8
sudo update-locale LANG=id_ID.UTF-813. 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.shIsi:
#!/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 -eTambahkan:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Backup 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









