Sử dụng Cloudflare Tunnel để public Ollama lên Internet

Sử dụng Cloudflare Tunnel để public Ollama lên Internet

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Mình mới tìm thấy một công cụ trích xuất nội dung từ image, pdf, docx, xlsx, pptx... sang dạng text, markdown, hay là json... Nói chung là nó hỗ trợ kha khá đầu vào và đầu ra. Lấy được nội dung ra rồi thì muốn làm gì thì làm, đặc biệt là bỏ vào trong các mô hình ngôn ngữ lớn để làm nguồn dữ liệu gì còn gì bằng 😁

    Công cụ tên là Docling, viết bằng python. Có thể nhúng vào trong mã hoặc dùng CLI đều được. Mình đã thử với dạng ảnh và pdf. Nhìn chung thì pdf vẫn cho kết quả tốt hơn. Ảnh thì hên xui 😅. Nó còn cho lựa chọn cả thư viện OCR á. Cái nào phù hợp hơn thì chọn.

    Quá trình cài thì phát sinh mấy lỗi. Mọi người nhớ dùng python 3.9 -> 3.12. Nếu bị lỗi ModuleNotFoundError: No module named '_lzma' thì thử làm theo hướng dẫn này xem giải quyết được không nhé ModuleNotFoundError: No module named '_lzma'

    » Xem thêm
  • Giá như mình biết đến kho lưu trữ này sớm hơn. github/opensource.guide là nơi hướng dẫn mọi người tất tần tật về Open Source. Từ làm thế nào để đóng góp mã, làm thế nào để bắt đầu một dự án mã nguồn mở của riêng, cho đến những kiến thức mà bất kỳ ai cũng nên biết khi mới bước chân vào 🤓

    Đặc biệt hàng này chính chủ từ Github luôn á.

    » Xem thêm
  • Hôm trước mới nhắc đến dokploy.com thì hôm nay lại có tiếp coolify.io - cũng là một dự án mã nguồn mở có khả năng thay thế Heroku/Netlify/Vercel. Theo như mình đọc thì Coolify hoạt động dựa trên triển khai Docker, nhờ đó mà nó có thể chạy được hầu hết các ứng dụng. Coolify cung cấp giao diện và tính năng để việc triển khai ứng dụng trở nên đơn giản và dễ dàng hơn.

    Có khi nào đây sẽ là xu hướng triển khai ứng dụng trong tương lai không? 🤔

    » Xem thêm

Vấn đề

Chào các độc giả của 2coffee.dev. Tết sắp đến rồi, các bạn đã sắm sửa hay chuẩn bị gì cho mình và gia đình chưa? Theo như tôi thấy có vẻ như càng cuối năm mọi người càng bận rộn. Từ đầu tháng đến giờ lượng truy cập vào blog đã giảm rõ rệt. Điều đó đôi khi khiến tôi phải sốt vó lên vì không biết độc giả của mình đã đi đâu hết. Hoặc là nghỉ tết sớm, hay là chatbot đang quá mạnh, hoặc cũng có thể là do nội dung không còn đủ hấp dẫn nữa 😥

Phải thú thật rằng mấy tuần cuối cùng này tôi luôn trong tâm thế của một người bận rộn, không có nhiều thời gian để viết bài thường xuyên. Chắc là do tính chất công việc, cộng thêm nhiều vấn đề phải lo quá nên là không còn tâm trí để mà thư giãn. Nhưng không sao, ngày hôm nay tôi vừa cấu hình thành công Cloudflare Tunnel kết hợp với Ollama để "public" một địa chỉ API lên mạng Internet - điều mà trước đó mấy tuần chưa làm được. Nghĩ rằng nhiều người sẽ cần nên bắt tay vào viết luôn một bài cho nóng.

Ban đầu tôi định viết thành một bài viết ngắn trong chuyên mục Threads, nhưng nghĩ lại đã quá lâu rồi mình chưa có một bài viết dài nào nên lại thôi. Bạn có tin được không? Một bài viết dài hoàn toàn có thể cô đọng lại chỉ trong vài dòng ngắn ngủi. Ngược lại, một bài viết ngắn chỉ cần "hoa mỹ" lên một chút là sẽ hoá thành một bài văn dài mà nhiều người phải khiếp sợ. Ấy thế tại sao phải cố viết dài ra làm gì?

Chà! Nếu không nói ra thì có thể chẳng ai biết lý do. Viết với tôi như một cách để giải toả căng thẳng. Bằng cách viết, tôi có thể giao lưu với độc giả của mình, hỏi han, tâm sự, hay lồng ghép những câu chuyện, bài học mà bản thân rút ra được. Nói cách khác, viết một phần là để thư giãn, một phần là để giao lưu với tất cả mọi người.

Từ khi ra chuyên mục bài viết ngắn Threads, tôi không ngờ rằng nhiều người quan tâm đến nó như vậy. À mà nói rằng không ngờ thì hơi quá, vì tôi đã nghiên cứu rất nhiều trước khi làm ra tính năng này. "Code" một tính năng thì không khó, cái khó là vận hành nó như thế nào. Threads phải đảm bảo tần suất viết bài không bị ngắt quãng, nếu như lâu lâu mới viết một bài thì liệu rằng có ai hay vào để cập nhật tin tức nữa không chứ? Việc đó vô tình gây ra một áp lực, rằng làm sao để vừa thu thập, vừa tổng hợp được tin tức thú vị và nổi bật trong ngày cho các độc giả. Nhiều hôm bận quá, quên không viết, y như rằng hôm sau phải lên bài bù cho đủ uy tín 😆

