✦ Selamat Idul Fitri 1447 H πŸŒ™ Taqabbalallahu minna wa minkum. Mohon maaf lahir dan batin. ✦
Coding

Panduan Setup Web Server VPS dari Nol sampai Siap Pakai

Β· 0 komentar Β· Β± 4 menit baca Β· πŸ‘ 145 dilihat

Panduan Setup Web Server VPS dari Nol sampai Siap Pakai

Waktu pertama kali saya pesan VPS, yang ada di bayangan saya adalah: beli, upload file, selesai. Persis seperti shared hosting tapi lebih mahal. Ternyata jauh dari itu. VPS itu benar-benar kosong β€” tidak ada panel cPanel, tidak ada Softaculous, tidak ada file manager yang tinggal klik. Yang ada hanya terminal hitam dan cursor yang berkedip-kedip menunggu perintah.

Butuh beberapa minggu sampai saya benar-benar nyaman. Dan dari proses itu, saya tulis panduan ini β€” bukan yang paling lengkap di dunia, tapi yang paling jujur tentang apa yang benar-benar perlu dilakukan.

Langkah 1: Amankan Server Sebelum Apapun

Ini yang paling sering dilewat di tutorial pemula. Begitu VPS aktif dan dapat IP publik, dalam hitungan menit sudah ada bot yang mengetuk-ngetuk pintu mencoba login. Saya pernah cek auth.log di VPS baru yang belum saya sentuh 30 menit β€” sudah ada ratusan percobaan login dari berbagai IP asing.

Jadi langkah pertama bukan install Nginx, tapi amankan akses SSH-nya dulu.

Buat user baru, jangan kerja sebagai root:

adduser namauser
usermod -aG sudo namauser
su - namauser

Pasang firewall sebelum lanjut apapun:

sudo apt update && sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw enable

Konfirmasi dulu UFW aktif sebelum lanjut. Kalau salah konfigurasi dan tidak sengaja block port SSH, Anda tidak bisa masuk lagi ke server.

Langkah 2: Install Nginx

Saya pilih Nginx karena lebih efisien di memory dibanding Apache, terutama untuk VPS kecil. Dengan RAM 1GB, perbedaannya cukup terasa.

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

Buka port HTTP dan HTTPS di firewall:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Coba akses IP server dari browser β€” kalau muncul halaman "Welcome to nginx", instalasi berhasil.

Langkah 3: Install PHP dan MySQL

sudo apt install php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-gd -y
sudo apt install mysql-server -y
sudo mysql_secure_installation

mysql_secure_installation akan menanyakan beberapa hal: set password root, hapus user anonymous, larang login root dari remote, hapus database test. Jawab yes untuk semua kecuali kalau punya alasan khusus tidak melakukannya.

Buat database dan user baru untuk aplikasi β€” jangan pakai user root untuk koneksi aplikasi:

sudo mysql -u root -p
CREATE DATABASE nama_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'userapp'@'localhost' IDENTIFIED BY 'password_kuat';
GRANT ALL PRIVILEGES ON nama_db.* TO 'userapp'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Langkah 4: Konfigurasi Nginx untuk PHP

Buat file konfigurasi baru untuk domain:

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

Isi dengan konfigurasi ini:

server {
listen 80;
server_name namadomain.com www.namadomain.com;
root /var/www/namadomain;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
location ~ /.ht {
deny all;
}
}

Aktifkan konfigurasi dan reload Nginx:

sudo ln -s /etc/nginx/sites-available/namadomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

nginx -t itu penting β€” selalu test konfigurasi sebelum reload. Kalau ada syntax error dan langsung reload, Nginx bisa gagal start dan situs down.

Langkah 5: SSL dengan Let's Encrypt

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

Certbot akan otomatis memodifikasi konfigurasi Nginx dan setup redirect HTTP ke HTTPS. Sertifikat berlaku 90 hari dan auto-renewal sudah diurus Certbot β€” tidak perlu khawatir expired.

Untuk verifikasi auto-renewal berjalan benar:

sudo certbot renew --dry-run

Langkah 6: Optimasi Dasar

Beberapa hal kecil yang dampaknya lumayan:

Aktifkan Gzip di Nginx untuk kompres respons:

# Di /etc/nginx/nginx.conf, dalam blok http {}
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1000;

Tuning PHP-FPM untuk server kecil β€” default-nya agak boros:

# Di /etc/php/8.3/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Dan untuk MySQL, kurangi buffer pool size kalau RAM server kecil:

# Di /etc/mysql/mysql.conf.d/mysqld.cnf
innodb_buffer_pool_size = 128M
max_connections = 50

Setelah Semuanya Jalan

Ada beberapa hal yang perlu dijadikan rutinitas setelah server berjalan: pantau log secara berkala, setup backup otomatis, dan pastikan sistem selalu diupdate.

# Update sistem secara berkala
sudo apt update && sudo apt upgrade -y
# Cek log Nginx kalau ada yang janggal
sudo tail -f /var/log/nginx/error.log

VPS memang butuh perhatian lebih dibanding shared hosting. Tapi dari pengalaman, justru di situlah nilai belajarnya β€” setiap masalah yang muncul dan berhasil diselesaikan sendiri memberi pemahaman yang tidak bisa didapat dari sekadar membaca tutorial. Proses itu yang membuat pengetahuan benar-benar menempel. πŸ™‚


Komentar

Belum ada komentar. Jadilah yang pertama menulis.

Tulis Komentar

↑