本文へ移動
Siteon
目次 独自ドメインとフォームの許可ドメイン

Docs

独自ドメインとフォームの許可ドメイン

お店のドメイン(www.example.jp)で公開するための DNS の設定(CNAME と TXT)、www の無い形の扱い、状態とエラーの意味。フォームを受け付けるドメイン(許可ドメイン)の登録と、403 origin_not_allowed の直し方。AI エージェント向けの手順つき。

Siteon は、AI で作ったサイトのためのインフラです。AI や手で作った静的サイト(HTML)に、ホスティング・お客さん(お店の人)が直せる CMS・お問い合わせフォーム・アクセス解析・AI エージェントからの操作(CLI・MCP)を足し、そのまま納品できる状態にします。

このページには 2 つのことが書いてあります。

やりたいこと読む節
Siteon のホスティングで公開しているサイトを、お店のドメイン(www.example.jp)で見せたい独自ドメイン
フォームを送ると 403・origin_not_allowed になる。フォームを置くサイトのドメインを登録したいフォームの許可ドメイン

Siteon のホスティングで独自ドメインが有効になると、そのドメインは許可ドメインにも自動で入ります。ほかのホスティング(Cloudflare Pages・Vercel など)にフォームだけを置く場合は、許可ドメインだけを設定します。

独自ドメイン 近日

独自ドメインの受け付けは準備中です 近日。この節は、受け付けを始めたときの手順です。それまでは https://<名前>.siteun.com/ で公開できます。

お店のドメインで公開するときは、www.example.jp を本体(主ドメイン)にし、example.jp(www の無い形)は www へ転送します。

前提

  • そのサイトが 有料プラン であること。使える数は Lite 1・Standard 3・Business 10 です。www.example.jp と example.jp の組で 1 つと数えます。Free では使えません(plan_required)
  • そのサイトで ホスティングを有効 にしていること(siteon hosting enable。ホスティングと配信)
  • 管理画面で操作できるのは、そのサイトのオーナーです。API キー(CLI・MCP)では権限 domains:write が要ります。この権限は既定では付かないので、鍵の発行のときに明示して選びます(siteon login --scopes +domains:write)
  • ドメインの DNS を自分で編集できること。ドメインを買った会社(レジストラ)と、DNS を編集する場所が違うことがあります。ネームサーバーが向いている先 で編集します
  • 申請はアカウント全体で 1 日 5 件までです(日本時間の日付で数えます)

手順

  1. 管理画面のサイドバーの「公開」を開き、「独自ドメイン」の欄に www.example.jp を入れて「追加」を押します(CLI では siteon domains add www.example.jp --site <サイトID>)
  2. 画面に出る 2 つのレコード(TXT と CNAME)を、ドメインの DNS に追加します(入れるレコード)
  3. 待ちます。Siteon が 5 分ごとに DNS と証明書を自動で確かめ、そろえば状態が「有効」になり、そのドメインで表示されます。管理画面の「公開」を開き直すと、その場でもう一度確かめます(CLI では siteon domains status)
  4. example.jp(www の無い形)を www.example.jp に転送します(www の無い形)

申請から 72 時間たっても確かめられないと、その申請は取り消されます(状態が「失敗」になります)。その場合はもう一度追加します。

入れるレコード

www.example.jp を申請したときに入れるのは次の 2 つです。値は申請ごとに変わるので、必ず画面(または CLI・API の応答)に出たものをそのまま 写します。

種類名前(ホスト名)値
TXT_sitekit-verify.www.example.jpsitekit-verify= で始まる、画面に出た値
CNAMEwww.example.jpcname.siteun.com
  • TXT は所有の確認です。 申請のたびに必要で、値は申請ごとに変わります。有効になった後も 消さないでください。Siteon は有効になった後も 5 分ごとに確かめていて、TXT が無くなると、そのドメインでの表示がすぐに止まります(許可ドメインからも外れます)
  • CNAME は配信先です。 www.example.jp に今あるレコード(A・AAAA・別の CNAME)は、CNAME と同時には置けません。消してから CNAME を入れます。CNAME を切り替えた時点で前のサイトは見えなくなり、証明書が発行されるまでの数分ほどは https:// で開けないことがあります。先に TXT を入れ、アクセスの少ない時間に CNAME を切り替える と、止まる時間を短くできます
  • DNS の画面の多くは、名前の欄の後ろにドメイン名(.example.jp)を自動で付けます。その場合は www と _sitekit-verify.www だけを入れます。www.example.jp と入れると www.example.jp.example.jp になってしまいます
  • メール(MX)など、www 以外のレコードには触りません
  • 日本語のドメインは、xn-- で始まる形(Punycode)で申請し、DNS にもその形で入れます

