用 Ghost 架設自己的部落格和電子報:網域、電子郵件、會員與備份
用 Zenavo 的範本部署 Ghost,綁定 HTTPS 網域,建立管理員帳號,設定寄信讓會員註冊和電子報正常運作,再把 MySQL 和內容資料夾都備份起來。
本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。
Ghost 是一個開源的出版平台:文章、付費或免費會員、電子報都在同一個後台管理,編輯器乾淨,佈景主題對搜尋引擎友善。如果你想要一個屬於自己的部落格,又不想照顧 WordPress 的外掛,Ghost 是很適合的選擇。
本文用 Zenavo 的 Ghost 範本,把 Ghost 和 MySQL 部署到你租用或自有的伺服器上,然後設定網域、電子郵件和備份。
開始之前
- 一台已連接到 Zenavo 的 Linux 伺服器。範本標示約需 1 GB 記憶體,也要替 MySQL 留點空間。
- 一個部落格用的網域,例如
blog.example.com。 - 一個電子郵件服務商的 SMTP 帳號(稍後會用到)。會員註冊、登入連結和員工邀請都是透過電子郵件寄送。
從範本部署
打開 Ghost 範本。部署前會要求填寫 Site URL,也就是讀者造訪部落格的完整網址,例如 https://blog.example.com。範本會建立兩個服務:
| 服務 | 存放內容 |
|---|---|
| mysql | MySQL 8.4,磁碟區 /var/lib/mysql,root 密碼自動產生 |
| ghost | ghost:5-alpine,HTTP 連接埠 2368,內容資料夾 /var/lib/ghost/content(圖片和佈景主題) |
Site URL 會成為 ghost 服務的 url 變數。Ghost 的每個連結都由它產生,所以它必須和你最終使用的網域完全一致,包括 https://。
綁定網域,建立管理員
在 ghost 服務的 Networking 頁為 2368 連接埠綁定同一個網域,新增指向伺服器的 A 記錄,等待 HTTPS 生效(見網域與 HTTPS)。
開啟 https://blog.example.com/ghost,依照步驟為網站命名並建立第一個管理員帳號。後台永遠在 /ghost。和其他自架應用一樣,網域一生效就請自己完成這一步。
之後要換網域,就修改 url 變數、重新部署,再綁定新網域。只換網域而不改 url,連結還是會指向舊網址。
設定電子郵件
Ghost 寄送兩種郵件:
- 交易郵件:員工邀請、重設密碼、會員註冊和登入連結。任何 SMTP 服務都可以。
- 大量寄送的電子報:把文章寄給所有訂閱者。Ghost 目前只能透過 Mailgun 寄送,在後台 Settings → Email newsletter 中填入你的 Mailgun 網域和 API 金鑰。
交易郵件在 ghost 服務的 Variables 中設定。Ghost 用雙底線表示巢狀設定:
| 變數 | 範例 |
|---|---|
mail__transport |
SMTP |
mail__options__host |
smtp.example.com |
mail__options__port |
465 |
mail__options__secure |
true |
mail__options__auth__user |
你的 SMTP 使用者名稱 |
mail__options__auth__pass |
你的 SMTP 密碼 |
mail__from |
"部落格名稱" <noreply@example.com> |
重新部署 ghost 服務,然後邀請一位員工,或用另一個信箱註冊會員,確認收得到信。
有些伺服器供應商會封鎖對外的 SMTP 連接埠,症狀是寄信逾時。請改用電子郵件服務商提供的其他連接埠(例如 2525),或請伺服器供應商解除封鎖。另外也請依照電子郵件服務商的說明,為你的網域設定 SPF 和 DKIM,否則郵件很容易被丟進垃圾郵件匣。
開始寫作前的幾項設定
- Settings → General:網站名稱、描述、時區和語言。
- Settings → Design:挑選佈景主題或上傳自己的主題;主題檔案存放在內容資料夾裡。
- Settings → Membership:讀者能否註冊,以及是否有部分文章只開放給會員。
- Settings → Code injection:可以放流量分析腳本,例如自架的 Umami 或 Plausible。
備份
Ghost 的資料存在兩個地方:文章、會員和設定在 MySQL 裡;圖片、佈景主題和上傳的檔案在 ghost 服務的 /var/lib/ghost/content 磁碟區。兩者都要備份。
- 隨時可以在 mysql 服務的 Backup & Restore 頁備份資料庫。
- 內容資料夾是磁碟區:備份時先停止專案,完成後再啟動。
Ghost 本身的匯出功能(在後台設定中)會把文章和設定存成 JSON,方便搬到另一個 Ghost,但不包含圖片。重要的資料,請下載一份備份自行保存,並在新專案中還原一次來確認。詳見備份與還原。
升級
範本使用 ghost:5-alpine,所以重新部署時會拉取最新的 Ghost 5。升級前先備份 MySQL 和內容資料夾,並閱讀版本說明。大版本升級可能會遷移資料庫,換回舊映像檔不一定能復原,需要還原升級前的備份。
常見問題
網站上的連結指向 localhost 或舊網域?
url 變數和你實際使用的網址不一致。把它改成正確的完整網址,再重新部署。
會員收不到登入郵件?
在 ghost 服務的日誌裡找寄信錯誤。通常是 SMTP 連接埠被封鎖、使用者名稱或密碼錯誤,或 mail__from 的網域沒有通過電子郵件服務商的驗證。
可以從 WordPress 或其他平台搬過來嗎? Ghost 有官方的遷移工具和指南,支援 WordPress、Substack 等平台。匯入的圖片會存進內容資料夾,所以備份時記得把它包含進去。
Ghost 還是 WordPress? 著重寫作和電子報、想要少點維護,選 Ghost;需要大量外掛、線上商店或複雜頁面,WordPress 比較合適。Zenavo 也有 WordPress 範本。
從 Ghost 範本開始:先讓網域和 url 一致,再建立管理員、設定電子郵件,最後把資料庫和內容資料夾都備份起來。
這是 coding agent 讀到的內容,網址是 https://zenavo.app/zh-TW/blog/self-host-ghost.md。
無法載入 Markdown,請直接開啟: https://zenavo.app/zh-TW/blog/self-host-ghost.md