Tôi biết rằng có rất nhiều người thích đọc, mà tôi lại là một trong những người thích viết. Đôi khi đọc không phải lúc nào cũng trong tâm thế của người bị "dí deadline", đang trên đường đi tìm giải pháp, hay là học một cái gì đó mới... Tôi tin rằng với nhiều người việc đọc cũng giống như viết vậy: Là để thư giãn. Thư giãn mà có thêm kiến thức, có thêm kinh nghiệm thì quả là một công đôi việc phải không ạ! 😁

Nói hơi nhiều rồi nhỉ, vào vấn đề chính thôi. Hôm nay tôi mới cấu hình thành công Cloudflare Tunnel cùng với Ollama để public một địa chỉ API lên mạng Internet. Từ đó bất kỳ ai cũng gọi được mà không bị bó buộc trong máy chủ cục bộ (localhost) nữa. Sau khi đọc lại tài liệu của Ollama thì hoá ra nó lại đơn giản hơn mình nghĩ!

Cloudflare Tunnel & Ollama

Nếu chưa biết Cloudflare Tunnel, bạn đọc hãy đọc lại bài viết Thêm một công cụ "Tunnel Locally" - Đưa máy chủ cục bộ lên Internet. Đây là một công cụ giúp chúng ta ánh xạ máy chủ cục bộ lên Internet, đồng nghĩa biến máy tính của bạn thành máy chủ và bất kỳ ai có địa chỉ IP hoặc tên miền đều có thể truy cập vào được.

Ollama là một công cụ giúp chúng ta chạy được một số mô hình ngôn ngữ lớn (LLM) trên máy tính chỉ bằng một câu lệnh duy nhất. Nó giúp đơn giản hoá quá trình cài đặt và sử dụng các mô hình. Điểm nổi bật nhất là hỗ trợ API tương thích với OpenAPI.

Trong bài viết trước đó, tôi có đề cập đến việc tạo một Tunnel thông qua một quy trình 6 bước - hơi dài nhỉ - thực ra Cloudflare Tunnel có cách khởi động nhanh hơn rất nhiều, chỉ cần cài đặt cloudflared rồi sử dụng một lệnh duy nhất:

$ cloudflared tunnel --url http://localhost:11434
...
Your quick Tunnel has been created! Visit it at (it may take some time to be reachable):
https://tennis-coordination-korea-wv.trycloudflare.com
....

Ngay lập tức bạn sẽ thấy một địa chỉ ngẫu nhiên mà cloudflared tạo ra. Nó ánh xạ đến địa chỉ http://localhost:11434 trong máy tính. Khi truy cập vào https://tennis-coordination-korea-wv.trycloudflare.com từ một máy khác, chúng ta thấy kết quả y hệt như truy cập từ http://localhost:11434 trên máy cục bộ.

Ở trên chỉ là ví dụ để ánh xạ bất kỳ cổng (port) nào dưới máy lên Internet, đối với Ollama hoặc nhiều công cụ khác cần phải cấu hình thêm hostname có trong headers. Trong tài liệu Ollama hướng dẫn:

$ cloudflared tunnel --url http://localhost:11434 --http-host-header="localhost:11434"

Sau đó thử gọi API bằng URL mới có. Lưu ý trước đó phải chạy mô hình llama3.2 từ Ollama.

curl https://tennis-coordination-korea-wv.trycloudflare.com/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?"
}'

Tuyệt vời, đến đây mọi thứ đã xong và bạn đã có một địa chỉ API trỏ đến Ollama trong máy chủ cục bộ mà bất kỳ ai cũng có thể truy cập vào được. Tuy nhiên, nếu bạn có một tên miền trong Cloudflare và muốn giữ cố định địa chỉ ví dụ như là api-ollama.2coffee.dev thì cần cấu hình đủ theo 6 bước.

Giữ tên miền cố định

Rất đơn giản, sau khi làm đến bước 4 trong bài viết Thêm một công cụ "Tunnel Locally" - Đưa máy chủ cục bộ lên Internet, sửa lại nội dung của tệp config.yml như sau:

tunnel: <tunnel-uuid>
credentials-file: path/to/.cloudflared/.json

ingress:
  - hostname: api-ollama.2coffee.dev
    service: http://localhost:11434
    originRequest:
      httpHostHeader: "localhost:11434"
  - service: http_status:404

Sau đó khởi chạy:

$ cloudflared tunnel run <tunnel-uuid>

Mặc dù cách này có thể giúp bạn tạo ra được một địa chỉ API tương tự như OpenAI của ChatGPT nhưng nó lại có nhiều hạn chế như phụ thuộc vào cấu hình máy và model đang sử dụng, Ollama chỉ xử lý được một truy vấn tại một thời điểm thế nên việc gọi liên tục hay đồng thời sẽ không hiệu quả.

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 (0)

Nội dung bình luận...
Bấm hoặc cuộn mạnh để sang bài mới