入れた後は、次のコマンドで DNS に出ているかを確かめられます。

dig +short CNAME www.example.jp                   # cname.siteun.com. と出れば OK
dig +short TXT _sitekit-verify.www.example.jp     # 画面と同じ値が出れば OK

DNS の入れ方の例

画面の名前やメニューの位置は、各社の変更で変わることがあります。どの会社でも、DNS レコードの設定画面で「種類 CNAME・ホスト名 www・値 cname.siteun.com」と「種類 TXT・ホスト名 _sitekit-verify.www・値 画面に出た値」の 2 行を足す ことに変わりはありません。

  • Cloudflare — ドメインの「DNS」→「Records」で「Add record」。CNAME は Name www・Target cname.siteun.com、Proxy status は「DNS only」(灰色の雲)にします。TXT は Name _sitekit-verify.www・Content に画面の値
  • お名前.com — お名前.com Navi の DNS 関連機能(「DNS 設定」・「DNS レコード設定」)で、ホスト名 www・TYPE CNAME・VALUE cname.siteun.com と、ホスト名 _sitekit-verify.www・TYPE TXT・VALUE 画面の値を追加します。ネームサーバーがお名前.com のものになっているときに使える画面です
  • ムームードメイン — 「ムームー DNS」のカスタム設定で、サブドメイン www・種別 CNAME・内容 cname.siteun.com と、サブドメイン _sitekit-verify.www・種別 TXT・内容 画面の値を追加します
  • Xserver ドメイン — ドメインの「DNS レコード設定」で、ホスト名 www・種別 CNAME・内容 cname.siteun.com と、ホスト名 _sitekit-verify.www・種別 TXT・内容 画面の値を追加します。ネームサーバーをレンタルサーバー(エックスサーバーなど)に向けている場合は、そちらの DNS レコード設定で行います
  • さくらのドメイン — 会員メニューのドメインの「ゾーン編集」で、エントリ名 www・種別 CNAME・値 cname.siteun.com.(末尾にドットが要る画面があります)と、エントリ名 _sitekit-verify.www・種別 TXT・値 画面の値を追加します
  • Squarespace(旧 Google Domains) — ドメインの「DNS」設定のカスタムレコードで、Host www・Type CNAME・Data cname.siteun.com と、Host _sitekit-verify.www・Type TXT・Data 画面の値を追加します

Cloudflare でプロキシ(オレンジの雲)をオンにすると、www.example.jp へのアクセスはお客様側の Cloudflare の設定を通ってから Siteon に届くため、証明書の発行や確認がうまく進まないことがあります。Siteon は Cloudflare を通して配信と証明書を用意するので、プロキシをオンにする必要はありません。

www の無い形(example.jp)

example.jp は、普通の DNS では CNAME を置けません(ドメインそのもの=apex には CNAME を置けない決まりのため)。次のどちらかで www.example.jp に転送します。

A. CNAME flattening(ALIAS・ANAME)が使える DNS の場合

  1. 先に www.example.jp を追加しておきます(主ドメインが無いまま example.jp だけを追加すると、転送先が無く 404 になります)
  2. example.jp も追加します。www.example.jp と合わせて 1 つと数えるので、枠は増えません。自動で「メインへ転送」になります
  3. 画面に出る TXT(_sitekit-verify.example.jp)と、apex(名前の欄は @ か空欄)の CNAME → cname.siteun.com を入れます。apex に今ある A・AAAA は消します(MX と TXT は残せます)
  4. 有効になると、https://example.jp/… は https://www.example.jp/… に転送されます(パスとクエリはそのまま)

Cloudflare は apex の CNAME を標準で flattening するので、この方法が使えます。ほかの会社は、ALIAS・ANAME などの対応を各社の案内で確かめてください。

B. レジストラの URL 転送を使う場合

DNS の会社の「URL 転送」(ウェブ転送・転送設定など)で、example.jp を https://www.example.jp に転送します。Siteon には example.jp を追加しません(枠も使いません)。転送の仕組みは各社のものなので、https://example.jp で開いたときに証明書のエラーが出ないか、パスが引き継がれるかは、その会社の仕様によります。

