Untuk mengakses sebuah komputer (khususnya server) dari internet, bisa dilakukan dengan beberapa cara. Jika memiliki IP public, maka server tersebut bisa langsung dipasang IP public. Atau menggunakan metode PAT/DNAT/Port Forward bagi yang menggunakan IP lokal. Namun bagaimana jika tidak memiliki IP public static ataupun dynamic?
Jika hanya terdapat akses internet dan tidak memiliki IP public, saya biasanya menggunakan Teamviewer atau AnyDesk atau Zoho Assist. Pernah juga menggunakan LogMeIn Hamachi. Yang metodenya mirip seperti VPN. Namun penggunaannya sangat terbatas. Hanya bisa diakses oleh saya sendiri yang mengetahui ID dan passwordnya.
# Download aplikasi Ngrok
Download aplikasi ngrok dari server lokal yang akan diexpose ke internethttps://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm64.zip
cd /srv/
wget -c
unzip ngrok-v3-stable-linux-arm64.zip
Lakukan autentikasi token. Token bisa dicek pada menu https://dashboard.ngrok.com/auth. Kemudian jalankan perintah berikut :
/srv/ngrok config add-authtoken <token>
# Expose Nginx port 80
Jalankan ngrok untuk mengexpose nginx
/srv/ngrok http 80
# Expose SSH port 22
Jalankan ngrok untuk mengexpose SSH
/srv/ngrok tcp 22
Contoh output proses ketika melakukan tunnel port SSH seperti berikut :
Testing akses SSH pada public url yang digenerate oleh ngrok
Dari hasil testing akses diatas, saya berhasil akses SSH server lokal saya melalui public url ngrok
# Menjalankan multiple tunnels
Ngrok versi free hanya bisa melakuan 1 online ngrok proses. Ketika melakukan expose nginx secara langsung, maka expose Jenkins ataupun SSH tidak dapat dilakukan. Karena sudah ada 1 online ngrok proses yang berjalan. Namun versi free ini bisa menjalankan hingga 4 tunnels dalam satu ngrok proses. Untuk menjalankan multiple tunnels, aplikasi yang hendak di tunnels harus didefinisikan pada sebuah file yml. Lokasi file ini berada di home direktori user. Jika ngrok dijalankan sebagai user root, maka lokasinya ada di /root/.ngrok2/ngrok.yml. Jika berada di user lain, maka lokasinya ada di /home/namauser/.ngrok2/ngrok.yml.
Contoh disini, saya menjalankan ngrok sebagai user root. Maka file yang saya sesuaikan lokasinya di /root/.ngrok2/ngrok.yml. Isinya seperti berikut :
authtoken: 2udG6q3GRixxxxxxxxxxxxxxxxxxxxxxxxxxx
tunnels:
webserver:
addr: 80
proto: http
ssh-access:
addr: 22
proto: tcpContoh isi file yml diatas berisi 3 tunnels. Tunnel nginx, jenkins dan SSH. Pada contoh tunnel nginx, saya tambahkan auth. Ketika public url ngrok diakses dari internet, maka akan ditanya username dan password terlebih dahulu, sebelum muncul tampilan asli dari nginx. Jangan lupa juga untuk mendefinisikan opsi bind_tls: false. Jika opsi bind_tls: menjadi true, pada tunnel dengan protocol http akan otomatis dibuatkan juga public url ngrok https nya. Alhasil satu protokol http akan menjalankan 2 tunnel proses. Yaitu tunnel http dan https. Proses tunnel SSH yang dibawahnya bisa jadi tidak diproses. Karena maksimal ngrok proses untuk versi free hanya 4 tunnels.
Setelah file yml disesuaikan, jalankan perintah berikut untuk menjalankan proses tunnel
/srv/ngrok start -all
Berikut contoh proses tunnel yang muncul
Perhatikan pada bagian forwarding. Disana terdapat 3 proses tunnels. Tunnel untuk nginx dengan port 80, Jenkins dengan port 8042 dan SSH dengan port 22. Masing-masing tunnel dapat diakses dengan public url yang berbeda-beda
# Tips menjalankan Ngrok pada background proses
Ketika ngrok dijalankan, maka prosesnya akan langsung muncul. Dan apabila ditutup consolenya, maka proses ngrok juga berhenti. Supaya ngrok dapat dijalankan pada background proses, tambahkan opsi log
/srv/ngrok start -all -log=stdout > /tmp/ngrok.log &
# Cek status Ngrok dari Dashboard
Jika ngrok dijalankan dengan mode background proses, maka public url ngrok tidak muncul. Untuk mengetahui akses urlnya, bisa dicek menggunakan curl. Berikut perintahnya :
curl http://localhost:4040/api/tunnels
Hasil dari perintah curl diatas seperti berikut :
# Tips auto start Ngrok menggunakan Crontab
Supaya ngrok otomatis start ketika booting:
crontab -e
tambahkan baris berikut:
@reboot /srv/ngrok start -all -log=stdout > /tmp/ngrok.log &
Untuk status tunnel, bisa dicek dengan perintah curl atau langsung akses dashboard ngrok status.
Dengan menggunakan ngrok, saya merasa terbantu untuk mengecek server yang tidak memiliki ip public static secara langsung. Cukup ada koneksi internet disisi server, maka server dapat diakses dari internet melalui ngrok tunnel.
Sekian panduan penggunaan ngrok untuk melakukan expose service via http ataupun tcp tunnels ke internet. Silakan beli ngrok versi berbayar untuk mendapatkan benefit lebih seperti custom url dan limitasi tunnel yang lebih banyak.
INSTALL VIA SNAPD
ubah ke user biasa
sudo apt -y install snapd
sudo snap install ngrok
cd /snap/bin/
chmod +x ngrok
snap/bin/ngrok authtoken <your_auth_token>
nano /home/[username]/snap/ngrok/108/.config/ngrok/ngrok.yml
/snap/bin/ngrok http 32400 (contoh: port plex)
# Auto start Ngrok (snapd)
Pastikan di posisi user biasa
Supaya ngrok otomatis start ketika booting:
crontab -e
tambahkan baris berikut:
@reboot /snap/bin/ngrok http 32400
Posting Komentar