Amankan Deployment Node.js: Buat User Sudo Khusus di VPS

Berikut cara membuat user khusus untuk deployment Node.js dengan akses sudo:
1. Buat User Baru
# Login sebagai root atau user dengan sudo sudo adduser nodeuser
Anda akan diminta mengisi:
- Password (buat yang kuat)
- Full Name (opsional, bisa enter saja)
- Room Number, dll (bisa skip semua)
2. Berikan Akses Sudo
sudo usermod -aG sudo nodeuser
3. Verifikasi User Sudah Dibuat
# Cek apakah user ada di grup sudo groups nodeuser # Hasilnya harus menampilkan: nodeuser : nodeuser sudo
4. Setup SSH Key untuk User (Recommended)
Login sebagai user baru:
su - nodeuser
Buat direktori SSH:
mkdir -p ~/.ssh chmod 700 ~/.ssh
Tambahkan public key Anda:
nano ~/.ssh/authorized_keys # Paste public key SSH Anda disini
Set permission yang benar:
chmod 600 ~/.ssh/authorized_keys
5. Setup Direktori untuk Deployment
Kembali ke user dengan sudo, lalu:
# Buat direktori untuk aplikasi sudo mkdir -p /var/www sudo chown -R nodeuser:nodeuser /var/www sudo chmod -R 755 /var/www
6. Test Login User Baru
Dari komputer lokal Anda:
ssh nodeuser@ip-vps-anda
Test sudo access:
sudo ls -la /root # Masukkan password nodeuser jika diminta
7. Setup Password-less Sudo (Opsional)
⚠️ Gunakan dengan hati-hati! Ini membuat user bisa menjalankan sudo tanpa password:
sudo visudo
Tambahkan di bagian bawah:
nodeuser ALL=(ALL) NOPASSWD:ALL
Atau lebih aman, hanya untuk perintah tertentu:
nodeuser ALL=(ALL) NOPASSWD: /usr/bin/pm2, /usr/bin/systemctl, /usr/bin/nginx
8. Batasi Akses SSH (Security Best Practice)
Edit konfigurasi SSH:
sudo nano /etc/ssh/sshd_config
Ubah/tambahkan:
# Nonaktifkan root login PermitRootLogin no # Hanya izinkan user tertentu AllowUsers nodeuser # Nonaktifkan password authentication (jika sudah pakai SSH key) PasswordAuthentication no
Restart SSH:
sudo systemctl restart sshd
9. Install Node.js & PM2 sebagai User Baru
# Login sebagai nodeuser su - nodeuser # Install NVM (Node Version Manager) - Recommended curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # Reload bash source ~/.bashrc # Install Node.js nvm install --lts nvm use --lts # Install PM2 npm install -g pm2
10. Setup PM2 Auto-start
pm2 startup # Jalankan perintah yang muncul dengan sudo
Struktur Direktori yang Recommended
/var/www/ ├── app-name/ │ ├── src/ │ ├── node_modules/ │ ├── package.json │ ├── .env │ └── ... └── another-app/
Perintah Deployment Typical
# Login sebagai nodeuser ssh nodeuser@vps-ip # Navigate ke direktori cd /var/www/app-name # Pull latest code git pull origin main # Install dependencies npm install # Restart app pm2 restart app-name
Security Checklist
- ✅ User khusus dibuat (bukan pakai root)
- ✅ SSH key authentication diaktifkan
- ✅ Root login dinonaktifkan
- ✅ Firewall diaktifkan (ufw)
- ✅ Password yang kuat
- ✅ Sudo access terbatas (jika menggunakan NOPASSWD)
Apakah Anda ingin saya jelaskan bagian tertentu lebih detail, seperti setup CI/CD atau GitHub Actions untuk auto-deploy?