Cơn ác mộng khi muốn demo ‘hàng’ từ máy local
Bạn vừa code xong một tính năng xịn xò và muốn gửi link demo ngay cho khách hàng? Hoặc bạn cần nhận Webhook từ Stripe về con server Raspberry Pi đặt tại nhà? Trước đây, Ngrok là lựa chọn quốc dân. Thế nhưng, bản free của Ngrok hiện tại khá gò bó: giới hạn 1GB băng thông, URL thay đổi liên tục và thường xuyên bị trình duyệt chặn bằng trang cảnh báo ‘Deceptive site’.
Sau khi loay hoay với đủ loại Tunnel, mình tìm thấy zrok. Đây là một công cụ mã nguồn mở xây dựng trên nền tảng OpenZiti. Nó không chỉ giúp bạn ‘đục thủng’ NAT hay Firewall trong 30 giây mà còn cực kỳ hào phóng về tính năng. Điểm ăn tiền nhất là zrok cho phép bạn chia sẻ cả HTTP, TCP và thậm chí là biến một folder thành ổ đĩa mạng chỉ bằng một câu lệnh.
Mình từng mất cả buổi sáng chỉ để cấu hình NAT port trên một con router cũ kỹ tại văn phòng khách hàng. Với zrok, mọi rào cản đó biến mất. Bạn không cần IP tĩnh, không cần quyền admin router, chỉ cần có internet là xong.
Tại sao zrok lại đáng đồng tiền bát gạo (dù nó miễn phí)?
Về kỹ thuật, zrok tạo một tunnel bảo mật từ máy bạn đến gateway của họ. Khi người dùng truy cập URL, yêu cầu được định tuyến an toàn về thẳng localhost của bạn.
Những lý do mình bỏ Ngrok để sang zrok:
- Bỏ qua NAT/Firewall: Hoạt động tốt ngay cả khi máy bạn nằm sau 3 lớp mạng.
- Chế độ Private: Chỉ những người bạn cho phép mới truy cập được, cực kỳ an toàn cho SSH.
- Self-hosted: Nếu không tin tưởng server của zrok, bạn có thể tự dựng server riêng để quản lý dữ liệu 100%.
- Không bị bóp băng thông: Hiện tại bản SaaS miễn phí của họ chạy rất mượt cho các tác vụ demo thông thường.
Triển khai nhanh trên Linux
Dưới đây là các bước mình thực hiện trên Ubuntu 22.04, các bản distro khác cũng làm tương tự.
1. Lấy Token định danh
Truy cập zrok.io để đăng ký tài khoản. Sau khi xác nhận email, bạn hãy đăng nhập vào dashboard. Tại đây, bạn sẽ thấy lệnh zrok invite kèm một đoạn mã token dài. Hãy lưu mã này lại để kích hoạt môi trường ở bước sau.
2. Cài đặt zrok
Thay vì tải file nén thủ công, bạn hãy dùng script chính thức để tự động hóa mọi thứ:
curl -sSLf https://get.zrok.io | sudo bash
Cài đặt xong, hãy kiểm tra bằng lệnh zrok version. Nếu hiện ra phiên bản (ví dụ v0.4.x) là bạn đã thành công một nửa.
3. Kích hoạt môi trường
Bây giờ, hãy ‘kết hôn’ máy tính của bạn với hệ thống zrok bằng token đã lấy ở bước 1:
zrok enable <your_token_here>
Lệnh này tạo ra một identity bảo mật duy nhất cho máy của bạn. Bạn chỉ cần thực hiện việc này đúng một lần duy nhất.
3 kịch bản sử dụng thực tế thường gặp
Kịch bản 1: Public nhanh một Web App (Port 8080)
Giả sử bạn đang chạy một con app Node.js tại port 8080. Để lấy link gửi cho đối tác, hãy gõ:
zrok share public http://localhost:8080
Ngay lập tức, màn hình sẽ hiện ra một URL có đuôi .share.zrok.io. Mọi request đổ vào URL này sẽ được forward thẳng về máy bạn. Rất tiện lợi!
Kịch bản 2: Giữ URL cố định cho Webhook
Bạn đang tích hợp Stripe Webhook và không muốn mỗi lần khởi động lại zrok là phải vào dashboard của Stripe để đổi URL? Hãy dùng tính năng reserve.
Đầu tiên, hãy đặt gạch giữ chỗ cho một cái tên riêng:
zrok reserve public http://localhost:8080 --unique-name my-webhook-api
Từ giờ, mỗi khi làm việc, bạn chỉ cần chạy:
zrok share reserved my-webhook-api
URL của bạn sẽ luôn là my-webhook-api.share.zrok.io. Lưu ý: Tên này phải là duy nhất trên toàn hệ thống zrok.
Kịch bản 3: Chia sẻ file log hoặc folder tài liệu
Đây là tính năng mình dùng nhiều nhất khi cần gửi file log nặng vài trăm MB cho đồng nghiệp. Thay vì upload lên Google Drive mất thời gian, mình share trực tiếp folder đó:
zrok share public ./logs_folder --backend-mode web
Người nhận sẽ thấy một giao diện web đơn giản để duyệt và tải file trực tiếp từ máy bạn với tốc độ tối đa.
Bảo mật nâng cao với Private Share
Nếu bạn muốn SSH vào máy ở nhà từ quán cafe nhưng sợ hacker dò pass? Hãy dùng chế độ private. Đây là lúc sức mạnh Zero Trust của OpenZiti tỏa sáng.
Tại máy ở nhà (Server):
zrok share private localhost:22 --backend-mode tcp
Bạn sẽ nhận được một mã truy cập (ví dụ: abc123xyz).
Tại máy ở quán cafe (Client):
zrok access private abc123xyz
Lệnh này sẽ mở một cổng trên chính máy khách (thường là 9191). Giờ bạn chỉ cần SSH vào localhost của chính mình:
ssh user@localhost -p 9191
Lúc này, dịch vụ SSH của bạn hoàn toàn ẩn mình trước internet. Không ai có thể thấy hoặc scan được port 22 của bạn.
Kinh nghiệm ‘xương máu’ khi sử dụng
Dù zrok rất mạnh, nhưng dữ liệu vẫn phải đi qua server trung gian của họ. Nếu bạn thấy tốc độ tải file bị chậm, đó là do khoảng cách địa lý đến gateway. Với các dự án yêu cầu độ trễ cực thấp, hãy cân nhắc tự dựng zrok self-hosted trên một con VPS Việt Nam.
Ngoài ra, nếu public URL cho nhiều người, hãy thêm lớp bảo mật cơ bản để tránh bot quét:
zrok share public http://localhost:8080 --basic-auth admin:password123
Tóm lại là…
zrok là một công cụ nhỏ gọn nhưng cực kỳ đa năng cho anh em Developer và DevOps. Nó giải quyết triệt để bài toán chia sẻ dịch vụ mà không làm hy sinh tính bảo mật. Nếu bạn đã chán cảnh gò bó của Ngrok, hãy cài zrok ngay hôm nay. Chỉ mất 2 phút để bạn làm chủ hoàn toàn đường truyền của mình.

