Trong hành trình tự lưu trữ (self-hosting) các ứng dụng trên thiết bị NAS của mình, một trong những thách thức lớn nhất tôi gặp phải là làm thế nào để truy cập các dịch vụ đó từ bên ngoài mạng gia đình. Tôi đã thử nhiều tùy chọn reverse proxy khác nhau nhưng không cái nào hoạt động ổn định, một phần vì tôi không có địa chỉ IP tĩnh và DDNS thường xuyên gặp sự cố.
Tôi cũng từng thử các công cụ tương tự như Tailscale – một giải pháp sử dụng máy chủ bên thứ ba để xử lý các vấn đề xuyên NAT mà nhà cung cấp dịch vụ Internet (ISP) của tôi dường như đang gây ra. Tailscale hoạt động khá tốt, nhưng tôi vẫn ưu tiên việc tự host mọi thứ. Dù có thể tự host một phiên bản Headscale làm máy chủ điều phối, tôi vẫn cần thực hiện việc này bên ngoài mạng nhà. Nếu không, những vấn đề tương tự vẫn sẽ tồn tại, và tôi vẫn phải thiết lập reverse proxy để việc sử dụng các dịch vụ tự host trở nên dễ dàng hơn.
Và rồi tôi tìm thấy Pangolin. Mặc dù đã có dịp viết về nó, một trong những điểm mạnh cốt lõi của Pangolin là nó hoạt động tốt nhất khi được triển khai trên một Máy chủ riêng ảo (VPS). Bằng cách đó, bạn có thể sử dụng client Newt Docker để thực hiện xuyên NAT, giúp tránh tất cả các vấn đề phiền toái từ ISP mà tôi và có lẽ cả bạn đang gặp phải.
Các vấn đề cố hữu khi tự host tại nhà
Nhà cung cấp Internet (ISP) và những rào cản không mong muốn
Một trong những vấn đề lớn với các nhà cung cấp dịch vụ Internet (ISP), đặc biệt là ở Việt Nam và nhiều nơi khác, là các tính năng mà người dùng muốn sử dụng cho phòng lab tại nhà (home lab) lại thường bị giới hạn hoặc yêu cầu gói cước doanh nghiệp. Nếu bạn muốn có một hoặc nhiều địa chỉ IP tĩnh để tự host, bạn sẽ cần đăng ký gói doanh nghiệp với hầu hết các ISP. Chắc chắn, bạn có thể thiết lập DDNS, nhưng đó là một dịch vụ bổ sung cần quản lý, và nó cũng không hoạt động đủ nhanh cho tất cả các dịch vụ, đặc biệt nếu bạn đang tự host một máy chủ email. Điều này có thể dẫn đến việc mất tin nhắn, và thực tế là việc chạy một máy chủ với các cổng mở trên kết nối dân dụng thường bị cấm theo Điều khoản dịch vụ của ISP.
Tôi đã gặp phải vấn đề này gần đây và cũng nhận thấy rằng Cổng 25 (Port 25), vốn cần thiết cho máy chủ email, đã bị chặn ở cấp độ ISP, bất kể tôi đã mở nó trong tường lửa của mình. Ngoài ra, nhiều ISP ở Việt Nam và các quốc gia khác sử dụng Carrier Grade NAT (CGNAT) để bảo tồn khối địa chỉ IPv4 của họ và chuyển đổi chúng thành IPv6 cho khách hàng. Điều này có nghĩa là bạn có thể chia sẻ địa chỉ IPv4 công cộng của mình với nhiều khách hàng khác, và việc cố gắng thiết lập VPN trong điều kiện này cực kỳ khó khăn.
Giải pháp? Sử dụng một máy chủ trung gian để cung cấp khả năng xuyên NAT, giúp bỏ qua các quy định tùy tiện của ISP mà không cần mở cổng, đồng thời vẫn truy cập được các dịch vụ home lab của bạn trên tên miền riêng. Mặc dù bạn có thể sử dụng Tailscale, NetBird, hoặc ZeroTier để làm điều này, tôi đã chọn Pangolin vì tôi thích ý tưởng tự host nó trên VPS của mình. Điều này cũng mang lại cho tôi cách để chuyển tiếp Cổng 25, giúp tôi tiếp tục tự host dịch vụ email.
Pangolin: Không chỉ là truy cập, mà còn là bảo mật tối ưu
Loại bỏ rào cản NAT mà không cần mở cổng là một lợi thế lớn
Tôi chưa bao giờ thích việc phải giữ các cổng được chuyển tiếp (và mở!) ra Internet, đặc biệt là trong thời đại ngày nay khi các công cụ quét tự động và Shodan có thể phát hiện các cổng đó chỉ trong vài giây. Cùng với rủi ro bảo mật tăng thêm, đây thực sự không phải là một điều thông minh để làm. Tuy nhiên, Pangolin không yêu cầu mở cổng, hay các tiến trình hoặc container đặc quyền để bạn truy cập các dịch vụ tự host từ bên ngoài mạng gia đình. Nó sử dụng kỹ thuật NAT punching để kết nối client và dịch vụ của bạn với nhau. Pangolin thậm chí còn hoạt động ngay cả khi ISP của bạn đã chặn các cổng như 80, 443 hoặc 25 ở phía họ, bởi vì nó không dựa vào các cổng đó.
Giao diện quản lý các trang web (sites) đã được reverse proxy bằng Pangolin, hiển thị trạng thái và liên kết truy cập.
Pangolin không chỉ đơn thuần là việc truy cập. Mỗi subdomain mà Pangolin tạo ra cho các dịch vụ được reverse proxy của bạn đều được bảo vệ bằng thông tin đăng nhập của bạn, có thể là tên người dùng và mật khẩu, hoặc SSO (Đăng nhập một lần), hoặc nhiều tùy chọn khác. Bạn thậm chí có thể thiết lập hoàn toàn theo mô hình Zero Trust và nhận mã PIN được gửi đến email để truy cập dịch vụ, vì vậy nó cũng thực hiện tất cả công việc khó khăn trong việc bảo mật các dịch vụ của bạn. Nó còn có các liên kết chia sẻ tạm thời để bạn có thể cho phép người khác sử dụng dịch vụ của mình trong một khoảng thời gian nhất định trước khi các liên kết đó hết hạn. Đây là một tính năng tuyệt vời, tốt hơn rất nhiều so với việc chia sẻ mật khẩu cho các dịch vụ tự host của bạn.
Trải nghiệm thực tế và những bước tiến không ngừng
Vẫn đang trong quá trình khám phá và hoàn thiện
Cho đến nay, tôi chưa gặp bất kỳ vấn đề nào với Pangolin khi kết nối với các dịch vụ đang chạy trong container Docker. Tôi đã gặp một số vấn đề ban đầu khi cài đặt, với các module Newt và WireGuard không cài đặt được, tất cả dường như là do tôi đang chạy Debian trên VPS thay vì Ubuntu Server, nhưng điều đó đã được khắc phục dễ dàng.
Tôi vẫn đang tìm cách kết nối các dịch vụ không phải Docker của mình, điều này chắc chắn sẽ không mất nhiều thời gian nữa, đặc biệt là vì Pangolin sử dụng Traefik cho phần reverse proxy. Có lẽ vấn đề là tôi đang sử dụng sai địa chỉ IP cho các máy ảo. Tôi đã đề cập rằng tôi ghét mạng ảo chưa? Bởi vì tôi ghét nó, ngay cả khi tôi làm cho nó hoạt động, tôi cũng không bao giờ chắc chắn lý do tại sao. Nhưng ngay cả với điều đó, phần còn lại của thiết lập rất đơn giản và tôi có thể truy cập tất cả các dịch vụ khác của mình từ tên miền riêng.
Giờ đây tôi có thể truy cập phòng lab tại nhà từ bất cứ đâu, mà không cần mở cổng ra Internet.
Một chiếc laptop đang truy cập mạng, tượng trưng cho khả năng truy cập dịch vụ tự host từ xa mọi lúc mọi nơi nhờ Pangolin.
Tôi thực sự yêu thích việc có thể truy cập phòng lab tại nhà của mình từ bất cứ đâu chỉ bằng cách nhập tên miền vào bất kỳ trình duyệt nào. Điều tuyệt vời nữa là máy chủ email của tôi hoạt động bình thường, được bảo vệ bởi Cloudflare – nhà cung cấp DNS của tôi. Tôi vẫn có thể sử dụng địa chỉ email đó mà không phải lo lắng vì Pangolin cho phép thiết lập DKIM và tất cả các xác minh tin cậy khác để các nhà cung cấp email khác biết rằng tôi không phải là một kẻ gửi thư rác tiềm năng. Hơn nữa, tôi vẫn có thể sử dụng VPS của mình cho các mục đích khác, vì tôi có rất nhiều không gian ổ đĩa. Tôi nghĩ tôi sẽ thêm một IRC bouncer, chủ yếu vì lý do hoài niệm, nhưng sau đó, tôi không chắc mình sẽ sử dụng nó để làm gì, chỉ biết rằng nó sẽ không nằm im.
Với Pangolin, việc tự host trở nên dễ dàng và an toàn hơn bao giờ hết, giúp bạn kiểm soát hoàn toàn các dịch vụ của mình mà không bị ràng buộc bởi các hạn chế từ ISP. Hãy khám phá và trải nghiệm giải pháp mạnh mẽ này ngay hôm nay!