まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:cloudflare

最近のブログでは独自ドメインを扱うネタが多くなっています(これとか、これとか)。この背景としては旧 Google Apps(現 Google Workspace)の無料版が廃止になって、猶予期間の終了が迫り、これまで取得したドメインの運用を Google Apps に任せていたことに起因して、無料または安価な代替運用先を探していることにありました。ただ(自分的に優先順位の高かった)独自ドメインのメールサーバーについてはある程度対応できたと思っています。

上述のように独自ドメインのメール環境についてはある程度解決しました。次は独自ドメインウェブサイトの問題です。独自ドメインのウェブサイトやウェブサービスを Google Apps を使わずに用意する方法です。まあ、ホスト名だけであれば DNS の CNAME 設定だけでなんとかなるのですが、問題になるのは SSL を使いたいケース(つまり https で始まる URL で独自ドメインのウェブサイトを公開したいケース)です。

これも手間を惜しまないのであれば、Let's Encrypt などで独自ドメインの証明書を無料で取得・更新できます。その証明書を使ってサービスを公開すれば https 対応はできます。ただ、これはこれで(アプリケーション側で証明書を意識するのも)面倒だし、もし証明書の更新を忘れてしまうとサービスが見えなくなってしまったり、証明書を更新した際の再起動なども行う必要があるので、手順としても(コマンドラインで作業するなど)面倒だったりします。独自ドメインのウェブサイトを運用する上でここを(できれば無料、または安価で)どうにかできないだろうか、という課題があります。

そして本ブログエントリはこの部分を
 ・アプリケーションは無料の Heroku で公開して、
 ・無料の Cloudflare で SSL 対応した独自ドメイン名でアクセスできるようにする
という構成を実現するための手順を紹介します。


【アプリケーションを Heroku で公開する】
対象のウェブアプリケーションを Heroku で公開します。アカウントを所有していない場合はサインアップします。

ここでは特別な設定はほぼ不要ですが、1点だけ。Heroku で独自ドメインを使うには、有料版を利用するか、クレジットカードを登録する形で無料枠を使う必要がある点に注意してください。Heroku 自体はクレジットカードを登録せずに無料範囲内で利用することができ、その範囲内でウェブアプリケーションを公開することもできますが、この後独自ドメインを使う場合は無料で使う場合であってもクレジットカードを登録する必要がある、という意味です。

Heroku は GitHub と連携してアプリケーションをデプロイしますが、ここを CLI で手動で行ってもいいし、Git コミットをハンドリングして自動デプロイにしても構いません。いずれかの方法でアプリケーションを Heroku にデプロイしてください。なお後者の方法については過去にこのブログでも紹介したことがあるので、よかったら参考にしてください:
Heroku のパイプラインで GitHub コミット時に自動デプロイする


以下では dotnsf-www.herokuapp.com というホスト名で Heroku 上でアプリケーションが稼働しているものとして説明を続けます。Heroku 上で独自ドメイン向けの設定を行う必要もありますが、 Cloudflare 側での設定をまず先に済ませてから Heroku 上での設定を行います。


【Cloudflare で独自ドメインの設定をする】
次に Cloudflare 側の設定を行います。アカウントを取得していない場合は Cloudflare の無料プランでサインアップし、所有している独自ドメインを登録します。なお以下では独自ドメイン(pi314.jp というドメインを使う例を紹介します)は取得済みで、そのドメインの DNS 管理を Cloudflare にさせる前提で紹介します。

独自ドメインを登録した後、まずは "SSL" のメニューを選択して、「暗号化モード」が「フル」に設定されていることを確認します。もし異なる設定になっている場合は「フル」に変更します。この設定にすることで利用者のブラウザから、Cloudflare を経由して(今回の場合は Heroku 上の)アプリケーション・サーバーまでの全ての経路の通信を暗号化することができるようになります。また独自ドメインの SSL 証明書の更新も自動化されます:
2022040801


そして "DNS" メニューを選択して DNS の設定を行います。今回は上述の dotnsf-www.herokuapp.com というサーバーを www.pi314.jp という名前で公開できるよう設定します。「レコードを追加」と書かれたボタンをクリックします:
2022040802


