2026-03-21

【Strapi on Raspberry Pi】Herokuから自宅へ移行する (1)

 このブログはCMSとしてHerokuにデプロイされたStrapiを利用している。そしてそのHerokuだが無料で使うことができたのはもはや過去の話。現在はお金を払わないとどんなに小さいアプリでも動かすことができない。自分も一番安いEco dynoプラン月5ドルとデータベースとしてHeroku Postgresアドオン月5ドル合計10ドルを毎月払いながらこのブログを運用している。誰も見てないのに。

 もちろんこれは一時的な措置のつもりでいずれは移行するつもりであったが、なんやかんや1年以上この構成で放置していた。このままずるずるHerokuに無駄金を払い続けるわけにはいかんと、重い腰を上げてStrapiを自宅サーバに移行することにする。

移行計画

 自宅サーバといってもデプロイ先はRaspberry Piだ。まず移行前後の構成図を載せよう。

AS-IS

 フロントエンドにはAstroを採用し、Cloudflareで動かしている。だから自宅にStrapiを移行した後も、インターネットからは疎通するようにしなくてはならない。(加えてCloudflare以外からは接続されないようにしたい。)

TO-BE

 移行後の構成図はこちら。Strapi on Raspberry PiはDockerで動かすことにする。StrapiコンテナとPostgresコンテナだ。そして、インターネットからの疎通確保についてだが、Cloudflare Tunnelを使うことにした。

 Cloudflare Tunnelはすごい。正直これがなかったら移行はやめてたかもしれない。自宅サーバ側で固定のグローバルIPアドレスを用意しなくても、インターネットから安全に疎通できる接続を提供してくれる。一体どういう仕組みなのかと思ったら、まず「内→外」つまり「自宅→Cloudflare」の通信を行い、トンネルを確立する。トンネルを確立した後、外部からの接続は新しい接続ではなく「すでに張られているトンネルの中を逆方向に流れるデータ」として扱われる。まあ詳しくは公式ドキュメントを読むなり、AIに聞くなりしたほうがいいだろう。
 逆にいうとトンネルを確立するためにはまずRaspberry Pi側からCloudflareへ通信を行う必要がある。そのためのコンポーネントがcloudflaredコンテナである。
 Strapiにはデフォルトのパスワードによる認証機能が備わっている(もちろん有効にしている)。せっかくなので追加でCloudflare Accessによる認証もつけることにした。この認証は管理者である自分がAdminダッシュボードにアクセスする際にかかるものである。CloudflareからStrapiにアクセスする際は今まで通りRead OnlyのAPI Tokenで認証される。
 そして、これらのCloudflare TunnelとCloudflare Access───

『HUGっと!プリキュア』©ABC-A・東映アニメーション

なんと無料!!!!!!



 というわけで、移行を進めて行こうと思う。まずはRaspberry Piを買うところから───