Hướng dẫn kết nối Custom Domain với Firebase Hosting: Quick Setup và Advanced Setup


Firebase Hosting hỗ trợ kết nối custom domain khá đơn giản. Tuy nhiên, khi thêm một domain mới, Firebase có thể cung cấp hai phương án cấu hình:

  • Quick setup

  • Advanced setup

Cả hai đều có cùng mục tiêu là đưa domain về Firebase Hosting, nhưng phù hợp với những tình huống khác nhau.

Câu hỏi quan trọng nhất khi lựa chọn là:

Đây là domain mới hay domain đang phục vụ hệ thống production?

Bài viết này sẽ giải thích sự khác nhau giữa hai phương án và cách lựa chọn phù hợp.


Ví dụ

Giả sử chúng ta có:

Firebase project: my-project
Hosting site: my-app
Default domain: my-app.web.app
Custom domain: app.example.com

Trong Firebase Console, truy cập:

Hosting → Chọn site → Add custom domain

Nhập custom domain:

app.example.com

Sau đó Firebase sẽ hướng dẫn cấu hình DNS cần thiết.

Tùy vào tình trạng hiện tại của domain, chúng ta có thể chọn Quick setup hoặc Advanced setup.


Option 1 — Quick setup

Quick setup là phương án đơn giản và nhanh nhất.

Phù hợp khi:

  • Domain hoặc subdomain mới.

  • Domain chưa phục vụ traffic production.

  • Có thể chấp nhận gián đoạn tạm thời trong quá trình cấu hình.

  • Muốn cấu hình nhanh với ít bước.

Cấu hình DNS

Với một subdomain như:

app.example.com

Firebase có thể yêu cầu tạo CNAME tương tự:

Type:  CNAME
Host:  app
Value: my-app.web.app
TTL:   Auto hoặc 300

Cách nhập Host hoặc Name phụ thuộc vào DNS provider.

Một số provider chỉ yêu cầu:

app

Trong khi một số hệ thống có thể hiển thị hoặc yêu cầu đầy đủ:

app.example.com

Hãy sử dụng đúng định dạng mà DNS provider của bạn yêu cầu.

Ngoài ra, nếu cấu hình root/apex domain như:

example.com

Firebase có thể yêu cầu loại record khác, chẳng hạn A record thay vì CNAME.

Luôn sử dụng chính xác DNS record mà Firebase Console hiển thị, thay vì copy IP hoặc DNS record từ các bài hướng dẫn cũ.

Các bước thực hiện

  1. Mở trang quản lý DNS của domain.
  2. Kiểm tra hostname hiện tại có A, AAAA hoặc CNAME record nào không.
  3. Xóa các record bị conflict nếu cần.
  4. Thêm DNS record mà Firebase yêu cầu.
  5. Chờ DNS propagate.
  6. Quay lại Firebase Console để verify.
  7. Chờ đến khi domain được kết nối hoàn tất.

Có thể kiểm tra DNS bằng:

dig CNAME app.example.com +short

Và kiểm tra HTTPS:

curl -I https://app.example.com

DNS propagation và quá trình cấp SSL có thể mất một khoảng thời gian, vì vậy domain có thể ở trạng thái pending trước khi hoạt động hoàn toàn.

Điểm cần lưu ý

Với Quick setup, DNS có thể bắt đầu chuyển người dùng sang Firebase trong khi toàn bộ quá trình migration vẫn chưa hoàn tất.

Vì vậy, phương án này phù hợp nhất với domain mới hoặc domain có thể chấp nhận downtime tạm thời.

Nếu domain đang chạy production và yêu cầu hạn chế tối đa downtime, nên cân nhắc Advanced setup.


Option 2 — Advanced setup

Advanced setup phù hợp khi domain đang hoạt động trên một hosting khác và cần kiểm soát quá trình migration tốt hơn.