追加するレコードは以下のようにして「保存」ボタンをクリックします:
 タイプ: CNAME
 名前: www (www.pi314.jp という名前で公開する、という設定です)
 ターゲット: dotnsf-www.herokuapp.com
 プロキシ: ON(プロキシ済み、と表示されます)
2022040803


入力した内容が DNS 画面に表示されるようになります。これで https://www.pi314.jp/ という URL にアクセスがあると、https://dotnsf-www.herokuapp.com/ に(利用者から見えない所で)転送されてページが表示できるようになります。また Cloudflare を使っているので、セキュリティプロキシも有効になっています:
2022040804



【heroku 側のアプリケーションを再設定する】
これでアプリケーションの独自ドメイン利用ができる・・・わけではありません。最後に SSL を使えるように実際には dotnsf-www.herokuapp.com 上で動いているアプリケーションが www.pi314.jp というホスト名でアクセスされる可能性があることを予め認識させておく必要があります。そのためには Heroku の CLI を使って(CLI でログイン後に)以下のコマンドを実行※します:
$ heroku domains:add www.pi314.jp --app dotnsf-www

※このコマンドを実行するには heroku を有料サービスで使うか、または無料利用であってもクレジットカードを登録しておく必要があります。


このコマンドを実行後、しばらく(数分)待ってからウェブブラウザで https://www.pi314.jp/ にアクセスすると、https://dotnsf-www.herokuapp.com/ の画面が https://www.pi314.jp/ というホスト名で表示できることが確認できます。


以上、Heroku も Cloudflare も有償サービスを使わないのであれば、この方法でも無料の範囲内で独自ドメインでウェブアプリケーションを公開することができそうです。



Google Apps(無料版)を使って所有するドメインのメール環境を続けてきましたが、無料期間が終了することになり、メールアカウントを残すにはメールサーバー環境を引っ越す必要が生じました。

先日、このブログで Zoho メールで独自ドメインメールを無料運用するための手順を紹介しました。これは1つの解決策ではありますが、5ユーザーまでとか、添付ファイルは最大25MBとか、これまでの環境からの移行としては少し制約の大きなものでもありました(無料、という非常に大きな魅力はありますけど)。
http://dotnsf.blog.jp/archives/1080247716.html

2022030501



ただこの Zoho メールを使う方法には隠れた制約がありました。手順内でも紹介しているのですが、独自ドメインメール環境を申請するためには、その独自ドメインではないメールアドレスを使ってアカウントを作成する必要があり、そのメールアドレスは他のドメインのメール環境には使えないのでした。つまりドメインを複数所有していて、その複数のドメインを全て Zoho メール(無料版)に移行するには同じ数のメールアドレスが必要でした。これは無料メールアカウントを複数発行すればできなくはないのですが、管理対象のメールアドレスが増えるだけでなく、どのメールアドレスをどのドメインの申請に使ったかを把握しておく必要も生じてしまい、色々面倒な運用になってしまいそうでした。


この状況を避けるべく、(無料ではないが)格安で独自ドメインのメール環境を用意してくれる環境を用意することにしました。その例として今回申し込んだのはさくらインターネット様の「さくらのメールボックス」サービスです:
https://rs.sakura.ad.jp/mail/

2022032500



サービス内容はこんな感じです:
・独自ドメインを20個まで利用可※
・メールアドレス数は無制限※
・容量は(全ユーザーの合計で)20GB
・1年間で 1048 円(2週間の無料お試し可)


※異なるドメインの同じ名前のユーザー(例えば admin@domain1.com と admin@domain2.net)のメールアドレスを別々に作ることはできず、いずれのアドレス宛のメールも同じメールボックスに届きます。


データ容量自体は全ユーザーの合計で 20GB と、Zoho メール(1ユーザーあたり 5GB で、5ユーザーまで)と比べても小さいのですが、独自ドメインを 20 個まで登録できることに加え、メールアドレスを無制限に持てるというアドバンテージがあります(ユーザーあたりのメール容量があまり大きくないケースであればこちらのほうが向いている可能性があります)。また価格も個人利用と考えても決して高くはなく、このくらいならお小遣いでなんとか・・・ というレベルだと思っています。

