网站Logo 珩之的小站

halo搭建个人博客

hengzhi
5
2025-05-07

halo搭建个人博客

安装指南

官方文档

https://docs.halo.run/

Nginx Proxy Manager

使用 Docker Compose 部署

创建目录

#创建系统文件夹
mkdir ~/halo && cd ~/halo

配置docke+mysql 数据库

创建 docker-compose.yaml​ 使用外部数据库

root@VM-24-11-debian:~/halo# cat docker-compose.yaml 
version: "3"
​
services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./halo2:/root/.halo2
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://*****:3306/halo
      - --spring.r2dbc.username=root
      - --spring.r2dbc.password=Ning@1314
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://*******:8090/
      # 端口号 默认8090
      - --server.port=8090

启动容器

#启动 & 日志查看
docker-compose up -d
docker-compose logs -f
​
#启动 & 日志查看
docker compose up -d
docker compose logs -f

反向代理

安装配置

创建目录:

mkdir -p ~/data/docker_data/nginxproxymanager   # 创建一个 npm 的文件夹
​
cd ~/data/docker_data/nginxproxymanager    # 进入该文件夹
​
vi docker-compose.yml

配置文件

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

配置反向代理

访问代理地址 修改默认账号密码

http://*******:81/

默认登录的用户名:admin@example.com 密码:changeme

添加反向代理

image

image

  • Domain Names​ :填我们 Halo 网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上

  • Scheme​ :默认 http​ 即可,除非你有自签名证书

  • Forward Hostname/IP​ :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)

  • Forward Port​:填入 Halo 映射出的端口,这边默认是 8090

  • Cache Assets​ :缓存,可以选择打开

  • Block Common Exploits​:阻止常见的漏洞,可以选择打开

  • Websockets Support​ :WS 支持,可以选择打开

  • Access List​:这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究。

动物装饰