メインコンテンツへスキップ

ブログの裏側をたくさん変えた

·52 文字·1 分

3年ほど前にHugo+CF Pages+Gitea+TeamCityで始まったこのブログですが、セルフホストTeamcityは廃止され、Gitea Actionsに移行してかなりの期間運用してきました。当時としては比較的上手いことやったと思っていたのですが、次第にこの運用方法の辛さが見えてきました。Gitが使える環境じゃないと記事の投稿、修正は行えませんし、画像が増えるたびにGitリポジトリのサイズが増えていきます。また、Hugoのビルド時間も問題でした。Hugoは手元で事前に画像の処理を行えばCIで行う必要はありませんが、手元とCIのHugoのバージョンを一致させる必要があり、また、リポジトリに保存されている画像が爆発的に増加するという問題もあります。そんな状況が続き、2月より一切記事が増えることなく放置され続けていました。

GitベースのCMS
#

ブログをGit管理することのメリットは、まぁ特に思いつきませんがGitと連携して使えるCIのことを思うとGit管理したいでしょう。Micro CMSや、その他の一般的なヘッドレスCMSはDBに保存することを前提としており、ただ記事を書くフロントが欲しいだけの僕には少し大袈裟です。

そこで、ChatGPTに教えてもらいながらGitベースのCMSをいくつか調べました。要件としては、

  • Gitベースである
  • Git以外にストレージを要求しない
  • セルフホストであり、staticコンテンツとして配信できる、あるいはCloudflare Workersで動作する
  • 画像処理ができる
  • 画像をS3互換のオブジェクトストレージにアップロードできる

以上を満たすもので、活発に開発が続けられていそうなものだと、Sveltia CMSというものがありました。

Hugo Modulesとして使えるようなので、お〜いいねと思って使おうとしたのですが、ブログが色々古すぎたので、Codexで色々最新にしたりGit Submodule→Hugo Modulesの移行などをやってもらいました。

画像をCloudflare R2へ
#

画像によってGitリポジトリがクソデカになりすぎる問題を解決するため、とりあえずアップロードできそうな画像をCloudflare R2へ移行することにしました。一部の画像(feature.pngなど)はHugoが特殊な使い方をするため、とりあえずCodexにお願いして、アップロードとMarkdownのURL変更スクリプトを書いてもらいました。先ほどからCodexやらChatGPTが何度も登場しますが、今の生活には完全にAIが組み込まれており、来れなくなったらどうしたらいいのかわからなくなると思います。

画像は今のところこんな感じ。圧縮したりしたのでかなり小さい。

そして、GiteaからGitHubへ移行することにしました。画像によってリポジトリが圧迫されないのでセルフホストである必要もありませんし。

Cloudflare PagesからCloudflare Workersへ
#

Cloudflare PagesよりCloudflare Workersが推奨されるようになり、いい機会なので移行することにしました。ついでにCloudflare WorkersのWorkers Buildも使います。GiteaからGitHubから移行したことによって色々メリットが出てきました。

これもCodexにお願いして、wrangler.jsoncとpackage.jsonを書いてもらっておしまいです。

終わりに
#

作業はほとんどCodexにお願いして、僕はCloudflareのダッシュボードをポチポチしたり、GitHub Appsと格闘しておしまいでした。最終的にHugo + CF Workers + GitHub + Workers Build + Cloudflare R2という構成になりました。ん〜Cloudflare様様です。