今回、これまで Google Apps でメール運用してきた所有ドメインの1つ(welove.bz)をさくらのメールボックス環境に移行してみたので、その手順を記録として残しました。他のドメイン※も同様に移行するつもりですが、その内容を以下に公開します。なお以下の作業は「 Google Apps からの移行」に特化した内容はほぼなくて(現在どこで運用してるとかしてないとかに関係なくて)、単に「さくらのメールボックスで独自ドメインのメールを運用するための設定」の紹介となります。


※ドメイン管理を移管する場合、「さくらのインターネット」へのドメイン移管ができるのは .com, .net, .org, .info, .biz, .tokyo, .mobi のみのようです。今回はドメインの移管をせずに DNS の設定だけで実施する方法を紹介します:
https://help.sakura.ad.jp/206205811/#trouble01



【「さくらのメールボックス」と契約】
契約手続きそのものを詳しく紹介するつもりはありませんが、何はともあれ「さくらのメールボックス」と契約する必要があります。上述のページから「2週間無料ではじめる」と書かれたリンクをクリックして契約内容を入力していきます。クレジットカードが必要ですが、特に難しいことはないと思います:
2022032501


契約が完了すると、さくらインターネットの会員メニューにログインできるようになり、「契約中のサービス一覧」に「さくらのメールボックス」が表示されるようになります。この時点ではまだ独自ドメインの設定はできていませんが、初期ドメインと呼ばれる *****.sakura.ne.jp という値が付与されます。この値は後で DNS 設定時に使うので覚えておきましょう。

この「コントロールパネルを開く」と書かれたボタンをクリックして独自ドメインを含むメールボックスの設定画面に移動します:
2022032502


サーバコントロールパネルというサーバーの設定変更画面にログインします。契約時に送付されたドメイン名とパスワードを入力して「ログイン」ボタンをクリックします:
2022032503


ログインに成功すると以下のような「サーバコントロールパネル ホーム」画面が表示されます。ここから独自ドメインを利用するための設定を行っていきます:
2022032504


以下では自分が所有していて、Google Apps で運用していた "welove.bz" というドメインのメール環境を移行する様子を紹介します。なお、このドメイン自体は GoDaddy.com で取得したものです。他のドメインプロバイダーを使っている場合は一部異なる設定内容が含まれると思いますのでご了承ください。


【「さくらのメールボックス」で独自ドメイン利用の設定】
改めて「さくらのメールボックス」のコントロールパネルを使って独自ドメインのメール環境を構築します。今回は自分が取得している独自ドメイン(welove.bz)のメールサーバー環境を構築する様子を紹介します。

画面左のメニューから「ドメイン/SSL」 - 「ドメイン/SSL」 を選択します:
2022032501


ドメイン/SSL の設定画面になり、現在までに登録されているメールのドメイン(デフォルトの1つ)が表示されています。ここで「ドメイン新規追加」をクリックします:
2022032502


「ドメインの新規追加」画面に切り替わります。追加するドメインの指定方法によっていくつかの選択肢が用意されていますが、(これから取得して追加するのではなく)すでに取得済みのドメインを追加する場合は画面下にスクロールします:
2022032503


ドメインの管理そのものを移管する場合は「他社で取得したドメインを移管して使う」から先に進むことになりますが、今回はドメイン管理をそのままにして、メールサーバーの設定のみを行います※。というわけで一番下までスクロールして「他社で取得したドメインを移管せずに使う」の「追加」をクリックします:
2022032901


※上の画面にも書かれていますが、このオプションはさくらのブログでの動作を保証していないようです。


次の画面ではメールサーバーで移管するドメイン(下図では "welove.bz")を指定して「追加」します。ネームサーバーについて云々・・・と書かれていますが、今回ネームサーバーを現行のものから変更するつもりはないので、ここは無視します:
2022032902


するとドメイン/SSL の画面に戻り、指定したドメインが追加されていることを確認します:
2022032903


