2025-10-08
admin
Diperbarui 2025-10-11

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

Amankan deployment Node.js Anda! Tutorial ini memandu Anda membuat user khusus dengan akses sudo terbatas, setup SSH key, dan konfigurasi penting lainnya. Pelajari cara terbaik meningkatkan keamanan server VPS Anda.
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?

blog programming teknologi admin

Artikel Terkait