Có vô số cách để bảo mật và truy cập các ứng dụng self-hosted (tự host) của bạn từ bên ngoài mạng gia đình, với mức độ kiến thức cần thiết khác nhau để triển khai chúng một cách an toàn. Bạn có thể sử dụng VPN, hoặc các công cụ như Pangolin hay Tailscale. Tuy nhiên, với sự phổ biến của Cloudflare, họ đã cung cấp một giải pháp gần như dễ sử dụng như hệ thống DNS của mình – đó là Cloudflare Tunnels. Mặc dù Cloudflare Tunnels sử dụng tên miền của bạn và tạo một đường hầm bảo mật từ tên miền đó đến các ứng dụng và máy chủ mà bạn chỉ định, việc này vẫn đòi hỏi một vài thao tác thủ công, từ việc cài đặt tệp client bên trong tường lửa cho đến quản lý từng tunnel. Đây có thể là công việc tốn thời gian khi bạn muốn thiết lập nhiều dịch vụ mới. Nhưng tôi đã tìm thấy một dự án thú vị mang tên DockFlare, giúp tự động hóa việc tạo Cloudflare Tunnels dựa trên tên container và chỉ vài Docker labels ngắn gọn. Tôi đã thử nghiệm và nhận thấy nó mạnh mẽ, đơn giản đến mức có thể chạy ngay lập tức, ngay cả khi bạn không có nhiều kiến thức về container.
Minh họa triển khai máy chủ web Caddy trên môi trường Proxmox, một ví dụ về ứng dụng tự host có thể truy cập qua Cloudflare Tunnels.
DockFlare là gì và vì sao nó cần thiết?
DockFlare ra đời để giải quyết những thách thức trong việc quản lý Cloudflare Tunnels. Mặc dù không thể phủ nhận sự đơn giản trong việc thiết lập Cloudflare Tunnels ban đầu, nhưng việc theo dõi và quản lý từng tunnel khi bạn có nhiều dịch vụ có thể trở nên rất mệt mỏi. Việc tìm kiếm thông tin trên bảng điều khiển Cloudflare là một công việc không mấy dễ chịu, chưa kể bạn vẫn phải tự tay cài đặt tệp client trên máy chủ mỗi khi tạo một tunnel mới.
DockFlare giải quyết cả hai vấn đề này và hơn thế nữa. Nó tạo ra một mạng Docker mới để liên kết các container của bạn lại với nhau, sau đó tận dụng mạng này và tên của các container mới để tạo tunnel thay mặt bạn. Một khi được thiết lập với khóa API Cloudflare tùy chỉnh, DockFlare sẽ quản lý Cloudflared agent, các bản ghi DNS của bạn và mọi thứ khác, sau đó thêm chúng vào giao diện người dùng dựa trên web để quản lý dễ dàng.
Bức tường Entropi tại văn phòng Cloudflare ở San Francisco, biểu tượng cho hạ tầng bảo mật mạng tiên tiến của Cloudflare.
Đơn giản hóa việc truy cập ứng dụng tự host với DockFlare
Bạn có thể thấy tôi rất coi trọng sự đơn giản và mọi thứ hoạt động theo đúng ý muốn. DockFlare chiến thắng ở cả hai điểm này, vì nó xử lý các quy tắc ingress tự động cho tất cả các container của tôi ngay sau khi chúng được khởi động. Tất cả những gì nó cần là tên container và ba nhãn (labels) bên trong định nghĩa subdomain và cổng đích để sử dụng:
(tiền tố: `cloudflare.tunnel.`): `enable="true"`, `hostname="subdomain.example.com"`, `service="http://target:port"`.
Chỉ vậy thôi! Bạn có thể trỏ nó đến một dịch vụ, hoặc có nhiều tên miền trong một tệp compose bằng cách lập chỉ mục phần nhãn với các nhóm ba nhãn tương tự. Hoặc tận dụng một tên miền wildcard và để mọi thứ đi qua một tunnel duy nhất, từ một tên miền duy nhất, dựa trên cổng được sử dụng cho dịch vụ.
DockFlare cũng được xây dựng để quản lý dễ dàng, vì các quy tắc ingress sẽ bị xóa ngay khi một container biến mất, nhưng không quá nhanh, phòng trường hợp bạn đang thay thế nó bằng một bản sao khác. Và chúng ta đều biết Cloudflare API có giới hạn tốc độ (rate limit) khiến việc khởi động nhiều container cùng lúc trở nên khó khăn hơn, nhưng DockFlare cũng biết điều này và sẽ duy trì dưới giới hạn tốc độ để bạn không gặp lỗi.
Giao diện minh họa Cloudflare Tunnel được quản lý tự động bởi DockFlare, cho thấy sự đơn giản trong cấu hình và giám sát.
Hình ảnh một phòng lab gia đình (homelab) nhỏ gọn trong khung tủ rack, nơi các ứng dụng Docker tự host có thể tận dụng DockFlare.
Yêu cầu và kinh nghiệm sử dụng DockFlare
Tôi phải thành thật mà nói: tôi vẫn đang tìm hiểu về Docker và container nói chung. Nền tảng kiến thức của tôi về điện toán chủ yếu là bare metal hoặc máy ảo (VM), và việc làm quen với cách container hoạt động cũng như nơi chúng lưu trữ dữ liệu đang dần ngấm vào bộ não. Có lẽ việc sử dụng Synology và ứng dụng Container của nó thay vì thiết lập một máy chủ ‘nix và làm theo cách đó cũng không giúp ích nhiều, nhưng đó là điều tiếp theo trong danh sách của tôi.
Tôi biết, Synology từng có các tính năng Docker tiêu chuẩn cho đến khi công ty làm những gì họ thường làm và xây dựng các tính năng riêng để “khóa” người dùng. Dù sao thì đó cũng chỉ là tạm thời, vì tôi đang lắp ráp các máy cho một cụm Proxmox HA, nơi sẽ chứa phần lớn homelab của tôi. Tôi nóng lòng muốn xem mình sẽ gây ra những sự hỗn loạn gì với nó, nhưng cho đến lúc đó, tôi đang tự học các kiến thức cơ bản về Docker trong một máy ảo Ubuntu với Docker Desktop. Có lẽ tôi nên sử dụng Podman hoặc thứ gì đó khác, nhưng tôi rất dễ bị thuyết phục để thử những thứ khác. Ít nhất thì các cài đặt và lưu trữ sẽ dễ dàng chuyển giao, và cả những tệp compose YAML tuyệt vời đó nữa.
Màn hình chạy Docker Desktop bên trong máy ảo Debian trên server Proxmox, minh họa môi trường thử nghiệm Docker cho người mới bắt đầu.
DockFlare thực sự rất tuyệt vời và nhà phát triển chỉ mới bắt đầu. Tôi đề cao sự dễ sử dụng trong homelab của mình, dù đó là các quy trình mà tôi đã hiểu sau nhiều năm thực hành, hay những thứ tôi có thể ráp nối trong vài giờ học hỏi. DockFlare hoàn toàn phù hợp với vế sau, và phần mất nhiều thời gian nhất đối với tôi là nhận ra rằng tôi cần sử dụng tên miền Cloudflare của mình chứ không phải tên miền DDNS của Synology cho các bản ghi DNS. Một khi vấn đề đó được giải quyết, việc khởi động các container diễn ra nhanh chóng, và việc chứng kiến Cloudflare Tunnels tự động xuất hiện mà không cần phải vật lộn thêm vài giờ thật sự thỏa mãn. Nếu bạn đang sử dụng Tunnels vì Cloudflare làm cho mọi thứ khác trở nên dễ dàng, thì việc thêm DockFlare sẽ còn làm cho nó đơn giản hơn nữa.
Logo chính thức của DockFlare, dự án mã nguồn mở giúp tự động hóa việc quản lý Cloudflare Tunnels.
Để tìm hiểu thêm về DockFlare và bắt đầu trải nghiệm, bạn có thể truy cập dự án trên GitHub: Xem tại Github.