用 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 一致,再创建管理员、配好发信,最后把数据库和内容目录都纳入备份。
这是 coding agent 读到的内容,地址是 https://zenavo.app/zh-CN/blog/self-host-ghost.md。
无法加载 Markdown,请直接打开: https://zenavo.app/zh-CN/blog/self-host-ghost.md