【Render × Xserver】独自ドメインでのデプロイ時の注意点と解決策

# はじめに
本記事では、「**Render**」にデプロイしたアプリを独自ドメインで公開する際の注意点と解決策についてまとめます。今回は、「**お名前.com**」での**ドメイン取得**ができなかったため、以前契約していた「**Xserver**」を利用しました。

この記事が皆さんのお役に立てば嬉しいです！

https://www.xserver.ne.jp/

https://www.onamae.com/

# 前提/条件
- rails7系
- ruby3.2.3
- PostgreSQLを使用
- Renderでデプロイ済み
- Xserverでドメイン取得される方

# 注意点

### XserverでDNSレコード画面で「DNSレコードの確認・設定を行うことができません」表示

![Xserver-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/024ae093-eeb1-2cd6-f3d8-4dcfb18d3a75.png)

DNSレコードの表示ができるようにネームサーバーで設定します。

### 解決方法

#### 1.「ネームサーバー設定」をクリックします。

![nameserver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/b449bc03-382a-0901-3888-273e871e2333.png)


#### 2.ネームサーバーの設定ドメイン適用先サービスを「**Xserver Domain**」に設定します。

![Xserver-domain.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/fe25e478-f5d7-5a6b-dc9d-4fa5c12e924f.png)

これで、**DNSレコード**の設定ができるようになります。

### デプロイ後エラー

Renderにてダッシュボード→```Settings```→```Custom Domains```の設定と```config/environments/production.rb```の設定完了後にデプロイしたところ、以下のエラーが発生しました。

![スクリーンショット 2024-07-10 19.36.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/05826514-af92-0175-8a7d-9bbd4111dbc7.png)

また、Renderのログを確認したところ下記のようなエラーが発生していることを確認しました。

```:Renderログ
[ActionDispatch::HostAuthorization::DefaultResponseApp] Blocked hosts: アプリURL
```

また、Renderでは問題なく反映されていました。

![スクリーンショット 2024-07-10 19.58.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/539102f5-2a56-42d0-149a-233e2dffaa58.png)

このときの設定は以下の通りです。

```:config/environments/production.rb
config.hosts << 'www.example.net'
```

### 解決策

#### 1.記述を変更

```:config/environments/production.rb
config.hosts << 'example.net'
```

RenderのデフォルトのURLも有効にしておきたい場合は、以下のように設定します。

```:config/environments/production.rb
config.hosts << 'example.net'
config.hosts << 'example.onrender.com'
```

#### 2.、XserverのデフォルトのNSを削除

1で解決しなかった場合は、Xserverのデフォルトの**NS**を削除することも検討してください。

![スクリーンショット 2024-07-10 20.03.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/e8e9cd57-ed39-59db-7326-df653c302576.png)

詳細は、Renderの公式ドキュメントを参照してください。

https://docs.render.com/custom-domains#configuring-dns-to-point-to-render

ちなみに私は公式の案内に従って削除しました。```config/environments/production.rb```の記述を変える前に消してしまいましたが、もし記述を変えるだけで解消できるのであれば、**NSの削除は不要**かもしれません。

### 確認すると良さそうな実装

#### パスワードリセット機能

メール内の**リンクURL**を確認します。

```:config>environments>production.rb
config.action_mailer.default_url_options = { host: '取得ドメイン名', protocol: 'https' }
```

#### Google認証

GoogleのOAuth設定で**リダイレクトURI**が新しいドメインに更新されているか確認します。環境変数または設定ファイルを更新してください。

私の場合、環境変数で設定していたため、以下のファイルを書き直しました。

```:config>settings>production.yml
sorcery:
  google_callback_url: 'https://取得ドメイン名/oauth/callback?provider=google'

default_url_options:
  protcol: 'https'
  host: '取得ドメイン名'
```

そしてGoogle Cloud ConsoleのURIも追加します。

![スクリーンショット 2024-07-11 7.08.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3772961/874d9ee0-97be-1dae-e038-4144256b62a9.png)


# おわりに
この記事が、RenderとXserverでドメイン取得と公開に苦戦されている方のお役に立てれば幸いです。もし、この記事の内容に不備や改善点などがありましたら、ご指摘いただけると嬉しいです。

# 参考
「**Render**」と「**お名前.com**」で公開するのに参考

https://qiita.com/kumaryoya/items/fa0debae1da92eb125a2

「**Render**」と「**Xserver**」で公開するのに参考

https://qiita.com/iijima-naoya-45b/items/97ddee422241384599fe

**Render**公式サイトより独自ドメイン実装で参考

https://docs.render.com/custom-domains