網站搬遷七年後的再度翻新:更新 Ghost 系統,從 0.x 到 5.x 版本

前情提要

2016 年我將自己的 Blog 移到了 Ghost,那時候的 Ghost 就只有開源自託管(Self-Hosted)的版本,甚至還沒有正式發佈 1.0。這七年來對於網路的使用習慣變化很大,主要是前端技術的演進,讓我覺得編輯界面、SEO 、網站性能等等應該有很多的優化空間,畢竟我用的是超級早期的版本。

一直沒有下定決心搬遷就是因為懶。不過最近寫作的頻率越來越高,在 AI 的輔助下我的文字產能大幅提高,想要透過這個工具來加速我自己的知識輸出速度,不希望 Blog 變成一個瓶頸,加上我自己沒有很喜歡 Medium。

Medium 對於中文讀者以及 SEO 並不是非常友善,它雖然有大量的讀者群,但它也有大量的創作者在爭奪小眾的眼球,貢獻的內容是擴大 Medium 的品牌和市場影響力,不一定是自己的。

作為記錄自己學習不以營利為目的的 Blog 來說,我覺得 Ghost 更符合我對於極簡的要求,不管是寫作、編輯、或是管理界面都是如此。

這七年來,Ghost 多了什麼功能?

Ghost 現在的寫作體驗對我來說,基本上就是致敬 Medium 並且進一步超越,除了所見即所得的管理界面之外,更是完整相容它初期主打(也是最吸引我)的 Markdown 功能,現在更加入了創建、分發、管理會員資格和訂閱的工具。

在應用擴充程式上面,有 1,000 多個第三方應用可以選擇,最受歡迎的包括 Google Analytics、Patreon、PayPal、Slack、Stripe、Ulysses、YouTube 和 Zapier,讓自己的網站有強大的 SEO 工具和支持。

當然,Ghost 可以不只是個 Blog,它完全可以作為一個 Headless CMS 管理平台,並且串接 Stripe 提供付費訂閱的功能。不過因為我個人是純粹作為 Blog 使用,就不在這裡展開。

接下來記錄我是如何搬遷到 5.x 版本的。

如何將 Ghost 0.x 版本升級到 5.x 版本?

我原本的配置:

決定要行動就已經克服了重重困難,實際執行之後發現阻礙更多,因為更換了很多台電腦,仗著自己年輕記憶力好,以前沒有良好的習慣記錄每台 Server 配置的 SSH 以及帳號密碼,導致我光是找出我的 Ghost 架設在哪個網站就非常痛苦,等我的 Linode 帳號復原就花了我兩個禮拜,詳見 FB

最初搬遷的直覺以為頂多就是依賴的套件加上 Ghost 本身的更新就可以,實際上執行才知道實在是太天真了,主要的原因是我使用的版本太舊了,在 1.0 正式發佈之後,所有針對 Ghost 的操作都集成到了 ghost-cli ,搭配 config.production.json 來設定。 ghost-cli 大量依賴 npm 相關的工具鏈,導致整個作業系統的套件都需要更新,這對於我原先的 VPS 機器是非常大的負擔,只有 1GB RAM 以及 20GB HD 是不可能完成這個操作的。

就開始思考是否重新裝一個系統一勞永逸,畢竟 Ubuntu 14.04 也停止支援了,咬著牙嘗試直上 22.04 LTS,並且重新安裝 Ghost。

好不容易將 Ghost 順利架起來之後,正想要愉快的導入,擔心的事情果然發生了:Export 出來的 JSON 配置檔並沒有向前相容。Ghost 5.x 沒有提供任何轉換工具,爬了文之後才知道每個主要發行版本之間的 JSON 配置檔都沒有相容!也就是所我需要階梯式升級搬遷我的 Blog 資料:從 0.10 -> 1.0 -> 2.0 -> 5.35.1。

但是,我的 Ubuntu 已經是 v22 不可能返回去裝 1.0 呀!這時候最直覺的想法是自己寫一個腳本來轉換配置檔,比較之下發現差異實在太大了,主要是加上很多後期負責的功能,也不再是用純 Markdown 格式,而是相容 Markdown 的 Markup 格式來儲存文字內容了。

最後我想起可以使用 Docker,幸運地找到了 1.0 的 Docker Image,開心執行之後發現跑不起來!才想起我現在的 Macbook 以及不是 x86 架構,根本無法回頭跑起舊的 Image,幸好手邊還有 x86 的筆電,最後找到官網的 Docker Hub,殺雞用牛刀,架整個 Ghost 就是為了轉檔!

docker run -p 2368:2368 ghost:1.0

Export 三次之後,終於順利將文章搬到 Ghost 5.x 上面,只剩下圖片還沒有正常顯示,好在,這部分還是相容以前的路徑,只需要移動對應的圖片資料夾就可以完成最後的搬遷。

scp -r root@SOURCE_IP:/var/www/GHOST_SITE/content/images root@DEST_IP:/var/www/GHOST_SITE/content/images

全數完成之後的配置如下:

Ubuntu: 22.04 LTS
Ghost-CLI version: 1.24.0
Ghost version: 5.35.1 

參考資料

  1. How to reinstall Ghost
  2. How to install & setup Ghost on Ubuntu 16.04, 18.04, 20.04 or 22.04
  3. Ghost Resources — Stories & Ideas About Indie Publishing

31 人的團隊,創造一年五百萬美金的產值

Ghost 這七年來的功能更新,讓編輯界面更加人性化,新增夜間模式、多語言支持、動態路由等特性,新增靜態網站生成方式和強大的動態特性,使 Ghost 成為一個強大而多功能的內容管理系統。除此之外,更多的整合方式、多作者支援、會員訂閱、電子報發送等功能讓用戶可以更方便地編輯、管理內容。

Blog 升級之後,最明顯的是網站整體的性能表現,包括請求速度增加 40%、延遲時間減少 30%、啟動/重啟後服務請求速度提升 300%。此外,新增內建搜尋、郵件與留言討論功能、編輯記錄等功能,提升 SEO 及分析數據等方面,讓多人協同編輯更加輕鬆。

以寫作來說與文章展示來說,自架的 Blog 完全屌打 Medium 的體驗,個人 Blog 就應該是拿回所有的掌握權,對我來說,文章是否有人看可能不是最重要的,而是自己的呈現資訊的方式,以及文字本身是否方便傳播,Blog 對我來說就是思想傳播的一個媒介(當然,Notion Page 也很好)。

We’re a team of 31 people now, spread all over the world, and Ghost’s own revenue is now about $5M/year (up almost $2M from this time last year). We’re still an independent, self-funded nonprofit organisation that can never be bought or sold. And, everything we do is still decentralised and open source.

作為 Ghost 早期的使用者,一路升級版本,看到版本的迭代演化,還有 Ghost 公司的成長,特別佩服,也期許自己的公司未來為社會創造巨大產值。