個人Blogをどう書いて、管理、運用するのか、というのを個人的な趣味で数回に分けて記事を書いてみたいと思います。 今このブログはNextJSのSSGを利用して、静的HTMLのビルド時にだけローカルで記事を取得するAPIを起動し、作成されたHTMLをAmazon S3にアップロードして公開、常時稼働のサーバ等は無くしてコストを抑えています。
個人ブログで記事(データ)をどう持つか
有名Blogサービスではなく、個人でブログを作成する場合、記事をどう管理するのかという問題があります。 古典的にHTMLで記事を書いていく(昔々やっていました)場合は良いでしょう。完成形をそのまま保管すると良いと思います。
このBlogの記事は少し前までは、HeadlessCMSの Strapi というものを利用して管理していました。 HeadlessCMSとは、WordPressのようにサイトの表示内容は管理せず、記事の作成・管理する機能と、コンテンツ取得APIだけを提供する形式をとる、コンテンツ管理システムです。 中でもStrapiは珍しく、ローカルで動かすことができます。DBとStrapiを動かすdockerなどを用意すると、ローカルで記事を作成、管理することができます。
Strapi
HeadlessCMSでは、以下のようなリッチな記事管理機能が提供されます。 画像はAWS S3にアップロードする設定もあったりと至れり尽くせり。 Authorの管理や指定、カテゴリーなどのカスタムタグによる管理も出来、それらをWebAPIで返すことができます。
これをローカルで動かすことでローカルのMySQLに記事データを持つことができ、ダンプなどを取っておけばバックアップにもなるでしょう。 SSGで静的なHTMLを生成してアップロードするだけなので、記事を更新するタイミングだけ起動していれば良いため、常時稼働の料金などもかかりません。
記事を作成している様子
docker-compose.yml(イメージ)
strapiをやめた理由と今後
現在は個人でBlog記事を管理する簡易システムを作って動き始めたので、そちらで管理しています。 Strapiをやめて、個人システムに移行した理由は、HeadlessCMSくらいの簡易的なものですら、個人的には面倒でtoo muchに感じたためでした。 複数のAuthorがいることが想定されたログインの仕組みなど、個人的には不要なのです。 高いカスタマイズ性のために、WebAPIの設定などについても面倒で気になりました。
今後記事にしていくつもりですが、今回作成したBlog管理システムは、大分用途を絞った簡易的なものとしています。 記事はmarkdownで作成し、それらを単純なディレクトリ構成によって管理するものです。 世の中には既に同様なものがある気がするけど、半分趣味で作ることにしました。
次回へ続く・・。