Thêm một công cụ "Tunnel Locally" - Đưa máy chủ cục bộ lên Internet

Thêm một công cụ "Tunnel Locally" - Đưa máy chủ cục bộ lên Internet

Tin ngắn hàng ngày dành cho bạn
  • Manus đã chính thức mở cửa cho tất cả người dùng rồi đấy mọi người. Cho những ai chưa biết thì đây là một công cụ viết báo cáo (làm mưa làm gió) giống như Deep Research của OpenAI á. Mỗi ngày được miễn phí 300 Credits để nghiên cứu. Mỗi lượt nghiên cứu tiêu tốn tuỳ thuộc vào độ phức tạp của yêu cầu. À với cả họ đang có chương trình tặng miễn phí Credits hay sao á. Như mình thì vào thấy được hẳn 2000.

    Mình dùng thử, so sánh với cùng một lệnh giống như đợt trước dùng bên Deep Research thì nội dung khác biệt nhau hoàn toàn. Manus báo cáo như kiểu viết văn hơn so với OpenAI là các gạch đầu dòng và bảng biểu.

    À lúc đăng ký xong có bắt nhập số điện thoại để xác minh, nếu lỗi thì các bạn đợi qua ngày thử lại xem có được không nhé.

    » Xem thêm
  • Mọi người chắc nghe nhiều về xu hướng tìm kiếm thông tin bằng AI chứ không cần công cụ tìm kiếm như Google nữa rồi đúng không? Không đâu xa ánh xạ vào bản thân thì thấy đúng thật, thi thoảng mới tìm kiếm thôi chứ còn đâu toàn hỏi tụi AI.

    Ngay từ đầu viết blog, thứ mà mình hướng đến là chia sẻ kinh nghiệm chứ không phải là những bài mang nặng tính kỹ thuật, máy móc, hướng dẫn từ đầu... Vì thời điểm đó đã có quá nhiều người làm nội dung này rồi và họ làm rất tốt, tại sao mình phải cố phát minh lại bánh xe? Một điều nữa là tin tưởng độc giả của mình có khả năng tìm hiểu vấn đề. Nếu bạn đọc đủ nhiều các bài viết trên blog thì thấy mình luôn cố gắng chèn thêm các liên kết tham khảo ngoài bài viết, nêu ra vấn đề mở và rất ít khi kết luận chắc chắn một điều gì đó.

    Mình đã cố gắng rèn luyện kỹ năng viết, kỹ năng trình bày và cả cách tương tác với độc giả để mang lại giá trị cho họ. Nhiều lúc ngồi lật lại các con số thống kê thấy lượng đọc bài viết tăng lên lại cảm thấy vui. Nhưng khi nguồn truy cập đến từ Google thì lại thấy buồn, vì điều đó chứng tỏ họ biết đến mình chỉ khi đang cố đi tìm giải pháp, có thể họ chỉ đọc chớp nhoáng, may ra tìm được cách giải quyết và thế là đóng cửa sổ trình duyệt rồi đi như một cơn gió.

    Chừng vài tháng đổ lại đây, một điều khiến mình rất vui đó là lượng người truy cập thẳng vào trang chủ mà không thông qua công cụ tìm kiếm đang tăng dần lên, có nhiều hôm lượng truy cập tự nhiên còn cao hơn cả đến từ Google. Điều đó chứng tỏ độc giả đã có thói quen quay lại trang của mình nhiều hơn và họ tìm thấy được giá trị từ blog mang lại. Vui mừng khôn xiết 🤩

    Bên cạnh đó thì lượng truy cập vào chuyên mục Threads - tức là mục mình đang viết bài này đang cao hơn bao giờ hết. Điều đó chứng tỏ xu hướng đi theo tin nhanh là đúng đắn. Mình có thể ngồi cả ngày để viết tin ngắn cho bạn đọc vì nó rất nhanh mà tiện, không tốn công đi tìm tài liệu để viết, không tốn cả thời gian viết nữa, còn mình thì có rất nhiều thứ để chia sẻ 😅. Nhưng không vì thế mà bỏ bê các bài viết dài, vì dài thì có nhiều thông tin để chia sẻ hơn.

    Vài lời tâm sự thế thôi chứ hơn một tháng nay mình chưa viết bài viết mới nào vì công việc bận quá. Xong lâu dần cứ trì hoãn lại thành lười. À với cả tháng 5 này rất thích hợp để đọc các cuốn sách về cách mạng á. Có hôm đọc đến 2 giờ sáng mới đi ngủ 🥱

    » Xem thêm
  • Mình mới nhìn thấy một trang web khá thú vị nói về các cột mốc đáng nhớ trong lịch sử phát triển Internet toàn cầu: Internet Artifacts

    Chỉ từ 1977 - khi Internet còn nằm trong hộp thí nghiệm thì nhìn xem - giờ đây Internet đã khiến mọi thứ phát triển đến mức nào 🫣

    » Xem thêm

Vấn đề

Tunnel Locally là một khái niệm để chỉ hành vi publish máy chủ cục bộ lên "hòa mạng" chung với Internet. Nhờ đó, chúng ta không cần phải triển khai máy chủ một cách chính thức mà vẫn có thể cho người khác vào xem.

Như mọi người đều biết, khi khởi động một máy chủ cục bộ ví dụ như node index.js để chạy một RESTFull API, thì hầu như chỉ trong máy tính hiện tại mới truy cập vào được. Cùng lắm thì cho phép thêm các máy trong cùng một mạng LAN kết nối vào với điều kiện chúng phải kết nối vào cùng một mạng.

