建站调研与方案
建站背景
- 机器配置: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
部署与配置
- 配置 DNS:在域名站点配置 VPS IP 到 blog.example.com 的映射

- 安装并配置 Ghost
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 # 硬性内存上限
mkdir -p ~/ghost-site && cd ~/ghost-site
# 把上方 docker-compose.yml .env 保存到此目录
# 配置 .env
docker compose up -d
docker compose ps # 确认 ghost 为 Up 状态
- 安装并配置 Caddy
blog.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:2368
}
- 邮件服务 Mailgun (可选)