NetlifyからCloudflareへ移行
イントロ
今までNetlifyへデプロイして運用していたこのブログを、Cloudflareへ移行しました。
きっかけ
3年ぶりのブログ更新ですが、Netlifyへどうやってデプロイしているか?といった手順を完全に忘れていました。
実際は、GitHubへpushすればそれをトリガーにNetlify側でビルド→デプロイしてくれていたのですが、 ブログの更新が滞っている間に Cloudflare がすっかり有名になっていたため、これを機に移行してみました。
移行手順
移行にあたって、Cloudflare側ではNetlifyからのmigration手順ドキュメントを公開してくれています。 ただ、ここではどちらかというとWebアプリケーションにフォーカスした移行手順となっていました。
- Migrating from Netlify to Pages
このブログはRust製SSGのZolaで構築しており、動的なコンテンツは存在せず、記事がそのままCloudflareで配信できるようになれば十分です。
幸い、Cloudflareは日本語化もしっかりされていて、実際に手を動かす過程で詰まることも無かったので、ここに手順を記録しておきます。同じようにCloudflareの利用を考えている方の参考になれば幸いですが、2024年2月時点の情報である点にはご注意ください。
1. Cloudflareでサインアップ
言わずもがなですが、Cloudflareでアカウントを作成します。GoogleやGitHubアカウントあたりでの連携を期待していたものの、2024年2月時点でOpenID Connectの対象はApple IDのみでした。
2. サイトの追加
サインアップが完了したら、最初にすべきは サイトを追加 です。
事前に対象ドメインのNSをCloudflareへ移行しておく手順でも良いと思いますが、先にCloudflareで受け入れ状態を整えてからNS設定を変更することにします。
追加するドメインには、このブログをホストしているドメインのpanther-king.com
を指定しました。続く料金プランの選択ですが、アクセスがあるサイトでもないのでFree
プランで十分です。
この後、Cloudflareが入力したドメインの既存DNSレコードを確認し、サブドメインなどのレコードが見つかれば設定を促してくれます。この辺りは理解度を深めるためにも自分でやりたいので、「続行」でスキップします。最後に出てくる設定まわりは、すべて有効にして完了です。
3. GitHub連携でコンテンツをデプロイ
2.が完了した状態では追加したサイトの設定画面に繊維するので、グローバルヘッダーのアイコンなどからダッシュボードへ戻ります。
サイドバーにあるWorkers & Pages
からアプリケーションの作成
→Pages
タブへ進むと、2つの作成方法が提示されます。
- Gitリポジトリと連携して作成
- ファイルを直接アップロードして作成
更新の都度ビルドしてアップロード、は手間がかかりますから、1.を選択します。詳細は割愛しますが、このブログのリモートリポジトリをホストしているGitHubと連携させました。 これで指定したブランチからCloudflareへデプロイ可能となりますが、1点注意が必要です。
Zolaの公式ページにも言及がありますが、Cloudflare Pagesデフォルトの設定ではzola build
がzola: not found
でエラーになってしまいます。
https://www.getzola.org/documentation/deployment/cloudflare-pages/
対策方法も上記に記載されていますが、試した限りでは以下の設定で問題なくビルド→デプロイできるようになりました。
- 「ビルドシステムのバージョン」を
1
に変更- デフォルトではバージョン
2
が設定されているため、バージョンダウンしました
- デフォルトではバージョン
- 環境変数に
ZOLA_VERSION
を追加- ローカルでビルドしていたバージョンにあわせて
0.18.0
を設定しました
- ローカルでビルドしていたバージョンにあわせて
4. DNSサーバーの設定を変更
サイト追加時にスキップしていたDNSまわりの変更を行います。 ドメイン取得はムームードメインを利用していますので、今までNetlifyのDNSサーバーへ向けていた設定をCloudflareのDNSサーバへ向け直しました。
Cloudflare側からも、現在のDNS設定を確認するボタンをクリックすると、数分も待たずにCloudflareで構築したサイトへ名前解決されるようになりました。
まとめ
ブログのホスト先を、NetlifyからCloudflareへ移行しました。 こういったサービスはUIも随時アップデートされていくため、キャプチャなどはなく自身の備忘録レベルの記録です。
当初はTerraformの学習も兼ねてAWSへ移行して、Cloudfront/S3/CodeDeployあたりの組み合わせも考えていたのですが、 微々たるものとはいえ発生する課金に気を遣いたくなくて、無料利用枠があるCloudflareへ引っ越すことに決めました。
Netlify/Cloudflareともに、無料かつ便利な機能でコンテンツが簡単に公開できるプラットフォームはとても有り難いですね。 移行の過程で、ドメイン管理もCloudflareへ移行してしまった方が安価かつ便利な事に気づいたため、またどこかのタイミングで移行してしまおうと思います。