如何在 Linux 服務器上自行託管和安裝 Ghost

如何在 Linux 服務器上自行託管和安裝 Ghost

Ghost 是一個開源內容管理程序,可讓您輕鬆創建博客和時事通訊服務。您可以選擇訂閱 Ghost(Pro) 服務來使用 CMS,或者,如果您更傾向於技術,也可以在您的服務器上自行託管它。在這裡,我們向您展示後者——在 Linux 服務器上自行託管 Ghost。

為什麼您應該在服務器上自行託管 Ghost

Ghost博客的優點之一是它提供了一個開箱即用的集成的、功能齊全的平台。這包括跟踪分析、通過帖子獲利以及為訂閱者創建自動新聞通訊的能力。

Ghost 儀表板的屏幕截圖。

在您的服務器上安裝 Ghost 可以讓您成為發布者,而無需依賴第三方來管理您的數據。如果您是一名記者,發表有關有爭議話題的批評文章,這會很有幫助。

最後,Ghost 易於部署和維護,即使對於非技術用戶也是如此。與傳統的 CMS 平台不同,Ghost 提供了一種一體化解決方案,您可以在託管計算機上“設置並忘記”。

在您的服務器上安裝 Ghost

假設:在開始之前,我們假設您已經有一個可用的 Linux 服務器和一個用於託管 Ghost 安裝的域名。如果您需要租用Linux服務器,我們推薦DigitalOceanLinode

由於我們將使用 Docker,因此我們需要首先在服務器上安裝 Docker。

1.安裝Docker項目的存儲庫公鑰:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. 在機器的 apt config 目錄中創建一個新的存儲庫文件:

sudo nano /etc/apt/sources.list.d/docker.list

3. 將以下代碼行粘貼到新存儲庫文件中:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

4. 刷新系統的存儲庫列表併升級計算機中的現有二進製文件:

sudo apt updatesudo apt upgrade

5. 安裝 Docker 和 Docker Compose 及其依賴項:

sudo apt install wget docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

6. 將您的用戶添加到 Docker 組

sudo usermod -aG docker $USER

7. 設置 Docker 服務在啟動時運行:

sudo systemctl enable docker.service

8. 重新啟動服務器。

sudo reboot

設置 Gmail 進行 SMTP 傳送

Ghost 沒有自帶電子郵件傳送客戶端,因此我們需要將其連接到 Gmail 來進行電子郵件傳送。

1. 打開網絡瀏覽器並登錄您要鏈接到 Ghost 實例的 Gmail 帳戶。

2. 單擊您帳戶的個人資料圖標,然後單擊“管理您的 Google 帳戶”。

3. 選擇“安全”類別,然後單擊“如何登錄 Google”子類別下的“兩步驗證”選項。

突出顯示 Gmail 帳戶的兩步驗證流程的屏幕截圖。

4. 驗證您的電話號碼並啟用兩步驗證

5. 返回“安全”類別,然後再次單擊“兩步驗證”選項。這將打開一個新的菜單屏幕,您可以在其中為您的帳戶設置新的輔助密鑰。滾動到頁面底部,然後點擊“應用程序密碼”。

屏幕截圖顯示

6. 在第一個下拉列表中選擇“郵件”,然後在第二個下拉列表中選擇“其他”。

7. 在文本框中寫入“Gmail for Ghost”,然後單擊“生成”。這將打開一個帶有黃色文本框的窗口,其中包含您的自定義應用程序密碼。

顯示為 Ghost 生成的應用程序密碼的屏幕截圖。

構建 Docker 容器

1. 為 Ghost 安裝的 dockerfiles 創建一個新目錄:

mkdir ~/ghost
cd ~/ghost

2. 使用您喜歡的文本編輯器創建一個新的 docker-compose.yml 文件:

nano. /docker-compose.yml

3. 將以下代碼塊粘貼到新的 docker-compose.yml 文件中並保存。

