機能 #584
完了静的ウェブサイトを楽にホストする
100%
説明
CI/CD とかをどう使うか (そもそも使うのか) まで含めて、複数ドメインでの静的サイトの公開を楽にする方法を考えたい。
nop_thread さんが3ヶ月前に更新
今のところ思い付くもので一番楽そうなのは、 rrsync (not typo) を使って rsync over SSH で直接ファイルを転送できるようにして、そこから nginx なり Caddy なりでファイルを公開し、 Cloudflare Tunnel に繋ぐという仕組み。
欠点は以下のとおり:
- サイトごとに SSH 鍵対が必要
- authorized_keys で鍵ごとに
command=
を指定する都合。 - もし複数サイトまとめてアクセス可能にするならそれでも良いが、代償に CI/CD でミスしたとき他サイトまでまとめて破壊するリスクが発生する。
- authorized_keys で鍵ごとに
- レプリカを用意するのは面倒そう
- rsync は1コマンドで destination はひとつなので、複数サーバへの転送はサーバの数だけ rsync を実行する必要があるし、サーバの数や名前が動的になると push 型では扱いづらい。
- Cloudflare Tunnel や reverse proxy ではバックエンドのサーバを複数用意して可用性を確保したり負荷分散できるが、これを活用しづらい。
nop_thread さんが3ヶ月前に更新 · 編集済み
動的なレプリカを使うつもりがあるなら、 push 型よりも pull 型にした方が良さそう。
それこそ中央リポジトリに rsync で同期して各ノードがそこから自前で pull してくるとかでも良いが、それならいっそ NAS とかを使うのも良いのかもしれない。
(ところで同期頻度はどうすればいいのだろう…… rsync 外で last modified 情報を監視しておくとかが無難か?)
nop_thread さんが3ヶ月前に更新
MinIO と rclone でリポジトリを用意して reverse proxy から直接 HTTP リクエストを転送するなどの荒技もあるにはあるが、オーバーキルなうえ普通の HTTP サーバより負荷の高そうな MinIO を後ろに置いても仕方がないので、これは却下。
データサイズが巨大だと意味もあるかもしれないが、今回はそのような想定は (今のところ) ない。
nop_thread さんが3ヶ月前に更新 · 編集済み
pages
ブランチのようなものを作って git-sync とかで同期するか rsync (rrsync) で同期するかの二択で悩んでいる。
何かあったときのための版管理を考えるとブランチを作る方が楽だが、メディアが大量にあるとかの状況だとリポジトリ外にファイルを置いて rsync できる方が嬉しいのではないかという懸念もある。
nop_thread さんが3ヶ月前に更新
- ステータス を 進行中 から 終了 に変更
- 進捗率 を 0 から 100 に変更
- 前回確認日 を 2024/12/23 から 2024/12/25 に変更
とりあえず rrsync で用意した。
当面は手動で rsync を叩いてデプロイすることにする。
これ以上のことは必要を感じてから別途検討する。