blog migration: from WordPress to Sveltia
Summary
- Blog環境を, WordPress (AWS Lightsail Bitnami) から Sveltia CMS (Github+Cloudflare) に移行。
- VisualStudio + Codespaces + Claude を用いて、約1日かかった
- 環境構築は半日でできたが、過去の様々な (Bloggerなど)から移行しきれていなかったMediaコンテンツを特定してR2にimportしたり、過去記事を HTML5 validation通るようにしたりする後始末系にプラス半日を要した
Stack
| 役割 | 技術 | エンドポイント |
|---|---|---|
| サイトジェネレータ | Astro 6 (TypeScript / SSG) | - |
| ホスティング | Cloudflare Pages | blog.simisin.net |
| CMS | Sveltia CMS | - |
| CMS OAuth プロキシ | Cloudflare Workers (vendored sveltia-cms-auth) | auth.simisin.net |
| メディア保管 | Cloudflare R2 (S3互換) | cdn.simisin.net |
| 分析 | Cloudflare Web Analytics RUM (Beacon auto-inject) | - |
| 全文検索 | Pagefind (静的インデックス, クライアント側) | /search/ |
| コンテンツ | Github src/content/posts/*.md | - |
Security posture
- SSL Labs: 全 endpoints A+ Grade (TLS 1.2/1.3、HSTS 1y preload、forward secrecy robust、既知脆弱性ゼロ)
- TLS: min 1.3、HSTS 1年 + includeSubDomains + preload (Chrome preload list 申請済 pending)
- CSP: pathで分岐 -
/*は strict、Sveltia 用に必要最小限緩和 - 追加ヘッダー: X-Content-Type-Options nosniff、X-Frame-Options DENY、COOP same-origin、CORP same-site、restrictive Permissions-Policy
- WAF: Cloudflare で dotfile プローブ path (
/.env,/.git等) を block - CI: link check 週次、HTML5 validate push毎、ZAP baseline 四半期
過去のblog環境の変遷:
- 1997-2004
- GeoCities, Hypernet, gooなど
- CGI, htm全盛期。Netscape Composer, Homepage builder
- 2004-2008
- 自宅FreeBSDサーバ
- html直書き。php, mysql全盛期。xoops, local wiki, など
- 当時は有料だったSSLの必須化で厳しくなってくる
- 2009-2010
- 2010-2022
- MovableType (自宅FreeBSDサーバ)
- 2022-2026
- WordPress (AWS Lightsail BItnami。Cloud全盛期) 【移行】
- 2026-
- Sveltia CMS (Cloudflare+Github。Serverless+AI全盛期)
運用実績…
