这篇教程带你手把手在 Ubuntu 24.04 服务器上搭起 Ghost 博客平台!Ghost 是个用 Node.js 写成的开源博客神器,专为写博客而生,能让你轻松搞出又现代又好看的博客站点。跟 WordPress 那种大而全的内容管理系统比,Ghost 轻量得多、速度也快得多,简直是专注党福音。
Ghost 有什么好玩的
写这篇时,最新版 Ghost 是 v5.80.2,2024 年 3 月 28 号刚出炉。亮点一箩筐:
- Markdown 编辑器,码字飞起
- 内容管理简单到爆
- 团队协作编辑,喊小伙伴一起玩
- 定时发布,懒人福利
- 自带数据分析,看谁在偷偷看你文章
- SEO 直接内置:语义标记、固定链接、XML 站点地图、规范标签、自动元数据还能手动改
- 内置 AMP(加速移动页面)支持
- 完整 RSS 订阅、邮件订阅表单、Slack webhook 随便连
- 官方主题市场几百款免费/付费主题,随便挑
- 默认主题 Casper 超好看,还带暗黑模式
- 跨平台桌面客户端,Linux、Mac、Windows 全覆盖
- 官方 Ghost Migrator WordPress 插件,一键从 WordPress 逃离
Ghost 基金会也提供托管服务,但咱们今天要玩自托管,在 Ubuntu 上自己搭一个!

准备工作
跑 Ghost 至少要 1GB 内存。我强烈安利 Kamatera VPS,亮点如下:
- 30 天免费试用
- 起步 $4/月(1GB 内存)
- 高性能 KVM 虚拟化
- 全球 9 个数据中心:美国、加拿大、英国、德国、荷兰、香港、以色列
按下面教程在 Kamatera 搞个 Linux VPS,建议用 Ubuntu 24.04 LTS,兼容性最好。
VPS 搞定后,还得有个域名。我在 NameCheap 注册的,价格香,还终身免费送 whois 隐私保护。
注意:我用 sudo 用户 装的 Ghost,强烈建议你也别用 root!先建个 sudo 用户:
sudo adduser username
sudo adduser username sudo
然后切过去:
su - username
第一步:更新系统
服务器好久没更新?先来一波:
sudo apt update; sudo apt upgrade -y
第二步:装 Node.js
Ghost 要 LTS 版 Node.js,非 LTS 免谈。目前最新是 v22.x,但 Ghost 更稳在 v18.x。加 NodeSource 源:
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
装上:
sudo apt install -y nodejs
检查版本:
node -v
# 示例输出:v18.20.2
npm -v
# 示例输出:10.5.0
第三步:装 MariaDB 数据库
Ghost 支持 MySQL 和 MariaDB,咱们选 MariaDB,它就是 MySQL 的开源替代品,由原 MySQL 团队操刀,防 Oracle 闭源。
sudo apt install mariadb-server mariadb-client
装好后 MariaDB 自动启动,检查状态:
systemctl status mariadb
没跑?启动它:
sudo systemctl start mariadb
开机自启:
sudo systemctl enable mariadb
跑安全脚本:
sudo mysql_secure_installation
- 第一次问 root 密码,直接回车(还没设)
- 别切 unix_socket 认证,默认就用这个
- 别改 root 密码,用 unix_socket 不用设
- 后面全回车:删匿名用户、禁远程 root、删测试库
再查版本:
mariadb --version
# 示例:mariadb Ver 15.1 Distrib 10.11.7-MariaDB...
第四步:为 Ghost 建库建用户
登录 MariaDB:
sudo mariadb -u root
建库(我叫 ghost,你随便):
create database ghost;
建用户并给权限:
grant all privileges on ghost.* to ghost@localhost identified by 'ghost_password';
刷新权限,退出:
flush privileges;
exit;
第五步:装 Nginx
Ghost 要用 Nginx 当反代:
sudo apt install nginx
用 UFW 防火墙?开 80/443:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
第六步:域名 A 记录
装 Ghost 前,记得给博客域名建 DNS A 记录,指向服务器 IP。
第七步:正式装 Ghost
先全局装 Ghost-CLI:
sudo npm install ghost-cli@latest -g
建目录:
sudo mkdir -p /var/www/ghost/
给权限(把 username 换成你的):
sudo apt install acl
sudo setfacl -R -m u:username:rwx /var/www/ghost/
sudo chmod 775 /var/www/ghost
切目录,开始安装:
cd /var/www/ghost/
ghost install
会检查环境、装依赖。过程中:
? Enter your blog URL: https://yourdomain.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost
? Enter your MySQL password: ghost_password
? Enter your Ghost database name: ghost
- 强烈建议选 Y 让它自动配 Nginx + SSL
- 也选 Y 配 Systemd 服务,方便重启
装完去 https://yourdomain.com/ghost 完成设置,先建个管理员账号。

