Optimasi — cepat, stabil, terawat sendiri
Percepat & rawat VPS secara otomatis
Blog yang sudah tayang masih bisa dibuat jauh lebih cepat dan lebih awetdengan beberapa pengaturan sekali pasang. Di panduan ini: kompresi & cache di Nginx, batas memori PM2, log rotation agar disk tidak penuh, dan update keamanan otomatis. Semua dijelaskan langkah demi langkah.
Lebih cepat
Kompresi & cache membuat halaman terbuka lebih ringan dan cepat.
Lebih stabil
Batas memori PM2 mencegah satu proses menjatuhkan server.
Lebih aman
Tambalan keamanan OS terpasang sendiri tiap hari.
Kenapa perlu dioptimasi?
Server yang baru di-deploy biasanya pakai pengaturan default yang "aman tapi tidak optimal". Tiga masalah paling umum: halaman terasa lambat karena tidak dikompresi, server tumbang karena satu proses memakan semua RAM, dan disk lama-lama penuh oleh file log. Semua ini bisa dicegah sekali pasang.
Kompresi gzip & brotli di Nginx
Kompresi memperkecil ukuran HTML, CSS, dan JavaScript sebelum dikirim ke browser — sering memangkas ukuran transfer 60–80%. Buat file konfigurasi khusus agar rapi:
1# /etc/nginx/conf.d/compression.conf2# Kompresi teks agar transfer lebih kecil & cepat3gzip on;4gzip_vary on;5gzip_comp_level 5;6gzip_min_length 256;7gzip_proxied any;8gzip_types9 text/plain text/css application/json10 application/javascript text/javascript11 image/svg+xml application/xml;Uji konfigurasi, muat ulang Nginx, lalu pastikan aktif:
# Uji konfigurasi lalu muat ulang Nginx
sudo nginx -t
sudo systemctl reload nginx
# Verifikasi kompresi aktif (cari "content-encoding: gzip")
curl -sI -H "Accept-Encoding: gzip" https://blogku.com | grep -i content-encodingdeploy@server:~$ curl -sI -H "Accept-Encoding: gzip" https://blogku.com | grep -i content-encodingcontent-encoding: gzip# kompresi aktif ✅sudo apt install libnginx-mod-http-brotli lalu aktifkan brotli on; mirip blok gzip di atas.Cache aset statis
Gambar, font, dan file _next/static jarang berubah. Suruh browser menyimpannya agar kunjungan berikutnya nyaris instan. Tambahkan blok berikut di dalam server { ... } config situsmu:
1# Di dalam server { ... } pada config Nginx situsmu2# Simpan aset statis di browser pengunjung selama 30 hari3location /_next/static/ {4 expires 30d;5 add_header Cache-Control "public, max-age=2592000, immutable";6}7 8location ~* \.(?:jpg|jpeg|png|gif|webp|avif|svg|ico|woff2)$ {9 expires 30d;10 add_header Cache-Control "public, max-age=2592000";11}Jalankan sudo nginx -t && sudo systemctl reload nginx untuk menerapkan. File ber-hash Next.js aman memakai immutable karena namanya berubah tiap build.
Batasi memori PM2 (auto-restart)
Di VPS RAM kecil, kebocoran memori bisa menjatuhkan seluruh server. max_memory_restart menyuruh PM2 me-restart aplikasi dengan mulus bila pemakaian RAM melewati batas. Buat file konfigurasi:
1// ecosystem.config.js — di folder aplikasimu2module.exports = {3 apps: [4 {5 name: 'myblog',6 script: 'node_modules/next/dist/bin/next',7 args: 'start -p 3000',8 instances: 1,9 // Restart otomatis bila pemakaian RAM melewati 300MB10 max_memory_restart: '300M',11 env: { NODE_ENV: 'production' },12 },13 ],14}Jalankan dengan konfigurasi ini lalu simpan:
# Jalankan pakai konfigurasi & simpan agar nyala setelah reboot
pm2 start ecosystem.config.js
pm2 save300M–500M dan sesuaikan dengan hasil pm2 status.Cegah disk penuh: log rotation
File log tumbuh tanpa henti dan diam-diam memenuhi disk — penyebab umum blog tiba-tiba mati. logrotate (bawaan Ubuntu) memutar, mengompres, dan menghapus log lama otomatis. Buat aturannya:
1# /etc/logrotate.d/pm2-myblog2/home/deploy/.pm2/logs/*.log {3 daily4 rotate 75 compress6 delaycompress7 missingok8 notifempty9 copytruncate10}Aturan di atas menyimpan 7 hari log terakhir dalam bentuk terkompres dan membuang sisanya. Uji tanpa menunggu sehari:
deploy@server:~$ sudo logrotate -f /etc/logrotate.d/pm2-myblogdeploy@server:~$ ls -lh ~/.pm2/logsout.log out.log.1.gz error.log error.log.1.gz# log lama dikompres, disk aman ✅Update keamanan otomatis
Celah keamanan ditemukan tiap minggu. unattended-upgrades memasang tambalan keamanan Ubuntu secara otomatis, tanpa kamu harus ingat menjalankan apt upgrade. Pasang & aktifkan:
# Pasang update keamanan otomatis
sudo apt update
sudo apt install -y unattended-upgrades
# Aktifkan (pilih "Yes" pada dialog)
sudo dpkg-reconfigure --priority=low unattended-upgradesPastikan benar-benar aktif:
# Cek bahwa update otomatis aktif
cat /etc/apt/apt.conf.d/20auto-upgrades
# Lihat simulasi apa yang akan di-update
sudo unattended-upgrade --dry-run --debug | headVerifikasi semua aktif
Jalankan rangkaian cek cepat untuk memastikan semua menyala:
deploy@server:~$ curl -sI -H "Accept-Encoding: gzip" https://blogku.com | grep -i content-encodingcontent-encoding: gzipdeploy@server:~$ pm2 info myblog | grep "max memory restart"max memory restart: 300Mdeploy@server:~$ systemctl is-active unattended-upgradesactive# cepat, stabil, & terawat otomatis ✅Masalah umum & cara mengatasinya
Bila ada yang tidak sesuai harapan, cek tabel berikut:
| Gejala | Sebab | Solusi |
|---|---|---|
| nginx -t: test failed | Salah ketik atau file diletakkan di lokasi yang salah. | Baca pesan error (menyebut baris), perbaiki, jalankan nginx -t lagi. |
| content-encoding tidak muncul | gzip_types kurang lengkap atau di-cache CDN. | Pastikan tipe konten ada di gzip_types; bypass cache saat menguji. |
| Aplikasi sering di-restart PM2 | max_memory_restart terlalu kecil untuk aplikasimu. | Naikkan ke 400–500M, atau tambah swap bila RAM server kecil. |
| Disk tetap penuh oleh log | logrotate belum jalan atau path log salah. | Cek path di config, uji: sudo logrotate -f /etc/logrotate.d/pm2-myblog. |
Servermu kini cepat & terawat
Dengan kompresi, cache, batas memori, log rotation, dan update otomatis, blogmu ringan dan jarang bermasalah. Selanjutnya, manfaatkan satu VPS untuk banyak situs sekaligus.