一、Halo是什么?

如果你是小白,当你搜索如何搭建个人网站时,你大概率会搜到WordPress。但是,用WordPress建站可能会让你很崩溃,这是一个很古老的建站工具了,即使理论上wordpress你能想到的所有功能它都可以实现,但是学习曲线较陡峭,对于小白很不友好。如果你只想快速搭建一个好看的博客网站,平时写写文章,那么推荐使用Halo2.0。

Halo 是一款轻量、开源、现代化的建站工具,最初定位为个人博客系统,但在 2.x 版本后升级为功能更全面的建站平台。它基于 Java 开发,支持 Docker 一键部署,自带后台管理系统和丰富的插件生态,适合技术小白到开发者使用。

2025-05-10_19-43.png

简单来说,你可以把halo看作一个更简单的 WordPress。相比于WordPress,Halo采用更新的架构,更现代化的UI设计语言,而且同样完全开源免费。无需复杂的代码配置,通过可视化界面即可管理文章、主题、插件等,甚至能搭建企业官网、知识库等多样化的站点。本站就是使用Halo进行搭建的,如果你喜欢,欢迎尝试一下。看完这篇文章,保证你也能学会!Let's step by step上线你的专属网站吧!😎

相关文档

二、为什么选择 Halo?

  1. 操作简单,适合小白
    • 自带后台管理界面,无需命令行操作即可发布文章、更换主题。
    • 支持一键 Docker 部署,省去环境配置的麻烦。
  2. 轻量高效,资源占用低
    • 1 核 2G 内存的服务器即可流畅运行,适合个人博客搭建,低成本运营。
  3. 功能灵活,扩展性强
    • 插件机制支持自定义功能(如评论系统、SEO 优化)。
    • 多存储策略可对接本地、腾讯云 COS 等存储方式。
  4. 主题丰富,界面美观
    • 提供多款免费主题,支持自定义模板,轻松打造个性化博客。
  5. 迁移与维护便捷
    • 通过 Docker 容器技术,备份和迁移数据只需复制配置文件。

三、如何搭建?

购买云服务器和域名

服务器:首先你需要购买一台云服务器。如果知识搭建个人博客网站的话,1 核 2G 内存的配置即可,最好提供公网IP,这样就不需要做内网穿透。推荐腾讯云、阿里云、京东云等大厂的云服务商,有利于保护自己的数据安全,以及没有删库跑路的风险。可以关注一下这些大厂的活动,例如阿里云,对于大学生来说,完成大学生实名认证通常可以免费白嫖一年的高带宽服务器。

阿里云:https://cn.aliyun.com

腾讯云:https://cloud.tencent.com

京东云:https://www.jdcloud.com

另外需要注意的是,如果你的服务器是位于国内的服务器,则需要主动向公安机关备案,通常20多个工作日才能审批通过。如果你的云服务器位于国外(包括港澳台),则无需备案,搭建好直接就可以上线,但是也需要进行实名登记,不能做违法行为。这里,我推荐大家可以使用香港地区的云服务器,因为距离近访问速度较快,而且无需备案(一般搭建个人博客也没有太多风险)。

域名(可选):如果你不想让你的网站是一串难看的IP地址,而是一个方便记忆的网址名字,还是推荐你购买一个域名。况且,如果你的公网IP直接暴露在互联网上,也并不安全。购买域名的方法有很多,这里推荐使用NameSilo,可以直接使用支付宝购买,价格也比较便宜。在购买完成之后,你需要将域名解析到你的公网IP上,这样就可以使用浏览器正常访问你的个人博客了。

NameSilo网址如下:https://www.namesilo.com

注册一个账号,进入NameSIlo,如图操作即可:

image-heCg.png

找一个你喜欢的后缀名,每个价格都不一样,然后购买即可,最便宜的仅为1.79美元一年,也就是13块钱一年。可以使用支付宝付款。

image-ZNEl.png

购买之后,推荐各位小伙伴使用CloudFlare托管你的域名,CloudFlare是国际知名大厂,托管域名是免费的,而且速度也比较快。

购买方法和域名解析可以参考这个视频教程:B站:NameSilo域名注册与购买||Cloudflare使用与原理教程

使用CloudFlare托管域名的方法如下:

  1. 登录CloudFlare:https://dash.cloudflare.com,使用邮箱注册一个账号,登录。

image.png

  1. 添加你的域名。需要一段时间,然后进入管理界面,计划这里选择Free即可,然后一路继续,默认即可。

image-SRuo.png

image-sAfN.png

  1. 直到出现这个界面,然后把CloudFlare的服务器地址复制下来,如图所示:image-pyaS.png

  2. 然后重新回到NameSilo的管理界面,需要把你刚刚购买域名的DNS服务器切换为CloudFlare。按照如图所示操作:image-lcsu.pngimage-fFfv.png

  3. 保存之后,DNS服务器变更解析需要等待一段时间,至多24h,才能全球同步更新完成。等待DNS服务器更新完成,即可进入你的域名管理界面。

    image-MgFn.png

  4. 然后回到你的CloudFlare后台,添加DNS解析记录。例如你想要添加一个www作为你的二级域名:

    image-veAs.png

image-rznT.png

我这里配置了多个二级域名。例如我想让我的博客网站叫做www.frankguo.life,或者blog.frankguo.life,那就要添加两条记录。其他的同理。

开始搭建Halo2.x个人博客

使用你喜欢的SSH工具连接到你的云服务器,这里我推荐使用Visual Studio Code里面的Remote SSH插件进行远程连接。教程在这里:B站:vscode插件 remote ssh 远程开发方式 求你别再在服务器里直接改代码啦

  1. 安装 Docker 与 Docker Compose

在服务器上依次执行以下命令(以 Ubuntu 为例):

# 安装 Docker和docker-compose
sudo apt update
sudo apt upgrade -y # 更新
sudo apt install docker.io docker-compose # 安装
sudo systemctl enable docker # 设置开机启用docker服务
  1. 部署 Halo

在你的主目录下,创建一个文件夹,用来存放对应的docker文件,可以是使用 Visual Studio Code的文件管理工具,在主目录下创建一个docker文件夹,用来存放docker文件。

然后在docker文件夹里创建一个Halo子文件夹,创建一个 docker-compose.yml 文件(路径为:~/docker/halo/docker-compose.yml)并填入以下内容(注意修改提示的相关内容,密码和域名,不要无脑复制粘贴,不然你的网站极容易被黑客偷走):

version: "3"

services:
  halo:
    image: halohub/halo:2.20.21 # 注意:这里的版本号你可以查看Halo官方文档,改为最新的版本即可
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请修改,并保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=password
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://www.<your.servername.xxx> # 这里的域名改为你买好的域名
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=password

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=halo

networks:
  halo_network:

保存之后,cd进入docker-compose文件的目录,启动容器:

docker-compose up -d

3. 访问并初始化博客

如果你使用的阿里云,那么通常需要在防火墙放行相关的端口,才能正常访问。步骤如下:

image-NSty.png

image-bEDR.png

例如,这里我们需要添加两条记录放行8090端口和81端口(为接下来的nginx proxy manager做准备)。

完成之后,浏览器输入 http://服务器IP:8090/console,按提示填写站点名称、管理员账号等信息,即可进入后台管理界面。

4. 配置域名与 HTTPS(强烈建议)

如果你不想让你的博客网站是明文传输协议(即http协议,任何人都可以知道你访问痕迹和cookie,非常的不安全)那么你最好申请一个SSL证书。推荐使用Nginx proxy manager 申请证书并进行反向代理,是免费的,而且可以自动续期。接下来讲解如何部署。

  1. 创建一个nginx proxy manager的docker容器

和上面创建Halo的docker容器一样,创建一个叫做nginxproxymanager的文件夹,然后启动容器。docker-compose.yml文件如下:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

保存之后,cd进入docker-compose文件的目录,启动容器:

docker-compose up -d

然后,你就可以访问:http:<你的公网IP>:81登录nginx proxy manager了。初始账户密码为:

admin@example.com

changeme

第一次登录之后需要进行修改账户密码。建议收藏这个网页。

2.创建反向代理

  1. 何为反向代理?

想象你打电话给一家大公司的客服热线。接电话的“总机接线员”会根据你的需求,把电话转接给对应的部门(比如技术部、售后部)。反向代理就像这个“接线员”:

对外:你只知道客服热线的号码(反向代理的地址),不知道公司内部有哪些部门(真实的服务器)。

对内:接线员知道每个部门的位置,能快速把请求转过去,还能帮部门处理杂事(比如加密通话、挡骚扰电话)。

  1. 反向代理的作用:
  • 隐藏真实服务器:保护后端服务的安全。
  • 负载均衡:把流量合理分配给多个服务器。
  • 处理HTTPS:统一管理SSL证书,省去每个服务配置的麻烦。
  • 简化访问:用域名访问不同服务(比如 docs.xxx.com 转给文档服务,blog.xxx.com 转给博客)。

使用nginx proxy manager创建反向代理非常简单,如图操作即可。例如,我想要我的博客网站的网址为:

https://www.frankguo.life

https://blog.frankguo.life

image-AqDg.png

image-kEaw.png

然后申请SSL证书,需要等待一会:

2025-05-11_13-03.png

部署SSL证书:

image-rRnK.png

这样,你就可以在浏览器输入www.<你的域名>.xxx,或者blog.<你的域名>.xxx访问你的网站了。

四、管理你的个人博客

来到这里,你的网站就算是搭建好了,访问域名,第一次登录需要设置账号密码,根据提示操作即可。再次访问你的域名,如果你能看到下面这幅图,说明安装成功:

image-Cmmt.png

管理你的Halo博客

输入http:<你的公网IP>:8090,然后输入账户密码即可登录后台管理你的个人博客。Halo的后台如下,还是比较简单直观的(刚安装你的和我不一样,我装了插件)。可以在文章菜单管理你的文章。在应用市场可以下载插件和主题。

image-hTij.png

具体的建站、插件、主题等功能就自行探索吧!

完结,撒花。祝你成功建站!🎖️

Ps:推荐一个我个人比较喜欢的主题:Hao,也是本站使用的主题:

image-fWIB.png

Github仓库:https://github.com/chengzhongxue/halo-theme-hao

效果展示: B站:【最炫酷的博客主题,没有之一,确定不来看看吗?】

五、注意事项

  1. 安全设置
    • 修改默认管理员密码,避免使用弱口令。
    • 不要暴露 MySQL 数据库的 3306 端口到公网。(如果你按照本教程的docker-compose文件操作,已经帮你避免这个问题了)
  2. 数据备份
    • 定期备份 ~/.halo2 目录,防止数据丢失。
  3. 主题与插件
    • 从官方市场安装适配 2.x 版本的主题和插件,避免兼容性问题。

六、总结

Halo 2.x 凭借其易用性、轻量化扩展性,成为个人博客搭建的理想选择。无论是技术小白还是开发者,都能通过 Docker 快速部署,并通过丰富的插件和主题实现个性化需求。如果你想低成本拥有一个高颜值的独立博客,Halo 绝对值得一试!