+20

Giới thiệu về Serveo- công cụ cho phép public localhost server

Lời mở đầu

Với phương châm của Viblo là chia sẻ kiến thức thì ngày hôm nay mình xin giới thiệu tới các bạn về một công cụ mình thấy khá là hay ho trong qua trình phát triển phần mềm, đó chính là Serveo.

Vậy Serveo là gì? Dùng để làm gì? Dùng như thế nào? Chúng ta hãy cùng đi vào tìm hiểu thêm nhé.

Nội dung

Bài toán đặt ra

Chắc hẳn bạn nào theo ngành lập trình cũng từng xem qua bức ảnh này rồi đúng không ? (nếu không thì giờ xem cũng không muộn ^^ )

Bài toán đặt ra ở đây là server localhost của bạn thì chỉ có một mình bạn xem được.

Vậy bây giờ tôi muốn đưa server localhost của mình public lên trên internet để những người khác cũng có thể truy cập thì phải làm thế nào?

Câu trả lời cho bạn chính là Localtunnel.

Localtunnel là gì

Localtunnel là một "loại công cụ" cung cấp đường hầm (tunnel) liên kết localhost của bạn và mạng internet để bạn có thể truy cập vào localhost giống như một server bình thường.

Và một số công cụ khá phổ biến gồm có:

Nhưng trọng phạm vi bài viết này, chúng ta sẽ tìm hiểu về Serveo thôi nhé!

Tại sao lại là Serveo mà không phải những công cụ khác?

Câu trả lời rất đơn giản, vì nó free, không cần cài đặt và đăng kí tài khoản.


Trước tiên ở localhost mình có một project test như hình ảnh bên dưới (hơi xấu tí anh em thông cảm nha ^^)

Và ở phần demo, mình sẽ thử truy cập localhost của mình thông qua điện thoại xem thế nào nhé.

Serveo

Tuy nhiên lựa chọn free này chỉ áp dụng cho người dùng cá nhân dùng để thử nghiệm, vì vậy chỉ có thể sử dụng tối đa là 3 tunnel cùng lúc. Nếu muốn sử dụng nhiều hơn, hãy sử dụng phiên bản dành cho doanh nghiệp hoặc có thể email để xin xỏ thử xem (trên trang chủ ông ấy viết thế mà)

Email me at trevor@serveo.net if you're interested in licensing Serveo for business use or otherwise need more than 3 tunnels at a time.


Và đây là kết quả khi mà mình truy cập vào từ điện thoại di động (mình dùng 4g nhé, không lại bảo là dùng mạng LAN)

  • Khởi tạo tunnel

    Tại sao lại là địa chỉ cernuus.serveo.net? Thì các bạn hãy để ý hình ảnh bên dưới, khi chạy câu lệnh

    ssh -R 80:localhost:80 serveo.net
    

    thì serveo sẽ sinh ra cho chúng ta 1 đường dẫn xxxxxxx.serveo.net với phần subdomain là sinh ngẫu nhiên với mỗi địa chỉ IP (restart lại thì nó vẫn là subdomain cũ thôi). Và sau khi có thiết bị kết nối với địa chỉ localhost của bạn thì thông tin các request sẽ được hiển thị trên commandline như bên dưới.

  • Khởi tạo nhiều tunnel cùng lúc:

    Ví dụ bạn có N project chạy ở localhost (N <= 3 vì bản free chỉ cho chạy tối đa 3 tunnel cùng lúc thôi) thì bạn chỉ cần lặp lại đoạn -R 80:localhost:port N lần là có thể chạy đồng thời.

    ssh -R 80:localhost:80   -R 80:localhost:8000 serveo.net
    #ở đây mình chạy 2 project, 1 cái chạy cổng 80, 1 cái chạy cổng 8000
    
  • Chỉ định subdomain:

    Nếu như bạn muốn sử dụng 1 subdomain cụ thể thì chỉ cần truyền thêm vào trong câu lệnh như sau:

    ssh -R subdomain:80:localhost:port serveo.net
    ssh -R subdomain.serveo.net:80:localhost:port serveo.net
    

    Ở đây mình sử dụng subdomain lovelqd:

  • Tuỳ chỉnh domain mong muốn:

    Nếu bạn muốn sử dụng subdomain ngẫu nhiên này thì bạn cũng có thể truyền vào một subdomain mà bạn muốn. Tuy nhiên sẽ hơi lằng nhằng 1 chút vì dính dáng đến ssh key (tạo và lấy ssh-key như thế nào thì các bạn tự search gg nhé).

    Sau khi lấy được fingerprint (của mình là SHA256:KTLNcMgKeg6jIcmrClEfA9svM/F3/vMqt1NlXL/Dbjo) thì bạn cần thêm 2 bản ghi DNS cho dơmain của bạn.

    • 1 bản ghi A chỉ đến địa chỉ IP
    • 1 bản ghi TXT thì điền fingerprint vào chỗ authkeyfp=[fingerprint]

    (nếu bạn nào chưa biết về cấu hình DNS thì có thể tham khảo thêm trong bài viết này của mình)

    Sau khi đã cấu hình DNS xong thì bạn có thể tạo tunnel đến domain của bạn với câu lệnh:

    ssh -R your.domain:80:localhost:80 serveo.net
    
  • Tuỳ chỉnh thời gian timeout:

    Nếu bạn sử dụng thì sẽ để ý thấy là cứ sau 1 khoảng thời gian nhất định thì các tunnel này sẽ tự động đóng. Để thiết lập thời gian sống cho các tunnel này thì bạn chỉ cần thêm -o ServerAliveInterval=TIME vào trong câu lệnh khởi tạo tunnel.

Lời kết

Trên đây là một số thứ mình tìm hiểu được về serveo muốn chia sẻ lại với mọi người (vì mình tìm trên google tài liệu về Serveo không có tiếng Việt, chắc là nó cũng mới ra), hy vọng nó giúp ích cho các bạn.

Xin cảm ơn đã đọc bài của mình và hãy upvote ủng hộ mình ra thêm những bài viết chất lượng hơn nhé!

Tài liệu tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí