1 前言
本文章将从本地部署 Halo 博客并暴露到公网,再将 Halo 数据迁移到云服务器进行部署,并做好相关配置,分两章进行说明。
2 本地部署 Halo
2.1 安装 Docker Compose
安装 Docker Compose 可查看官方文档:https://docs.docker.com/compose/install/
确保你已经安装好了 Docker 与 Docker Compose,可以通过以下命令检查版本:
docker -v
docker-compose -v
2.2 一键部署 Halo 博客服务
2.2.1 创建配置文件
在终端中创建一个用于部署 Halo 的独立目录:
mkdir halo
cd halo
vim docker-compose.yaml
然后在 docker-compose.yaml 文件中粘贴以下内容:
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
- --halo.external-url=http://localhost:8090/
halodb:
image: mysql:8.1.0
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo
networks:
halo_network:
2.2.2 启动 Halo 服务
使用以下命令启动服务:
docker-compose up -d
容器启动后,浏览器访问 http://localhost:8090/ 即可进入 Halo 初始化界面,进行基本的配置后,可以准备下一步操作了。
2.3 通过 Cloudflare 将本地服务暴露到公网
此部分建议使用 Cloudflare Tunnel,免费、无需公网 IP,无需路由器配置端口转发。
首先你需要拥有一个域名,然后才能进行下面的操作。如果是在 CF(Cloudflare)直接购买的域名,那就可以直接使用;否则需要将你的域名托管至 Cloudflare 并确认 DNS 生效。
2.3.1 安装 Cloudflare Tunnel 工具(cloudflared)
前往 https://developers.cloudflare.com/cloudflared/ 下载对应系统版本。
对于 macOS 用户,可使用 Homebrew 安装:
brew install cloudflared
安装完成后,执行以下命令登录 Cloudflare:
cloudflared tunnel login
浏览器会弹出 Cloudflare 登录页,授权后返回命令行。
2.3.2 创建并运行 Tunnel
执行以下命令来创建一个 Tunnel:
cloudflared tunnel create halo-local
然后为其添加一条路由规则(例如使用 blog.example.com
子域名):
cloudflared tunnel route dns halo-local blog.example.com
注意:你需要将
blog.example.com
替换为自己的域名并提前在 CF DNS 中添加相应记录(可自动添加)。
接着编写配置文件 config.yml
:
tunnel: halo-local
credentials-file: /Users/你的用户名/.cloudflared/halo-local.json
ingress:
- hostname: blog.example.com
service: http://localhost:8090
- service: http_status:404
然后运行服务:
cloudflared tunnel run halo-local
2.3.3 公网访问测试
此时通过浏览器访问:
https://blog.example.com
你应该能够正常访问本地部署的 Halo 博客服务。
到这里,本地调试并公网访问的配置就已完成,下一章将讲解如何将服务迁移至云服务器并结合 1Panel 进行生产部署。
3 迁移至云服务器
如果你已经在本地运行了一段时间 Halo 博客,并进行了相关配置与博文发布,那么接下来可以将数据迁移至云服务器。
3.1 备份 Halo 数据
登录 Halo 后台管理页面,在左下角点击【备份】按钮,点击“创建备份”后下载生成的 .zip
文件。
注意: 该压缩包不要解压,否则可能会导致恢复失败。
3.2 购买 VPS 并部署 1Panel 面板
选择一台 VPS,建议配置为最低 1 核 CPU + 1G 内存。安装面板前,建议更新系统并确保 curl
已安装。
执行以下命令一键安装 1Panel:
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"
安装完成后,终端会输出形如以下的访问信息:
[1Panel Log]: 请使用您的浏览器访问面板:
[1Panel Log]: 外部地址: http://x.x.x.x:24045/your_token
[1Panel Log]: 面板用户: your_user
[1Panel Log]: 面板密码: your_password
使用浏览器打开该外部地址即可进入面板界面,使用提供的账号密码登录。
注意: 若使用云服务器,请确保安全组已放行上述的端口,每次部署1panel的默认端口都会变化。
3.3 安装 Halo 博客服务
在 1Panel 面板中:
进入「应用商店」
搜索并安装:OpenResty(用于反向代理)
安装 MySQL 8.0 数据库服务
安装 Halo 博客(推荐使用官方镜像)
安装 Halo 时会提示设置端口号(如 8090)及数据库连接信息,请确保填写正确,并记录好服务运行的端口。
3.4 配置反代与 HTTPS
在「网站管理」中:
点击「创建网站」,选择使用 OpenResty。
如果你没有证书,可以通过 Cloudflare 实现 HTTPS 访问:
在 Cloudflare 的 DNS 管理中添加 A 记录:
进入「SSL/TLS」设置页,将加密模式调整为「灵活(Flexible)」
返回 1Panel,选择「一键部署」,在「已安装应用」中选择你部署的 Halo 博客应用:
输入你刚配置的域名(如 blog.domain.com)
填写 Halo 应用运行的端口(如 8090)
注意:因为使用 Cloudflare 提供的 HTTPS 加密,此处不启用 1Panel 的 HTTPS 配置。
点击「保存部署」,稍等片刻,OpenResty 即完成反代设置。
在浏览器中访问
https://blog.domain.com
,应能正常加载博客主页。
至此,你已成功将 Halo 博客部署至云服务器,支持 HTTPS 访问。
3.5 恢复备份
在博客部署完成后,如果你从本地 Halo 环境中导出了备份(.zip
文件),可通过以下步骤完成恢复:
调整 OpenResty 配置,放宽上传限制:
进入 1Panel 的「网站管理」页面,选择你的博客站点,点击「配置修改」
选择性能调整修改最大上传文件大小。
保存配置后,重启 OpenResty 服务。
登录 Halo 后台管理页面,导航到左下角的「备份与恢复」模块。
点击「恢复备份」,上传你在本地下载的
.zip
文件,等待系统处理完成。
注意: 确保上传的文件是未解压的原始备份文件,否则可能恢复失败。
恢复完成后,博客内容、配置和插件等会自动覆盖当前数据,达到本地向云端平滑迁移的目的。
4 博客配置与美化建议
Halo 博客部署完成后,可以进一步通过以下方式进行优化和美化:
4.1 主题管理
进入后台「外观 > 主题」,可以选择官方主题或上传自定义主题。
推荐主题:Dream,界面现代、响应迅速、支持丰富组件。
若使用自定义主题,上传
.zip
文件后点击「启用」即可生效。
4.2 插件系统
进入「插件市场」可直接安装各类插件。
实用插件推荐:
RSS 订阅插件:便于内容分发
评论管理插件(Twikoo、Valine)
数据备份插件:自动化备份
统计分析插件(如 Busuanzi)
4.3 博主信息与个性化配置
在「设置 > 基本信息」中填写站点名称、描述、备案号等
设置「关于我」信息、社交链接
设置博客图标(favicon)与网站 logo,可提升辨识度
4.4 页面与菜单管理
使用「页面管理」功能可以添加如友链页、留言页等
设置菜单栏顺序和跳转链接
可使用 Markdown 编辑页面内容,自由度高
4.5 自动备份与升级
定期点击「备份管理 > 新建备份」,并下载保存
也可以部署定时脚本实现自动备份(如结合 cron + rclone)
可在后台或镜像源检查更新,进行版本升级
至此,你已经完成从本地部署、云端迁移、反代 HTTPS 到主题美化和插件配置的完整 Halo 博客建设之旅。希望本教程对你有所帮助,愿你写作愉快,博客长存!
评论