自訂網域設定教學
把你的網域(如 mybrand.com)綁到 kaiLink,5–10 分鐘完成自動 SSL 上線。
你需要:(1) 一個你擁有的網域 (2) 該網域 DNS 後台的編輯權限。
方案:Free 不支援,要 Starter(NT$30/月)以上。
方案: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.com | https://mybrand.com |
| www.mybrand.com | mybrand.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 | 位置 |
|---|---|
| Cloudflare | DNS → Records → Add record → Type: TXT |
| GoDaddy | My Products → DNS → Add → TXT |
| Gandi | Domains → 你的網域 → DNS records → Add |
| HiNet | 商務型客戶後台 → DNS 服務 → 修改網域 → 新增 TXT |
| Namecheap | Domain List → Manage → Advanced DNS → Add New Record |
| Google Domains | DNS → 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 規範根網域(如
如果你的 provider 沒這功能:
mybrand.com 不含 www)不能用 CNAME。但多數現代 DNS provider(Cloudflare / Route53 / Gandi / Cloudns)有 ALIAS / ANAME / Flatten CNAME 替代方案。如果你的 provider 沒這功能:
- 改用子網域
www.mybrand.com或link.mybrand.com - 或設 root domain redirect 到子網域
設完後不需要做任何事。系統 cron 每 5 分鐘自動偵測 CNAME → 開始申請 SSL → 寫 nginx → 上線。
頁面會依序顯示:
- 「等待 DNS 生效... 5–30 分鐘」 — 我們在 polling
- 「DNS 已生效,準備申請 SSL...」 — 抓到 CNAME 了
- 「正在申請 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 變綠後,下方有 [移除網域] 按鈕。按下會:
- nginx config 移除這個 vhost
- SSL 憑證 revoke
- DB row 標
removed - 你的 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