Halo博客搭建及CloudFlare简单配置

本文最后更新于 2025年11月19日 晚上

Halo是一个开源的个人博客系统,它提供了一个简洁、易用的界面和丰富的功能,使您可以轻松创建和管理自己的博客。

搭建Halo

官方文档已经很详细了,可优先以官方文档为主: Halo Documents-安装指南

我这里使用DockerCompose部署,Halo版本为2.5.2,系统为Centos 7

1.安装Docker和Docker Compose

参考:Docker相关

2.安装Halo

1.创建数据文件夹

在系统任意位置创建一个文件夹,这里以 ~/halo 为例。

1
mkdir ~/halo && cd ~/halo

注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。

2.创建 docker-compose.yaml

1
touch docker-compose.yaml

我这里使用创建 Halo + MySQL 的实例文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
version: "3"

services:
halo:
image: halohub/halo:2.5.2
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/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
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=你的密码(同下保持一致)
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=你的初始用户名(控制台)
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=你的初始密码(控制台)

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: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=你的密码(同上保持一致)
- MYSQL_DATABASE=halo

networks:
halo_network:

3.启动Halo

1.启动 Halo 服务

1
docker-compose up -d

2.实时查看日志

1
docker-compose logs -f

3.访问验证

用浏览器访问 http://ip:8090/console 即可进入Halo管理页面,用户名和密码为在 docker-compose.yaml 文件中设置的 superadminusernamesuperadminpassword

nginx配置反向代理

1.安装nginx流程(已安装则跳过)

1. 安装EPEL存储库(如果尚未安装):

1
sudo yum install epel-release

2. 安装Nginx:

1
sudo yum install nginx

3. 启动Nginx服务:

1
sudo systemctl start nginx

4. 设置Nginx开机自启动:

1
sudo systemctl enable nginx

5. 验证Nginx是否已成功安装:

1
nginx -v

以上步骤将从EPEL存储库安装最新版本的Nginx。

请注意,安装Nginx可能需要root权限或具有sudo权限的用户才能执行。

2.修改nginx配置

配置文件路径:/etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 默认为 1,表示开启一个业务进程
worker_processes 1;

events {
  # 单个业务进程可接受连接数
  worker_connections 1024;
}

http {
  # 引入 http mime 类型
  include mime.types;
  # 如果 mime 类型没匹配上,默认使用二进制流的方式传输。
  default_type application/octet-stream;

  # sendfile() 高效网络传输,也就是数据 0 拷贝。
  sendfile on;

  keepalive_timeout 65;

  upstream halo {
      server 127.0.0.1:8090;
  }
  server {
      listen 80;
      listen [::]:80;
      server_name 你的域名;
      client_max_body_size 1024m;
      location / {
          proxy_pass http://halo;
          proxy_set_header HOST $host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  }
}

完成后用浏览器访问 http://域名/console 即可进入Halo管理页面

CloudFlare配置HTTPS和CDN缓存

登录CloudFlare,按下图配置

之后等待几分钟,用浏览器访问 http://域名/console ,就会发现http自动转为https,CloudFlare已为我们配置好了证书

完成


Halo博客搭建及CloudFlare简单配置
http://blog.baicat.eu.org/2023/05/31/Halo博客搭建及CloudFlare简单配置/
作者
liuxiaobai5201314
发布于
2023年5月31日
更新于
2025年11月19日
许可协议