TIL:Ghost 登入死胡同——用 Gmail 搞定登入2FA (Zeabur版)
剛架好 Ghost 卻被鎖在管理後台外?原本以為不需要設定 Email 服務,卻意外觸發了 2FA 驗證碼的「雞生蛋」難題。這篇 TIL 記錄我如何利用 Zeabur 環境變數與 Gmail 應用程式密碼,不花錢解決 Ghost 的系統驗證信問題,讓網站順利起跑。
Today I Learned (TIL) 是我記錄每天工作時的啟發和靈感的文體。主題和工作內容有關,敘事角度更著重於我個人的心得。
情境
故事發生在我透過 Zeabur 架設好 Ghost 的隔天,我發現我無法透過其他裝置登入 Ghost 的管理後台,輸入的帳號、密碼都正確,但我會得到:
failed to send email. please check your site configuration and try again.
因為進不了管理後台,所以也不知道是 Ghost 哪個環節沒有設定好。要完成設定,我需要先進入管理後台。
難道才剛架好網站就從此無法再登入了嗎?
解謎過程
- Google Search :整段錯誤訊息 + Ghost 關鍵字
我得到的資訊是 Ghost 內有2種類型的 Email,其中一種和登入有關,會要求管理者在登入時接收驗證碼。
這我才想到,我在第一天設定時我沒有照 雷蒙三十的教教學文 完成 mailgun 的服務設定,原因是我想說初期我還不需要發送 email 給訂閱者,因為...還沒有訂閱者。
轉頭去看 Mailgun,發現也和教學文的時空背景不同,現在沒有免費的方案了,那不想付費的我能怎麼辦?或是就算我付費了,要怎麼進 Ghost 後台設定,這是個雞生蛋的問題。
- 求助 Gemini
把我用 Zeabur 架設的背景以及我的需求 (暫時不需要發送email 功能、要先解決登入問題)後,我得到解答是我可以直接在Zeabur 的專案的 Ghost 完成email 發送和登入驗證的變數
| Key (鍵) | Value (值) |
mail__transport | SMTP |
mail__options__service | Gmail |
mail__options__host | smtp.gmail.com |
mail__options__port | 465 |
mail__options__secure | true |
mail__options__auth__user | 你的帳號@gmail.com |
mail__options__auth__pass | 你的 16 位應用程式密碼 |
有些變數在一開始專案安裝時就存在,也有些要自己新增,例如 mail_transport。
其中,Google 應用程式密碼 (不是 Google 登入密碼!) 的來源如下:
- 前往Google 帳號安全性設定。
- 確定已開啟 「兩階段驗證」。
- 搜尋 「應用程式密碼」 (App Passwords)
--> 會先找到說明文件,從文件中找到管理應用程式密碼的頁面連結。 - 命名為 "Ghost",產出一組 16 位元的序號,這才是要填入
mail__options__auth__pass的內容。
- 了解 Email 設定的影響
對於 Ghost 的 Email 類型以及後續的影響,Gemini 也做了清楚的整理:
| 類型 | 用途 | 方案 | 費用 |
| 系統信 | 登入、2FA、管理通知 | Gmail SMTP | 免費 |
| 電子報 | 大量發送新文章 | Mailgun API | 需綁卡付費 |
Ghostt 現在只支援Mailgun 發電子報,而Mailgun 現在已經沒有完全免費的方案(只有一個一個月內免費 5000 封的試用,之後要綁信用卡進入彈性計費)。
意思是在開通 Mailgun之前,將無法點擊 Ghost 後台的「發送電子報」按鈕。
結論
設定好email 後,我成功可以登入 Ghost 管理後台了。Gemini 還有提議可以設定取消需要驗證碼才能登入,但我認為 2FA 二階段驗證的安全防護還是要保留。
可惜的是 Ghost 目前可能也不支援其他驗證方式,例如 Google 登入。可能有,但我不知道,希望有人能和我分享。
發送電子報的部分,雖然應該存在很多變形的解法,手動、外掛、自架等等的手段我相信都可以,只是不是我目前的重心。而且,真的付費給 mailgun 也是一個省時間的好手段。
以上分享,希望你在建立網站時別和我一樣踩坑了。
進坑了也別怕,塵土拍一拍,總會有辦法的。