Telegram 频道 Telegram 群组 membership membership

2025.08.04 更新: Ghost 正式推出了 6.0 版本

前言

本文由于讲得稍微细一些所以字数较多,但实际操作起来不会超过10分钟(系统网络环境好的前提下)操作时绝大部分时候其实都是在等待安装。文章部分内容基于官方文档翻译,并总结了一些常见的坑及其解决方案。

How to install Ghost, the official guide
Everything you need to know about working with the Ghost professional publishing platform.

关于 Ghost:(节选自 维基百科

Ghost 是一款个人博客系统,其设计主旨是简化个人网站发布以及网上出版的过程。官方也提供开发插件的API和可以定制的Handlebars主题模板样式。

官方提供了多种搭建的方式,其中包括官方托管、第三方托管以及自托管(俗称 自建)

Ghost由John o'nolan于2013年创立,它是由前 WordPress 的一些优秀员工的创业项目。项目仍然采用 100% 开源,加上官方的收费托管的商业模式,目前已经发展成为一个非常的博客系统。

相比于Wordpress,Ghost更专注于写作!由于 Wordpress 实在是太多东西可以优化了(它的优点,同时对非专业用户也是缺点),导致有点像专门去折腾优化的而不是来写作的,所以我也从 Wordpress 换到了 Ghost。


如何选择搭建方式

不熟悉 Linux / 纯小白

关于搭建,如果你是一个对 Linux 不太熟悉,也没什么时间再去学习代码以及网络方面知识的话。

我推荐你选择 托管这种方式的好处就是有专业人士替你维护服务器,你只需要专注于自己的内容更新。

不少人搭建博客可能就为了图一乐,写点小文章,记录一下身边的美好。不希望花大价钱购买域名、服务器,也不希望花太多时间去维护。那么官方/第三方托管是你最好的选择!

官方托管

还有另一类符合选择托管(官方)的人群:需要 All in one 服务

  • 专人打理服务器
  • 解决部分地区\全球访问速度
  • 每月有发送 Newsletter 的需求。(邮局是一笔不小的费用)
  • 等等。。。
Ghost 官方托管价格表,点击图片可跳转至 Ghost Pro 页面
优点
  • 无需自行打理服务器,仅需专注于内容创作。
  • 包含付费的 FASTLY CDN
想知道访问速度的话, 本博客也在使用官方托管,使用是的 FASTLY CDN 。
  • 不限次数的emails (Newsletter)
💰
如果每月发送的 Newsletter 人数不少的话,比 maillgun 划算。
缺点
  • 偏贵,最低每月$15起。(Ghost 6.0 推出后涨价了)
  • 按注册用户量进行阶梯收费

当然,也有相对较便宜的第三方托管(后面会讲)。


熟悉 Linux / 热爱折腾

如果你对 Linux 有初步了解,或者就是喜欢自己折腾一下。那么我推荐你选择 自托管 ,这种方式的好处是 相对省钱高度自定义 。当然,在后期如果你是想要认真打造一个博客的话,在 域名服务器 方面的成本会稍有提升。

爱折腾的人,我推荐是使用 托管+自托管 。在自托管的机器折腾,如果不小心配置错误会导致用户无法访问,如果你刚好不会修还得花时间搜索解答,且有的 VPS 商家还不支持在面板一键重装系统。因此托管的机器最适合用来折腾,然后将最终版本在自托管服务器中上线。

面向群体及服务器选择

服务器类型: Ghost 支持 AMD和ARM!!!所以在使用 Rclone 做好数据备份的前提下,甲骨文也是可以一战的。

💡
你的面向群体决定了 VPS线路是否需要大陆优化、域名是否需要备案。
  • 如果你是面向国内的博客,请优先选择 阿里云/腾讯云 等大厂的国内机器。

优点:国内访问速度更快,无需担心被墙无法访问的情况。

缺点:域名需要走流程备案,否则无法解析。


  • 如果你不考虑面向国内用户,VPS 则有非常多的选择,有钱人可以直接上AWS、GCP、Azure等大厂,中规中矩的话可以选择下面价格商家。

优点:再差的机器套上 Cloudflare 也差不到哪里去了,并且无需备案。

缺点:鱼龙混杂,尽量选择大厂和已运营多年的商家。

部署 - 托管服务(以 PikaPods 举例)

优点
  • 无需自行打理服务器,仅需专注于内容创作。
缺点
  • 自定义程度低于自行部署在 VPS 的 Ghost
  • Ghost 版本更新速度慢于官方版本 1-2 周。

准备步骤

  • 提前购买一个域名(非必需)
  • 一张国际信用卡💳 / 美区PayPal
一个好的域名有利品牌推广,优秀的域名能够让客户很快的记住并找到你,创造品牌价值,吸引回头率。

一键部署

1、进入 PikaPods 的官网,并注册账号(新用户可得$5额度,无需绑卡)

PikaPods - Instant Open Source App Hosting
Run the finest Open Source web apps from $1/month, fully managed, no tracking, no ads.

2、点击右上角 ADD PODS 创建一个新容器

3、容器配置

BASICS

  • Choose App : 输入 Ghost
  • Pod Name: 输入你想要的名字,
  • Pod Region: 容器所在区域(创建后无法迁移至另一地区)
2022.09.21 更新:官方邮件发来一封邮件称:由于香港地区服务器需求过低,因此下架了香港地区服务器并迁移至了洛杉矶。(但是会对亚洲地区进行优化)
2025.08.05 更新:US 地区容器访问速度

ENV VARS 栏(环境变量)

可选,如无特别需求无需修改。


RESOURCES

配置 CPU、内存、硬盘空间

过低的配置将导致网站访问缓慢。

默认的 0.5C,1G 配置仅为系统需求的最低配置,不代表可以流畅访问。
  • 容器创建后,配置也能随时调整。
  • 系统会给出所需的最小配置,你可以根据自己的喜好修改。
  • 这里的硬盘空间是指你博客的图片、文字等占用的空间,Ghost 本体的占用不会算在里面。

完成所有配置后,点击 ADD POD 等待20秒即可完成创建。


4、 完成最后的网站配置

💡
/ghost 指向的是博客后台,也就是管理员面板。

点击箭头所指的地址,配置网页标题和管理员信息

  • Site title: 网站标题
  • Full name: 全名,看个人喜好填写。可以是真名,也可以是昵称。
  • Email address:邮件地址,以后可以用它登陆博客后台
  • Password:密码

5、 修改为自己的域名(可选)

PikaPod 会提供一个免费且可以自定义的三级域名供你使用。

如果你已经购买域名,还可以开启 Custom Domain 开关,并配置 CNAME 以使用自己的域名。

点击 齿轮⚙️ 可以进入设置面板

6、SFTP

由于该服务器是以容器的形式创建,因此你并不能像使用 VPS 一样使用 SHH 连接。

当你想要访问/修改容器内的文件时,你就需要用到 SFTP 功能。

开启后会显示访问容器的所需的:地址、用户名、端口、密码。

你可以使用 TermiusFileZilla 等工具进行连接,并修改\上传文件。


更多关于优化 Ghost 的教程会在下一篇推出。


部署 - 自有服务器

前置要求

如果你对服务器操作不熟悉,推荐使用全新安装的系统环境进行操作,否则后续可能出现一些你不知道如何修复的迷之报错!
  • 拥有一台基于 Linux 的服务器(最低运行内存,取决你采用 Docker 还是 Ghost-CLI 进行安装)
  • 拥有一个域名,并将 DNS 的 A 记录指向服务器 IP 地址
  • 连接 SSH 的工具,例如 TermiusXshellFinalShell

Docker (预览版)

官方推荐的生产环境(Ghost 6.0)

  • 运行 Linux 的服务器( 至少 2GB 内存/1 核 CPU )
  • 已安装 Docker(版本 20.10.13 或更高),有关安装说明,请参阅 Docker 安装指南
  • 拥有一个域名,并将 DNS 的 A 记录指向服务器 IP 地址
  • 用于发送事务性电子邮件的 SMTP 服务(详见邮件配置文档
  • (可选)用于网站流量分析的 Tinybird 帐户
💡
Ghost 在 6.0 版本开始支持 Docker Compose 部署(开发者预览版),并计划在 7.0 版本作为默认的部署方式以取代 Ghost-CLI

Ghost 在 6.0 版大更新中,推出了一套基于 Docker 和 Compose 的自托管新工具(预览版)

为了在不让 Ghost 变得臃肿的前提下继续添加高级功能,他们开始把部分功能做成独立服务。使用 Docker 和 Docker Compose 可以大大简化不同服务及其依赖的管理,这样我们就能保持 Ghost 架构的简洁,同时不把复杂性推给自托管用户。

所有这些服务都是开源的,支持自托管。

How To Install Ghost With Docker (preview) - Ghost Developer Docs
Preview our new batteries-included tools for self-hosting Ghost using Docker Compose.

在这里了解如何使用 Docker 部署,或将现有的 Ghost-CLI 安装进行迁移


Ghost-CLI

💡
Ghost 在 6.0 版本开始支持 Docker Compose 部署(开发者预览版),并计划在 7.0 版本作为默认的部署方式以取代 Ghost-CLI

官方推荐的生产环境(Ghost 6.0)

  • 搭载 Ubuntu 22.04 or Ubuntu 24.04 的服务器,AMD 和 ARM 架构均可;
  • NGINX(至少需要 1.9.5 版本以支持 SSL);
  • 受支持Node.js 版本
  • MySQL 8;
  • 一台至少拥有 1GB 内存的服务器。

开始部署

💡
无需担心,你只需要复制粘别即可完成安装!

Ghost Blog 是一款开源的 动态博客 ,它不可以像静态博客一样使用 Vercel/Railway/Netfily 这类 SaaS 平台托管,因此我们需要准备一台服务器来运行 Ghost。

指南的这一部分将确保满足安装 Ghost-CLI 的所有先决条件。

1. 更新软件包

打开您的终端/SSH工具,并连接服务器:

确保软件包列表和已安装的软件包是最新的。

# 通过终端/软件连接SSH
ssh root@你的服务器ip

# 更新系统软件包
sudo apt update && apt upgrade -y

如果你登陆的不是root用户,可能会要求你输入密码进行授权验证。

部分用户可能会提示下图,直接选择 keep the local version currently installed ,后续如有提示可能还需要重启一次服务器。


2. 创建新用户
⚠️
注意:用户名使用 ghost 会导致与 Ghost-CLI 冲突,你可以使用除 ghost 以外的任何名称
# 创建一个新用户并按照提示操作创建密码,用户名需自行替换(不得使用 ghost 作为用户名)
adduser 用户名

例子:我想使用 yummy 作为用户名,则输入 adduser yummy,随后就会看见下面的代码。

Adding user `yummy' ...
Adding new group `yummy' (1000) ...
Adding new user `yummy' (1000) with group `yummy' ...
Creating home directory `/home/yummy' ...
Copying files from `/etc/skel' ...

# 看到这行的时候输入你希望设置的密码。(为了防偷窥,输入的密码是隐藏不可见的,输入完毕后回车即可)
New password: 

# 重新输入上一步的密码
Retype new password: 

# 看见这步则提示两次输入的密码相同,创建密码成功
passwd: password updated successfully
Changing the user information for yummy

# 这里可以无脑回车,你也可以自定义
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 

# 确认信息输入正确后输入 y 并按下回车
Is the information correct? [Y/n] 

注意:用户名不要使用 “ghost” ,这会导致与 Ghost-CLI 发生冲突。

为新增用户添加 sudo 权限,并将当前身份切换为该用户。

# 赋予用户 sudo 权限
usermod -aG sudo 用户名

# 切换到刚刚创建的新用户
su - 用户名

3. 安装 NGINX

Ghost 需要使用到 NGINX 服务,SSL配置需要搭载 NGINX 1.9.5 或更高版本。

# 安装 NGINX
sudo apt-get install -y nginx

如果系统中ufw 处于开启状态,则需要防火墙允许 Nginx 的 HTTP 和 HTTPS 连接。

# 打开防火墙
sudo ufw allow 'Nginx Full'

# 开启成功将得到以下回应
Rules updated
Rules updated (v6)

4. 安装 MySQL

接下来,您需要安装 MySQL 作为数据库。

# 安装 MySQL
sudo apt-get install -y mysql-server

MySQL 安装完成后,需要重设数据库 root 用户密码。

# 重置 MySQL root 密码
sudo mysql

# ‘mysql> ’ 字段不用复制
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> quit;

5. 安装 Node.js
注意:Ghost 仅支持 Node.js 22.x 版本
#下载并导入节点GPG密钥
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

# 创建deb库
NODE_MAJOR=22 # Use a supported version
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

# 运行更新和安装
sudo apt-get update
sudo apt-get install nodejs -y
服务器设置已完成,下面开始安装 Ghost-CLI

安装 Ghost-CLI

Ghost-CLI 是一个命令行工具,可帮助您快速轻松地安装和配置 Ghost 以供使用,可以使用 npmyarn 安装。

# 使用 npm 安装 Ghost-CLI
sudo npm install ghost-cli@latest -g

安装后,您可以随时运行 ghost help 以查看可用命令列表。

安装完成后可能会看到以下提示,这是由于 npm 存在新版本可升级的提示,不是软件报错!这里可以自行选择是否需要升级。

npm notice New major version of npm available! 10.9.3 -> 11.5.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.5.2
npm notice To update run: npm install -g npm@11.5.2

# 升级 npm(根据实际修改)
sudo npm install -g npm@11.5.2

安装 Ghost

当完成服务器设置以及安装 Ghost-CLI,我们就可以开始安装 Ghost 本体了

1. 创建一个目录,并给予该文件夹权限
# 创建目录: 更改“站点名”为你喜欢的任何名称
sudo mkdir -p /var/www/站点名

# 设置该目录的所有者: 将用户名替换为“服务器设置”步骤中创建的用户名
# 注意区分用户名和站点名!
sudo chown 用户名:用户名 /var/www/站点名

# 设置文件夹权限
sudo chmod 775 /var/www/站点名

# 前往文件夹
cd /var/www/站点名
2. 运行安装进程

现在我们用最后一个命令行安装 Ghost。

# 开始安装 Ghost 本体
ghost install

# 检查系统环境
✔ Checking system Node.js version - found v22.18.0
✔ Checking current folder permissions
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v6.0.0
✔ Finishing install process

如果被检测到任意一项未被正确设置,可能是由于你的系统环境较为混乱。这种情况需要您自行 Google 寻求解答。

推荐使用全新安装的纯净系统再次尝试。
安装配置

在安装过程中,CLI会询问一些关于站点配置的问题。

💡
安装过程中,每个配置中的()显示的内容均为默认配置,若无需修改可直接回车确认。

注意事项

  • 如果安装出现严重问题,请使用 ghost uninstall 进行卸载,然后重试。这比直接删除文件夹更好,可以确保没有残留的痕迹。
  • 如果安装中断或连接丢失,请使用 ghost setup 重新启动配置流程。
1、博客网址

在进行这一步前,请先前往 Cloudflare 、DNSPODS 等网站绑定A记录,才能正常解析自己的域名。

通过 CloudFlare 开启全站 Https
本文将介绍如何注册 Cloudflare,并将域名托管在 Cloudflare,最后利用 CloudFlare 的「灵活模式」开启全站 Https。

如何使用Cloudflare 可参考此篇文章的前半段。

# 输入网站要绑定的域名,不可使用IP地址作为域名,会报错!!!
? Enter your blog URL: http://xxx.com 或 https://xxxx.com

给纯小白的贴士:这里不一定非要 .com 网站

如果您使用 HTTPS,Ghost-CLI 将提供为您设置 SSL。

2、MySQL 主机名
  • 这决定了从何处访问 MySQL 数据库
  • 当 MySQL 安装在与 Ghost 同一台服务器上时,请使用 localhost(按Enter键使用默认值)。
  • 如果MySQL安装在其他服务器上,请手动输入对应主机名。
# 输入 MySQL 数据库服务器地址、用户名、密码、数据库名称
? Enter your MySQL hostname: localhost
3、MySQL 用户名/ 密码
  • 如果你已经有一个 MySQL 数据库,请输入用户名。
  • 否则,请输入 root ,然后输入 root 用户的密码。
? Enter your MySQL username: root
? Enter your MySQL password: [input is hidden] 
4、Ghost 的数据库名称
  • 你可以自定义,也可以直接使用默认值,随后系统会开始自动设置
  • 如果您在上一步中使用的是非 root 的 MySQL用户名/密码,你需要确保该数据库已经存在并且具有正确的权限。
# 输入数据库名称,这里系统会随机生成一个,直接回车即可。
? Enter your Ghost database name: db_ghost

✔ Configuring Ghost
✔ Setting up instance
+ sudo useradd --system --user-group ghost

# 输入用户密码
? Sudo Password [input is hidden] 

+ sudo chown -R ghost:ghost /var/www/yummy/content
✔ Setting up "ghost" system user
5、设置 Ghost MySQL 用户(推荐)

如先前 MySQL 使用的是 root ,此处可以让 Ghost-CLI 自动创建一个属于 Ghost 数据库的用户

# 输入 Y 确定创建
? Do you wish to set up "ghost" mysql user? (Y/n) 

✔ Setting up "ghost" mysql user
6、自动设置 NGINX? (推荐)

自动设置 NGINX,使您的站点能够被外部访问。你也可以自己手动设置 NGINX,但为什么要为难自己?

如果本机先前已搭建有其它网站或需要使用自定义的网站环境,需要跳过自动配置 Nginx 与 SSL 证书
# 输入 Y 完成自动配置
? Do you wish to set up Nginx? (Y/n)

+ sudo mv /tmp/1230-one/1230.one.conf /etc/nginx/sites-available/1230.one.conf
+ sudo ln -sf /etc/nginx/sites-available/1230.one.conf /etc/nginx/sites-enabled/1230.one.conf
+ sudo nginx -s reload
✔ Setting up Nginx
7、自动设置 SSL(推荐)

如果你为博客网址启用了https ,并且已经将你的域名指向正确的 ip,Ghost-CLI 可以自动使用 Let’s Encrypt 为你设置 SSL。

或者,你可以在任何时候重新运行ghost setup ssl 来继续设置。

# SSL证书设置需要一个电子邮件地址,以便在证书有任何问题时(包括在续订期间)随时通知您。
? Enter your email (For SSL Certificate)

Ghost-CLI可以使用 Let's Encrypt 自动为您设置SSL。或者,您可以稍后通过随时运行 "ghost instal ssl" 来执行此操作。

8、设置 systemd(推荐)

systemd 是推荐的进程管理器工具,以保持 Ghost 平稳运行。我们建议选择 yes,但也可以自行设置流程管理。

# 输入 Y 设置 systemd
? Do you wish to set up Systemd? (Y/n)

+ sudo mv /tmp/yummy/ghost_yummy.service /lib/systemd/system/yummy.service
+ sudo systemctl daemon-reload
✔ Setting up Systemd
+ sudo systemctl is-active ghost_yummy

9、启动 Ghost

# 输入 Y 启动 Ghost
? Do you want to start Ghost?  (Y/n)
+ sudo systemctl start ghost_yummmy-best
+ sudo systemctl is-enabled ghost_yummmy-best
+ sudo systemctl enable ghost_yummmy-best --quiet
✔ Starting Ghost

Ghost uses direct mail by default. To set up an alternative email method read our docs at https://ghost.org/docs/config/#mail

------------------------------------------------------------------------------

# 当显示这条信息时,表示 Ghost 已完成安装流程
Ghost was installed successfully! To complete setup of your publication, visit: https://你的域名/ghost/

你已经成功安装了 Ghost,Enjoy! 🎉🎉🎉

10、站点配置

打开浏览器,输入你的博客域名,即可看到博客首页‌

如果想要进入管理员后台的话只需要在域名的加上 /Ghost 即可进入后台,例如:https://你的域名/ghost

首次登陆后台需要注册管理员信息,请牢记你的注册邮箱以及密码。

更多关于优化Ghost的教程会在下一篇推出。


Telegram 频道 Telegram 群组 membership membership

目录
很好! 下一步, 完成电子邮件的验证以获得 Yummy's Blog 的完全访问权限.
“欢迎回来!您已成功登录
您已成功订阅 Yummy's Blog.
成功!您的账户已经完全激活,您现在可以访问全部内容了。
您的账单信息已更新!
您的账单信息需要更新!