www を使わず example.jp を本体にすることもできます(追加のときに主ドメインに指定する。CLI では --primary)。ただし、DNS の制約が少ない www を本体にするのをおすすめします。

状態の意味

状態(API の値)意味次にすること・待ち時間の目安
受付中(requested)申請を受け付け、配信の準備をしている待つだけ。通常は数秒〜数分で「DNS の設定待ち」になる
DNS の設定待ち(pending_dns)CNAME か TXT がまだ確かめられない2 つのレコードを入れる。入れてから DNS に反映されるまで数分〜数時間(DNS の会社と TTL による)。その後の 5 分ごとの確認で進む
証明書の発行待ち(pending_ssl)DNS は確かめられ、https:// の証明書を発行している待つだけ。通常は数分〜数十分
有効(active)このドメインで表示している。許可ドメインにも自動で入っているTXT と CNAME を消さない。5 分ごとの確認が通るたびに 72 時間延びる
失敗(failed)申請から 72 時間以内に確かめられず、申請が取り消されたもう一度追加する(TXT の値は新しくなるので、古い TXT を新しい値に入れ替える)
  • 「有効」の後に TXT や CNAME が消えると、すぐに「DNS の設定待ち」に戻り、そのドメインでの表示が止まります(許可ドメインからも外れます)。レコードを戻せば、申請し直さなくても次の確認で「有効」に戻ります
  • Siteon 側や Cloudflare 側の一時的な障害で確かめられないときは、表示を止めません(最後に確かめられてから 72 時間まで)
  • 待ち時間は目安です。DNS の反映が遅い会社では、半日ほどかかることもあります

削除と主ドメインの変更

  • 削除 — 管理画面の「公開」→「独自ドメイン」で「削除」(CLI では siteon domains remove www.example.jp --yes)。そのドメインでの表示はすぐに止まり、元に戻せません。もう一度使うには、追加と DNS の確認をやり直します(TXT の値も新しくなります)。枠が空くのは、Siteon 側の後片付けが終わってから(通常は数分)です。不要になった DNS のレコードは自分で消します。主ドメインを消すと、転送にしているドメイン(example.jp)は転送先が無くなり 404 になります
  • 主ドメインの変更 — siteon domains primary <ドメイン> --yes(MCP では domains_primary)。有効になっているドメインを主にします。ほかのドメインはすぐに新しい主ドメインへ転送され、ページの正規 URL(canonical)も変わります
  • 独自ドメインが主ドメインとして有効な間も、共通サブドメイン(<名前>.siteun.com)は表示を続けます。ただし検索に載らない設定(noindex)になり、正規 URL として独自ドメインを示します

エラー

管理画面では日本語の説明が、CLI・API・MCP では error にコードが出ます。

コード意味直し方
plan_required(402)そのサイトのプランでは独自ドメインを使えない(Free)そのサイトを有料プラン(Lite から)にする
quota_hostnames(402)プランの枠を使い切っている(limit と used が返る)使っていないドメインを削除するか、プランを上げる。削除した直後は、後片付けが終わるまで数分ほど枠に数えられる
invalid_hostname(400)ドメインの形が違う(reason が bad_format)、または siteun.com のドメインを入れた(base_domain)www.example.jp の形で入れる。https://・末尾の /・パスは付けない。使える文字は英小文字・数字・ハイフン(日本語ドメインは xn-- の形)
hostname_blocked(400)ブランド名と、ログイン・認証などの語を組み合わせたドメイン(なりすましに使われやすい形)は登録できない別のドメインを使う
hostname_reserved(409)そのドメインは別のアカウントが申請中か、使っている(申請中なら reserved_until に期限)自分のドメインなら、期限(申請から 72 時間)が過ぎてから申請する。期限が出ないとき(ほかで有効になっている)は Siteon に問い合わせる
hostname_in_use(409)同じアカウントの別のサイトに登録されている(site_id)そのサイトで削除してから追加する
too_many_domain_requests(429)申請はアカウント全体で 1 日 5 件まで翌日(日本時間の日付が変わってから)申請する
hosting_disabled(409)そのサイトでホスティングを有効にしていない先に siteon hosting enable
billing_inactive(402)支払いが確認できない管理画面の請求を確かめる
account_held / transferring(409)アカウントの公開が止められている / サイトの移管の手続き中停止の連絡メールを確かめる / 移管が終わってから行う
hostname_not_live(409)主にしようとしたドメインが「失敗」か削除済み追加からやり直す
site_changed(409)別の操作と重なった状態を読み直してから、もう一度行う
insufficient_scope(403)API キーに domains:write が無いdomains:write を付けた鍵を発行し直す(siteon login --scopes +domains:write)
confirmation_required(400)API キーでの削除・主ドメインの変更に確認が付いていない人に確かめてから confirm: true(CLI では --yes)を付ける

