Tunnel HTTP mandiri pakai SSH dan Nginx

Judul asli: Self-hosted HTTP tunnels with SSH and Nginx

Mengapa Ini Penting

Opsi self-hosted ringan tanpa dependensi tambahan relevan bagi developer yang menghindari layanan pihak ketiga.

Pengembang Vincent Bernat merilis panduan membangun HTTP tunnel berbasis OpenSSH dan Nginx tanpa klien khusus, dilengkapi akses aman via hash MD5 dan timestamp kedaluwarsa.

Kebutuhan berbagi pratinjau lokal (localhost:8080) ke orang lain selama ini bergantung pada layanan komersial seperti ngrok atau Cloudflare Quick Tunnels, atau solusi self-hosted yang membutuhkan klien tersendiri seperti frp dan localtunnel. Bernat menawarkan alternatif yang hanya memerlukan OpenSSH dan Nginx.

Caranya sederhana: jalankan `ssh -R 0:localhost:8080` ke server, lalu server mengalokasikan port acak (misalnya 41535). Nginx dikonfigurasi dengan regex pada server_name untuk memetakan subdomain seperti `p41535.ssh.luffy.cx` ke port tersebut. Wildcard DNS dan sertifikat Let's Encrypt via DNS-01 challenge melengkapi setup dasar.

Sisi keamanan menjadi perhatian utama. Port acak hanya memberi sekitar 14,7 bit entropi — terlalu rendah untuk diandalkan. Bernat menambahkan lapisan keamanan lewat modul `ngx_http_secure_link_module` yang memverifikasi hash MD5 dari kombinasi port, timestamp kedaluwarsa, dan secret key. Hash ini ditempatkan sebagai username di URL HTTP basic authentication, sehingga kompatibel dengan hampir semua klien HTTP termasuk curl. Timestamp kedaluwarsa diperlukan karena port bisa dialokasikan ulang di sesi SSH berikutnya.

Sumber

vincent.bernat.ch — Baca artikel asli →