Domain sendiri — reverse proxy, ada gambar tiap langkah
Hubungkan domain ke aplikasimu dengan Nginx
Aplikasimu jalan di server tapi cuma bisa dibuka lewat IP:3000 yang jelek dan susah diingat? Di panduan ini kamu akan memasang Nginx sebagai reverse proxy — penjaga pintu yang menerima tamu di app.domainku.com lalu mengantar mereka diam-diam ke aplikasi di port 3000. Dijelaskan dari nol, pelan-pelan, sampai website tampil di domainmu.
Domain rapi
Akses lewat nama domain, bukan IP:port yang sulit diingat.
Satu pintu
Banyak aplikasi bisa berbagi satu server lewat subdomain.
Siap HTTPS
Setelah ini, gembok HTTPS gratis tinggal sekali perintah.
http://127.0.0.1:3000). Kalau belum, ikuti dulu panduan Docker. Kamu juga perlu sebuah domain (mis. dari Niagahoster, Domainesia, atau Cloudflare).Apa itu reverse proxy?
Bayangkan aplikasimu adalah dapur restoran yang sibuk di belakang — alamatnya 127.0.0.1:3000, hanya orang dalam yang tahu. Tamu (pengunjung internet) tidak boleh masuk ke dapur langsung. Mereka datang ke pintu depan yang rapi: app.domainku.com.
Nginx adalah pelayan di pintu depan itu. Ia menerima tamu di domain, lalu meneruskan pesanan ke dapur di port 3000, dan membawa hidangan kembali ke tamu. Inilah yang disebut reverse proxy: satu pintu publik yang cantik di depan, aplikasi tersembunyi aman di belakang.
Yang perlu kamu siapkan
Tiga hal saja:
- VPS dengan akses sudo (Ubuntu/Debian) dan aplikasi yang sudah jalan di port lokal, mis. :3000.
- Sebuah domain yang kamu miliki (mis. domainku.com).
- Akses ke panel DNS domain itu (di tempat kamu beli domain, atau di Cloudflare).
Pasang Nginx di server
Masuk ke server lewat SSH, lalu pasang Nginx. Perintah di bawah juga langsung menyalakannya dan membuatnya otomatis hidup tiap server reboot:
# DI SERVER — pasang Nginx
sudo apt update
sudo apt install -y nginx
# pastikan Nginx hidup
sudo systemctl enable --now nginx
sudo systemctl status nginx --no-pagerUntuk memastikan, buka http://IP-VPS-kamu di browser. Kalau muncul halaman "Welcome to nginx!", berarti Nginx sudah hidup dan siap diatur:
deploy@server:~$ sudo systemctl status nginx --no-pager● nginx.service - A high performance web server Active: active (running)# Nginx hidup ✅Arahkan domain ke server (DNS)
Sekarang kita beri tahu internet bahwa app.domainku.com harus menuju ke IP VPS-mu. Buka panel DNS domain (di tempat beli domain atau di Cloudflare), lalu tambahkan satu A record:
| Kolom | Isi | Keterangan |
|---|---|---|
| Type | A | Jenis record — arahkan ke alamat IPv4 |
| Name | app | Subdomain (hasilnya app.domainku.com) |
| Value | 203.0.113.10 | IP publik VPS kamu |
| TTL | Auto | Biarkan default |
Setelah disimpan, DNS butuh beberapa menit untuk menyebar. Cek dari laptop apakah domain sudah menunjuk ke IP yang benar:
kamu@laptop:~$ dig app.domainku.com +short203.0.113.10# muncul IP VPS = DNS sudah benar ✅DNS only(awan abu-abu). Setelah HTTPS dari Let's Encrypt aktif, baru boleh dinyalakan (awan oranye).Tulis konfigurasi reverse proxy
Setiap situs di Nginx punya satu file konfigurasi di folder /etc/nginx/sites-available/. Buat file baru sesuai nama domainmu:
deploy@server:~$ sudo nano /etc/nginx/sites-available/app.domainku.comIsi file tersebut dengan konfigurasi ini:
1server {2 listen 80;3 server_name app.domainku.com;4 5 location / {6 proxy_pass http://127.0.0.1:3000;7 proxy_http_version 1.1;8 proxy_set_header Upgrade $http_upgrade;9 proxy_set_header Connection 'upgrade';10 proxy_set_header Host $host;11 proxy_set_header X-Real-IP $remote_addr;12 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;13 proxy_set_header X-Forwarded-Proto $scheme;14 proxy_cache_bypass $http_upgrade;15 }16}Teks lengkap yang bisa kamu salin (ganti app.domainku.com dan port 3000 sesuai punyamu):
# /etc/nginx/sites-available/app.domainku.com
server {
listen 80;
server_name app.domainku.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}server_name adalah domain yang dilayani, dan proxy_pass adalah alamat aplikasimu di belakang. Baris Upgrade/Connection diperlukan agar fitur real-time (WebSocket) tetap jalan.Aktifkan situs & tes konfigurasi
File di sites-availablebelum aktif sampai kita "menyalakannya" dengan membuat symlink ke sites-enabled. Selalu jalankan nginx -t dulu untuk memastikan tidak ada salah ketik sebelum reload:
# Aktifkan situs: bikin symlink ke folder sites-enabled
sudo ln -s /etc/nginx/sites-available/app.domainku.com \
/etc/nginx/sites-enabled/
# Tes apakah konfigurasi tidak ada salah ketik
sudo nginx -t
# Kalau "syntax is ok" -> muat ulang Nginx
sudo systemctl reload nginxdeploy@server:~$ sudo nginx -tnginx: configuration file /etc/nginx/nginx.conf test is successfuldeploy@server:~$ sudo systemctl reload nginx# situs aktif tanpa downtime ✅sudo rm /etc/nginx/sites-enabled/default lalu sudo systemctl reload nginx.Buka di browser
Buka http://app.domainku.com di browser. Aplikasimu kini tampil lewat domain sendiri — IP dan port yang jelek sudah tersembunyi rapi di belakang Nginx:
Blog berbasis markdown
Tulis di Markdown. Push ke GitHub. Deploy di VPS milikmu sendiri.
Menyiapkan VPS pertama kamu
Sebuah catatan singkat tentang menjalankan blog kamu sendiri…
Menulis dengan Markdown
Sebuah catatan singkat tentang menjalankan blog kamu sendiri…
http:// (belum ada gembok). Itu wajar — langkah berikutnya kita pasang HTTPS gratisdari Let's Encrypt supaya jadi https:// yang aman.Masalah umum & cara mengatasinya
Kalau ada yang belum jalan, cek tabel ini dulu sebelum panik:
| Gejala | Sebab | Solusi |
|---|---|---|
| 502 Bad Gateway | Aplikasi di port 3000 belum jalan, atau salah port. | Pastikan app hidup: curl http://127.0.0.1:3000 di server harus membalas. |
| Tetap muncul "Welcome to nginx" | Config default masih aktif & menimpa situsmu. | Hapus default: sudo rm /etc/nginx/sites-enabled/default lalu reload. |
| Domain belum terbuka | DNS belum menyebar atau salah isi IP. | Cek dengan: dig app.domainku.com +short — harus muncul IP VPS. |
| nginx -t error | Ada salah ketik di file config (titik koma/kurung). | Baca pesan error-nya, ia menyebut nomor baris yang bermasalah. |
Langkah berikutnya
Domain sudah jalan lewat http://. Sekarang amankan dengan gembok HTTPS gratis — prosesnya tinggal satu perintah karena Nginx sudah siap.
Lanjutan: pasang SSL/HTTPS gratis dengan Let's Encrypt →
Ubah http:// jadi https:// bergembok, gratis, dan perpanjang otomatis. Lengkap dengan tombol salin.