TIL:Ghost 登入死胡同——用 Gmail 搞定登入2FA (Zeabur版)

剛架好 Ghost 卻被鎖在管理後台外?原本以為不需要設定 Email 服務,卻意外觸發了 2FA 驗證碼的「雞生蛋」難題。這篇 TIL 記錄我如何利用 Zeabur 環境變數與 Gmail 應用程式密碼,不花錢解決 Ghost 的系統驗證信問題,讓網站順利起跑。

TIL:Ghost 登入死胡同——用 Gmail 搞定登入2FA (Zeabur版)
Today I Learned (TIL) 是我記錄每天工作時的啟發和靈感的文體。主題和工作內容有關,敘事角度更著重於我個人的心得。

情境

故事發生在我透過 Zeabur 架設好 Ghost 的隔天,我發現我無法透過其他裝置登入 Ghost 的管理後台,輸入的帳號、密碼都正確,但我會得到:

failed to send email. please check your site configuration and try again.

因為進不了管理後台,所以也不知道是 Ghost 哪個環節沒有設定好。要完成設定,我需要先進入管理後台。

難道才剛架好網站就從此無法再登入了嗎?


解謎過程

  1. Google Search :整段錯誤訊息 + Ghost 關鍵字

我得到的資訊是 Ghost 內有2種類型的 Email,其中一種和登入有關,會要求管理者在登入時接收驗證碼。

這我才想到,我在第一天設定時我沒有照 雷蒙三十的教教學文 完成 mailgun 的服務設定,原因是我想說初期我還不需要發送 email 給訂閱者,因為...還沒有訂閱者。

轉頭去看 Mailgun,發現也和教學文的時空背景不同,現在沒有免費的方案了,那不想付費的我能怎麼辦?或是就算我付費了,要怎麼進 Ghost 後台設定,這是個雞生蛋的問題。


  1. 求助 Gemini

把我用 Zeabur 架設的背景以及我的需求 (暫時不需要發送email 功能、要先解決登入問題)後,我得到解答是我可以直接在Zeabur 的專案的 Ghost 完成email 發送和登入驗證的變數

Key (鍵)Value (值)
mail__transportSMTP
mail__options__serviceGmail
mail__options__hostsmtp.gmail.com
mail__options__port465
mail__options__securetrue
mail__options__auth__user你的帳號@gmail.com
mail__options__auth__pass你的 16 位應用程式密碼

有些變數在一開始專案安裝時就存在,也有些要自己新增,例如 mail_transport。

其中,Google 應用程式密碼 (不是 Google 登入密碼!) 的來源如下:

    1. 前往Google 帳號安全性設定
    2. 確定已開啟 「兩階段驗證」
    3. 搜尋 「應用程式密碼」 (App Passwords)
      --> 會先找到說明文件,從文件中找到管理應用程式密碼的頁面連結。
    4. 命名為 "Ghost",產出一組 16 位元的序號,這才是要填入 mail__options__auth__pass 的內容。

  1. 了解 Email 設定的影響

對於 Ghost 的 Email 類型以及後續的影響,Gemini 也做了清楚的整理:

類型用途方案費用
系統信登入、2FA、管理通知Gmail SMTP免費
電子報大量發送新文章Mailgun API需綁卡付費

Ghostt 現在只支援Mailgun 發電子報,而Mailgun 現在已經沒有完全免費的方案(只有一個一個月內免費 5000 封的試用,之後要綁信用卡進入彈性計費)。

意思是在開通 Mailgun之前,將無法點擊 Ghost 後台的「發送電子報」按鈕。


結論

設定好email 後,我成功可以登入 Ghost 管理後台了。Gemini 還有提議可以設定取消需要驗證碼才能登入,但我認為 2FA 二階段驗證的安全防護還是要保留。

可惜的是 Ghost 目前可能也不支援其他驗證方式,例如 Google 登入。可能有,但我不知道,希望有人能和我分享。

發送電子報的部分,雖然應該存在很多變形的解法,手動、外掛、自架等等的手段我相信都可以,只是不是我目前的重心。而且,真的付費給 mailgun 也是一個省時間的好手段。

以上分享,希望你在建立網站時別和我一樣踩坑了。

進坑了也別怕,塵土拍一拍,總會有辦法的。