Ghost 是 2026 年「自媒体写作者自托管」赛道里最完整的选择——比 WordPress 轻、比 Substack 自由、比 Beehiiv 更掌握数据。竹白下线后,国内中文写作者迁到 Ghost 自托管成了主流路径。本文按 Ghost 6.0 官方文档 + 2026 年 5 月中文自托管经验,拆开完整部署链路。
TL;DR
Ghost 6.0 部署:VPS(Oracle Cloud Always Free ARM 实例零月费)→ 装 Docker + Compose → 用官方 ghost:6-alpine 镜像 + MySQL 8 + Caddy 反代 → 5 分钟跑通。中文站点要把 timezone、SMTP、locale 三处调成中文环境。比 Ghost(Pro) 省 70-90% 成本。
部署前的环境检查
- VPS:1 GB RAM 起步、推荐 2 GB + 2 vCPU、20 GB SSD。Oracle Cloud Always Free / Hetzner / Vultr 都行。
- 域名:必备。新域 + Cloudflare DNS 完整生效约 5-10 分钟。
- Docker Engine ≥ 20.10:旧版不支持 Compose v2 语法。
- Docker Compose ≥ 2.0:v1 已停止维护、Ghost 6 不支持。
- VPS 网络出口:搭建 / 升级 Ghost 要从 docker hub 拉镜像约 500 MB——VPS 网络稳定性影响。SSH 跳板与管理员后台登录都建议固定海外出口,详见下文「跨地区使用 / 旅行」一节。
- 服务器时区:
timedatectl set-timezone Asia/Shanghai。 - 防火墙:放通 80、443、22 端口。
主流程:5 步部署
第一步:装 Docker 和 Compose
Ubuntu 22.04 / 24.04 VPS 上:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# 重新登录使 group 生效
docker --version
docker compose version
第二步:拉 Ghost 官方 Compose 模板
Ghost 6.0 在 github.com/TryGhost/Ghost 仓库直接提供官方模板:
mkdir -p ~/ghost && cd ~/ghost
git clone https://github.com/TryGhost/Ghost-Docker.git .
# 或手动新建 docker-compose.yml
第三步:写 docker-compose.yml
新建 ~/ghost/docker-compose.yml:
version: '3.8'
services:
ghost:
image: ghost:6-alpine
restart: always
ports:
- "2368:2368"
environment:
url: https://your-domain.com
database__client: mysql
database__connection__host: mysql
database__connection__user: ghost
database__connection__password: change-me-strong-password
database__connection__database: ghost
mail__transport: SMTP
mail__options__service: Postmark
mail__options__auth__user: your-postmark-token
mail__options__auth__pass: your-postmark-token
volumes:
- ghost_content:/var/lib/ghost/content
depends_on:
- mysql
mysql:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: change-me-root-password
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: change-me-strong-password
volumes:
- mysql_data:/var/lib/mysql
caddy:
image: caddy:2-alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
ghost_content:
mysql_data:
caddy_data:
caddy_config:
第四步:写 Caddyfile
~/ghost/Caddyfile:
your-domain.com {
reverse_proxy ghost:2368
}
Caddy 会在第一次启动时自动签发 Let’s Encrypt 证书、自动续期,零额外配置。
第五步:启动
docker compose up -d
docker compose logs -f ghost # 看日志确认启动正常
浏览器打开 https://your-domain.com/ghost → 完成 admin 账号注册 → 进 Settings 配主题、订阅、付费墙。
中文环境调整
时区
Settings → General → Publication Language 改 zh、Timezone 改 Asia/Shanghai。
主题
下载支持中文的主题(Casper / Source / Edition),upload 到 Settings → Design → Themes。主题包里 package.json 改:
{
"config": {
"locale": "zh",
"posts_per_page": 10
}
}
SMTP(避免国内邮箱拒收)
不要用 Mailgun(国内 QQ/163 收信成功率 60%)。改用 Postmark / Resend / SendGrid:
mail__transport: SMTP
mail__options__host: smtp.postmarkapp.com
mail__options__port: 587
mail__options__auth__user: your-postmark-token
mail__options__auth__pass: your-postmark-token
国内访问优化
Cloudflare DNS 接到 VPS,国内访问通过 CF 边缘节点加速。Cloudflare 免费版即可(不需 CF Pro)。
备份与恢复
全量备份
cd ~/ghost
docker compose down
tar czf ghost-backup-$(date +%Y%m%d).tar.gz \
/var/lib/docker/volumes/ghost_ghost_content \
/var/lib/docker/volumes/ghost_mysql_data
docker compose up -d
内容导出(Ghost 原生)
Ghost Admin → Settings → Labs → Export → 下载 JSON。所有文章 + 用户 + 订阅都在里面。
自动备份脚本
cron job 每天凌晨备份:
0 3 * * * /home/ubuntu/ghost-backup.sh
把生成的 tar.gz 同步到 S3 / Backblaze B2 / 阿里云 OSS(按地区选)。
常见失败原因
- MySQL 8 root 密码冲突:删 mysql_data volume 重建。
- Caddy 签证失败:检查 DNS 是否生效、80/443 端口是否放通。
- ghost 容器启动死循环:看 logs 多数是数据库连接失败——MySQL 启动慢于 Ghost。
- ARM64 VPS 上 ActivityPub 容器无法启动:AMD64-only,需 QEMU emulation。
url配错:必须是 https:// 完整域名、结尾不要 /。- 中文 SMTP 邮件被拒:不要用 Mailgun,改 Postmark / Resend。
升级 Ghost
cd ~/ghost
docker compose pull
docker compose up -d
docker image prune # 清理旧镜像
Ghost 6 minor 版本(6.x → 6.x+1)零中断升级。major 版本(6 → 7)建议先备份。
已部署完后的安全设置
- VPS 防火墙:只开 80、443、22。SSH 改用 key 登录、禁用 root 密码登录。
- MySQL 强密码:不要用示例密码。
- Ghost admin 账号 2FA:Settings → Staff → Two-step verification。
- 定时备份:cron job + 异地存储。
- 监控:Uptime Robot 监控站点 5 分钟一次。
跨地区使用 / 旅行
VPS 自托管的 Ghost 站点对管理员设备-IP 一致性敏感——长期固定 IP 管理后台,比频繁切 IP 触发的「异常登录」邮件少很多:
- 管理员设备配 长期稳定家庭 IP + 单设备绑定。
- SSH 跳板机也走同一出口。
- 旅行时不要从酒店 WiFi 登 admin 后台(公共网络 IP 信誉差,CF 可能 challenge)。
Ghost 自托管 vs Ghost(Pro) 成本对比
| 项目 | Ghost(Pro) Creator | 自托管(Oracle Free) |
|---|---|---|
| 月费 | $25 | $0 |
| 订户上限 | 1000 | 无限 |
| 自定义主题 | 全功能 | 全功能 |
| 数据所有权 | Ghost.org | 自己 |
| 维护成本 | 0 | 每月 30 分钟 |
| 邮件配额 | 含 | 自己接 Postmark($15/月含 10000 封) |
| 全年成本 | $300 | $190 |
订户超 1000 / 想完全掌握数据 / 想做付费墙变现的中文写作者,自托管划得来。
相关阅读
- Substack 自定义域名邮件认证
- Telegram 付费频道变现教程
- Ghost 自托管会员制完整教程
- 「Beehiiv vs Substack」站内对比
- 「Substack 中文创作者案例」站内评测
- 「Repurpose.io 一鱼多吃工作流」站内教程
来源与时间戳
- Ghost Developer Docs · 「How To Install Ghost With Docker」 https://docs.ghost.org/install/docker · 2026-05-19 访问
- Ghost Forum · 「Community overview of Ghost v6.0 for self-hosted installations」 https://forum.ghost.org/t/guide-community-overview-of-ghost-v6-0-for-self-hosted-installations/59236 · 2026-05-19 访问
- Docker Hub · ghost Official Image https://hub.docker.com/_/ghost · 2026-05-19 访问