{
"slug": "install-nginx-dan-hosting-website-sendiri",
"category": "Cloud & VPS",
"excerpt": "Panduan lengkap menginstal Nginx di server Linux dan menyiapkan hosting website pribadi secara aman serta optimal. Termasuk konfigurasi dasar, SSL, dan troubleshooting umum.",
"seo_title": "Cara Install Nginx & Hosting Website Sendiri di Linux",
"seo_description": "Ikuti tutorial step‑by‑step untuk menginstal Nginx, mengonfigurasi virtual host, menambahkan SSL, serta mengamankan server web Anda di lingkungan VPS.",
"read_time": 7,
"tags": [
"Nginx",
"Hosting",
"Linux",
"VPS",
"Web Server"
],
"content": "# Install Nginx dan Hosting Website Sendiri\n\n## Pendahuluan\nServer web berbasis Nginx menjadi pilihan utama karena performa tinggi, konsumsi memori rendah, dan dukungan reverse‑proxy yang kuat. Tutorial ini memandu Anda menyiapkan server Linux (Ubuntu 22.04 LTS), menginstal Nginx, membuat virtual host, menambahkan sertifikat SSL gratis via Let's Encrypt, serta mengamankan instalasi untuk produksi.\n\n## Prasyarat & Persiapan\n| Item | Keterangan |\n|------|------------|\n| VPS / Server | Ubuntu 22.04 LTS (minimal 1 CPU, 1 GB RAM) |\n| Akses root | SSH dengan kunci publik/privat |\n| Domain | Sudah terdaftar & mengarah ke IP VPS |\n| Alat tambahan | curl, git, ufw (biasanya sudah terpasang) |\n| Akun AI‑assistant (opsional) | Gunakan ChatGPT Plus untuk bantuan kode cepat |\n\n## Langkah Demi Langkah\n### Step 1 – Update Sistem & Install Nginx\nbash\n# Update paket dan upgrade keamanan\nsudo apt update && sudo apt upgrade -y\n\n# Install Nginx\nsudo apt install nginx -y\n\n# Pastikan service berjalan\nsudo systemctl enable --now nginx\n\n> Catatan: Pada Ubuntu, firewall ufw biasanya menolak semua kecuali OpenSSH. Kita akan mengizinkan HTTP/HTTPS pada langkah berikut.\n\n### Step 2 – Konfigurasi Firewall\nbash\n# Izinkan HTTP (80) dan HTTPS (443)\nsudo ufw allow 'Nginx Full'\n\n# Verifikasi status\nsudo ufw status\n\n\n### Step 3 – Buat Direktori Website\nbash\n# Ganti example.com dengan domain Anda\nDOMAIN=example.com\n\n# Buat folder root website\nsudo mkdir -p /var/www/$DOMAIN/html\nsudo chown -R $USER:$USER /var/www/$DOMAIN/html\nsudo chmod -R 755 /var/www/$DOMAIN\n\n# Tambahkan file index.html sederhana\ncat > /var/www/$DOMAIN/html/index.html <<'EOF'\n<!DOCTYPE html>\n<html lang=\"id\">\n<head>\n <meta charset=\"UTF-8\">\n <title>Selamat Datang di $DOMAIN</title>\n</head>\n<body>\n <h1>Website berjalan dengan Nginx!</h1>\n</body>\n</html>\nEOF\n\n\n### Step 4 – Buat Virtual Host Nginx\nbash\nsudo tee /etc/nginx/sites-available/$DOMAIN <<'EOF'\nserver {\n listen 80;\n listen [::]:80;\n server_name $DOMAIN www.$DOMAIN;\n\n root /var/www/$DOMAIN/html;\n index index.html index.htm;\n\n location / {\n try_files $uri $uri/ =404;\n }\n\n # Log standar\n access_log /var/log/nginx/${DOMAIN}_access.log;\n error_log /var/log/nginx/${DOMAIN}_error.log;\n}\nEOF\n\n# Aktifkan site & reload Nginx\nsudo ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/\nsudo nginx -t && sudo systemctl reload nginx\n\n\n### Step 5 – Dapatkan Sertifikat SSL dengan Certbot\nbash\n# Install Certbot & plugin Nginx\nsudo apt install certbot python3-certbot-nginx -y\n\n# Jalankan proses otomatis\nsudo certbot --nginx -d $DOMAIN -d www.$DOMAIN --non-interactive --agree-tos -m admin@$DOMAIN\n\n> Tip: Sertifikat otomatis diperpanjang tiap 90 hari. Pastikan cron job certbot renew aktif (biasanya sudah terpasang).\n\n### Step 6 – Verifikasi HTTPS & HTTP/2\nBuka browser dan akses https://$DOMAIN. Pastikan lock hijau muncul dan header HTTP/2 terdeteksi (bisa dicek via curl -I https://$DOMAIN).\nbash\ncurl -I https://$DOMAIN | grep -i \"http/\"\n\n\n## Tips Optimasi & Keamanan\n- Rate limiting: Tambahkan blok limit_req_zone di /etc/nginx/nginx.conf untuk melindungi dari serangan DDoS ringan.\n- Header keamanan: Sertakan X-Content-Type-Options, X-Frame-Options, dan Content-Security-Policy pada blok server.\nnginx\nadd_header X-Content-Type-Options nosniff;\nadd_header X-Frame-Options SAMEORIGIN;\nadd_header Content-Security-Policy \"default-src 'self'\";\n\n- Fail2Ban: Instal dan konfigurasikan untuk memblokir IP yang mencoba login SSH berulang kali.\n- Backup konfigurasi: Simpan /etc/nginx dan /var/www ke repositori Git (private) atau layanan backup.\n- AI‑assisted documentation: Gunakan Notion AI untuk mencatat perubahan konfigurasi secara terstruktur.\n\n## Troubleshooting Error Umum\n| Gejala | Penyebab | Solusi |\n|--------|----------|--------|\n| nginx: [emerg] bind() to 0.0.0.0:80 failed | Port 80 sudah dipakai (mis. Apache) | Stop layanan lain: sudo systemctl stop apache2 && sudo systemctl disable apache2 |\n| 502 Bad Gateway setelah mengaktifkan SSL | Certbot belum reload Nginx | Jalankan sudo systemctl reload nginx atau sudo certbot renew --dry-run |\n| Permission denied saat mengakses /var/www | Direktori tidak dimiliki oleh user Nginx (www-data) | sudo chown -R www-data:www-data /var/www/$DOMAIN |\n| curl -I https://domain menampilkan SSL: CERTIFICATE_VERIFY_FAILED | Sertifikat belum terpasang atau DNS belum mengarah | Pastikan A record mengarah ke IP VPS dan tunggu propagasi DNS (maks 30 menit) |\n\n## Kesimpulan\nTutorial ini memberikan alur lengkap: instalasi Nginx, konfigurasi virtual host, penambahan SSL otomatis, serta langkah keamanan produksi. Dengan konfigurasi dasar ini, Anda dapat men-deploy aplikasi statis atau menghubungkan Nginx sebagai reverse‑proxy untuk backend lain (Node.js, Django, dll.). Selalu monitor log (/var/log/nginx/) dan perbarui paket keamanan secara rutin.\n"
}