如何自架 Ghost 部落格:從零開始的完整教學指南
"給人一條魚不如教人如何釣魚" — 當你手上不只有錘子時,世界將展現出更多可能性。
在 Hammer Hub,我們相信選對工具的重要性。當談到架設部落格時,WordPress 雖然普及,但對於追求簡潔、效能與 Markdown 寫作體驗的創作者來說,Ghost 可能是更適合的選擇。
這篇文章將手把手帶你完成 Ghost 部落格的自架流程,從 GCP 租賃伺服器、安裝設定,到網域配置與 SSL 憑證,讓你擁有一個完全掌控的內容創作平台。
為什麼選擇自架 Ghost?
在開始之前,先讓我們了解為何要選擇 Ghost,以及為何要自架:
Ghost 的優勢
- 專注寫作體驗: 原生 Markdown 支援,介面簡潔優雅
- 效能優異: Node.js 架構,載入速度快
- SEO 友善: 內建完整的 SEO 功能
- 會員訂閱系統: 內建 Newsletter 與付費訂閱功能
- 開源免費: 自架版本完全免費
自架 vs 官方託管
- 完全掌控: 資料在自己手上,想怎麼調整都可以
- 成本考量: 自架每月約 $10-20 USD,官方託管最低 $9/月(但功能受限)
- 學習機會: 過程中學習伺服器管理、網域設定等技能
記住 Maslow 的名言:當你的工具箱裡不只有錘子時,你會發現更多解決問題的可能性。自架部落格就是為自己的工具箱添加新工具的絕佳機會。
更完整的理由以及跟Wordpress的比較可以參考之前的文章:
事前準備
在開始之前,你需要準備:
- GCP 帳號 (或其他雲端服務商如 AWS、DigitalOcean)
- 信用卡 (用於 GCP 與網域購買)
- 網域名稱 (本教學使用 Cloudflare 購買)
- 基本的終端機操作能力 (不用擔心,我會詳細說明每一步)
預估時間:約 1-2 小時 預估成本:
- GCP VM: $10-15/月
- 網域: $10-15/年
- 總計: 約每月 $11-16 USD
Step 1: 在 GCP 租賃虛擬機器
1.1 登入 GCP Console
前往 Google Cloud Platform,使用你的 Google 帳號登入。
如果是第一次使用,GCP 會提供 $300 美元的免費額度(有效期 90 天),足夠你測試使用。
1.2 建立新專案
- 點擊上方的專案選擇器
- 點選「新增專案」
- 輸入專案名稱,例如:
ghost-blog - 點擊「建立」
1.3 啟用 Compute Engine API
- 在左側選單找到「Compute Engine」
- 點擊「VM 執行個體」
- 等待 API 啟用(第一次需要幾分鐘)
1.4 建立 VM 執行個體
點擊「建立執行個體」,進行以下設定:
基本設定
- 名稱:
ghost-blog-instance(自取) - 區域: 選擇離你較近的區域,例如
asia-east1(台灣) - 機器類型:
e2-micro(2 vCPU, 1GB 記憶體)— 對於個人部落格已足夠
開機磁碟
- 點擊「變更」
- 作業系統: Ubuntu
- 版本: Ubuntu 22.04 LTS
- 開機磁碟類型: 標準永久磁碟
- 大小: 30 GB(Ghost 建議最少 30GB)
防火牆
- ✅ 允許 HTTP 流量
- ✅ 允許 HTTPS 流量
點擊「建立」,等待約 30 秒,VM 就會啟動完成。
1.5 設定靜態 IP 位址
為了確保 IP 不會改變(重啟後也不變),我們需要保留一個靜態 IP:
- 左側選單 → 「VPC 網路」→「IP 位址」
- 點擊「保留外部靜態位址」
- 設定:
- 名稱:
ghost-blog-ip - 類型: 區域
- 區域: 與 VM 相同
- 連接到: 選擇你剛建立的 VM
- 名稱:
- 點擊「保留」
記下這個 IP 位址,之後設定網域時會用到!
Step 2: 透過 SSH 連線到伺服器
2.1 使用瀏覽器 SSH
最簡單的方式是直接使用 GCP 提供的瀏覽器 SSH:
- 回到「VM 執行個體」頁面
- 找到你的執行個體
- 點擊「SSH」欄位下的「SSH」按鈕
- 瀏覽器會開啟一個新視窗,連線到你的伺服器
成功連線後,你會看到類似這樣的提示符:
bash
username@ghost-blog-instance:~$2.2 更新系統套件
首先,更新系統套件到最新版本:
bash
sudo apt update
sudo apt upgrade -y等待更新完成(可能需要幾分鐘)。
Step 3: 安裝 Ghost
Ghost 官方提供了一個非常方便的安裝工具叫 ghost-cli,我們將使用它來安裝。
3.1 安裝 Nginx
bash
sudo apt install nginx -y啟動並設定 Nginx 開機自動啟動:
bash
sudo systemctl start nginx
sudo systemctl enable nginx3.2 安裝 MySQL
Ghost 使用 MySQL 作為資料庫:
bash
sudo apt install mysql-server -y安全設定 MySQL:
bash
sudo mysql_secure_installation你會被問到一些問題,建議設定如下:
- 設定 root 密碼? → Y (然後輸入一個強密碼並記住它)
- 移除匿名使用者? → Y
- 禁止 root 遠端登入? → Y
- 移除測試資料庫? → Y
- 重新載入權限表? → Y
3.3 安裝 Node.js
Ghost 需要 Node.js v18 (LTS 版本):
bash
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs驗證安裝:
bash
node --version # 應該顯示 v18.x.x
npm --version # 應該顯示 9.x.x 或更高3.4 安裝 Ghost-CLI
bash
sudo npm install ghost-cli@latest -g3.5 建立 Ghost 安裝目錄
bash
sudo mkdir -p /var/www/ghost
sudo chown $USER:$USER /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost3.6 安裝 Ghost
現在是最關鍵的步驟:
bash
ghost install安裝程式會問你一系列問題:
? Enter your blog URL: https://yourdomain.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: root
? Enter your MySQL password: [你在 3.2 步驟設定的密碼]
? Enter your Ghost database name: ghost_prod
? Do you wish to set up Nginx? Yes
? Do you wish to set up SSL? No (我們稍後手動設定)
? Do you wish to set up systemd? Yes
? Do you want to start Ghost? Yes重要提示:
blog URL這裡先輸入你即將使用的網域(例如https://blog.example.com)- 如果你還沒有網域,可以先輸入
http://你的IP位址,之後再更改 - 先不要讓 Ghost CLI 設定 SSL,我們稍後用 Let's Encrypt 手動設定
安裝完成後,Ghost 應該就在運行了!
驗證:在瀏覽器輸入 http://你的伺服器IP,應該能看到 Ghost 的預設頁面。
Step 4: 在 Cloudflare 購買網域與設定 DNS
4.1 註冊 Cloudflare 帳號
前往 Cloudflare 註冊一個免費帳號。
4.2 購買網域
- 登入後,點擊左側選單「Domain Registration」
- 點擊「購買網域」
- 搜尋你想要的網域名稱
- 選擇一個可用的網域,加入購物車
- 完成結帳(大約 $10-15 USD/年)
4.3 設定 DNS 記錄
購買完成後,網域會自動加入你的 Cloudflare 帳戶:
- 點擊你的網域進入管理頁面
- 選擇「DNS」標籤
- 點擊「新增記錄」
新增 A 記錄:
- 類型: A
- 名稱: @ (代表根網域,例如
example.com) - IPv4 位址: 你的 GCP 靜態 IP
- Proxy 狀態: ⚪ 僅限 DNS (DNS only) - 重要:先不要開啟 Proxy
- TTL: 自動
如果你想使用子網域(例如 blog.example.com),再新增一筆:
- 類型: A
- 名稱: blog
- IPv4 位址: 你的 GCP 靜態 IP
- Proxy 狀態: ⚪ 僅限 DNS (DNS only)
點擊「儲存」。
重要說明: 我們先將 Proxy 設為「僅限 DNS」,讓 Let's Encrypt 可以直接連到你的伺服器驗證。等 SSL 憑證安裝完成後,再開啟 Proxy。
4.4 等待 DNS 生效
DNS 變更通常需要幾分鐘到幾小時才會生效。你可以用以下指令檢查:
bash
nslookup yourdomain.com當顯示的 IP 是你的 GCP 靜態 IP 時,就代表生效了。
Step 5: 安裝 SSL 憑證 (Let's Encrypt)
現在我們要使用 Let's Encrypt 來安裝免費的 SSL 憑證,讓你的網站可以使用 HTTPS。
5.1 安裝 Certbot
Certbot 是 Let's Encrypt 的官方工具,用來自動申請和管理 SSL 憑證:
bash
sudo apt install certbot python3-certbot-nginx -y5.2 確認 DNS 已生效
在申請憑證之前,確認你的網域已經正確指向伺服器:
bash
nslookup yourdomain.com應該要顯示你的 GCP 靜態 IP。如果還沒生效,請再等待幾分鐘。
5.3 申請 SSL 憑證
確認 DNS 生效後,執行以下指令申請憑證:
如果你使用根網域和 www:
bash
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com如果你使用子網域(例如 blog.example.com):
bash
sudo certbot --nginx -d blog.example.comCertbot 會問你幾個問題:
- Enter email address: 輸入你的 Email(用於接收憑證到期通知)
example@gmail.com- Agree to Terms of Service:
A (同意)- Share email with EFF:
N (不需要)- Redirect HTTP to HTTPS:
2 (選擇重新導向,自動將 HTTP 轉到 HTTPS)等待幾秒鐘,如果成功,你會看到類似這樣的訊息:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem
This certificate expires on 2025-02-10.🎉 恭喜!SSL 憑證安裝成功!
5.4 驗證 Nginx 設定
Certbot 會自動修改你的 Nginx 設定檔。檢查一下:
bash
sudo cat /etc/nginx/sites-available/yourdomain.com-ssl.conf你應該會看到新增的 SSL 設定,包含:
listen 443 sslssl_certificate和ssl_certificate_key指向 Let's Encrypt 憑證- HTTP 到 HTTPS 的重新導向
測試 Nginx 設定是否正確:
bash
sudo nginx -t如果顯示 syntax is ok 和 test is successful,就重新載入 Nginx:
bash
sudo systemctl reload nginx5.5 測試 HTTPS 連線
在瀏覽器訪問:
https://yourdomain.com你應該會看到:
- 🟢 瀏覽器顯示鎖頭圖示,連線是安全的
- 🟢 Ghost 網站正常顯示
點擊鎖頭圖示 → 「憑證有效」,可以看到憑證資訊:
- 發行者: Let's Encrypt
- 有效期: 90 天
5.6 設定自動續期
Let's Encrypt 憑證有效期只有 90 天,但不用擔心,Certbot 已經自動設定了續期機制。
測試自動續期是否正常:
bash
sudo certbot renew --dry-run如果沒有錯誤訊息,就代表設定成功!續期腳本會在憑證到期前自動執行。
你也可以手動檢查續期排程:
bash
sudo systemctl status certbot.timer應該會看到 active (waiting) 的狀態。
5.7 更新 Ghost 設定
確認 Ghost 的 URL 設定為 HTTPS:
bash
cd /var/www/ghost
ghost config url https://yourdomain.com
ghost restartStep 6: 完成設定與測試
6.1 訪問你的部落格
在瀏覽器輸入 https://yourdomain.com,你應該會看到:
- 🟢 連線是安全的(瀏覽器顯示鎖頭圖示)
- 🟢 Ghost 預設的首頁
- 🟢 速度很快(Cloudflare CDN 加速)
6.2 進入 Ghost 管理後台
- 訪問
https://yourdomain.com/ghost - 建立你的管理員帳號:
- 輸入網站標題
- 輸入你的名字
- 輸入 Email
- 設定密碼
- 點擊「建立帳號並開始使用」
6.3 驗證 SSL 設定
使用 SSL Labs 測試你的網站 SSL 設定:
- 前往 https://www.ssllabs.com/ssltest/
- 輸入你的網域
- 點擊「Submit」
等待幾分鐘後,你應該會得到 A 或 A+ 的評分!
恭喜!你的 Ghost 部落格已經完全設定完成了! 🎉
成本預估
每月經常性費用:
- GCP e2-micro VM: ~$10-12 USD
- 網域(分攤): ~$1 USD
- 總計: ~$11-13 USD/月
額外考量:
- 如果流量大,可能需要升級機器規格
- Cloudflare 免費方案已足夠個人使用
- SSL 憑證完全免費(Let's Encrypt)
- Ghost 官方託管服務最低方案 $9/月,但限制較多
總結:從錘子到工具箱的旅程
完成這篇教學後,你已經:
✅ 學會了雲端伺服器的租賃與管理
✅ 掌握了 Linux 基本指令與系統管理
✅ 了解了網域、DNS、SSL 的運作原理
✅ 成功安裝了 Let's Encrypt SSL 憑證
✅ 架設了一個完全由自己掌控、全程加密的部落格平台
更重要的是,你的工具箱裡又多了一個強大的工具。
在 Hammer Hub,我們相信:
"當你的工具箱裡不只有錘子時,世界將展現出更多的可能性。"
架設 Ghost 部落格只是個開始。你可以用這個平台:
- 分享你的專業知識
- 建立個人品牌
- 經營 Newsletter 訂閱
- 甚至發展付費內容
不要被單一工具限制了思維。WordPress 雖然普及,但 Ghost 在某些情況下是更好的選擇 — 更快、更簡潔、更專注於寫作。關鍵是根據你的需求選擇適合的工具。
下一步
完成架設後,你可能想:
- 🎨 客製化你的部落格主題與樣式
- ✍️ 開始撰寫第一篇文章
- 📧 設定 Email Newsletter
- 💰 探索會員訂閱與付費內容
- 📊 整合 Google Analytics 追蹤流量
祝你在創作的路上順利,用對的工具,創造有價值的內容!