VPS Setup & Configuration — DevOps

Setup VPS dari Nol VPS (Virtual Private Server) adalah server virtual yang kamu kelola sendiri. Ini panduan setup VPS baru untuk menjalankan web application. 1.

Setup VPS dari Nol

VPS (Virtual Private Server) adalah server virtual yang kamu kelola sendiri. Ini panduan setup VPS baru untuk menjalankan web application.

1. SSH & Keamanan Awal

# Login pertama kali
ssh root@YOUR_SERVER_IP

# Buat user baru (jangan pakai root)
adduser deploy
usermod -aG sudo deploy

# Setup SSH key (ed25519 direkomendasikan, bukan RSA)
ssh-keygen -t ed25519 -C "[email protected]"    # di local
ssh-copy-id deploy@YOUR_SERVER_IP             # copy key ke server

# Disable password login
sudo nano /etc/ssh/sshd_config
# PasswordAuthentication no
# PermitRootLogin no
sudo systemctl restart sshd

Kenapa ed25519 Lebih Baik dari RSA?

Gunakan RSA hanya jika target system lama tidak mendukung ed25519 (pre-OpenSSH 6.5, yaitu sebelum 2014).

2. Firewall UFW (Uncomplicated Firewall)

UFW adalah frontend sederhana untuk iptables. Default policy: tolak semua incoming, izinkan semua outgoing.

# Policy default — WAJIB set sebelum enable
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow services essential (sebelum enable, agar tidak lock diri sendiri!)
sudo ufw allow 22/tcp       # SSH — JANGAN LUPA ATAU TERKUNCI
sudo ufw allow 80/tcp       # HTTP
sudo ufw allow 443/tcp      # HTTPS

# Enable firewall
sudo ufw enable
sudo ufw status verbose

# Contoh rule advanced:
sudo ufw allow from 10.0.0.0/8 to any port 5432    # Postgres hanya dari VPC
sudo ufw limit 22/tcp                               # rate limit SSH (brute force mitigation)
sudo ufw delete allow 80/tcp                        # hapus rule

⚠️ Sebelum ufw enable, pastikan port 22 (SSH) sudah di-allow — kalau tidak, koneksi SSH terputus dan kamu terkunci dari server.

3. Install Stack

# Update system
sudo apt update && sudo apt upgrade -y

# Install Node.js (via NodeSource)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Install Nginx
sudo apt install -y nginx

# Install PostgreSQL
sudo apt install -y postgresql postgresql-contrib

# Install PHP & Composer (untuk Laravel)
sudo apt install -y php8.3-fpm php8.3-pgsql php8.3-mbstring
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

4. Deploy Aplikasi

# Clone project
cd /var/www
sudo git clone https://github.com/user/my-app.git
sudo chown -R deploy:deploy my-app

# Setup environment
cd my-app
cp .env.example .env
nano .env    # isi database credentials, dll

# Install & build
npm ci && npm run build

# Setup Nginx & SSL
sudo certbot --nginx -d myapp.com

Yang akan kamu pelajari