Sunday, September 29, 2024

Sử dụng Ngrok cho dự án từ localhost ra internet

-

Ngrok là một công cụ miễn phí và có trả phí cho phép bạn chuyển tiếp kết nối từ Internet vào một máy tính hoặc máy chủ cục bộ của mình. Điều này cho phép bạn truy cập vào máy tính của mình từ bất kỳ đâu trên thế giới mà không cần phải đối mặt với các vấn đề về mạng, tường lửa hoặc địa chỉ IP động.

Ngrok hoạt động bằng cách tạo một kết nối an toàn giữa máy tính của bạn và các máy chủ của ngrok trên Internet. Khi bạn chạy ngrok, nó sẽ cung cấp cho bạn một địa chỉ URL công khai, cho phép bạn truy cập vào máy tính của mình từ bất kỳ đâu trên thế giới.

Ngrok có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm phát triển web, kiểm thử ứng dụng và chia sẻ nội dung với người khác. Nó có thể được cài đặt và sử dụng trên nhiều nền tảng khác nhau, bao gồm Windows, Mac và Linux.

Sau đây là các bước để sử dụng được Ngrok.

Bước 1: Đăng ký tài khoản Ngrok tại trang chủ của nó.

Truy cập vào https://dashboard.ngrok.com/login.

Tôi sử dụng phương pháp Log in with Google cho nó nhanh. Sau khi login được vào trang Ngrok bạn hãy bấm Setup & Installation (1) -> Linux (2) -> Copy Link Address (3).

Bước 2: Tải xuống và cài đặt Ngrok trên máy tính của bạn.

Sau khi đã lấy được link tải ở bước trên, mình vào server đang chạy Ubuntu tiến hành download file này về bằng lệnh wget <url đã lấy được ở trên>.

$ wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
--2023-05-15 07:11:46--  https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
Resolving bin.equinox.io (bin.equinox.io)... 54.237.133.81, 54.161.241.46, 52.202.168.65, ...
Connecting to bin.equinox.io (bin.equinox.io)|54.237.133.81|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8724838 (8.3M) [application/octet-stream]
Saving to: ‘ngrok-v3-stable-linux-amd64.tgz’

ngrok-v3-stable-linux-amd64.tgz         100%[=============================================================================>]   8.32M  2.90MB/s    in 2.9s

2023-05-15 07:11:50 (2.90 MB/s) - ‘ngrok-v3-stable-linux-amd64.tgz’ saved [8724838/8724838]

Như vậy bạn đã tải thành công file nén Ngrok.

$ ll | grep ngrok-v3
-rw-r--r--  1 root     root     8724838 May 15 07:11 ngrok-v3-stable-linux-amd64.tgz

Tôi tiến hành giải nén file này và di chuyển nó vào thư mục /usr/local/bin/

tar -xvf ngrok-v3-stable-linux-amd64.tgz 
mv ngrok /usr/local/bin/

Xác minh file ngrok đã tồn tại trong thư mục /usr/local/bin/.

$ ll /usr/local/bin/ | grep ngrok
-rwxr-xr-x  1 root root 24219648 May 10 17:40 ngrok*

Bây giờ nếu bạn sử dụng lệnh ngrok -help, bạn đã có thể truy cập vào các gợi ý của Ngrok rồi.

$ ngrok -help
NAME:
  ngrok - tunnel local ports to public URLs and inspect traffic

USAGE:
  ngrok [command] [flags]

DESCRIPTION: 
  ngrok exposes local networked services behinds NATs and firewalls to the
  public internet over a secure tunnel. Share local websites, build/test
  webhook consumers and self-host personal services.
  Detailed help for each command is available with 'ngrok help <command>'.
  Open http://localhost:4040 for ngrok's web interface to inspect traffic.

Author:
  ngrok - <support@ngrok.com>

TERMS OF SERVICE: https://ngrok.com/tos

EXAMPLES: 
  ngrok http 80                           # secure public URL for port 80 web server
  ngrok http --domain baz.ngrok.dev 8080  # port 8080 available at baz.ngrok.dev
  ngrok http foo.dev:80                   # tunnel to host:port instead of localhost
  ngrok http https://localhost            # expose a local https server
  ngrok tcp 22                            # tunnel arbitrary TCP traffic to port 22
  ngrok tls --domain=foo.com 443          # TLS traffic for foo.com to port 443
  ngrok start foo bar baz                 # start tunnels from the configuration file