フォームの許可ドメイン

許可ドメイン(API では allowed_origins)は、そのサイトのフォームを置いてよいページのドメイン の一覧です。ここに無いドメインのページから送られたお問い合わせは受け付けません。ほかの人が自分のサイトにあなたのフォームを置いて、受付の件数を使ってしまうのを防ぐためです。サイトのページビューの計測も同じ一覧で判断します。

  • 管理画面: サイトの「設定」→「ドメイン・サイト名」の「フォームを受け付けるドメイン」。1 行に 1 つ書いて「保存する」。変えられるのはそのサイトのオーナーです。保存するとすぐに効きます
  • 管理画面では https:// を省けます(localhost は http:// とみなします)。パスを書いても、ドメインの部分だけが登録されます
  • 登録できるのは 20 個までです
  • 完全に一致したものだけ を受け付けます。https://www.example.jp と https://example.jp は別なので、両方で使うなら両方入れます。http:// と https://、ポート番号の違いも別です。* のようなワイルドカードは使えません(Cloudflare Pages のプレビュー URL <ハッシュ>.<プロジェクト>.pages.dev のように毎回変わるものは、それぞれ入れるか、固定のプレビュー URL を使います)
  • Origin の付かない送信(curl・サーバーからの送信)は、許可ドメインに関係なく受け付けます

自動で入るドメイン

