Ghost 建站指南

分享
Ghost 建站指南
Photo by Greg Rakozy / Unsplash

建站调研与方案

建站背景

  • 机器配置:1C1G20G
  • 机器环境:Ubuntu24.04
  • 核心要求:
    • 使用 Docker等容器化工具,且方便数据迁移与备份
    • 有编辑后台,且支持订阅便于扩展

建站分析报告

建站流程

系统准备(Swap + Docker)

# 创建 2GB Swap,防止内存峰值 OOM
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 安装 Docker(如未安装)并将当前用户追加入 docker 用户组(以后 docker 无需 sudo)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER && newgrp docker

部署与配置

  1. 配置 DNS:在域名站点配置 VPS IPblog.example.com 的映射
  1. 安装并配置 Ghost
    • .env
TZ=Asia/Shanghai
GHOST_URL=https://blog.example.com

# 可选,Ghost 交易邮件 SMTP,用于登录邮件、成员验证、密码等
SMTP_HOST=smtp.mailgun.org
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=noreply@email.example.com
SMTP_PASS=<Your SMTP PASS>
SMTP_FROM="Your Blog <noreply@email.example.com>"
    • docker-compose.yml
        • mail__transport: 邮件发送方式,通常为 SMTP。
        • mail__options__host: SMTP 服务器地址。
        • mail__options__port: SMTP 服务器端口 (常见端口 587, 465)。
        • mail__options__secure: 是否使用安全连接 (端口 465 时为 true, 587 时为 false)。
        • mail__options__auth__user: SMTP 认证用户名。
        • mail__options__auth__pass: SMTP 认证密码。
        • mail__from: 发件人地址,可包含发件人名称,例如 "Your Blog noreply@email.example.com"。
services:

  ghost:
    image: ghost:6-alpine
    container_name: ghost
    restart: unless-stopped
    environment:
      # ── 核心配置 ────────────────────────────────
      url: ${GHOST_URL}          # ← 改成你的域名
      NODE_ENV: production

      # ── 数据库:强制使用 SQLite ──────────────────
      database__client: sqlite3
      database__connection__filename: /var/lib/ghost/content/data/ghost.db
      database__useNullAsDefault: "true"
      database__debug: "false"

      # ── 邮件(可选,Ghost 邮件 SMTP,用于登录邮件、成员验证、密码等)──
      mail__transport: SMTP
      mail__options__host: ${SMTP_HOST}
      mail__options__port: ${SMTP_PORT}
      mail__options__secure: ${SMTP_SECURE}
      mail__options__auth__user: ${SMTP_USER}
      mail__options__auth__pass: ${SMTP_PASS}
      mail__from: ${SMTP_FROM}

      # ── V8 内存限制,防止 1G 机器 OOM ────────────
      NODE_OPTIONS: "--max-old-space-size=384"

    volumes:
      - ./content:/var/lib/ghost/content

    ports:
      - "127.0.0.1:2368:2368"

    logging:
      driver: "json-file"
      options:
        max-size: "10m"    # 保护 20G 硬盘
        max-file: "3"

    deploy:
      resources:
        limits:
          memory: 512M     # 硬性内存上限
    • 启动 Ghost
mkdir -p ~/ghost-site && cd ~/ghost-site
# 把上方 docker-compose.yml .env 保存到此目录
# 配置 .env

docker compose up -d
docker compose ps   # 确认 ghost 为 Up 状态
  1. 安装并配置 Caddy
blog.example.com {
    encode zstd gzip
    reverse_proxy 127.0.0.1:2368
}
  1. 邮件服务 Mailgun (可选)