Tutorial Bikin Proxy Server Sendiri dengan Node JS Ubuntu: Panduan Lengkap & Praktis

Pernahkah Anda merasa khawatir dengan privasi data saat berselancar di internet, atau mungkin Anda ingin mengakses konten yang dibatasi secara geografis? Solusi yang paling efektif adalah dengan memiliki server perantara sendiri. Dalam artikel ini, kita akan membahas secara mendalam tentang tutorial bikin proxy server sendiri dengan Node JS Ubuntu yang bisa Anda implementasikan dengan mudah.

Membangun proxy server pribadi bukan hanya soal teknis, tetapi juga tentang mengambil kendali penuh atas lalu lintas data Anda. Dengan menggunakan kombinasi Node.js yang ringan dan Ubuntu yang stabil, Anda bisa menciptakan infrastruktur yang andal tanpa harus membayar biaya langganan VPN yang mahal setiap bulannya. Mari kita mulai perjalanan teknis Anda sekarang juga.

Apa itu Proxy Server dan Bagaimana Cara Kerjanya?

Sebelum masuk ke teknis tutorial bikin proxy server sendiri dengan Node JS Ubuntu, penting untuk memahami konsep dasarnya. Proxy server bertindak sebagai jembatan antara perangkat Anda (client) dan internet (server tujuan). Saat Anda meminta sebuah halaman web, permintaan tersebut dikirim ke proxy terlebih dahulu, baru kemudian proxy meneruskannya ke internet.

Ada beberapa jenis proxy yang umum digunakan, seperti Forward Proxy, Reverse Proxy, dan Transparent Proxy. Dalam tutorial ini, kita akan fokus pada pembuatan Forward Proxy yang berfungsi untuk menyembunyikan alamat IP asli Anda dan memberikan lapisan anonimitas ekstra.

Statistik menunjukkan bahwa penggunaan proxy dan VPN meningkat lebih dari 20% setiap tahunnya seiring dengan meningkatnya kesadaran akan keamanan siber. Dengan membuat sendiri, Anda menghindari risiko log data yang sering dilakukan oleh penyedia layanan proxy gratisan yang tidak terpercaya.

Persiapan Sistem: Mengapa Node.js dan Ubuntu?

Node.js adalah pilihan yang sangat populer untuk membangun aplikasi jaringan karena sifatnya yang non-blocking I/O dan event-driven. Ini berarti Node.js dapat menangani ribuan koneksi secara bersamaan dengan penggunaan memori yang sangat efisien, yang merupakan karakteristik utama yang dibutuhkan oleh sebuah proxy server.

Di sisi lain, Ubuntu adalah distribusi Linux yang paling banyak digunakan untuk server cloud. Keandalannya, komunitas yang besar, dan kemudahan manajemen paket menjadikannya fondasi yang sempurna untuk tutorial ini. Anda disarankan menggunakan VPS (Virtual Private Server) dari penyedia seperti DigitalOcean, Linode, atau AWS dengan minimal RAM 1GB.

Langkah 1: Instalasi Node.js di Ubuntu

Langkah pertama dalam tutorial bikin proxy server sendiri dengan Node JS Ubuntu adalah menyiapkan lingkungan kerja. Pastikan server Ubuntu Anda sudah terupdate.

Jalankan perintah berikut di terminal Anda:

sudo apt update
sudo apt upgrade -y

Selanjutnya, kita akan menginstal Node.js menggunakan Node Source agar mendapatkan versi terbaru (LTS). Masukkan perintah berikut:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

Verifikasi instalasi dengan mengecek versi Node.js dan NPM:

node -v
npm -v

Langkah 2: Inisialisasi Project Proxy

Setelah Node.js siap, buatlah direktori baru untuk project Anda. Hal ini penting untuk menjaga kerapihan struktur file di server Anda.

mkdir my-proxy-server
cd my-proxy-server
npm init -y

Kita akan menggunakan library populer bernama http-proxy yang sangat stabil untuk menangani penerusan request. Instal library tersebut dengan perintah:

npm install http-proxy

Langkah 3: Menulis Kode Proxy Server dengan Node.js

Sekarang kita masuk ke bagian inti dari tutorial bikin proxy server sendiri dengan Node JS Ubuntu. Buatlah file bernama server.js menggunakan editor teks seperti Nano atau Vim.

nano server.js

Salin dan tempel kode dasar berikut ke dalam file tersebut:

const http = require('http');
const httpProxy = require('http-proxy');

const proxy = httpProxy.createProxyServer({});

const server = http.createServer((req, res) => {
  console.log('Request received for:', req.url);
  
  // Ganti target dengan URL tujuan atau biarkan dinamis
  proxy.web(req, res, { target: req.url });
});

