はじめに
Lovableで構築したサービスに、カスタムドメインを設定する方法を解説します。
今回は、既存の tielec.blog とは別に、新しいサービスを car-sharing-vs-rental-car.tool.tielec.blog というサブドメインで公開しました。
設定にあたって、次の2点を整理します。
-
サブドメイン設計の考え方(
tool.serviceかservice.toolか) - A+TXTレコードの設定手順(CNAMEではない理由も解説)
前提条件
- Lovableでサービスを構築済み
- 独自ドメインを取得済み(今回は
tielec.blog) - DNS管理はお名前ドットコム(他のサービスでも考え方は同じ)
サブドメイン設計のポイント
階層の意味を考える
サブドメインを設計するとき、階層の意味 を考える必要があります。
例えば、次の2つのどちらが適切でしょうか?
tool.car-sharing-vs-rental-car.tielec.blogcar-sharing-vs-rental-car.tool.tielec.blog
推奨される構造
結論から言うと、後者(car-sharing-vs-rental-car.tool.tielec.blog)が推奨です。
理由は、階層の意味が逆になるからです。
| パターン | 階層構造 | 意味 |
|---|---|---|
tool.car-sharing-vs-rental-car.tielec.blog |
tielec.blog → car-sharing-vs-rental-car → tool
|
サービスの中にツールがある(逆) |
car-sharing-vs-rental-car.tool.tielec.blog |
tielec.blog → tool → car-sharing-vs-rental-car
|
ツール群の中にサービスがある(正) |
将来の拡張性
car-sharing-vs-rental-car.tool.tielec.blog という構造にすることで、将来的に他のツールを追加しやすくなります。
tool.tielec.blog
├─ car-sharing-vs-rental-car
├─ cloud-cost-simulator
└─ pricing-compare
Lovableでの設定手順
1. Lovableでドメインを追加
Lovableのプロジェクト設定から、カスタムドメインを追加します。
すると、次のような設定値が表示されます(CNAMEではなく、A+TXTレコード)。
| RECORD TYPE | HOST NAME | VALUE |
|---|---|---|
| A | car-sharing-vs-rental-car.tool |
185.158.xxx.xxx |
| TXT | _lovable_verify.car-sharing-vs-rental-car.tool |
lovable_verify=xxxxxxxx... |
2. お名前ドットコムでDNS設定
お名前ドットコムにログインし、「DNS設定」を開きます。
Aレコードを追加
- タイプ: A
-
ホスト名:
car-sharing-vs-rental-car.tool(.tielec.blogは含めない) -
VALUE: Lovableが表示したIPアドレス(例:
185.158.xxx.xxx) - TTL: デフォルト(3600秒)
TXTレコードを追加
- タイプ: TXT
-
ホスト名:
_lovable_verify.car-sharing-vs-rental-car.tool -
VALUE: Lovableが表示した値(例:
lovable_verify=xxxxxxxx...) - TTL: デフォルト(3600秒)
重要: TXTレコードの値は 完全一致必須 です。コピペミスに注意してください。
3. 保存して反映待ち
DNS設定を保存します。反映には数分〜数時間かかる場合があります。
4. Lovableで検証
Lovable側で「Verify」ボタンを押し、検証が通ればHTTPSが自動的に有効になります。
なぜCNAMEではなくA+TXTなのか?
一般的なホスティングサービスではCNAMEが多い
Vercel、Netlify、GitHub Pagesなどでは、CNAMEレコードを使うことが一般的です。
CNAME: your-domain.example.com → vercel-alias.vercel.app
LovableがA+TXTを使う理由
Lovableでは、次の理由からA+TXTレコードを採用していると考えられます。
-
ルートドメイン対応
CNAMEはサブドメインでしか使えません。Aレコードならルートドメイン(example.com)にも対応できます。 -
DNS設定の柔軟性
Aレコードは、CNAME FlatteningなどのDNS設定と競合しにくい。 -
所有確認の明確化
TXTレコードで、ドメイン所有者であることを明確に確認できます。
よくある疑問
Q1. 1サービスごとに1つのIPアドレスが割り当てられるのか?
A. いいえ、IPアドレスは共有されています。
複数のLovableサービスが、同じIPアドレス(エッジIP)を共有しています。
car-sharing-vs-rental-car.tool.tielec.blog
↓
185.158.xxx.xxx ← Lovableのエッジ(CDN)
↓
HTTPのHostヘッダ / TLS SNI で振り分け
↓
該当するプロジェクト
DNSは「入口」を決めるだけで、実際の振り分けは HTTPのHostヘッダやTLSのSNI(Server Name Indication) によって行われます。
Cloudflare、Vercel、Netlifyなども同じ仕組みです。
Q2. TXTレコードは必須なのか?
A. はい、必須です。
TXTレコードは、「このドメインが、このLovableプロジェクトに紐づいていることを証明する」ためのものです。
これがないと、検証が通りません。
Q3. DNS反映に時間がかかる場合は?
A. TTL(Time To Live)に依存します。
一般的には数分〜数時間で反映されますが、DNS設定のTTLが長い場合、最大48時間かかることもあります。
反映を確認するには、次のコマンドを使います。
# Aレコードの確認
dig car-sharing-vs-rental-car.tool.tielec.blog
# TXTレコードの確認
dig TXT _lovable_verify.car-sharing-vs-rental-car.tool.tielec.blog
まとめ
Lovableでカスタムドメインを設定する際のポイントは次の通りです。
-
サブドメイン設計: 役割(
tool)→個別サービス(car-sharing-vs-rental-car)の順が推奨 - DNSレコード: CNAMEではなく、A+TXTレコードを使用
- IPアドレス: 複数サービスで共有(振り分けはHostヘッダ/SNI)
- TXTレコード: ドメイン所有確認のため必須
設定自体は難しくありませんが、サブドメインの階層設計や、A+TXTレコードの仕組みを理解しておくと、スムーズに進められます。
参考: こうした判断や設計のプロセスを、もう少し詳しく書いています。
https://tielec.blog/