在华为云 ECS 上搭建 Halo 个人博客:从 Docker 部署到 HTTPS 全记录
一、Halo 简介
Halo 是一款开源的现代化博客系统,基于 Java 开发,支持 Docker 部署,自带主题市场与插件生态,适合搭建个人技术博客。相比传统方案更轻量,2 核 4G 的 ECS 即可流畅运行。
二、准备工作
- 一台华为云 ECS 实例(建议 2 核 4G 及以上);
- 已绑定弹性公网 IP,可通过 SSH 登录;
- 安全组入方向放通 22、80、443 端口;
- 一个已解析到 ECS 公网 IP 的域名(开启 HTTPS 需要)。
三、安装 Docker
以 CentOS 为例,推荐 Docker 官方一键脚本:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker --version
Ubuntu 同样支持该脚本,安装完成后确认命令可用即可。
四、部署 Halo
Halo 2.x 提供官方 Docker 镜像,一条命令即可启动:
mkdir -p ~/.halo2 && chmod 755 ~/.halo2
docker run -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.20
-v 参数把 Halo 工作目录(数据库、附件、主题配置)挂载到宿主机,容器重建数据不丢失。启动后访问 http://ECS公网IP:8090,按引导完成站点初始化,即可进入控制台开始写作。
五、Nginx 反向代理
直接通过 IP 加端口访问体验不佳,也无法使用 HTTPS。安装 Nginx 后新增配置:
server {
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://127.0.0.1:8090;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
WebSocket 相关请求头是 Halo 控制台正常工作的关键,不要遗漏。重载 Nginx 后即可通过域名访问博客。
六、开启 HTTPS
yum install -y certbot python3-certbot-nginx
certbot --nginx
按提示选择域名并完成验证,Certbot 会自动修改 Nginx 配置、加载证书并配置定时续期。也可以使用华为云 SSL 证书服务申请的证书,手动配置到 Nginx。
七、数据备份
Halo 的全部数据保存在 ~/.halo2 目录,定期打包并同步到华为云 OBS 等对象存储,即可实现异地容灾:
tar -zcvf halo-backup-$(date +%F).tar.gz ~/.halo2
八、总结
通过 Docker 部署 Halo,配合 Nginx 反向代理与 HTTPS 证书,一小时即可在华为云 ECS 上拥有一套完整的个人博客。后续可以通过 Halo 主题市场个性化站点外观,或结合 CDN 进一步优化访问体验。
- 点赞
- 收藏
- 关注作者
评论(0)