
Waktu pertama kali gue install Ubuntu 24.04 Server buat freelance project di awal 2026, gue kira proses instalasi bakal mulus seperti install aplikasi di HP. Spoiler: tidak semulus itu. Tapi justru dari situ gue belajar banyak hal yang tidak pernah ditulis di tutorial mana pun. Artikel ini gue tulis biar pengalaman gue yang penuh trial dan error bisa mempersingkat waktu belajar kamu.
Kenapa Ubuntu Server? Ini Pendapat Jujur Gue
Sebelum masuk ke instalasi, gue mau jujur soal pilihan distro ini.
Ubuntu bukan satu-satunya opsi. Ada Debian yang lebih “murni”, ada Rocky Linux yang populer di enterprise, ada juga AlmaLinux. Tapi Ubuntu 24.04 LTS punya satu hal yang bikin gue tetap loyal: ekosistemnya besar dan dokumentasinya mudah dicari saat gue panik jam 2 pagi.
Gue pernah coba pindah ke Debian untuk satu project. Lebih ringan, memang. Tapi setiap kali mau install tool tertentu, gue harus cari package name yang berbeda, versi yang berbeda, dan kadang harus compile manual. Untuk developer pemula yang belum mau pusing soal itu, Ubuntu adalah pilihan yang tidak akan kamu sesali.
Ubuntu 24.04 “Noble Numbat” juga hadir dengan kernel Linux 6.8 yang punya performa syscall lebih baik dan fitur low-latency yang sebelumnya hanya ada di kernel khusus. Artinya server kamu lebih responsif tanpa konfigurasi tambahan.
Apa Sebenarnya Ubuntu Server Itu?
Bayangkan kamu punya toko fisik (komputer kamu) tapi tidak ada etalase, kasir, atau papan nama. Ubuntu Server itu seperti rangka bangunan kosong yang sudah siap diisi: listriknya ada, pondasi kokoh, tapi tidak ada perabot karena kamu yang menentukan mau pakai ruangan ini untuk apa. Tidak ada antarmuka grafis, tidak ada tombol-tombol cantik. Hanya terminal hitam dan prompt yang menunggu perintah kamu.
Inilah yang membedakannya dengan Ubuntu Desktop: tidak ada layer visual yang memakan RAM. Server yang sama bisa menjalankan lebih banyak proses karena resource-nya fokus ke aplikasi, bukan ke rendering tampilan. Gue merasakan sendiri perbedaannya saat migrasi dari server berbasis desktop environment ke Ubuntu Server murni: load average turun hampir setengahnya untuk traffic yang sama.
Apa yang Kamu Butuhkan Sebelum Mulai
Sebelum install, pastikan punya ini:
- ISO Ubuntu 24.04 Server yang bisa diunduh dari ubuntu.com/download/server
- USB flashdisk minimal 4GB (untuk instalasi fisik) atau akses ke panel VPS kalau kamu pakai cloud
- Software Rufus (Windows) atau Balena Etcher (Mac/Linux) untuk burn ISO ke USB
- Spesifikasi minimum: 1 GHz CPU, 1 GB RAM, 2.5 GB storage (tapi gue rekomendasikan minimal 2 CPU core, 2 GB RAM, 20 GB SSD)
💡 Tips dari Pengalaman: Kalau kamu pakai VPS (seperti DigitalOcean, Vultr, atau lokal seperti IDCloudHost), kamu tidak perlu USB sama sekali. Pilih Ubuntu 24.04 dari panel control mereka dan langsung skip ke bagian konfigurasi post-install. Mayoritas developer pemula memang mulai dari VPS, dan itu pilihan yang lebih simpel.
Langkah 1: Boot dari USB dan Mulai Installer
Colok USB ke mesin, masuk ke BIOS (biasanya tekan F2, F12, atau DEL saat booting), dan ubah boot order agar USB jadi prioritas pertama.
Setelah boot dari USB, kamu akan disambut layar GRUB dengan pilihan:
Try or Install Ubuntu Server
Test memory
Pilih yang pertama, tekan Enter.
Kenapa langkah ini penting? BIOS perlu tahu dari mana harus memuat sistem operasi. Kalau urutannya salah, mesin akan tetap booting ke OS lama (atau bahkan tidak booting sama sekali).
⚠️ Perhatian: Kalau mesin kamu pakai UEFI dan Secure Boot aktif, kadang USB tidak terbaca. Masuk BIOS dan nonaktifkan Secure Boot sementara selama proses instalasi.
Langkah 2: Pilih Bahasa dan Keyboard
Installer akan menampilkan pilihan bahasa. Pilih English meskipun kamu pengguna Indonesia.
Language: English
Keyboard layout: English (US)
💡 Tips dari Pengalaman: Ini bukan soal nasionalisme. Gue pernah iseng pilih bahasa Indonesia di awal, dan ketika gue cari solusi error di Google, hampir tidak ada satu pun forum yang membahas pesan error dalam bahasa Indonesia. Semua log system, semua pesan error, tetap dalam bahasa Inggris di mana pun. Jadi konsistenkan dari awal.
Langkah 3: Pilih Tipe Instalasi
Ada dua opsi di sini:
[X] Ubuntu Server
[ ] Ubuntu Server (minimized)
Pilih Ubuntu Server standar.
Kenapa bukan yang minimized? Versi minimized memang lebih kecil, tapi banyak tool standar seperti curl, wget, bahkan nano tidak tersedia. Untuk belajar, ini akan bikin kamu frustrasi karena terus-terusan install tool satu per satu.
Langkah 4: Konfigurasi Jaringan
Installer akan otomatis mendeteksi interface jaringan kamu dan mencoba mendapat IP via DHCP. Untuk server production, gue rekomendasikan pakai static IP.
Pilih interface kamu → Edit IPv4 → Manual, lalu isi:
Subnet: 192.168.1.0/24
Address: 192.168.1.100
Gateway: 192.168.1.1
DNS: 8.8.8.8, 1.1.1.1
Kenapa static IP? Karena kalau IP server berubah setiap reboot (seperti yang terjadi dengan DHCP), semua konfigurasi yang menunjuk ke IP itu akan rusak. Misalnya kamu deploy aplikasi Express.js dan sudah mendaftarkan IP ke domain, tiba-tiba IP berubah, website down tanpa alasan yang jelas. Gue pernah mengalami ini dan menghabiskan dua jam debug sebelum sadar masalahnya sesederhana itu.
⚠️ Perhatian: Pastikan IP yang kamu pilih tidak bentrok dengan perangkat lain di jaringan. Ping dulu IP tersebut sebelum dipakai:
# Cek dari komputer lain apakah IP sudah dipakai
ping 192.168.1.100
Langkah 5: Konfigurasi Storage
Installer akan menampilkan opsi partisi. Untuk pemula, pilih Use an entire disk dengan LVM group aktif.
[X] Use an entire disk
[X] Set up this disk as an LVM group
[ ] Encrypt the LVM group with LUKS
Kenapa LVM? LVM (Logical Volume Manager) itu seperti partisi yang bisa di-resize tanpa harus format ulang. Kalau nanti disk kamu penuh dan kamu tambah hard drive baru, LVM memungkinkan kamu expand storage tanpa downtime. Tanpa LVM, kamu terpaksa backup semua data, format ulang, dan setup dari nol.
💡 Tips dari Pengalaman: Konfirmasi layout storage sebelum lanjut. Installer akan menampilkan summary, dan ini adalah satu-satunya kesempatan untuk membatalkan sebelum data di disk dihapus permanen.
⚠️ Perhatian: Ini langkah yang tidak bisa di-undo. Begitu kamu konfirmasi “Done” di partisi, semua data di disk tersebut akan dihapus. Pastikan kamu memilih disk yang benar.
Langkah 6: Buat User dan Hostname
Your name: John Developer
Server name: myserver-prod
Username: john
Password: [gunakan password kuat]
Kenapa hostname penting? Hostname adalah identitas server di jaringan. Kalau kamu punya beberapa server, hostname yang deskriptif (seperti api-server-01, db-server-prod) akan menyelamatkan kamu dari kebingungan saat SSH ke server yang salah. Gue pernah salah SSH ke server production padahal niatnya ke staging. Tidak ada yang tertawa saat itu.
Langkah 7: Aktifkan SSH Server
Di halaman SSH Setup, centang opsi ini:
[X] Install OpenSSH server
Kenapa SSH wajib? Karena setelah instalasi selesai, kamu tidak akan mau duduk di depan mesin server terus-terusan. SSH memungkinkan kamu mengakses dan mengelola server dari laptop kamu, dari mana saja, selama ada koneksi internet. Ini adalah cara kerja 99% sysadmin dan developer di dunia nyata.
💡 Tips dari Pengalaman: Kalau kamu punya public key (dari
~/.ssh/id_rsa.pub), import sekarang. Ini artinya kamu bisa login ke server tanpa password, hanya dengan key pair. Lebih aman dan lebih nyaman.
Langkah 8: Tunggu dan Reboot
Setelah semua dikonfigurasi, installer akan mulai menyalin file. Proses ini biasanya 5–15 menit tergantung kecepatan storage. Setelah selesai, pilih Reboot Now dan cabut USB saat diminta.
Langkah 9: Konfigurasi Post-Install
Setelah reboot, login dengan username dan password yang tadi kamu buat, lalu jalankan ini:
# Update package list dan upgrade semua package ke versi terbaru
sudo apt update && sudo apt upgrade -y
Kenapa harus langsung update? ISO Ubuntu yang kamu download mungkin sudah berumur beberapa bulan. Banyak security patch sudah dirilis sejak saat itu. Menjalankan server tanpa update sama seperti meninggalkan pintu rumah tidak dikunci karena “toh belum ada yang masuk tadi”.
# Install tool-tool dasar yang sering dipakai
sudo apt install -y curl wget git vim net-tools htop ufw
Penjelasan per package:
curldanwget: untuk download file dari internet via terminalgit: version control, hampir pasti dibutuhkan untuk deploy aplikasivim: text editor berbasis terminal (alternatif:nanountuk yang lebih simpel)net-tools: menyediakan perintah sepertiifconfigdannetstathtop: monitoring resource server secara interaktifufw: firewall yang lebih mudah dikonfigurasi daripadaiptableslangsung
Langkah 10: Konfigurasi Firewall dengan UFW
# Aktifkan UFW dan izinkan SSH agar kamu tidak terkunci keluar
sudo ufw allow OpenSSH
sudo ufw enable
⚠️ Perhatian: Jalankan
sudo ufw allow OpenSSHsebelumsudo ufw enable. Kalau kamu enable firewall dulu tanpa mengizinkan SSH, kamu akan langsung terkunci dari server. Ini kesalahan klasik yang pernah gue buat saat pertama kali setup, dan gue harus masuk console langsung ke server untuk memperbaikinya.
# Kalau kamu mau jalankan web server (HTTP/HTTPS)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Cek status firewall
sudo ufw status verbose
Kenapa UFW dan bukan langsung iptables? UFW adalah wrapper di atas iptables yang jauh lebih human-readable. Rule iptables yang setara dengan sudo ufw allow 80/tcp bisa jadi 3–4 baris yang mudah salah tulis. Untuk level pemula sampai intermediate, UFW sudah lebih dari cukup.
Langkah 11: Install dan Konfigurasi Nginx
Misalnya kamu deploy aplikasi Express.js dan mau ekspos ke internet, kamu butuh web server sebagai reverse proxy. Nginx adalah pilihannya.
# Install Nginx
sudo apt install -y nginx
# Jalankan Nginx dan aktifkan agar otomatis start saat reboot
sudo systemctl start nginx
sudo systemctl enable nginx
Buat konfigurasi virtual host untuk aplikasi kamu:
# Buat file konfigurasi baru
sudo vim /etc/nginx/sites-available/myapp
Isi dengan konfigurasi reverse proxy:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# Aktifkan konfigurasi dengan membuat symlink
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
# Test konfigurasi sebelum reload (jangan skip ini)
sudo nginx -t
# Reload Nginx
sudo systemctl reload nginx
💡 Tips dari Pengalaman: Selalu jalankan
sudo nginx -tsebelum reload. Satu typo di config file bisa membuat seluruh Nginx tidak mau start, dan kamu baru sadar setelah website sudah down beberapa menit.
Cara Verifikasi Ubuntu Server Berjalan dengan Benar
Ini bagian yang sering dilewati tutorial lain, padahal penting.
# 1. Cek apakah sistem berjalan normal
systemctl is-system-running
# Output yang diharapkan: "running"
# Kalau "degraded", ada service yang gagal
# 2. Cek service apa yang gagal (kalau ada)
systemctl --failed
# 3. Verifikasi SSH berjalan
sudo systemctl status ssh
# 4. Cek IP server kamu
ip addr show
# 5. Verifikasi koneksi internet dari server
ping -c 4 8.8.8.8
# 6. Cek penggunaan disk (yang ini sering dilupakan)
df -h
# Perhatikan kolom "Use%" - kalau sudah di atas 80%, mulai pikirkan cleanup
# 7. Cek log sistem untuk memastikan tidak ada error diam-diam
journalctl -p err --since "1 hour ago"
Verifikasi terakhir yang jarang disebutkan tapi krusial: coba akses server dari mesin lain via SSH.
# Dari laptop kamu, bukan dari server itu sendiri
ssh username@[IP_SERVER]
Kalau berhasil masuk, instalasi dan konfigurasi jaringan sudah benar. Kalau tidak bisa, masalah ada di firewall, SSH service, atau konfigurasi jaringan.
Troubleshooting: 4 Masalah Nyata yang Sering Muncul
1. SSH Connection Refused Setelah Install
Gejala: Kamu jalankan ssh [email protected] dan mendapat pesan ssh: connect to host 192.168.1.100 port 22: Connection refused.
Root cause: SSH service tidak berjalan, atau port 22 diblokir firewall, atau SSH memang tidak diinstall saat setup.
Solusi:
# Cek status SSH service
sudo systemctl status ssh
# Kalau tidak aktif, jalankan:
sudo systemctl start ssh
sudo systemctl enable ssh
# Kalau UFW aktif, pastikan SSH diizinkan:
sudo ufw allow OpenSSH
sudo ufw status
Pencegahan: Centang “Install OpenSSH server” saat instalasi, dan selalu allow SSH sebelum enable UFW.
2. sudo apt update Gagal dengan Error “Failed to fetch”
Gejala: Output mengandung baris seperti Err:1 http://archive.ubuntu.com/ubuntu noble InRelease diikuti Connection timed out.
Root cause: Server tidak punya koneksi internet, DNS tidak dikonfigurasi dengan benar, atau mirror Ubuntu sedang down.
Solusi:
# Test koneksi internet dulu
ping -c 3 8.8.8.8
# Kalau ping ke IP berhasil tapi ping ke domain gagal, masalah di DNS
ping -c 3 google.com
# Perbaiki DNS jika bermasalah
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# Coba ganti mirror ke mirror lokal Indonesia
sudo sed -i 's/archive.ubuntu.com/mirror.poliwangi.ac.id/g' /etc/apt/sources.list
sudo apt update
Pencegahan: Verifikasi koneksi internet dan DNS segera setelah instalasi selesai, sebelum konfigurasi apapun.
3. Nginx Tidak Mau Start Setelah Edit Config
Gejala: sudo systemctl start nginx gagal, dan sudo nginx -t menampilkan pesan error dengan nama file dan nomor baris.
Root cause: Syntax error di file konfigurasi, paling umum adalah tanda ; yang lupa di akhir baris, atau kurung kurawal yang tidak balance.
Solusi:
# Baca pesan error dengan teliti, format-nya: [file]:[baris]: [deskripsi error]
sudo nginx -t
# Edit file yang bermasalah
sudo vim /etc/nginx/sites-available/namafile
# Setelah fix, test lagi sebelum reload
sudo nginx -t && sudo systemctl reload nginx
Pencegahan: Gunakan sudo nginx -t setiap kali selesai edit config. Jadikan itu reflex.
4. Disk Penuh Secara Tiba-tiba (Masalah yang Tidak Dibahas Tutorial Lain)
Gejala: Server tiba-tiba tidak bisa menulis file apa pun. Aplikasi crash dengan error No space left on device. df -h menunjukkan / atau /var sudah 100%.
Root cause yang sering diabaikan: Log system menumpuk di /var/log, terutama journal dari systemd yang tidak dibatasi ukurannya secara default. Di server yang sudah berjalan beberapa bulan, log bisa menghabiskan puluhan GB.
Solusi:
# Cek berapa besar journal log yang menumpuk
journalctl --disk-usage
# Bersihkan log yang lebih dari 7 hari
sudo journalctl --vacuum-time=7d
# Atau batasi ke ukuran tertentu
sudo journalctl --vacuum-size=500M
# Cek folder mana yang memakan space terbesar
du -sh /var/log/* | sort -rh | head -20
Pencegahan: Konfigurasi batas ukuran journal dari awal:
sudo vim /etc/systemd/journald.conf
# Tambahkan atau ubah baris ini:
# SystemMaxUse=500M
# MaxRetentionSec=7day
sudo systemctl restart systemd-journald
Tabel Perintah Penting untuk Sehari-hari
| Perintah | Fungsi | Kapan Dipakai |
|---|---|---|
sudo systemctl status nginx |
Cek status service Nginx | Saat website tidak bisa diakses, cek ini pertama kali |
sudo systemctl restart nginx |
Restart Nginx | Setelah perubahan config besar atau saat Nginx crash |
sudo systemctl reload nginx |
Reload config tanpa downtime | Setelah edit file konfigurasi dan test sudah passed |
sudo nginx -t |
Validasi syntax config Nginx | Wajib sebelum setiap reload atau restart |
sudo tail -f /var/log/nginx/error.log |
Monitor error Nginx secara real-time | Saat debug request yang gagal |
sudo tail -f /var/log/nginx/access.log |
Monitor akses masuk secara real-time | Saat cek traffic atau debug request spesifik |
sudo ufw status verbose |
Lihat semua rule firewall aktif | Saat ada masalah koneksi yang tidak jelas |
sudo ufw allow [port]/tcp |
Buka port tertentu di firewall | Saat deploy aplikasi di port baru |
df -h |
Cek penggunaan disk semua partisi | Setiap kali server berperilaku aneh, cek disk dulu |
htop |
Monitor CPU, RAM, dan proses secara interaktif | Saat server lemot dan kamu perlu tahu pelakunya |
journalctl -f |
Monitor semua log sistem real-time | Saat debug issue yang tidak jelas asal-usulnya |
sudo apt autoremove |
Hapus package yang tidak lagi dibutuhkan | Setelah upgrade besar, untuk bereskan sisa file |
FAQ Singkat
Berapa lama Ubuntu 24.04 LTS mendapat dukungan keamanan?
Ubuntu 24.04 adalah rilis LTS (Long-Term Support), didukung selama 5 tahun standar hingga April 2029, dan bisa diperpanjang hingga 12 tahun dengan Ubuntu Pro.
Apakah bisa install Ubuntu Server di VPS gratis?
Bisa. Oracle Cloud Free Tier menyediakan 2 VM gratis dengan Ubuntu 24.04, cocok untuk eksperimen tanpa keluar biaya. AWS dan Google Cloud juga punya free tier dengan batasan tertentu.
Apa bedanya systemctl restart vs systemctl reload?
restart membunuh proses dan memulai ulang dari nol — ada downtime singkat. reload memuat ulang konfigurasi tanpa membunuh proses, lebih aman untuk production.
Kenapa gue tidak bisa login sebagai root via SSH?
Secara default, Ubuntu menonaktifkan login root via SSH sebagai langkah keamanan. Gunakan user biasa dengan sudo, atau aktifkan root login di /etc/ssh/sshd_config dengan mengubah PermitRootLogin ke yes (tidak direkomendasikan untuk server production).
Setelah semua ini, server kamu sudah berdiri dengan fondasi yang solid. Dari sini, perjalanan sesungguhnya baru mulai: deploy aplikasi, setup SSL, otomasi backup, monitoring. Tapi percayalah, bagian terberat sudah kamu lewati.