宝塔面板Docker安装Halo

宝塔面板Docker安装Halo

一、前置准备

  • 一台安装了宝塔面板的服务器。支持SSH登录
  • 已安装Docker 和 MySQL 8.0.35 服务
  • 防火墙开放 8090 和 3306 端口

二、准备操作

确保已经安装了数据库和Docker,并放行了端口。

图片[1] - 宝塔面板Docker安装Halo - 北牧视界

图片[2] - 宝塔面板Docker安装Halo - 北牧视界

图片[3] - 宝塔面板Docker安装Halo - 北牧视界

二、数据库创建和配置

1.创建数据库

在宝塔面板的数据库管理页面创建新的数据库。

图片[4] - 宝塔面板Docker安装Halo - 北牧视界

2.设置数据库权限

数据库halo数据库权限中设置访问权限为本服务器的内网IP和外网IP地址或地址段,本文以所有人可访问为例。

图片[5] - 宝塔面板Docker安装Halo - 北牧视界

3.修改数据库的排序规则

数据库halo数据库管理点击跳转到phpmyadmin管理页面,顶部导航的操作菜单,底部的排序规则修改为utf8mb4_0900_ai_ci点击执行后确认已修改成功即可。

图片[6] - 宝塔面板Docker安装Halo - 北牧视界

4.添加数据库配置

在软件商店找到已安装的MySQL点击设置,进入配置文件菜单,在[mysqld]的结尾处添加配置。

default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
bind-address=0.0.0.0
max_allowed_packet=64M

图片[7] - 宝塔面板Docker安装Halo - 北牧视界

添加后点击保存按钮,点击服务菜单,将MySQL重启即可。

三、获取Halo

1.拉取Halo镜像

通过SSH登录,在命令行中拉取Halo的镜像,如下图显示表示拉取成功。

docker pull ghcr.io/halo-dev/halo:2.21.1

# 请在最后添加版本号,如不添加则拉取的镜像为旧版本

图片[8] - 宝塔面板Docker安装Halo - 北牧视界

2.启动Halo容器

输入启动命令后将会生成配置目录,注意请在启动命令执行的20秒左右后停止容器运行并删除容器(本次临时启动的目的是为了获取到Halo生成的配置文件)

# 临时启动Halo容器
docker run -itd --name halo-temp -v ~/.halo2:/root/.halo2 ghcr.io/halo-dev/halo
# 20秒后停止并删除临时容器(保留配置目录)
docker stop halo-temp && docker rm halo-temp

3.创建配置文件

在宝塔面板中点击文件进入/root/.halo2文件夹,可以看到有4个文件夹(根据上个步骤停止容器的时间,可能看到的文件数目不一样)

图片[9] - 宝塔面板Docker安装Halo - 北牧视界

在此文件夹下创建application.yaml文件并进入,将下列代码粘贴进去,将其中的服务器IP替换成你的服务器公网IP,将数据库用户名和密码替换为上文中创建的用户名和密码,之后点击保存。

spring:
  r2dbc:
    # 连接地址(替换为你的服务器IP)
    url: r2dbc:mysql://服务器IP:3306/halo?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: halo  # 数据库用户名
    password: 123456  # 数据库密码
    driver-class-name: io.r2dbc.mysql.MySqlConnectionFactoryProvider
  sql:
    init:
      mode: always  # 允许自动创建表结构
使用服务器公网IP的原因是因为Docker和MySQL不互通,不能在内网中相互访问。

四、启动容器

在SSH命令行中输入执行命令再次启动容器。

docker run -itd \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  --restart=always \
  ghcr.io/halo-dev/halo:2.21.1

可通过日志命令查看运行日志或报错信息。

#查看运行日志
docker logs -f halo

如果输入日志命令后日志没有中断,持续运行则表示安装成功。

如果你不需要通过域名来访问,则打开浏览器访问http://你的服务器IP:8090,进入Halo的初始化页面,按提示创建管理员账号,数据将存储在 MySQL 中,即到此就完成了。

如需要域名访问则此刻不可以进入Halo的初始化页面。

五、反向代理

如果不希望或不喜欢使用IP访问,则可配置反向代理功能使用域名代理IP地址访问网站。

请确保已完成以下内容:

  • 你的域名已经解析到了服务器IP(服务商设置A记录)
  • 服务器开放了80/443端口(默认开放)
  • Halo在Docker中已经成功运行(日志无报错或中断)

在宝塔面板网站反向代理菜单,点击添加反代,输入你的域名和代理地址(http://127.0.0.1:8090),如下图

图片[10] - 宝塔面板Docker安装Halo - 北牧视界

点击确定保存后,反向代理即配置成功,可以为域名设置SSL证书实现https安全访问(宝塔免费证书Let’s Encrypt,有效期90天,到期后可重新获取证书)。

完成以上的所有步骤后,访问配置的域名进入Halo系统初始化即表示成功了,查看数据库中有extensions表则表示正在使用MySQL数据库。

图片[11] - 宝塔面板Docker安装Halo - 北牧视界

图片[12] - 宝塔面板Docker安装Halo - 北牧视界

如果Halo初始化页面出现红色警告框提示正在使用H2数据库,则表示MySQL数据库没有覆盖成功,请检查步骤再次尝试。
温馨提示:本文最后更新于2025-08-10 18:20:33,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长。
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容