给文字一处归宿:从零部署 Ghost 独立博客
给认真写下的文字一个安静的归处。从服务器到域名,从 Docker 到 Caddy,一步步搭建属于自己的 Ghost 独立博客。
认真写下的文字,不该只在一阵热闹后被风吹散。
它应该有一个安静的地方,可以被保存、被翻阅,也在某个时刻,被真正需要它的人看见。
Ghost 可以帮你搭建这样一片属于自己的创作空间。你可以在这里记录学习,写下思考,整理经验,展示作品。时间久了,它不只是一个网站,而会慢慢长成你的内容花园。
这里有你的名字、你的风格、你的故事,也有你被看见的可能。
Ghost 是一个开源的内容发布平台,适合用来搭建个人作品主页和独立创作空间。它拥有简洁的写作体验,支持文章发布、邮件订阅、会员系统、付费内容、数据分析和主题自定义。


麦金利.瓦伦丁的内容网站
所以,让我们开始部署吧
你需要准备的有以下东西:一台非大陆的服务器(最好是香港的),一个cloud flare账号,一个域名。
cloudflare网站:https://dash.cloudflare.com
这是域名注册网站:https://www.spaceship.com/zh
云服务器我比较推荐伤心的云:https://sadidc.com
服务器配置最低一核一G(一个月9.9),但我推荐2G2核好一点。操作系统选择ubuntu22.04.5,目前比较主流的方案。
服务器购买
打开伤心的云官网,选择服务器购买,选择自己喜欢的配置,前往配置,主机名和密码会给你随机分配,当然你也可以自定义,在操作系统里选择ubuntu,版本选择22.04,前往结账,然后在财务管理账单里找到账单并支付就可以了。


服务器管理界面,在产品与服务界面就可以查看你的服务器基本信息了。

风险提示:伤心云是属于小商家,会存在宿主机性能差以及超售等问题。追求稳定性的可以去腾讯云,阿里云,,cc,rn,ccs等等大厂。但这价格实在太香了,性价比还是可以的。买来体验玩玩还是可以的。
阿里云新人有300元免费额度金的ECS云服务器,一个月轻量云,以及一年68的2核2G的轻量云服务器。腾讯也有新人优惠,大家可以去看一波
域名购买与cloudflare托管域名
登录spceship官网后,搜索自己喜欢的域名,点击购买就可以(支持人民币付款)。域名的价格跟后缀都有关系,一般来说越好听和越受信任的域名越贵。不要购买.cn域名,这是中国域名,需要实名认证。其他可以不用 ,更省时间。购买域名成功后。即可以进入域名管理器管理域名

然后登录cloudflare官网,在域名→概述界面,点击新添加域名,选择连接域,把你的域名添加上去 ,选择0美元免费计划,然后选择继续激活,这个时候,它会让你设置DNS记录。如图



记住这两个地址,然后进入spaceship,点击库,往下拉找到域名域名管理器进入,点击你的域名,找到名称服务器,把上面的两个地址给成cloudflare给你的地址


返回cloudflare,点击我已更新我的服务器,这个时候cloudflare会去验证,验证需要一段时间。验证成功后,在cloudflare点击你的域名,点击DNS记录,添加两条记录。第一条,选择A,name填@,ip填服务器ip。第二条,选择CNAME ,name填www,目标填你的域名,如图


远程连接服务器
在完成域名购买托管和服务器购买后,你还需要下载一个远程连接SSH工具去连接服务器,虽然服务器服务商一般提供网页控制,但还是不如专业的SSH工具。我个人比较推荐finnalshell或者ishellpro。
下面我将用ishllpro来演示,ishllpro下载地址https://ishell.cc/zh-CN,进入ishellpro应用后,选择右上角新建主机。你只需要填三个关键信息:ip,用户名,密码。这三个你在购买服务器就会提供给你了,比如你在伤心的云购买后,即可以在自己的产品那里查看,如图,其他服务器商家大差不差

ishllpro界面里面,主机名字填自己喜欢的,ip,用户,密码填服务商给的。

保存主机后,点击快速连接就可以进入远程控制界面了。如图

部署ghost
一、服务器环境
首先更新一下软件列表,输入指令按回车
apt update && apt upgrade -y
升级系统软件过程中,可能会出现是否保留原配置文件的提示。一般选择保留当前配置即可。
二、安装 Docker 和 Docker Compose
安装必要依赖:
apt install -y ca-certificates curl
创建 Docker 的密钥目录:
install -m 0755 -d /etc/apt/keyrings
下载 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
设置密钥文件权限:
chmod a+r /etc/apt/keyrings/docker.asc
添加 Docker 官方软件源:
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
重新更新软件列表:
apt update
安装 Docker 和 Docker Compose 插件:
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
检查 Docker 是否安装成功:
docker --version
检查 Docker Compose 是否安装成功:
docker compose version
三、部署 Caddy 和反向代理服务
1,创建一个属于caddy的目录,并进入这个目录
mkdir -p /opt/stacks/caddy
cd /opt/stacks/caddy
先创建一个公共网络
docker network create web
编辑文件,如果没有就会新建文件并打
nano compose.yaml
services:
caddy:
image: caddy:2
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- web
volumes:
caddy_data:
caddy_config:
networks:
web:
external: true
name: web
把上面这段复制进去,ctrl+O保存,回车确定
ctrl+X退出
在同一个caddy目录,创建Caddyfile文件
nano Caddyfile
注意大小写,caddyfile和Caddyfile不是同一份文件,这里的C要大写
配置如下
blog.example.com {
reverse_proxy ghost:2368
}
blog.example.com改成你的域名,把上面这段复制进去,ctrl+O保存,回车确定,
ctrl+X退出。
在当前目录执行
docker compose up -d
等待容器启动成功
四、部署ghost本体
mkdir -p /opt/stacks/ghost
cd /opt/stacks/ghost
创建配置文件
nano compose.yaml
复制以下配置进去
name: ghost
services:
ghost:
image: ghost:6
container_name: ghost
restart: unless-stopped
depends_on:
- mysql
environment:
url: https://你的域名.com
database__client: mysql
database__connection__host: mysql
database__connection__user: ghost
database__connection__password: "改成一个强密码"
database__connection__database: ghost
NODE_ENV: production
volumes:
- ghost_content:/var/lib/ghost/content
networks:
- web
- internal
mysql:
image: mysql:8.0
container_name: ghost_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "改成另一个强密码"
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: "改成一个强密码"
volumes:
- mysql_data:/var/lib/mysql
networks:
- internal
volumes:
ghost_content:
mysql_data:
networks:
web:
external: true
name: web
internal:
MYSQL_PASSWORD,database__connection__password这两个密码要一致。因为你的ghost要连接你的数据库,密码必须一致。ROOT密码不同。域名要改成你的域名
保存文件并退出
启动ghost
docker compose up -d
等待启动成功后,访问你的域名可以打开网站。
第一次创建管理员账号,需要访问:
https://你的域名/ghost
创建一个管理员账号,就可以开始你的内容创作了
视频示范
文字写下来的那一刻,或许只是一次记录;但时间久了,它会慢慢成为来路上的痕迹,也成为某个后来者偶然停留的灯光。