---
version: "3"
services:
ghost:
image: ghost:latest
restart: always
ports:
- 8080:2368
environment:
database__client: mysql
database__connection__host: db
database__connection__database: ghost
database__connection__user: ghost
database__connection__password: ghost
url: ${GHOST_URL}
mail__transport: ${MAIL_TRANSPORT}
mail__options__host: ${MAIL_HOST}
mail__options__port: ${MAIL_PORT}
mail__options__secureConnection: ${MAIL_SECURE_CONNECTION}
mail__options__auth__user: ${MAIL_USER}
mail__options__auth__pass: ${MAIL_PASSWORD}
volumes:
- ghost-data:/var/lib/ghost/content
links:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
cap_add:
- SYS_NICE
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-data: null
ghost-db: null

4. 在 Ghost docker 目錄中創建一個“.env”文件:

nano. /.env

5. 將以下代碼塊粘貼到您的新代碼中。環境文件:

# URLGHOST_URL="#REPLACE_ME_WITH_DOMAIN_NAME#"# DatabaseMYSQL_ROOT_PASSWORD="#REPLACE_ME_WITH_SECURE_PASSWORD#"# SMTP variablesMAIL_SERVICE="Gmail"MAIL_TRANSPORT="SMTP"MAIL_USER="#REPLACE_ME_WITH_YOUR_GMAIL_ADDRESS#"MAIL_PASSWORD="#REPLACE_ME_WITH_YOUR_APP_PASSWORD#"MAIL_HOST="smtp.gmail.com"MAIL_PORT="465"MAIL_SECURE_CONNECTION="true"

  • 將“GHOST_URL”變量的值從“#REPLACE_ME_WITH_DOMAIN_NAME#”更改為您的完整域名。
顯示遠程 Ghost 實例 URL 的終端。
  • 將“MYSQL_ROOT_PASSWORD”的值替換為足夠隨機的密碼。
  • 使用您的 Gmail 帳戶的電子郵件地址及其應用程序密碼更改“MAIL_USER”和“MAIL_PASSWORD”的值。

6. 通過運行以下命令構建 Ghost Docker 容器:

sudo docker compose up -d

設置反向代理

由於 Ghost 在後端運行,我們需要設置一個反向代理才能公開訪問 Ghost。在這種情況下,我們將使用Nginx的反向代理

1. 安裝 Nginx Web 服務器包。這將作為您的反向代理守護進程,它將從互聯網獲取連接並將其重定向到 Ghost。

sudo apt install nginx

2. 使用您喜歡的文本編輯器創建新的 Nginx 站點配置文件:

sudo nano /etc/nginx/sites-available/ghost

3. 將以下代碼塊粘貼到新站點配置文件中:

server {
listen 80;
listen [::]:80;

root /var/www/html;
server_name ghost.myvpsserver.top;


location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080;
}}

4. 為您的 Ghost 站點配置創建符號鏈接:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/

5. 使用systemctl啟用Nginx Web服務器服務:

sudo systemctl enable --now nginx.service

在 Nginx 反向代理上啟用 SSL

1. 確保您的計算機中存在“core”snap 軟件包:

sudo snap install core

2.安裝certbot snap包:

sudo snap install certbot --classic

3. 通過運行以下命令將您的 certbot 安裝註冊到您的電子郵件地址:

sudo certbot register --agree-tos --email ramces@email.invalid

4. 為您的 Ghost 博客請求新的 SSL 證書:

sudo certbot --nginx -d ghost.myvpsserver.top

5. 打開 Web 瀏覽器並加載您的域名,測試您的新 Ghost 實例是否可以通過 SSL 訪問。

顯示來自遠程服務器的正在運行的 Ghost 實例的屏幕截圖。

在本地計算機上運行 Ghost

如果您沒有服務器並想在本地計算機上安裝 Ghost,您也可以。此外,您可以使用 Tailscale 在瀏覽器上的任何位置訪問它。

