回自訂網域

自訂網域設定教學

把你的網域(如 mybrand.com)綁到 kaiLink,5–10 分鐘完成自動 SSL 上線。

你需要:(1) 一個你擁有的網域 (2) 該網域 DNS 後台的編輯權限。
方案:Free 不支援,要 Starter(NT$30/月)以上。

整體流程

[你做]                                  [系統自動]

1. /dashboard/domain 輸入 mybrand.com
                                       → 產一組驗證碼

2. 到你的 DNS 後台加 TXT record
   _portaly.mybrand.com TXT
   "portaly-verify=<驗證碼>"
                                       → 每 5 分查 TXT,對到 → ✓ 驗證通過

3. 到你的 DNS 後台加 CNAME record
   mybrand.com CNAME proxy.kaiems.com
                                       → 偵測到 CNAME → 自動申請 Let's Encrypt SSL
                                       → 寫 nginx → 上線

4. 開 https://mybrand.com 看你的頁

Step 1 — 輸入網域

/dashboard/domain,輸入框填你的網域(不含 https://、不含路徑):

✅ 對❌ 錯
mybrand.comhttps://mybrand.com
www.mybrand.commybrand.com/
link.mybrand.com*.mybrand.com

子網域與根網域都可以

  • 根網域 mybrand.com — 整個網域全部給 kaiLink
  • 子網域 link.mybrand.com — 只 link 子網域給 kaiLink,其他網頁可繼續放別處

[新增 →] → 系統產一組 32 字元驗證碼,跳到 Step 2。

Step 2 — TXT record(證明你擁有這網域)

頁面會顯示兩格資訊,照這格式去你的 DNS 後台加一筆 TXT record:

類型 (Type):   TXT
主機名 (Name): _portaly.mybrand.com   ← 注意 _portaly 前綴
TXT 值:        portaly-verify=<32 字元驗證碼>
TTL:          自動 / 預設 / 600

各家 DNS 後台位置

DNS Provider位置
CloudflareDNS → Records → Add record → Type: TXT
GoDaddyMy Products → DNS → Add → TXT
GandiDomains → 你的網域 → DNS records → Add
HiNet商務型客戶後台 → DNS 服務 → 修改網域 → 新增 TXT
NamecheapDomain List → Manage → Advanced DNS → Add New Record
Google DomainsDNS → Custom records → Add → TXT
關於 _portaly 前綴:有些後台只填 _portaly 它會自動補上 .mybrand.com,有些要填完整 _portaly.mybrand.com。如果加完查不到,把前綴拿掉再試。

設好後等 5–30 分鐘 DNS 生效(每家 provider 速度不同),回 kaiLink 頁點 [我設好了,檢查]

  • 驗證成功 → 進 Step 3
  • 驗證失敗 → 顯示「尚未找到 TXT record」,等 DNS 生效再點一次

Step 3 — CNAME record(把流量指過來)

頁面顯示 3 格資訊:

類型 (Type):   CNAME(或 ALIAS)
主機名 (Name): mybrand.com           ← 你的網域
目標 (Value):  proxy.kaiems.com
TTL:          自動 / 預設 / 600
根網域用 CNAME 的限制:標準 DNS 規範根網域(如 mybrand.com 不含 www)不能用 CNAME。但多數現代 DNS provider(Cloudflare / Route53 / Gandi / Cloudns)有 ALIAS / ANAME / Flatten CNAME 替代方案。

如果你的 provider 沒這功能:
  • 改用子網域 www.mybrand.comlink.mybrand.com
  • 或設 root domain redirect 到子網域

設完後不需要做任何事。系統 cron 每 5 分鐘自動偵測 CNAME → 開始申請 SSL → 寫 nginx → 上線。

頁面會依序顯示:

  1. 「等待 DNS 生效... 5–30 分鐘」 — 我們在 polling
  2. 「DNS 已生效,準備申請 SSL...」 — 抓到 CNAME 了
  3. 「正在申請 Let's Encrypt SSL...」 — acme.sh 跑中

你不用一直盯著看,可以離開。5–30 分鐘內會變綠勾。

Step 4 — 上線完成

頁面變綠色 ✓ + 顯示:

  • mybrand.com 已上線
  • SSL 憑證到期日(會自動續約,不用管)
  • [訪問 →] 按鈕

[訪問 →] 開新分頁看 https://mybrand.com,應該顯示你原本 demo.kaiems.com/<你的 username> 的內容。

疑難排解

症狀排查
Step 2 點「檢查」一直找不到 TXT(a) 等更久,DNS 全球生效有時要 30 min;(b) dig _portaly.mybrand.com TXT 在 terminal 確認自己 DNS 真有設好;(c) 確認沒打錯前綴 _portaly
Step 3 卡「等待 DNS 生效」超過 30 分鐘(a) dig mybrand.com CNAME 確認指對;(b) 如果是根網域,DNS provider 不支援 CNAME 就一直卡,改用子網域
申請 SSL 失敗 (failed 狀態)(a) Let's Encrypt 有 rate limit(每 root domain 每週 50 張);(b) CAA record 若有設要包含 letsencrypt.org;(c) 點頁面 [移除並重來] 從頭跑
https://mybrand.com 出現 404(a) 你的頁面要先 publish(dashboard 上「發佈」按鈕);(b) 等 1–2 分鐘讓 middleware cache 過期

移除網域

/dashboard/domain 變綠後,下方有 [移除網域] 按鈕。按下會:

  1. nginx config 移除這個 vhost
  2. SSL 憑證 revoke
  3. DB row 標 removed
  4. 你的 DNS 不會自動清 — 要記得自己回去刪 TXT + CNAME

移除後同個網域可以重新加(甚至給別人加)。

自己排查的指令

跑不通最快排查:

# 1. 確認你 DNS 設對了
dig _portaly.mybrand.com TXT +short
dig mybrand.com CNAME +short

# 2. 確認 proxy.kaiems.com 真的指到 server
dig proxy.kaiems.com A +short
# 應該回 125.228.191.56

# 3. 直接用 IP 訪問看 nginx 認不認 Host
curl -sI -H "Host: mybrand.com" http://125.228.191.56/
# 應該 301 → https