const PORT = 8080;
server.listen(PORT, () => {
  console.log(`Proxy server berjalan di port ${PORT}`);
});

Kode di atas adalah bentuk paling sederhana dari sebuah proxy. Namun, untuk penggunaan praktis, kita perlu menambahkan logika untuk menangani error agar server tidak crash saat menemui request yang tidak valid.

Langkah 4: Menambahkan Fitur Keamanan (Authentication)

Membiarkan proxy server terbuka untuk umum sangatlah berbahaya. Orang lain bisa menggunakan server Anda untuk aktivitas ilegal, dan Anda yang akan bertanggung jawab secara hukum. Oleh karena itu, kita perlu menambahkan fitur autentikasi dasar (Basic Auth).

Ubah kode server.js Anda menjadi seperti ini:

const http = require('http');
const httpProxy = require('http-proxy');

const proxy = httpProxy.createProxyServer({});
const AUTH_USER = 'admin';
const AUTH_PASS = 'passwordRahasia123';

const server = http.createServer((req, res) => {
  const auth = req.headers['proxy-authorization'];

  if (!auth) {
    res.statusCode = 407;
    res.setHeader('Proxy-Authenticate', 'Basic realm="Proxy Server"');
    res.end('Autentikasi diperlukan');
    return;
  }

  const tmp = auth.split(' ');
  const buf = Buffer.from(tmp[1], 'base64');
  const plain_auth = buf.toString();
  const [user, pass] = plain_auth.split(':');

  if (user === AUTH_USER && pass === AUTH_PASS) {
    proxy.web(req, res, { target: req.url });
  } else {
    res.statusCode = 401;
    res.end('Kredensial salah');
  }
});

server.listen(8080);

Penting: Selalu gunakan password yang kuat dan unik. Jangan pernah membagikan kredensial proxy Anda kepada orang yang tidak dikenal.

Langkah 5: Deployment Menggunakan PM2

Jika Anda hanya menjalankan kode dengan node server.js, aplikasi akan berhenti saat Anda menutup terminal. Untuk menjaga agar server tetap berjalan 24/7, kita akan menggunakan PM2 (Process Manager 2).

Instal PM2 secara global:

sudo npm install -g pm2

Jalankan aplikasi Anda dengan PM2:

pm2 start server.js --name "my-proxy"

Agar PM2 otomatis berjalan saat server Ubuntu melakukan reboot, jalankan perintah berikut:

pm2 startup
pm2 save

Cara Menguji Proxy Server Anda

Setelah mengikuti tutorial bikin proxy server sendiri dengan Node JS Ubuntu ini, saatnya melakukan pengujian. Anda bisa menggunakan tool seperti curl dari komputer lokal Anda:

curl -x http://admin:passwordRahasia123@IP_SERVER_ANDA:8080 http://ifconfig.me

Jika berhasil, output yang muncul haruslah alamat IP dari server Ubuntu Anda, bukan alamat IP koneksi internet rumah Anda. Ini membuktikan bahwa proxy bekerja dengan benar dalam menyembunyikan identitas Anda.

Konfigurasi di Browser

  • Buka pengaturan proxy di browser pilihan Anda (Chrome/Firefox).
  • Masukkan alamat IP server Ubuntu dan port 8080.
  • Saat diminta, masukkan username dan password yang telah Anda buat di kode tadi.

Kesimpulan dan Langkah Selanjutnya

Selamat! Anda telah berhasil menyelesaikan tutorial bikin proxy server sendiri dengan Node JS Ubuntu. Anda sekarang memiliki infrastruktur pribadi yang aman, cepat, dan sepenuhnya berada di bawah kendali Anda sendiri.

“Keamanan siber bukan tentang produk, melainkan tentang proses dan pemahaman akan data kita sendiri.”

Sebagai langkah pengembangan, Anda bisa mencoba menambahkan fitur seperti:

  • Logging: Mencatat situs apa saja yang diakses (untuk monitoring internal).
  • IP Whitelisting: Hanya mengizinkan akses dari IP tertentu agar lebih aman.
  • HTTPS Support: Menambahkan sertifikat SSL agar lalu lintas antara client dan proxy terenkripsi.

Jika Anda memerlukan script lengkap untuk instalasi otomatis, Anda bisa mengunduhnya melalui tautan di bawah ini (jika tersedia) atau menyalin kode yang telah disediakan di atas. Teruslah bereksperimen dan tingkatkan keamanan server Anda secara berkala!

Semoga panduan ini bermanfaat bagi perjalanan teknologi Anda. Jika ada pertanyaan, jangan ragu untuk meninggalkan komentar atau menghubungi komunitas pengembang Node.js di sekitar Anda.

Tinggalkan komentar