7 min read

Ghost架站歷程

使用Ghost架設部落格的歷程

歷經千辛萬苦(?),本部落格的第一篇文誕生了...

不管是一些值得記錄的事情,或是關於音樂遊戲的想法,總之很早之前就萌生了要架部落格寫點東西的念頭,並且追求輕量化,降低效能使用(省點錢)。

一路走來,用過typecho、看了一下Hugo,卻因為技術門檻,導致自己屢屢碰壁,就算現在是AI時代,精準提問也是一個學問,在技術基礎越低的狀況下,也越難向AI描述自己所遇到的問題,或是越難讀懂AI所提供的解法。

因此,這個念頭持續了少說兩三年,都僅只是念頭。

直到1/12的回家路上,我想著「不對,我覺得我好像拖太久了」,於是問了強者我朋友...


「你知道有什麼Hugo的替代品嗎,前置作業成本不用那麼高(?)的」

「哦哦哦,我會想到這個(https://ghost.org/)」


於是回家開始了長達三個半小時的設定之旅(踩了一些坑,實際上根本不用那麼久):

提醒:本部分可能會隨官方教學更新而失效

設定之旅

尋找教學

Ghost的官網上面主要提供的是直接使用官方的付費懶人服務,而最下面有個「How to install Ghost」的位子,可以自行安裝Ghost

藏在最下面的自行安裝連結,雖然說

(當然也可以直接點下面的連結直接跳到教學頁,但我覺得,告訴各位要如何從官方首頁找到這個入口,是我的義務)

How To Install Ghost - Ghost Developer Docs
The fastest way to get started is to set up a site on **Ghost(Pro)**. If you’re running a self-hosted instance, we strongly recommend an Ubuntu server with at least 1GB of memory to run Ghost.

各位可以選擇使用Ubuntu或是Docker安裝,我是用Ubuntu因為我不懂Docker

官方所提供的幾種安裝方式

不過,假如你需要使用內建的統計功能,你需要用Docker進行安裝

官方文件指出,假如需要使用內建的統計功能,需要使用Docker版本

先看看安裝需求:

官方所提供的安裝需求

其中,比較重要的是以下幾項:

  • Ubuntu 22.04或24.04版
  • 最少1GB的伺服器記憶體:雖然官方說1GB的就夠了,但我在網路上看這篇文章說1GB常常閃退,所以我後來用2GB的
  • 已經註冊A Record的域名:系統會在安裝流程自動申請域名SSL證書

其餘需求會在安裝時進行

開始動手

我看完整篇英文教學的想法是

這也太無腦了吧

原因是這篇安裝教學完全不會有「你安裝這個B工具之前,你要先去A的網頁去看A工具如何安裝」,或是「要自己判斷這個工具要不要裝」等等的狀況,基本上只要照著步驟,一條龍做下去,應該不會遇到什麼大問題(?)

需要額外注意的地方

  1. 新增使用者:

由於Ghost會需要一個自己的使用者去執行指令,因此要手動新增一名使用者。需要注意的是,不能使用ghost作為使用者名稱,會與後面使用的ghost指令衝突

新增使用者:注意不要使用「ghost」作為使用者名稱
  1. 安裝MySQL

在手動設定MySQL的root密碼時,要記得把後面的'<your-new-root-password>'改成'你的密碼',我因為這邊沒改到,在安裝流程卡了兩三次

  1. 輸入安裝指令後會有一連串的問題,有一項是「MySQL username / password」,這邊帳號就輸入「root」,密碼則是輸入剛剛設定的密碼,其餘看過之後,都只要輸入Y(Yes)就可以了

安裝完成後,就可以到https://你的網址/ghost去設定你的網頁了


一點變化球

由於我在同一台主機上設定了兩個ghost系統,你只要從安裝Ghost這個段落開始再跑一次流程就好了,系統會自動更改內部的設定,避免設定檔衝突

安裝後的一些檢查

可以用用看你的其他裝置(例如手機)登入你的ghost後台,一樣可以打https://你的網址/ghost看看能不能正常登入,像我在設定完兩個ghost後就遇到這個問題:

設定完成後,用其他裝置無法正常登入

後來問了一下AI,一步步Debug之後,發現是連線逾時的問題:連線超過60秒無回應,伺服器自動吐了504的訊息。以下節錄AI的回答:

  1. 看到504錯誤的推論:到這邊就能發現為什麼是在其他裝置登入時才會發生問題,因為需要驗證是否為本人登入
和Google Gemini一起Debug的過程-1
  1. 為什麼會跳出錯誤:因為要在其他裝置發電子郵件驗證登入時,port被封鎖
和Google Gemini一起Debug的過程-2

後續AI提供的解法為:

取得 Google 「應用程式專用密碼」

  1. 進入Google 帳號設定
  2. 點擊左側「安全性」。
  3. 確保已開啟「兩步驟驗證」。
  4. 搜尋「應用程式密碼」(App Passwords)。
  5. 應用程式名稱填入Ghost-Blog,點擊「產生」。
  6. 記下這組 16 位元的密碼(這是唯一的顯示機會)。

修改 Ghost 設定檔

  1. 透過 SSH 連線到您的伺服器。
  2. 進入 Ghost 安裝目錄(通常是 /var/www/ghost)。
  3. 使用編輯器打開設定檔:

nano config.production.json

  1. 找到 mail 區塊,將其修改為以下內容(請替換括號內的資訊):
  "from": "'您的名稱' <您的信箱@gmail.com>",
  "transport": "SMTP",
  "options": {
    "host": "smtp.gmail.com",
    "port": 587,
    "auth": {
      "user": "您的信箱@gmail.com",
      "pass": "剛才產生的16位元應用程式密碼"
    }
  }
},```

重啟與測試

  1. 儲存檔案並離開編輯器 (Ctrl+O, Enter, Ctrl+X)。
  2. 重啟 Ghost 讓設定生效

ghost restart

  1. 重新嘗試登入:現在去那台「新電腦」嘗試登入,Ghost 應該能在不到 1 秒內透過 Gmail 發出通知信,您的 504 錯誤就會徹底消失。

我在設定完這些內容後,在新裝置登入時,就沒有遇到問題了,會自動發驗證信到我的信箱


自始,我總算有一個自己的部落格了!