← Garden

用 Astro + VPS 建立自己的數碼花園

Lifesbyte 目前使用的框架、內容管理方式與自動發佈流程

#Astro#GitHub Actions#VPS#數碼花園

Lifesbyte 最初是一個傳統博客:文章按時間排列,寫好 Markdown,再由靜態網站產生器建立頁面。這套方式很簡單,但我漸漸希望它不只是文章列表,而是一個可以同時容納短記錄、長文、項目與近況的個人空間。

現在的 Lifesbyte 已經改用 Astro,並部署在自己的 VPS 上。網站仍然保持靜態、快速和容易維護,但內容結構和發佈流程都更貼近我真正的使用方式。

為甚麼改用 Astro?

我對個人網站的要求其實不複雜:

  1. 以 Markdown 寫作,不被某個平台綁定
  2. 頁面載入要快,不需要在瀏覽器執行大量 JavaScript
  3. 結構可以逐步擴充,除了文章,也能加入 Notes、Projects 和 Now
  4. 設計完全由自己控制,不受現成主題限制

Astro 適合這類以內容為主的網站。它在建置時產生靜態 HTML,瀏覽者打開頁面時不需要等待一套完整前端應用啟動;需要互動的部分,例如 Garden 的內容篩選,才加入少量 JavaScript。

Lifesbyte 的技術組合

部分現在的選擇用途
網站框架Astro產生靜態頁面與內容路由
內容格式Markdown保存 Notes、Essays、Projects 和 Now
內容管理Sveltia CMS在瀏覽器中編輯及發佈內容
程式碼管理GitHub保存網站原始碼與文章版本
自動化GitHub Actions測試、建置及部署網站
伺服器Ubuntu VPS保存並提供正式網站
Web ServerCaddy處理 HTTPS 與靜態檔案
網絡入口CloudflareDNS、代理與基本防護

這套組合沒有資料庫,也沒有長期運行的 Node.js 網站服務。Astro 完成建置後,正式網站只是一組 HTML、CSS、JavaScript 和圖片,因此資源需求很低,也適合目前這台小型 VPS。

內容如何組織?

網站目前有四種主要內容:

  • Notes:短想法、圖片和現場記錄
  • Essays:較完整的長篇文章
  • Projects:正在建立或已經完成的項目
  • Now:此刻正在關注、學習和經歷的事情

每篇內容都可以標示為香港繁體、廣東話或英文。網站預設使用香港繁體,日後可以自然加入英文文章和廣東話記錄,而不需要另外建立一個網站。

我現在如何寫作?

有兩種方式。

第一種是直接建立 Markdown 檔案。這種方式適合長文,可以在本機編輯、預覽,再提交到 GitHub。

第二種是使用網站內的 Studio。它提供簡單的編輯介面,可以新增文章、選擇語言、加入標籤和上載圖片,最後直接提交到 GitHub。即使不打開程式碼編輯器,也能完成一次發佈。

不論使用哪種方式,內容最終仍然是普通 Markdown 檔案。日後即使更換框架,也可以完整帶走。

自動發佈流程

當內容推送到 GitHub 的 main 分支後,GitHub Actions 會自動執行以下步驟:

  1. 安裝固定版本的依賴
  2. 執行內容測試與 Astro 類型檢查
  3. 建立所有靜態頁面、RSS 和 Sitemap
  4. 把新版本上載到 VPS 的獨立 release 目錄
  5. 通過網站存活檢查後,才切換到新版本
  6. 如果檢查失敗,保留上一個可用版本

部署使用版本目錄而不是直接覆蓋正式網站,因此切換時間很短,也避免上載到一半時讓訪客看到不完整頁面。

為甚麼使用自己的 VPS?

GitHub Pages 或其他靜態託管服務已經足以建立博客,但 VPS 讓我可以把不同個人服務放在同一套基礎設施上,並自行控制網域、HTTPS、日誌和發佈方式。

代價是需要處理系統更新、備份與安全設定。所以我仍然把網站設計成純靜態:即使伺服器上的其他服務需要維護,博客本身也保持簡單,沒有資料庫遷移或應用程式狀態需要照顧。

小結

這次改版的重點不是由 Hugo 換成 Astro,而是重新想清楚這個網站要保存甚麼。

博客是按時間發佈文章;數碼花園則容許內容以不同速度生長。Astro、Markdown、GitHub 和 VPS 只是支撐這個空間的工具。真正值得長期維護的,仍然是自己的文字、照片、項目和生活記錄。

Discussion

留言

使用 GitHub 帳戶參與討論。