欢迎光临
我们一直在努力

使用docker部署Halo 2.0 博客网站,一个好用又强大的开源建站工具

重要提示(如果你是Halo的1.X用户)

1、升级需谨慎,请提前备份好博客后再尝试升级
2、升级之前可以看看这个:从 Halo 1.x 迁移

1. Halo2.0 简单介绍

从Halo的1.0版本的slogan就可以看出区别

Halo 21.x版本改成了:
Halo [ˈheɪloʊ],一款现代化的开源博客/CMS系统,值得一试。

从Halo的2.0版本的slogan就可以看出区别

Halo 2.x版本改成了:
Halo [ˈheɪloʊ],好用又强大的开源建站工具。

1.1 Halo2.0版本的更新:

随着Halo的2.0版本更新
Halo从最初是一个轻量级的博客框架
摇身一变,变成了可以搭建任何网站。功能想必也是提升了很多。

1.11 插件机制

Halo 2.X带来了灵活可扩展的插件机制,通过插件可以在运行时为系统添加丰富的功能,也可以保持 Halo 自身的简洁轻量。目前支持 Halo 2.X的插件可查:https://bbs.halo.run/t/plugins

1.12 模板机制

完善的模板系统,支持自定义配置,主题预览,多语言等功能。开发主题也十分方便,欢迎大家参与主题的开发。最新发布新的主题:https://bbs.halo.run/t/themes

1.13 附件管理

采用多策略存储模式,同时支持通过插件扩展外部存储位置,你可以更方便的管理你文章中的附件。

1.14 搜索引擎

Halo 2.X带来了内置的全文搜索引擎支持,同时也支持通过插件扩展外部搜索引擎。

1.15 多用户

与1.0相比,Halo 2.X增加了多用户机制,并且可以给不同的用户赋予不同的权限,多人管理维护一个网站变成了可能。

1.16 一键部署

采用了程序与用户配置分离的方式,迁移和备份成本大大降低。你只需要一条命令即可运行成功,同时也支持 Docker 部署。

2.项目展示

Halo演示地址:https://demo.halo.run/
文档地址:https://docs.halo.run/
社区地址:https://bbs.halo.run/
官网地址:https://www.halo.run/
GitHub地址:https://github.com/halo-dev/halo

3.搭建环境

  • 搭建服务器:使用有预装宝塔面板的海外的服务器,海外服务器不用网站ICP备案
    不管是简单的博客服务器,还是配置全部拉满的服务器。
    点击下方链接,香港BGP首月五折:E1ljBxwr(优惠码)

    https://www.lcayun.com/cart?action=configureproduct&pid=396&promocode=E1ljBxwr&aff=ZFVSWGGQ
  • 系统:Ubuntu-24.04-x64
  • 【非必需但建议】域名一枚,并做好解析到服务器上
  • 【非必需】提前安装好宝塔面板,并安装好 Nginx
服务器要求:内存建议1G 以上,硬盘可以大一些。

4.搭建视频

视频地址:https://www.bilibili.com/video/BV1VWxrefEBh/

4.1 【高清版本】:

5.搭建方式

更新软件包列表

sudo apt upgrade

5.1 安装docker

cd /usr/local/bin
#安装指令
sudo apt install docker.io
#验证 Docker 是否安装成功
docker -v
#启动 Docker 服务
sudo systemctl start docker
#查看 Docker 服务状态,显示为“active (running)”。这意味着 Docker 正在运行
sudo systemctl status docker
#设置 Docker 在系统启动时自动启动
sudo systemctl enable docker
#检查 Docker 是否设置为开机自启,可以使用以下命令,返回enabled表示已经设置,如果是disabled表示没有设置
sudo systemctl is-enabled docker

5.2 安装docker-compose

#使用 curl 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
#确认安装
/usr/local/bin/docker-compose --version

5.3创建安装目录

创建一下安装的目录:

sudo -i
#创建一个目录,用于存放 Halo 的数据和配置文件
mkdir -p /root/data/docker_data/halo
#切换到你刚创建的目录中
cd /root/data/docker_data/halo

直接用 docker 的方式安装

vi docker-compose.yml

输入法英文状态下输入” i “

version: "3"

services:
  halo:
#镜像
    image: halohub/halo:2.6.0
#容器名称,用于区分标识容器
    container_name: halo
#重启策略
    restart: on-failure:3
#依赖关系
    depends_on:
      halodb:
        condition: service_healthy
#网络配置
    networks:
      halo_network:
#编辑存放
    volumes:
      - ./:/root/.halo2
#端口映射,服务器防火墙端口需要开放8090
    ports:
      - "8090:8090"
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      # MySQL 的名称,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=o#DwN&JSa56
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改成你的域名或者是ip地址
      - --halo.external-url=http://abcjc:8090/
      # 初始化的超级管理员用户名,可以自己设定
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码,可以自己设定
      - --halo.security.initializer.superadminpassword=P@88w0rd

  halodb:
#使用的docker镜像
    image: mysql:8.0.31
#指定使用容器的名称
    container_name: halodb
#容器因错误的重启策略
    restart: on-failure:3
#网络配置
    networks:
      halo_network:
#设置 MySQL 启动时的参数,控制其行为
    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"
#定义健康检查,确保 MySQL 服务正常运行
    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=o#DwN&JSa56
      - MYSQL_DATABASE=halo

networks:
  halo_network:

注意:大部分的代码有注释说明,可以根据说明查阅。
重要注意:里面的 - --halo.external-url=http://abcjc:8090/,其中的http://abcjc:8090/需要更改为的域名,如果你打算用的域名是abc.com也就是要改成–halo.external-url=https://abc.com
或者是没有域名需要可以使用服务器的ip地址代替abc.com
接着,千万记得改密码!!!其中的账号名称和密码都是可以自己更改。避免不必要的安全隐患!!!
不然,你也会像这样:

PS:细心的小伙伴会发现,docker-compose.yml里面数据库3306并没有写成3306:3306,官网是写的后者,这里的改成了前者,为的就是不在公网暴露halo数据库的端口,这样也能一定程度保障博客的安全

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

并输入启动容器的命令

docker-compose up -d

5.4打开服务器防火墙(非必须),并访问网页

在服务器安全组中,把有使用到的端口8090放行(暴露在防火墙外)。并通过ip地址+端口的方式访问后台。

6.使用方法

6.1 插件安装

地址:https://github.com/halo-sigs/awesome-halo

6.2 主题安装

推荐 Butterfly 或者是foe 主题 地址:https://github.com/dhjddcn/halo-theme-butterfly

预览效果:https://dhjdd.cn/

7.结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区或者是Halo的官方论坛互相交流探讨。有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!
最后,感谢Halo团队的辛苦付出,让我们能用到这么优秀的博客!
赞(1)
未经允许不得转载:莱卡云 » 使用docker部署Halo 2.0 博客网站,一个好用又强大的开源建站工具