在华为云 ECS 上搭建 Halo 个人博客:从 Docker 部署到 HTTPS 全记录

举报
yd_291246724 发表于 2026/10/24 17:18:52 2026/10/24
【摘要】 介绍如何在华为云 ECS 上通过 Docker 部署开源博客系统 Halo,并用 Nginx 反向代理与 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 进一步优化访问体验。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。