用 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 模板,部署前会要求填写 站点网址,即读者访问博客的完整地址,例如 https://blog.example.com。模板会创建两个服务:

服务 内容
mysql MySQL 8.4,数据卷 /var/lib/mysql,root 密码自动生成
ghost ghost:5-alpine,HTTP 端口 2368,内容目录 /var/lib/ghost/content(图片、主题都在这里)

站点网址会写入 ghost 服务的 url 变量。Ghost 用它生成所有链接,所以它必须和你最终使用的域名完全一致,包括 https://。

绑定域名,创建管理员

在 ghost 服务的 网络 页为 2368 端口绑定 同一个 域名,在 DNS 添加指向服务器的 A 记录,等待 HTTPS 生效(见域名文档)。

打开 https://blog.example.com/ghost,按提示创建站点和第一个管理员账号。后台地址的路径总是 /ghost。和其他自托管应用一样,域名生效后请尽快自己完成这一步。

以后要换域名,就修改 url 变量并重新部署,再绑定新域名。只改域名不改 url,页面里的链接还会指向旧地址。

配置发信

Ghost 的邮件分两类:

  • 事务邮件:员工邀请、找回密码、会员注册和登录链接。用任意 SMTP 服务即可。
  • 批量电子报:给所有订阅者发文章。Ghost 官方目前只支持通过 Mailgun 批量发送,在后台 Settings → Email newsletter 中填写 Mailgun 的域名和 API Key。

事务邮件通过 ghost 服务的 变量 配置。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 服务的 备份与恢复 中可以随时备份数据库。
  • 内容目录是数据卷,备份时需要先停止项目,完成后再启动。

另外,Ghost 后台设置中的导出功能(Export)可以把文章和设置导出为 JSON,适合迁移到另一个 Ghost,但不包含图片。重要的数据,下载一份备份自行保存,并在新项目中恢复一次来验证。详见备份与恢复。

升级

模板使用 ghost:5-alpine,重新部署时会拉取 Ghost 5 的最新版本。升级前先备份 MySQL 和内容目录,读一下发行说明;Ghost 的大版本升级可能涉及数据库迁移,回到旧镜像不一定能回退,需要恢复升级前的备份。

常见问题

打开网站显示的链接是 localhost 或旧域名? url 变量和实际访问的域名不一致。改成正确的完整地址,重新部署。

会员收不到登录邮件? 先在 ghost 服务的日志里找发信错误。常见原因是 SMTP 端口被封锁、用户名密码错误,或 mail__from 的域名没有通过发信服务验证。

能从 WordPress 或其他平台迁移过来吗? Ghost 提供从 WordPress、Substack 等平台迁移的官方工具和文档。导入的图片会保存到内容目录,记得一并备份。

Ghost 和 WordPress 怎么选? 重写作和电子报、想要更少维护,选 Ghost;需要大量插件、商城或复杂页面,WordPress 更合适。Zenavo 也有 WordPress 模板。

从 Ghost 模板开始:先让域名和 url 一致,再创建管理员、配好发信,最后把数据库和内容目录都纳入备份。