Trong thời gian phát triển ứng dụng, có nhiều khi cần phải dùng đến tunnel locally như cho người khác xem trước bản "demo" của trang web hoặc dùng thử API khi họ đang ở rất xa. Hoặc thường thấy hơn là cần một địa chỉ https trỏ về máy tính để kiểm tra và phát triển tính năng tích hợp webhook với bên nào đó.

Thực tế có nhiều cách để publish máy chủ cục bộ lên Internet, nhiều công cụ lẫn dịch vụ không những giúp chúng ta làm điều đó mà còn cho cả địa chỉ có sự hỗ trợ của https. Chỉ cần lên mạng, gõ từ khóa "Tunnel Locally" là có ngay hàng tá kết quả cho bạn tha hồ lựa chọn.

Trước đây có 2 công cụ mà tôi thường sử dụng là ngroklocalhost.run. Trong khi ngrok yêu cầu cài đặt vào máy thì localhost.run lại rất đơn giản để bắt đầu, chỉ cần gõ một lệnh duy nhất lập tức máy chủ được ánh xạ lên mạng Internet.

Đổi lại, ngrok hoạt động ổn định hơn so với cái còn lại. Nhìn chung, nếu muốn nhanh và đơn giản thì dùng localhost.run, nếu muốn sự ổn định thì dùng ngrok.

Hạn chế

Thông thường điểm chí mạng của các dịch vụ như thế này là khả năng giữ tên miền, hay còn gọi là lựa chọn được tên miền. Tên miền được cấp pháp ngẫu nhiên mỗi khi bạn khởi chạy, thậm chí nó còn có thể thay đổi liên tục sau mỗi bao nhiêu lâu hoặc khi rớt mạng. Tóm lại, nhảy tên miền mang lại khá nhiều phiền toái vì cứ phải tốn thời gian cập nhật địa chỉ mới.

Nắm bắt được điều đó, họ - những người làm dịch vụ cung cấp cả tùy chọn sử dụng tên miền cố định, tên miền đó có thể là của bạn hoặc được cấp cho một subdomain cố định. Đổi lại, bạn cần trả tiền để sử dụng hoặc cũng có thể là miễn phí sau vài nghìn lần gọi sẽ bị khóa.

Gần đây khi "ngăn xếp công nghệ" của tôi đang chuyển dần sang Cloudflare thì có nhiều điều thú vị được phát hiện ra. Một trong số đó là công cụ cloudflared của Cloudflare. Nói nôm na thì nó cũng cho phép sử dụng tunnel locally, nhưng hoàn toàn miễn phí.

cloudflared

Cài đặt cloudflared có phần hơi phức tạp nhưng đổi lại sẽ quản lý được các dịch vụ tập trung và tận dụng được tên miền quản lý bởi Cloudflare để ánh xạ máy chủ cục bộ lên các địa chỉ đó.

Xem hướng dẫn thiết lập chi tiết tại Set up a tunnel locally, nhưng chung quy lại có các bước như sau.

Bước 1: Cài đặt cli. Ví dụ dưới đây sử dụng lệnh brew trong MacOS.

$ brew install cloudflared

Bước 2: Đăng nhập và xác thực bằng tài khoản Cloudflare.

$ cloudflared tunnel login

Bước 3: Tạo một tunnel để sẵn sàng cho việc publish:

$ cloudflared tunnel create <NAME>

Lệnh này tạo ra một tệp json chứa cấu hình, sử dụng lệnh cloudflared tunnel list để xem danh sách tất cả tunnel đã tạo ra.

Bước 4: Tạo file cấu hình cloudflared

Trong thư mục .cloudflared (xem đường dẫn tại Default cloudflared directory, tạo một tệp config.yml chứa nội dung sau.

url: http://localhost:8000
tunnel: <Tunnel-UUID>
credentials-file: path/to/.cloudflared/<Tunnel-UUID>.json

Với url là địa chỉ cục bộ muốn publish, tunnel là UUID được tạo từ bước 3, và credentials-file là đường dẫn đến tệp json của UUID.

Bước 5: Tạo một subdomain để kết nối đến địa chỉ cục bộ

$ cloudflared tunnel route dns <UUID or NAME> <subdomain>

Bước 6: Khởi chạy

$ cloudflared tunnel run <UUID or NAME>

Sẽ thấy một màn hình giống như

Chạy thử tunnel locally

Thử truy cập vào subdomain, sẽ nhận được kết quả từ máy chủ cục bộ. Bạn đọc còn có thể cấu hình trực tiếp trong tệp config.yml để mở rộng thêm tính năng.

Mở tệp config.yml và sửa lại:

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: path/to/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:  
  - hostname: local80.mydomain.com
    service: http://localhost:80
  - hostname: local8080.mydomain.com
    service: http://localhost:8080
  - service: http_status:404

Khi truy cập vào local80 hoặc local8080 sẽ được chuyển đến các service tương ứng. Lưu ý phải tạo trước bản bản ghi subdomain trước khi sử dụng (xem bước 5).

Ngoài ra vẫn còn rất điều có thể làm được với Tunnel Locally của Cloudflare, bạn đọc tham khảo tại Cloudflare Tunnel.

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (1)

Nội dung bình luận...
Avatar
Ẩn danh10 tháng trước
hay bạn,rất bổ ích
Trả lời