はじめに
本記事では、「Render」にデプロイしたアプリを独自ドメインで公開する際の注意点と解決策についてまとめます。今回は、「お名前.com」でのドメイン取得ができなかったため、以前契約していた「Xserver」を利用しました。
この記事が皆さんのお役に立てば嬉しいです!
前提/条件
- rails7系
- ruby3.2.3
- PostgreSQLを使用
- Renderでデプロイ済み
- Xserverでドメイン取得される方
注意点
XserverでDNSレコード画面で「DNSレコードの確認・設定を行うことができません」表示
DNSレコードの表示ができるようにネームサーバーで設定します。
解決方法
1.「ネームサーバー設定」をクリックします。
2.ネームサーバーの設定ドメイン適用先サービスを「Xserver Domain」に設定します。
これで、DNSレコードの設定ができるようになります。
デプロイ後エラー
Renderにてダッシュボード→Settings
→Custom Domains
の設定とconfig/environments/production.rb
の設定完了後にデプロイしたところ、以下のエラーが発生しました。
また、Renderのログを確認したところ下記のようなエラーが発生していることを確認しました。
[ActionDispatch::HostAuthorization::DefaultResponseApp] Blocked hosts: アプリURL
また、Renderでは問題なく反映されていました。
このときの設定は以下の通りです。
config.hosts << 'www.example.net'
解決策
1.記述を変更
config.hosts << 'example.net'
RenderのデフォルトのURLも有効にしておきたい場合は、以下のように設定します。
config.hosts << 'example.net'
config.hosts << 'example.onrender.com'
2.、XserverのデフォルトのNSを削除
1で解決しなかった場合は、XserverのデフォルトのNSを削除することも検討してください。
詳細は、Renderの公式ドキュメントを参照してください。
ちなみに私は公式の案内に従って削除しました。config/environments/production.rb
の記述を変える前に消してしまいましたが、もし記述を変えるだけで解消できるのであれば、NSの削除は不要かもしれません。
確認すると良さそうな実装
パスワードリセット機能
メール内のリンクURLを確認します。
config.action_mailer.default_url_options = { host: '取得ドメイン名', protocol: 'https' }
Google認証
GoogleのOAuth設定でリダイレクトURIが新しいドメインに更新されているか確認します。環境変数または設定ファイルを更新してください。
私の場合、環境変数で設定していたため、以下のファイルを書き直しました。
sorcery:
google_callback_url: 'https://取得ドメイン名/oauth/callback?provider=google'
default_url_options:
protcol: 'https'
host: '取得ドメイン名'
そしてGoogle Cloud ConsoleのURIも追加します。
おわりに
この記事が、RenderとXserverでドメイン取得と公開に苦戦されている方のお役に立てれば幸いです。もし、この記事の内容に不備や改善点などがありましたら、ご指摘いただけると嬉しいです。
参考
「Render」と「お名前.com」で公開するのに参考
「Render」と「Xserver」で公開するのに参考
Render公式サイトより独自ドメイン実装で参考