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
  • CloudFlare đã giới thiệu tính năng pay per crawl để tính phí cho mỗi lần AI "cào" dữ liệu trên trang web của bạn. Là sao ta 🤔?

    Mục đích của SEO là giúp các công cụ tìm kiếm nhìn thấy trang web. Khi người dùng tìm kiếm nội dung mà có liên quan thì nó hiển thị trang web của bạn ra kết quả tìm kiếm. Điều này gần như là đôi bên cùng có lợi khi Google giúp nhiều người biết đến trang web hơn, còn Google thì được nhiều người dùng hơn.

    Bây giờ cuộc chơi với các AI Agents thì lại khác. AI Agents phải chủ động đi tìm kiếm nguồn thông tin và tiện thể "cào" luôn dữ liệu của bạn về, rồi xào nấu hay làm gì đó mà chúng ta cũng chẳng thể biết được. Vậy đây gần như là cuộc chơi chỉ mang lại lợi ích cho 1 bên 🤔!?

    Nước đi của CloudFlare là bắt AI Agents phải trả tiền cho mỗi lần lấy dữ liệu từ trang web của bạn. Nếu không trả tiền thì tôi không cho ông đọc dữ liệu của tôi. Kiểu vậy. Hãy chờ thêm một thời gian nữa xem sao 🤓.

    » Xem thêm
  • Lúc khái niệm "Vibe Code" bùng nổ mình cũng tò và tìm hiểu xem nó là gì. Hoá ra là chỉ cách lập trình mới: Lập trình viên ra lệnh và để cho LLM tự viết mã. Sau đó là hàng loạt các bài viết nói về cách họ đã xây dựng ứng dụng mà không cần phải viết một dòng mã nào, hoặc 100% là do AI viết...

    Mình không có ý kiến gì vì mỗi người một sở thích. Nhưng nếu tiếp xúc với nhiều thông tin như vậy thì ít nhiều thế hệ lập trình viên mới sẽ "ám ảnh". Khi làm việc với ngôn ngữ lập trình, chúng ta đang tiếp xúc ở bề nổi rồi. Đằng sau đó còn nhiều lớp khác che giấu sự phức tạp. Ví dụ biết viết JavaScript nhưng có biết nó chạy như thế nào không 🤔? Trên thực tế bạn chẳng cần phải biết nó chạy như thế nào mà chỉ cần biết cú pháp là viết được chương trình chạy ngon ơ.

    LLMs giờ đây lại thêm một lớp ảo hoá cho việc viết mã. Tức là nơi chúng ta không cần trực tiếp viết mà là ra lệnh. Làm việc sẽ nhanh hơn nhưng khi gặp vấn đề thì nhiều khả năng phải vận dụng kiến thức của tầng thấp hơn để giải quyết.

    Mình dùng Cursor, nhưng tính năng thích nhất và dùng nhiều nhất là Autocomplete & Suggestions. Thi thoảng cũng dùng Agents để bảo nó viết tiếp đoạn mã đang dở, thường thì nó làm rất tốt. Hoặc khi gặp lỗi thì hỏi, có lúc giải quyết được, lúc thì không. Nhìn chung nó đang làm thay nhiệm vụ của Google & Stack Overflow, giúp tiết kiệm thời gian 😆

    LLMs như một cuốn bách khoa toàn thư rất khủng khiếp. Hỏi gì cũng biết, cũng trả lời được nhưng có một sự thật là nó chỉ là mô hình đoán chữ (đoán tokens). Thế nên nếu vấn đề phổ biến thì nó sẽ làm rất tốt, nhưng vấn đề ít phổ biến hơn thì nó lại rất tệ, hoặc thậm chí là đưa ra thông tin sai lệch, nhiễu... Tóm lại, cần phải biết cách khai thác thông tin, mà để biết thì buộc người dùng phải có một lượng kiến thức nhất định, tránh rơi vào cái bẫy thiên kiến uy quyền (tin tưởng tuyệt đối vào ai đó) hoặc thiên kiến xác nhận (xác nhận niềm tin sẵn có bằng cách chỉ tìm bằng chứng xác nhận niềm tin đó).

    Tại thấy bài viết này nên lại nổi hứng viết vài dòng 🤓 Why I'm Dialing Back My LLM Usage

    » Xem thêm
  • Tiếp tục cập nhật vụ kiện giữa nhóm Deno và Oracle về cái tên JavaScript: Có vẻ như Deno đang yếu thế vì toà án đã bác bỏ đơn khiếu nại của nhóm Deno. Tuy nhiên trong tháng 8, họ (Oracle) phải có trách nhiệm giải trình từng lý do, thừa nhận hoặc phủ nhận những cáo buộc mà nhóm Deno trình ra trong vụ kiện.

    JavaScript™ Trademark Update

    » 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 danh1 năm trước

hay bạn,rất bổ ích

Trả lời