-
阿里云服务器一台
-
已备案的域名(如 ceo-tech.cn)
-
服务器已安装宝塔面板
一、安装 Docker
检查是否已安装,没装则自动安装:
docker --version || (curl -fsSL https://get.docker.com | sh && systemctl enable docker && systemctl start docker)
二、配置 Docker 国内镜像源
国内服务器直接拉 Docker Hub 镜像会超时,需要配置镜像加速:
mkdir -p /etc/docker && cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
systemctl restart docker
验证是否生效:
docker info | grep -A 5 "Registry Mirrors"
三、部署 Halo
一条命令启动:
docker run -d --name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
--restart=always \
halohub/halo:latest
参数说明:
-
-d:后台运行
-
-p 8090:8090:映射端口
-
-v ~/.halo2:/root/.halo2:数据持久化,容器删除数据不丢
-
--restart=always:服务器重启后自动启动
检查是否启动成功:
docker ps
状态为 Up 即可。
四、放行端口
阿里云安全组
阿里云控制台 → 云服务器 ECS → 安全组 → 添加入方向规则 → 放行 8090/TCP
服务器防火墙
firewall-cmd --zone=public --add-port=8090/tcp --permanent && firewall-cmd --reload
验证:
firewall-cmd --list-ports
此时访问 http://服务器IP:8090 应该可以看到 Halo 初始化页面。
五、配置域名解析
登录阿里云控制台 → 域名解析 → 添加记录:
| 配置项 | 值 |
|--------|-----|
| 记录类型 | A |
| 主机记录 | blog |
| 记录值 | 你的服务器IP |
| TTL | 默认 |
等待 1-2 分钟后验证:
ping blog.你的域名.cn
返回正确 IP 说明解析生效。
六、宝塔配置 Nginx 反向代理
添加站点
网站 → 添加站点 → 域名填 blog.你的域名.cn → PHP 选纯静态 → 提交
配置反向代理
点击站点设置 → 反向代理 → 添加反向代理:
| 配置项 | 值 |
|--------|-----|
| 代理名称 | halo |
| 目标URL | http://127.0.0.1:8090 |
| 发送域名 | $host |
配置 SSL
站点设置 → SSL → Let's Encrypt → 勾选域名 → 申请 → 开启强制 HTTPS
七、初始化 Halo
浏览器访问 https://blog.你的域名.cn,按引导:
-
设置超级管理员账号密码
-
进入后台
-
安装主题(主题市场选一个喜欢的)
-
开始写文章
常用运维命令
# 查看日志
docker logs halo
# 重启
docker restart halo
# 更新版本
docker stop halo && docker rm halo
docker pull halohub/halo:latest
docker run -d --name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
--restart=always \
halohub/halo:latest
数据存储在 ~/.halo2 目录,更新容器不影响数据。