さくらのメールボックス側で必要な作業は以上です。続けてドメインを管理しているプロバイダー側での DNS 設定画面で変更作業を行います。



【「さくらのメールボックス」向けの DNS 設定変更】
対象ドメインの DNS 変更を行います。自分の場合、対象ドメイン(welove.bz)を GoDaddy.com で取得&管理しているので、以下は GoDaddy.com での作業イメージとなります。が、他のプロバイダーでも同様の作業を行えばよいだけなので、以下のスクリーンショットを参考に同様の作業を行ってください。

具体的には対象ドメインの MX レコードを編集します。またメールサーバーを mail.welove.bz のような名称にしたい場合は合わせて CNAME レコードも編集します。 というわけで、対象ドメインの DNS 管理画面に移動します:
2022032901


まずは MX レコードを以下のように変更(または追加)します。これ以外の MX レコードが存在していたら併せて削除します:
ホスト名: (対象ドメイン名)
TYPE: MX
VALUE: xxxxx.sakura.ne.jp(初期ドメイン名)
状態: 有効
優先度: 10 (など、適当な値)
2022032901


また単にさくらのメールボックス機能を使うだけでなく、メールサーバーに mail.welove.bz という名前をつけて管理したい場合は以下の CNAME レコードも追加します。なお、これをやっておくとウェブメール以外の(POP3/IMAP/SMTP などの)メーラーを使う際のメールサーバーを "mail.welove.bz" などと指定できるようになります:
ホスト名: mail  (メールサーバーを mail.対象ドメイン名 にしたい場合)
TYPE: CNAME
VALUE: xxxxx.sakura.ne.jp(初期ドメイン名)
状態: 有効
2022032902


これで DNS の設定も終わりです。スクリーンショットは GoDaddy.com のものでしたが、他のプロバイダーを使っている場合も同様の作業をすればいいはず。

あとはしばらく(TTL次第ですが、おそらく数分)待てば指定したドメインのメール環境が整います。すでにさくらのメールボックスにユーザーの登録が済んでいればすぐに使えるようになりますが、まだの場合はユーザーを登録します。


【「さくらのメールボックス」へのユーザー追加】
さくらインターネットのサーバーコントロールパネルに戻ります。今回はメールのユーザーを指定するので「メール」メニューを選択してメールアドレスの一覧を表示し、「新規追加」ボタンをクリックします:
2022032901


新規に登録するユーザーの情報を入力します「ユーザ名」と書かれた部分がメールアドレスの @ の左にくる部分となります。また「パスワード」も必須情報です:
2022032902


全ての情報が入力できたら画面下の「作成する」ボタンをクリックします:
2022032903


メールアドレス一覧画面に戻ります。作成したユーザーが追加されていることを確認します:
2022032904


【「さくらのメールボックス」のウェブメールを使う】
ドメイン側の設定変更が済んでいればウェブメールを使うことができるようになります。ウェブメールを使うには以下の URL にアクセスします:
https://secure.sakura.ad.jp/rscontrol/?webmail=1


認証を聞かれるのでメールアドレスと(作成時に指定した)パスワードを入力してログインします:
2022032901


ウェブのメール画面が開きます。この画面を使って受信メールを確認したり、送信・返信が可能です:
2022032902


なお、さくらのメールボックスでウェブメールを使う場合はこちらのドキュメントも参照ください:
https://rs.sakura.ad.jp/function/webmail/

またウェブメール以外の各種メーラーやその設定についてはこちらを参照ください:
https://help.sakura.ad.jp/mail/



同様にして(プラン容量内であれば)更にドメインを追加したり、ユーザーを追加して使うこともできます。ドメインの移管をしない場合は、現行のドメインプロバイダーによって DNS の設定方法が異なるため、画面とかは用意できないのですが、ちょっとした手間をかけるだけで実現できるはずです。また Cloudflare などのドメインレベルでのファイアウォールを使っている場合だとメールのためにドメインの移管をするわけにもいかない(この影響がデカい)ので、この方法のほうがより柔軟性高く実現できると思っています。



このページのトップヘ