Phù hợp khi:

  • Domain hiện đang trỏ đến hosting khác.

  • Ứng dụng đang chạy production.

  • Muốn hạn chế hoặc tránh downtime.

  • Muốn hoàn thành việc xác minh domain và chuẩn bị HTTPS trước khi chuyển traffic.

Có thể hiểu quá trình này gồm hai giai đoạn.


Giai đoạn 1 — Prepare domain

Đầu tiên, Firebase cần xác minh rằng bạn có quyền quản lý domain.

Firebase có thể yêu cầu tạo TXT record tương tự:

Type:  TXT
Host:  app
Value: hosting-site=my-app
TTL:   Auto hoặc 300

Giá trị thực tế phụ thuộc vào domain và Firebase Hosting site, vì vậy cần copy trực tiếp từ Firebase Console.

Điểm quan trọng là:

Trong giai đoạn này, hosting cũ vẫn có thể tiếp tục phục vụ người dùng.

Sau khi TXT record propagate:

  1. Quay lại Firebase Console.
  2. Verify quyền sở hữu domain.
  3. Thực hiện các bước xác minh certificate nếu Firebase yêu cầu.
  4. Chờ Firebase xác nhận domain đã sẵn sàng để chuyển traffic.

Tùy vào cấu hình, Firebase có thể yêu cầu thêm DNS record hoặc các bước xác minh certificate khác.

Không nên giả định challenge luôn có một định dạng cố định. Hãy thực hiện chính xác theo thông tin Firebase Console hiển thị tại thời điểm cấu hình.


Kiểm tra CAA record

Nếu domain đang sử dụng CAA record, nó có thể giới hạn Certificate Authority nào được phép cấp SSL certificate cho domain.

Có thể kiểm tra bằng:

dig CAA example.com +short

Nếu quá trình cấp SSL gặp lỗi và domain có CAA record, hãy kiểm tra xem cấu hình hiện tại có cho phép Certificate Authority mà Firebase yêu cầu hay không.

Không nên tự ý thêm hoặc thay đổi CAA record nếu không cần thiết.

Hãy ưu tiên làm theo yêu cầu hiện tại được Firebase hiển thị cho domain.


Giai đoạn 2 — Direct traffic to Firebase Hosting

Sau khi Firebase xác nhận domain đã sẵn sàng, chúng ta có thể chuyển DNS routing sang Firebase Hosting.

Firebase sẽ hiển thị chính xác những DNS record cần tạo hoặc cập nhật.

Tùy vào loại domain, có thể bao gồm:

A
AAAA
CNAME

Lúc này:

  1. Mở trang quản lý DNS.
  2. Thêm các record Firebase cung cấp.
  3. Xóa các record cũ bị conflict hoặc đang trỏ đến hosting trước đó.
  4. Verify DNS record trong Firebase Console.
  5. Chờ custom domain chuyển sang trạng thái connected.

Một lần nữa:

Luôn sử dụng record và IP hiện tại được Firebase Console cung cấp.

Không nên sử dụng IP lấy từ các bài hướng dẫn cũ vì cấu hình Firebase có thể thay đổi theo domain hoặc theo thời điểm.


Migration không downtime hoạt động như thế nào?

Ưu điểm chính của Advanced setup là hosting hiện tại vẫn có thể tiếp tục phục vụ người dùng trong khi Firebase chuẩn bị domain mới.

Quá trình có thể hình dung như sau:

Hosting hiện tại tiếp tục phục vụ traffic
                 ↓
Xác minh quyền sở hữu domain
                 ↓
Hoàn thành xác minh certificate
                 ↓
Firebase chuẩn bị HTTPS
                 ↓
Firebase xác nhận domain đã sẵn sàng
                 ↓
Cập nhật DNS routing
                 ↓
Traffic chuyển sang Firebase Hosting

Cách này giúp giảm nguy cơ người dùng truy cập domain trong khi Firebase vẫn chưa sẵn sàng phục vụ HTTPS.

Đối với hệ thống production, có thể cân nhắc giảm DNS TTL trước thời điểm migration để thay đổi DNS được cập nhật nhanh hơn.