之后可以邀请团队成员,或先跳过。
第八步:改 Nginx 配置(支持 www)
默认只配一个域名,想 www 和非 www 都行?编辑配置文件:
sudo nano /etc/nginx/sites-enabled/yourdomain.com.conf
找到:
server_name yourdomain.com;
改成:
server_name yourdomain.com www.yourdomain.com;
保存退出,删掉多余的 SSL 文件:
sudo rm /etc/nginx/sites-enabled/yourdomain.com-ssl.conf
装 Certbot:
sudo apt install certbot python3-certbot-nginx
一次性拿 www 和非 www 的证书:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com,www.yourdomain.com
重启 Nginx:
sudo systemctl restart nginx
第九步:搞定邮件通知
想让 Ghost 发密码重置、邀请成员、订阅确认邮件?得配 SMTP。两条路:
方案一:SMTP 中继(超简单)
用中继服务,我推荐 Sendinblue,按教程搭 Postfix 中继。
搭好后改 Ghost 配置:
sudo nano /var/www/ghost/config.production.json
默认:
"mail": {
"transport": "Direct"
},
改成:
"mail": {
"transport": "Sendmail",
"from": "notifications@yourdomain.com"
},
重启 Ghost:
sudo systemctl restart ghost_yourdomain-com.service
方案二:自建邮件服务器
想玩硬核?用 iRedMail 一键搭。
搭好后改配置:
"mail": {
"transport": "SMTP",
"from": "notifications@yourdomain.com",
"options": {
"service": "yourdomain.com",
"host": "mail.yourdomain.com",
"port": 465,
"secureConnection": true,
"auth": {
"user": "notifications@yourdomain.com",
"pass": "the_email_account_password"
}
}
},
注意:Ghost 不支持 587 端口!保存后重启服务。
故障排除:手动配 Nginx
装的时候蹦出 “Nginx is not installed. Skipping Nginx setup”?手动来!
建配置文件:
sudo nano /etc/nginx/conf.d/ghost.conf
填入:
server {
listen [::]:80;
listen 80;
server_name example.com www.example.com;
root /var/www/ghost/;
access_log /var/log/nginx/ghost.access.log;
error_log /var/log/nginx/ghost.error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2368;
proxy_redirect off;
}
# 让 Let's Encrypt 验证通过
location ~ /.well-known {
allow all;
}
}
测试配置:
sudo nginx -t
没问题就重载:
sudo systemctl reload nginx
再装 Certbot、拿证书、重启 Nginx,完事儿!
搞定!现在你的 Ghost 博客已经飞起来了,赶紧去写第一篇吧~有啥问题评论区见,我随时来救场!
总结:一口气把 Ghost 博客玩转!
兄弟,折腾完这篇教程,你已经在 Ubuntu 24.04 上把 Ghost 搭得飞起!从零到一,干了这些大事:
- 系统更新 + Node.js 18 LTS:打好底层,稳如老狗
- MariaDB 建库建用户:数据安全又简单
- Nginx + HTTPS:自动配 SSL,www 和裸域全吃
- Ghost-CLI 一键安装:环境检测、依赖拉满,省心到爆
- 邮件通知搞定:中继 or 自建,随你骚操作
- 手动 Nginx 救场:万一自动翻车,手动配置秒救
现在打开 https://你的域名.com,登录后台,码第一篇 Markdown 文章,主题随便换,暗黑模式一开,妥妥的现代感!
一句话收尾:WordPress 太重?Ghost 轻快又纯粹,专注写字,专注逼格。赶紧行动,博客界下一个大V就是你!🚀
有坑?评论区吼我,我在线蹲守!
2460

被折叠的 条评论
为什么被折叠?



