このサイト(www.ch1w4.com)は、自宅のProxmoxの上のVM「docker01」で動いている。
届くまでの経路
- Cloudflare(Tunnel)
- 自宅のルータ(NEC IX2215)
- DMZのリバースプロキシ(Nginx Proxy Manager)
- docker01のnginxコンテナ
Cloudflare Tunnelは、家の中から外へつなぎに行く方式なので、Web用のポートは開けていない。
サイトの作り
- リンクはパッチパネル風。1リンク=1つのLANポートで、ケーブルの色で種類を分けている。
- ブログはMarkdownで書いて、Pythonのスクリプト(
build.py)でHTMLに変換する。 - ビルドは使い捨てのPythonコンテナでやるので、サーバーにPythonを入れなくていい。
docker run --rm -v "$PWD/blogsite:/w" -w /w python:3.13-alpine \
sh -c "pip install -q markdown && python build.py"
rm -rf html/* && cp -r blogsite/dist/* html/
ハマったこと:スマホだけ古いまま
CSSを直したのに、iPhoneだけ前のデザインのまま。原因はキャッシュだった。Cloudflareの「ブラウザキャッシュTTL」が4時間になっていて、Safariが古いCSSを持ち続けていた。
対策として、ビルドのときにCSSとJSのURLに中身のハッシュを付けるようにした(site.css?v=0e35c2e1 のような形)。中身が変わればURLも変わるので、キャッシュに古いものが残っていても新しいファイルが読み込まれる。
いずれはForgejoにpushしたら自動でビルドして反映されるようにしたい。