次の 2 つは、一覧に書かなくても受け付けます(一覧の欄には出ません)。

  • Siteon のホスティングの共通サブドメイン(https://<名前>.siteun.com)
  • 「有効」になっている独自ドメイン(https://www.example.jp、転送にしている https://example.jp も)。有効でなくなると自動で外れます。いま入っているものは siteon domains status の auto_origins で確かめられます

Free で入れられるドメイン

Free のサイトに入れられるのは、開発・プレビュー用のドメインだけです。それ以外(独自ドメイン)を入れると 402 upgrade_required になります。そのサイトを有料プランにしてから入れます。

localhost
127.0.0.1
*.pages.dev
*.vercel.app
*.netlify.app
*.github.io
*.workers.dev

ここでの *.pages.dev は「この形のものなら登録できる」という意味です。受け付けるのは、一覧に入れた個々のドメインだけです。

API で変える

API キー(権限 sites:write)で、サイトの許可ドメインを まるごと置き換え ます。送った一覧がそのまま新しい一覧になるので、今の一覧(GET で読めます。権限 sites:read)に足した形で送ります。

curl -X PATCH "https://cdn.siteon.dev/v1/accounts/<アカウントID>/sites/<サイトID>" \
  -H "Authorization: Bearer stk_..." \
  -H "Content-Type: application/json" \
  -d '{"allowed_origins":["https://www.example.jp","https://example.jp","https://my-shop.pages.dev"]}'
  • 1 つずつ https://www.example.jp の形で書きます。末尾の /・パス・大文字は使えません(400)。21 個以上も 400 です
  • 本人の鍵(siteon login で作ったもの)では、アカウントのオーナーか管理者である必要があります
  • Free のサイトに開発用でないドメインを送ると 402 upgrade_required です

403 origin_not_allowed の直し方

次のどちらかが出ているときは、フォームを置いたページのドメインが許可ドメインに入っていません。お問い合わせは保存されず、件数にも数えられません。

  • フォームに「送信できませんでした」と出て、ブラウザの開発者ツールのコンソールに CORS のエラー(Access-Control-Allow-Origin が無い、など)が出る。Siteon の script からの送信は、ブラウザが送る前の確認(プリフライト)で止めるので、送信そのものが行われません
  • 自分で書いた送信処理(fetch・素の <form> の送信など)で、応答が 403 の {"ok":false,"error":"origin_not_allowed"} になる
  1. フォームを置いたページを開き、開発者ツールのコンソールで location.origin を実行して、ページのドメインを正確に調べます(例: https://www.example.jp)
  2. 管理画面の「設定」→「ドメイン・サイト名」の「フォームを受け付けるドメイン」と見比べます。www の有無・http と https・ポート番号まで一致しているかを確かめます
  3. 無ければ追加して保存します。保存するとすぐに効くので、ページを読み込み直してもう一度送ります
  4. 追加できないとき
    • 「本番のドメインは有料プランで使えます」(402 upgrade_required)— Free のサイトです。そのサイトを有料プランにしてから追加します
    • 「ドメインは20個までです」— 使っていないものを消します
  5. Siteon のホスティングの独自ドメインなら、一覧に足さなくても、「有効」になれば自動で入ります。「DNS の設定待ち」などのままなら、状態の意味 を見て、ドメインのほうを直します

AI エージェントがこのページを使うとき

人に「独自ドメインを設定して」「フォームが 403 になる」と頼まれたときの手順です。MCP の操作は準備中です 近日(それまでは管理画面での手順を人に案内します)。

独自ドメインを頼まれたら

  1. 人に確かめる: 使うドメイン(www.example.jp の形)、そのドメインの持ち主であること、DNS を編集できる会社(Cloudflare・お名前.com など)、そのサイトが有料プランでホスティングを有効にしていること。持ち主でないドメインは申請しない
  2. domains_add(site・hostname: "www.example.jp")を呼ぶ。鍵に domains:write が無ければ insufficient_scope になるので、人に siteon login --scopes +domains:write で鍵を作り直してもらう
  3. 応答の dns.txt(name・value)と dns.cname(name・target)を、値を変えずにそのまま 人に見せる。人の DNS の会社に合わせて、名前の欄に入れる形(_sitekit-verify.www と www)も添える(入れるレコード・入れ方の例)。Cloudflare なら「DNS only」にすることも伝える。expires_at(72 時間後)までに入れるよう伝える
  4. 応答に next_steps があれば、このページより next_steps に従う
  5. 人が「入れた」と言ったら domains_status を呼ぶ(呼んだときにその場で確かめる)。続けて呼ぶときは 1〜5 分あける
  6. 状態ごとの次の一手(状態の意味)
    • requested — 少し待ってもう一度 domains_status
    • pending_dns — last_check_detail を見る。txt が mismatch / nxdomain なら TXT の名前・値の写し間違い、cf が ok でも cf_status が active でなければ CNAME が向いていない。dig の結果を人に見てもらう。入れて間もないなら DNS の反映を待つ
    • pending_ssl — 待つ(数分〜数十分)
    • active — 完了。https://www.example.jp/ を開いて確かめるよう伝える。TXT と CNAME を消さないよう伝える
    • failed — 72 時間を過ぎた。人に確かめてから domains_add をやり直し、新しい TXT の値 に入れ替えてもらう
  7. www の無い形を聞く(www の無い形)。DNS が CNAME flattening(Cloudflare など)に対応していれば、www が追加済みであることを確かめてから domains_add(hostname: "example.jp")。対応していなければ、レジストラの URL 転送で https://www.example.jp へ転送するよう案内する
  8. エラーは error のコードで エラー を引く。domains_remove・domains_primary は、何が起きるかを人に伝えて明示の同意を得てから confirm: true で呼ぶ

フォームが 403 になると言われたら

  1. 症状が 403・origin_not_allowed、またはコンソールの CORS のエラーかを確かめる(直し方)。429・400 なら別の原因(よくあるエラーと対処)
  2. フォームを置いたページの正確なドメイン(location.origin)を人に教えてもらう
  3. list_sites でそのサイトの allowed_origins を読み、完全に一致するものがあるかを見る(www の有無・http / https・ポート)
  4. 無ければ、人に管理画面の「設定」→「ドメイン・サイト名」で追加してもらう。API で足すときは、人に確かめてから、今の一覧に足した全体を PATCH(API で変える)。Free のサイトに独自ドメインは入れられない(upgrade_required)ので、有料プランが要ることを伝える
  5. Siteon のホスティングの独自ドメインなら、許可ドメインには足さずに domains_status で状態を確かめる(有効になれば自動で入る)

このページは Markdown でも読めます。AI エージェントには llms.txt(目次)か llms-full.txt(全文)を渡してください。