Quick setup và Advanced setup khác nhau thế nào?

Trường hợpPhương án phù hợp
Domain/subdomain mớiQuick setup
Chưa có user hoặc trafficQuick setup
Chấp nhận downtime tạm thờiQuick setup
Domain production đang hoạt độngAdvanced setup
Migration từ hosting khácAdvanced setup
Muốn hạn chế downtimeAdvanced setup
Cần kiểm soát quá trình migration tốt hơnAdvanced setup

Có thể nhớ đơn giản:

Domain mới
    ↓
Quick setup

Domain production đang hoạt động
    ↓
Advanced setup

Kiểm tra và xử lý lỗi

Nếu custom domain bị kẹt ở trạng thái setup hoặc pending, có thể kiểm tra lần lượt các vấn đề sau.

1. Kiểm tra DNS record

dig TXT app.example.com +short
dig CNAME app.example.com +short
dig A app.example.com +short
dig AAAA app.example.com +short

Kiểm tra xem còn record cũ hoặc record bị conflict hay không.

Đặc biệt, một hostname sử dụng CNAME thường không nên đồng thời có các A hoặc AAAA record xung đột.


2. Kiểm tra HTTPS

curl -Iv https://app.example.com

Lệnh này có thể giúp kiểm tra các vấn đề liên quan đến:

  • SSL certificate

  • Redirect

  • DNS

  • Kết nối HTTPS


3. Kiểm tra Cloudflare Proxy

Nếu DNS được quản lý bằng Cloudflare, proxy đôi khi có thể khiến quá trình verify hoặc troubleshoot khó hơn.

Trong lúc cấu hình, có thể tạm thời chuyển record sang:

DNS only

thay vì:

Proxied

Sau khi Firebase Hosting hoạt động ổn định, có thể xem xét lại cấu hình Cloudflare tùy theo kiến trúc hệ thống.


4. Kiểm tra CAA

dig CAA example.com +short

Nếu có CAA record, cần kiểm tra xem chúng có đang ngăn Certificate Authority mà Firebase sử dụng cấp SSL certificate hay không.


5. Kiểm tra verification record

TXT record và các verification token cần phải chính xác tuyệt đối.

Một số lỗi thường gặp:

  • Sai hostname.

  • Thiếu ký tự.

  • Thừa dấu ngoặc kép.

  • Sử dụng verification record cũ.

  • Thêm record vào nhầm DNS zone.


6. Chờ DNS propagation

DNS không phải lúc nào cũng cập nhật ngay lập tức.

Thời gian cập nhật phụ thuộc vào:

  • DNS provider.

  • TTL.

  • DNS resolver cache.

  • Quá trình Firebase xác minh domain.

  • Quá trình cấp SSL certificate.

Trong thời gian DNS đang propagate, không nên liên tục thay đổi record vì điều này có thể khiến việc troubleshoot trở nên khó khăn hơn.


Kết luận

Kết nối custom domain với Firebase Hosting không quá phức tạp, nhưng lựa chọn đúng phương án setup sẽ giúp quá trình triển khai an toàn hơn.

Quick setup phù hợp khi domain mới và chưa có traffic quan trọng.

Advanced setup phù hợp khi migration một domain production đang hoạt động và muốn chuẩn bị việc xác minh domain, HTTPS trước khi chuyển traffic.

Điều quan trọng nhất cần nhớ:

Hãy xem DNS record được Firebase Console hiển thị tại thời điểm cấu hình là nguồn thông tin chính xác nhất.

DNS record, IP hoặc yêu cầu certificate của Firebase có thể thay đổi theo thời gian. Vì vậy, không nên sử dụng các giá trị hard-code được copy từ những bài hướng dẫn cũ.

Tài liệu chính thức:
Firebase Hosting — Connect a custom domain
https://firebase.google.com/docs/hosting/custom-domain

Đăng nhận xét

Mới hơn Cũ hơn