COMMANDS:
  api                            use ngrok agent as an api client
  completion                     generates shell completion code for bash or zsh
  config                         update or migrate ngrok's configuration file
  credits                        prints author and licensing information
  diagnose                       diagnose connection issues
  help                           Help about any command
  http                           start an HTTP tunnel
  service                        run and control an ngrok service on a target operating system
  start                          start tunnels by name from the configuration file
  tcp                            start a TCP tunnel
  tls                            start a TLS tunnel
  tunnel                         start a tunnel for use with a tunnel-group backend
  update                         update ngrok to the latest version
  version                        print the version string

OPTIONS:
      --config strings   path to config files; they are merged if multiple
  -h, --help             help for ngrok
  -v, --version          version for ngrok

ERROR:  unknown shorthand flag: 'e' in -elp

Bước 3: Thêm token.

Bạn vào Your Authtoken và tiến hành copy token mà Ngrok cung cấp cho bạn.

Mở cửa sổ dòng lệnh (Command Prompt trên Windows hoặc Terminal trên macOS/Linux) và đăng nhập vào tài khoản Ngrok của bạn bằng lệnh config add-authtoken <your_authen_token>:

$ ngrok config add-authtoken 2AvG5MM7NFylIRMnqyKeva2jrxk_7QjGQ6Rr8kuURMJi7A17r
Authtoken saved to configuration file: /root/.config/ngrok/ngrok.yml

Trong đó, <your_auth_token> là mã thông báo xác thực Ngrok của bạn đã lấy được ở phần trên.

Bước 4: Public port 8080.

Giả sử trong local mình có server chạy port 8080 có url http://192.168.13.220:8080/stats

Bây giờ mình sử dụng Ngrok để public port 8080 ra internet mà không cần sử dụng tính năng NAT trên route bằng lệnh ngrok http <port muốn public>.

ngrok http 8080

Nếu chạy thành công thì bạn nhận được các thông tin như sau:

Announcing ngrok-go: The ngrok agent as a Go library: https://ngrok.com/go                                                                                                                                                                                           
                                                                                                                                                                                                                                                                     
Session Status                online                                                                                                                                                                                                                                 
Account                       hoanghd164@gmail.com (Plan: Free)                                                                                                                                                                                                      
Version                       3.3.0                                                                                                                                                                                                                                  
Region                        Asia Pacific (ap)                                                                                                                                                                                                                      
Latency                       -                                                                                                                                                                                                                                      
Web Interface                 http://127.0.0.1:4040                                                                                                                                                                                                                  
Forwarding                    https://d75b-115-79-213-185.ngrok-free.app -> http://localhost:8080                                                                                                                                                                    
                                                                                                                                                                                                                                                                     
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                                                                                            
                              0       0       0.00    0.00    0.00    0.00

Nó sẽ tạo một kết nối đến port 8080 trên máy tính của bạn và cung cấp một đường dẫn URL công khai cho bạn truy cập vào đó từ bất kỳ đâu trên Internet. Bạn có thể truy cập vào đường dẫn URL này để xác nhận rằng port 8080 của bạn đã được public thành công.

Lưu ý rằng khi bạn sử dụng Ngrok, nó sẽ tạo ra một đường dẫn URL ngẫu nhiên mỗi khi bạn chạy nó, do đó bạn cần thay đổi đường dẫn URL trong ứng dụng của mình sau mỗi lần chạy Ngrok. Ngoài ra, Ngrok chỉ hoạt động trong thời gian giới hạn nếu bạn sử dụng phiên bản miễn phí, vì vậy nếu bạn muốn sử dụng Ngrok lâu dài, bạn cần đăng ký gói trả phí.

Bạn hãy sử dụng url mà Ngrok cung cấp https://d75b-115-79-213-185.ngrok-free.app sau đó thêm vào prefix /stats như trong url của local là https://d75b-115-79-213-185.ngrok-free.app/stats.

Hãy bấm vào Visit Site để truy cập vào website của bạn. Lưu ý, do bạn đang sử dụng bản miễn phí nên bạn sẽ phải nhận trang quảng cáo như dưới, nếu bạn sử dụng bản trả phí thì bạn sẽ vào thẳng website của bạn và được sử dụng tên miền theo ý bạn nhé.

Và đây là kết quả.

Lưu ý nếu bạn ngắt phiên chạy của Ngrok thì quá trình tunnel sẽ kết thúc, do vậy bạn hãy sử dụng một tính năng chạy nền cho Ngrok nhé.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories