Skip to main content

Why I Move from Ghost to Hugo

·359 words·2 mins
Author
MS
A little bit about you
Table of Contents

如果看到看到这篇文章,就代表说我的网站已经从 Ghost 顺利到 Hugo 了,期间也做了不少准备工作,才开始行动的。所幸网络上也有不少朋友从 Ghost 迁移出去,也有不少现成的工具可用,只要看得懂文档,理论上都能顺利更换平台。

我写作的初衷最初是要作为我知识储备,用写作来加深学到的知识,顺便造福些需要 Google 找答案的朋友,无奈的是成立在部署折腾地方多,内容产出却少😅。 时过境迁,互联网的风口已经是在视频以及 AI,要找答案问 AI 或是 YouTube 影片都能找到你所要的答案。再者,知识数据库也能自己在笔记 APP 中记录,例如 Notion 都能很好的管理知识库,同时又能在多台设备上同步,也容易分享。

缘起
#

部署就只剩下对于科技的热情,可惜热情也是会被消耗的,主要是「为爱发电」没有观众,加上 Ghost 是 Selfhosted,多少都会碰到很多技术上问题都得独自解决,更何况 Ghost 还有数据库呢~ 最近一次碰到的问题就是被 bot 疯狂的注册免费会员,过高的用量让我我还得搞定 mailgun 的账单, Ghost 提供了黑名单阻止这些域名注册,但是在这种规模的 spam 情况下似乎还是触发 mailgun,这就是为什么后来只开放付费会员,免费会员只能在 GoogleSheets 手动添加。

为何不开放免费会员注册了?

令我啼笑皆非的是唯一一个收到电子报的就是作者我本人,因为没有人看,自己收到自己的电子报也是一种安慰。同时我也没搞清楚为什么 Search Console 一直说我 robot.txt 禁止 Google 爬文,这也是为什么 Google 一直没有将我的网站加入 Google Search 中,几乎所有搜索引擎的流量都是来自 Bing 的,我有理由怀疑是 Copilot 爬文的。

Ghost 部落格
#

先来说说为什么我会用 Ghost 写作吧
#

在 Covid 期间,在家没事做打算找一些科技的东西来学习,顺便折腾一直想做的事。期间有用过 WordPress 虽然功能很丰富,但是在丰富的另一端就是复杂,在后台中有太多东西要弄了,更不用说琳琅满目的插件,主题。后来找到看到 Ghost 3.0 我被在 Ghost 写作的优雅深深的吸引,/ xx 就能呼叫功能,对于编写器到后台都很克制,在当时真的很震惊,怎么这么好用,后来就接触 Typora MarkText 的 Markdown 编辑器,加上那时候 nodejs 很红, Ghost 就是给我觉得比 WordPress 优雅太多了,不论是后台的响应速度,主题也做到开箱即用的程度。

一开始是在 DigitalOcean Droplet 上「一键部署」,升级都用 Ghost CLI,当下的确有自己很厉害的成就感,只不过缺点是 CLI 代表你要管理 node 以及 npm 版本的情况,有好几次网站得下线超过 24小时。

后来自己手痒将 SSH 更改成「密码登入」但是没想到会有机器人会扫描 ip 尝试登入,当时我的登入密码是:1234567890 😰,然后 DO 说侦测到不正常流量这样,也不让我进去 Ghost Backup。 这也是为什么我对于文章备份,以及图片备份更加倾向用第三方云端服务,因为 Ghost 后台导出没有图片而是 json。 既然砍掉从新折腾,我就索性找另一家 VPS Hetnzer,用 Docker 部署,到现在还稳定的运行着,我也发现 Docker 部署真的比较容易,而且还能部署多个应用。

Hetzner VPS + Docker 部署心得

为什么不继续用 Ghost?
#

除了上述提到的原因之外,另一个原因是 Ghost 的发展重心并不是我当初选择入坑的原因了,很多功能开发团队也不屑加入,例如明明有 /product 但是却只能本地上传,不能用外部连接,我还是用 Obsidian 的 Send to Ghost 做到的,但是明明这么好用的编辑器却迟迟不加入这些功能,更夸张的是到今天我还没看到管理照片的功能。 Ghost 开发团队的重心实在如何对独立媒体增加曝光让增加收入,让更多增加 Ghost (Pro) 的收入,如果是 selfhosted 一些功能还得另外订阅或是需要一定动手能力才能实现,举例来说电子报需要订阅 mailgun,图片编辑需要 Pintura, Tinybird 则用来记录网站的流量,其实出发点对于订阅的创作者来说是好的,因为这些附加服务 Ghost (Pro) 都包含在内,但是对于 selfhost 来说可能看不到 6.0 带来的新特点。

另外考虑到我在 Docker 也没有其他的部署的需求,主要还是 Hosting 网站,所以或许静态网站会比较合适。

Ghost CMS 的强项,可惜大部分都用不到
#

无可否认的是 Ghost 还是有一些功能是静态网站给不了的,例如电子报,管理会员功能,现在甚至有去中心化的 ActivityPub 增加曝光,最重要的是 Ghost 对于创作者的收入是没有手续费的。Ghost 基金会的唯一收入来源是 Ghost (Pro) 的托管服务,我相信这就是为什么很多版本的大更新都没把重心在撰写体验上加强,而是更多集中在如何为独立创作者变现的功能。

Ghost 的优点
#

  • 稳定来自读者的收入
  • 电子报,以及会员内容

说到 member only 文章,我觉得相当的好,只要内容写得好不怕没有没有收入。如果你是认真经营内容, Ghost 平台或许能帮你创造不错的收入的。 毕竟 AI 以及视频是现在的趋势,阅读文章相对的比较 niche,付费内容以及电子报的确是可以精准投放的地方。

如何备份 Ghost 文章?
#

本站是 Docker Compose 部署的,但是我并没有将完整的数据库给备份起来,加入需要可以到其中一个 Ghost 的 Hosting 平台 MagicPage 的 How to Migrate to Magic Pages (Without Losing Any Data) 将完整的数据库备份起来。 我的方法是到 Ghost /admin/settings 将文章备份下来。然后用 Ghost to Hugo 把下载下来的 json 汇出为 .md 。 只不过还是有一些不完美的地方,第一个就是备份有一篇文章显示错误,顺着错误提示发现,明明已经在 Ghost 删除了,但是还在数据库中, 随意就用最原始的方法,在 .json 备份中删除该篇文章的所有资料,应该是之前的 Ghost 版本中的时候有 Bug 导致的情况。

Ghost to HUGO
#

理论上这个工具是将 Ghost 的备份转换为一篇一篇的 .md 文件。因为是两个不同的平台的关系 HUGO 比较多是用 Markdown 语法,没有 shortcode 所以我的一些文章有网站书签的排版会很奇怪。这就是无法两个平台迁移的痛。

只要将繁琐的设定好了,网站几乎是开箱即用 繁琐的设定有: 安装 git, 安装 hugo,找合适的主题,Github SSH 设定,cloudflare DNS,以及 Cloudflare Page 相关。

对于没有相关经验来说,最容易的就是「找到合适的主题」😅

部署
#

我的网站是部署在 Cloudflare Page, 文章是 CI/CD 到 Github;为什么不用 Github Page 的原因是因为要发布到 Github Page,respositore 要设置为「公众」,即便是在草稿还不打算发布,还是能在公开的仓库中。 相反,Cloudflare Page 就不同了,代码参考会与 Page 本身分开,所以网站上只会看到「发布」的文章,草稿虽然还是在 Github 仓库,但是不是「公开」,你能将草稿同步 Gihub 只要是 [draft] 就不会发布。 如果不想要 Cloudflare Page, Netlify 或是 DigitalOcean App 也是不错的选择。另一个我选择 Cloudflare 的原因是对于这家公司的服务的稳定性以及信任,加上是众多知名服务的基础建设的首选。 全球史上最大 DDoS 攻擊現身!峰值達 11.5Tbps,Cloudflare 驚險擋下

🌜 最后
#

这就是我部署 Hugo 的一些心路旅程。因为一开始我就有计划等待 Ghost 6.0 发布的时候看有什么新功能,的确还是有些东西,只不过部署的复杂程度也开始增加,所以就开始有年底前搬平台的想法,听说 Hugo 很快,风评很好所以就试试看,结果真的很快

Related