Ghost 新闻邮件平台搭建教程
Ghost 是一款现代化的开源内容发布平台,最初定位为专业的博客系统,现已发展为集博客发布、Newsletter 邮件订阅和会员管理于一体的综合内容平台。它的编辑器体验出色,内置 SEO 优化和社交媒体分享功能,是个人博客、独立媒体和付费 Newsletter 的理想选择。本文将介绍如何在搬瓦工 VPS 上部署 Ghost。
一、Ghost 功能特点
- 现代编辑器:所见即所得的编辑体验,支持 Markdown、富媒体嵌入、代码块等。
- Newsletter:内置邮件订阅和 Newsletter 功能,发布文章可同时发送邮件。
- 会员系统:支持免费和付费会员,可以设置付费内容。
- SEO 优化:自动生成结构化数据、站点地图,支持自定义 meta 标签。
- 主题系统:丰富的主题市场,支持完全自定义前端。
- 集成能力:内置 Zapier、Slack、AMP 等集成。
- 多语言:支持多语言内容管理。
- API 完善:提供 Content API 和 Admin API 用于二次开发。
二、环境准备
- 搬瓦工 VPS 一台,建议 1GB 以上内存(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 域名一个。
- SMTP 邮件服务(Newsletter 发送必需)。
三、Docker Compose 部署
mkdir -p /opt/ghost
cat > /opt/ghost/docker-compose.yml <<'EOF'
version: '3.8'
services:
ghost:
image: ghost:5-alpine
restart: always
depends_on:
- db
ports:
- "2368:2368"
environment:
url: https://blog.yourdomain.com
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: ghost_db_password
database__connection__database: ghost
mail__transport: SMTP
mail__options__host: smtp.yourdomain.com
mail__options__port: 587
mail__options__auth__user: noreply@yourdomain.com
mail__options__auth__pass: smtp_password
mail__options__secure: "false"
NODE_ENV: production
volumes:
- /opt/ghost/content:/var/lib/ghost/content
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost_db_password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
EOF
重要:url 必须设置为你的实际域名,Ghost 的许多功能依赖此配置。
四、启动服务
cd /opt/ghost
docker compose up -d
查看启动日志:
docker compose logs -f ghost
服务启动后,访问 http://VPS_IP:2368/ghost 进入管理后台,按照向导创建管理员账号。
五、配置 Nginx 反向代理
cat > /etc/nginx/sites-available/ghost <<'EOF'
server {
listen 80;
server_name blog.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
client_max_body_size 50m;
}
EOF
ln -sf /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d blog.yourdomain.com
六、配置 Newsletter
Ghost 内置了 Newsletter 功能,配置 SMTP 后即可使用:
- 进入管理后台 Settings > Email newsletter。
- 配置发件人名称和回复邮箱。
- 自定义 Newsletter 模板的样式和布局。
- 可以创建多个不同的 Newsletter。
发布文章时,可以选择是否同时以 Newsletter 形式发送给订阅者。
七、会员和付费订阅
Ghost 内置了完整的会员管理系统:
- 免费会员:注册后可以访问特定内容和接收 Newsletter。
- 付费会员:通过 Stripe 集成实现付费订阅,可设置月费和年费。
- 内容访问控制:每篇文章可以设置为公开、免费会员可见或仅付费会员可见。
要启用付费功能,需要在 Settings > Membership 中配置 Stripe 密钥。
八、自定义主题
Ghost 使用 Handlebars 模板引擎。你可以:
- 从 Ghost Marketplace 下载免费或付费主题。
- 基于默认主题 Casper 进行修改。
- 从头开发自定义主题。
上传主题在管理后台的 Settings > Design > Change theme 中进行。
九、数据备份
# 备份内容文件(图片、主题等)
tar czf /opt/ghost/content_backup_$(date +%Y%m%d).tar.gz /opt/ghost/content
# 备份数据库
docker compose exec db mysqldump -u ghost -p ghost > /opt/ghost/db_backup_$(date +%Y%m%d).sql
# Ghost 也支持在管理后台导出 JSON 格式的内容备份
# Settings > Labs > Export content
十、版本更新
cd /opt/ghost
docker compose pull
docker compose up -d
docker image prune -f
Ghost 更新时会自动运行数据库迁移。建议在更新前执行备份。
十一、常见问题
Newsletter 邮件发送失败
检查 SMTP 配置是否正确,可以在管理后台 Settings > Email newsletter 中发送测试邮件。对于大量邮件发送,建议使用 Mailgun 等专业服务。
图片上传失败
检查内容目录的权限和 Nginx 的 client_max_body_size 设置。
总结
Ghost 是一个优秀的内容发布和 Newsletter 平台,特别适合独立博客、媒体和创作者。它的编辑器体验出色,内置的 Newsletter 和会员功能让内容变现变得简单。如果你只需要纯粹的邮件列表管理,可以参考 Listmonk。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。