Đưa Website từ Localhost lên Online Bằng Cloudflare Tunnel

 

Tôi chắc rằng bạn đã từng tìm cách chia sẻ trang web của mình từ “localhost” để mọi người có thể truy cập, hay show sản phẩm demo cho khách hàng mà ko phải mua thêm hosting. Một vài dịch vụ có thể làm việc đó như Ngrok, Localtunnel, Serveo,…

Tuy nhiên hạn chế của những dịch vụ kể trên với phiên bản miễn phí là không thể custom tên miền riêng của bạn, giới hạn số lượng request, thời gian hoạt động. Nếu bạn sử dụng mã nguồn wordpress thì các url của tệp tĩnh như css, js, hình ảnh sẽ bị lỗi 404.

Và rồi tôi đã vô tình va vào Cloudflare Tunnel. Lúc đầu cũng chả biết nó có đáp ứng đủ yêu cầu của mình không. Thôi thì cứ thử cho nhau một cơ hội.

Thật sự mình quá bất ngờ về những gì mà Cloudflare Tunnel làm được. Đã thế còn miễn phí nữa thì ai mà chịu cho nỗi.

Không luyên thuyên nữa, ở bài viết này mình sẽ hướng dẫn sử dụng Cloudflare Tunnel để chia sẻ trang web từ localhost.

Giới thiệu về Cloudflare Tunnel

Cloudflare Tunnel là một công cụ cho phép bạn kết nối các tài nguyên của mình với Cloudflare một cách an toàn mà không cần địa chỉ IP công khai.

Mọi request gửi, request nhận sẽ được lưu thông qua Cloudflare. Điều này giúp thiết bị của bạn giảm tải rất nhiều nếu như có sự cố như DDoS, vì Cloudflare sẽ gánh hết. Đồng thời nó cũng tạo cache ở người truy cập và mang lại tốc độ tốt không khác gì một dự án thực.

 

Hướng dẫn sử dụng Cloudflare Tunnel

Yêu cầu

Để Cloudflare Tunnel có thể hoạt động tốt nhất bạn cần chuẩn bị những thứ sau đây:

  1. Tên miền: Bạn cần có 1 tên miền để có thể sử dụng Cloudflare Tunnel. Bạn có thể đăng ký các tên miền giá rẻ io.vn, id.vn. Hoặc đăng ký tên miền miễn phí eu.org tại đây.
  2. Cấu hình tên miền ảo cho localhost: Các công cụ Wamp, Xamp, Laragon đều hỗ trợ tình năng này.
    Ví dụ:

    • Tên miền thực là domain.com
    • Tên miền để public website tôi sẽ dùng thêm subdomain là public.domain.com
  3. Xây dựng website dựa trên subdomain vừa tạo ở trên trong localhost.

Nhớ tạo tệp robots.txt để tránh các công cụ SERPs index những web phụ này nhé

User-agent: *
Disallow: /

Cài đặt và cấu hình Cloudflare Tunnel

Những bước kết nối tên miền với Cloudflare mình sẽ không nhắc lại ở bài viết này nhé.

1. Tại trang chủ cloudflare chọn Zero Trust.

Zero Trust Cloudflare

2. Chọn Access → chọn Tunnels → bấm Create a tunnel.

Tunnels Cloudflare

3. Mục Name your tunnel điền tên tunnel của bạn (không có khoảng trắng) → bấm Save tunnel.

Name your tunnel Cloudflare

4. Chọn hệ điều hành theo thiết bị của bạn. Như của tôi là Windows 64-bit → bấm vào link tải Cloudflared.

 

Configure Tunnel Cloudflare

5. Click đúp vào tệp Clouflared.msi vừa tải để cài đặt.

6. Mở CMD với quyền Administrator.

7. Copy và dán đoạn code vào CMD → nhấn Enter.

Install Cloudflared via CMD

8. Nếu thành công nó sẽ hiện thông báo Connected → bấm Next.

Installed successfully Cloudflared

9. Tại đây hãy điền vào các trường theo nhu cầu của bạn nhé.

Edit public hostname Tunnel Cloudflare

10. Ở phần TLS bên dưới hãy bật mục No TLS Verify để không bị lỗi SSL.

No TLS Verify Tunnel Cloudflare

11. Bấm Save tunnel và nếu bạn thấy Status báo HEALTHY tức Tunnel đã hoạt động.

 

Status Healthy Tunnel Cloudflare

Bây giờ bạn hãy sử dụng một thiết bị khác để kiểm tra.

Test Mobile Tunnel Cloudflare

Bật / Tắt Tunnel khi không sử dụng

Sử dụng CMD

Mở CMD với quyền Administrator và nhập lệnh bên dưới:

  • Tắt: sc stop cloudflared
  • Bật: sc start cloudflared
sc stop cloudflared

Bạn cũng có thể tạo thành tệp .cmd để tao tác nhanh hơn. Tuy nhiên, cần chỉnh thêm một chút để tệp có thể chạy tự động với quyền Admin.

  1. Chuột phải trên windows chọn New Text Document
  2. Đổi tên tệp theo ý của bạn.
    Ví dụ STOP Cloudflared.cmd, STOP Cloudflared.cmd.
  3. Click chuột vào tệp bạn vừa tạo chọn Edit và điền nội dung bên dưới:
  • Để tắt:

@echo off
>nul 2>&1 "%SYSTEMROOT%System32cacls.exe" "%SYSTEMROOT%System32configsystem"
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else (goto gotAdmin)

:UACPrompt
echo Set UAC = CreateObject^(“Shell.Application”^) > “%temp%getadmin.vbs”
set params = %*:”=””
echo UAC.ShellExecute “%~s0”, “%params%”, “”, “runas”, 1 >> “%temp%getadmin.vbs”

“%temp%getadmin.vbs”
del “%temp%getadmin.vbs”
exit /B

:gotAdmin
sc stop cloudflared

  • Để bật:

@echo off
>nul 2>&1 "%SYSTEMROOT%System32cacls.exe" "%SYSTEMROOT%System32configsystem"
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else (goto gotAdmin)

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "%~s0", "%params%", "", "runas", 1 >> "%temp%getadmin.vbs"

"%temp%getadmin.vbs"
del "%temp%getadmin.vbs"
exit /B

:gotAdmin
sc start cloudflared

Tạo tệp CMD on off Tunnel Cloudflare

Hãy chạy tệp này với quyền Administrator nhé.

Sử dụng Bản ghi CNAME DNS

Hoặc tắt bằng proxy (đám mây vàng) của bản ghi CNAME trong khu vực quản lý DNS Cloudflare.

Off proxy dns Cloudflare

Kết luận

Như vậy, thông qua những thông tin trình bày ở trên, chúng ta có thể thấy Cloudflare Tunnel là một công cụ hữu ích cho phép bạn chia sẻ trang web của mình từ localhost một cách dễ dàng và an toàn. Với nhiều lợi ích như bảo vệ DDoS tích hợp, cân bằng tải và đường hầm được mã hóa, việc sử dụng Cloudflare Tunnel sẽ giúp bạn an tâm hơn trong việc bảo vệ tài nguyên của mình.

Hy vọng bài viết này sẽ giúp ích cho bạn trong việc hiểu rõ hơn về Cloudflare Tunnel và cách sử dụng nó.

 

Tham khảo thêm tại: Cloudflare Tunnel.

/**/