1.在您的計算機中安裝 Tailscale VPN 守護程序並將其鏈接到您的 Tailscale 帳戶。轉到 Tailscale 管理員控制台,然後單擊控制台頂部欄上的“DNS”選項卡。

突出顯示 Tailscale 管理控制台上的 DNS 選項卡的屏幕截圖。

2. 單擊“尾網名稱”子類別下的“重命名尾網…”按鈕。

屏幕截圖突出顯示

3. 將計算機的主機名設置為“ghost”,後跟 Tailscale 網絡的新子域:

sudo hostnamectl set-hostname ghost.your-tailnet.ts.net

啟用 Tailscale 漏斗

1. 打開 Tailscale 管理員控制台並單擊“DNS”選項卡。

2. 向下滾動到頁面底部,然後單擊“啟用 HTTPS…”

顯示 Tailscale 主機的 HTTPS 選項的屏幕截圖。

3. 向上滾動到頁面頂部,然後單擊“訪問控制”選項卡。

屏幕截圖突出顯示

4. 單擊“將漏斗添加到策略”按鈕。

屏幕截圖突出顯示

5. 運行以下命令在 Tailscale 和本地 Docker 容器之間創建反向代理:

sudo tailscale serve https / http://127.0.0.1:8080

6. 通過運行以下命令為反向代理啟用 Tailscale 漏斗:

sudo tailscale funnel 443 on

7. 打開 Web 瀏覽器並加載您的 Tailscale 地址,測試是否可以通過 Tailscale 渠道訪問您的新 Ghost 實例。

屏幕截圖顯示了 Tailscale 上正在運行的 Ghost 安裝。

第一次使用Ghost

1. 打開 Web 瀏覽器並導航到 Ghost 安裝 URL,然後導航到子目錄“/ghost”。

Web 瀏覽器地址欄的屏幕截圖,顯示 Ghost 設置頁面的正確 URL。

2. 單擊第一個字段並為新 Ghost 博客提供名稱。在其餘字段中填寫有關您的管理員用戶的詳細信息,然後單擊“創建帳戶並開始發布”。

屏幕截圖顯示

在 Ghost 中創建您的第一篇文章

1. 單擊 Ghost 入門頁面上的“撰寫您的第一篇文章”按鈕。

顯示 Ghost 入門頁面第一步的屏幕截圖。

2. 這將打開一個純文本編輯器,您可以在其中編寫簡單的文本帖子。完成創建新的測試帖子後,單擊“發布”。

3. 檢查您的 Ghost 首頁,看看新帖子是否通過。

向 Ghost 添加新用戶

1. 返回 Ghost 管理員控制台,然後單擊頁面左側邊欄上的“成員”。

2. 點擊頁面右上角的“新會員”按鈕。

顯示當前 Ghost 實例上的成員列表的屏幕截圖。

3. 填寫新會員的詳細信息,然後單擊“保存”將其添加到博客的新聞通訊源中。

經常問的問題

Tailscale Funnel 有任何限制嗎?

是的。默認情況下,您只能通過三個端口在 Tailscale 上公開流量:443、8443 和 10000,並且只能使用 TCP。這意味著您將無法公開任何實時在線服務,例如 VoIP 和遊戲服務器。

我可以個性化 Tailscale 域名嗎?

不會。這是因為每個 Tailscale DNS 地址都是為您的特定帳戶量身定制的。這使得該服務能夠從更大的 Tailscale 網絡內的其他機器中識別出您的機器。

當我的電腦離線時,我的 Ghost 博客會停止運行嗎?

是的。在自己的硬件上託管的缺點之一是網站的正常運行時間取決於計算機的正常運行時間。這意味著每當您的主機出現故障時,您的 Ghost 博客也會出現故障。

圖片來源:工作辦公室通訊人員使用計算機博客概念和123RF 的傳統萬聖節幽靈餅乾。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *