编辑
2025-11-15
部署记录📝
00

目录

Halo博客
📋 详细部署步骤
第一步:环境准备
第三步:选择并创建配置文件
方案一:Halo + PostgreSQL(推荐)
方案二:Halo + MySQL
第四步:启动服务
第五步:配置防火墙/安全组
🔄 后续维护操作
更新 Halo 版本
🌐 配置域名访问(可选)

Halo博客

提示

根据官方文档,我为你整理了详细的部署步骤:

📋 详细部署步骤

第一步:环境准备

  1. 安装 Docker 和 Docker Compose

  2. 验证安装

    bash
    docker --version docker-compose --version

第二步:创建工作目录

bash
mkdir ~/halo && cd ~/halo

⚠️ 重要:所有数据都会保存在这个目录,请妥善保管!

第三步:选择并创建配置文件

根据你的需求选择以下配置之一(推荐使用 PostgreSQL):

方案一:Halo + PostgreSQL(推荐)

创建 docker-compose.yaml 文件:

bash
nano docker-compose.yaml

复制以下内容(记得修改外部访问地址和数据库密码):

yaml
version: "3" services: halo: image: registry.fit2cloud.com/halo/halo:2.21 restart: on-failure:3 depends_on: halodb: condition: service_healthy networks: halo_network: volumes: - ./halo2:/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 environment: - JVM_OPTS=-Xmx256m -Xms256m command: - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo - --spring.r2dbc.username=halo - --spring.r2dbc.password=openpostgresql # 改成你的密码 - --spring.sql.init.platform=postgresql - --halo.external-url=http://localhost:8090/ # 改成你的域名或IP halodb: image: postgres:15.4 restart: on-failure:3 networks: halo_network: volumes: - ./db:/var/lib/postgresql/data healthcheck: test: [ "CMD", "pg_isready" ] interval: 10s timeout: 5s retries: 5 environment: - POSTGRES_PASSWORD=openpostgresql # 与上面保持一致 - POSTGRES_USER=halo - POSTGRES_DB=halo - PGUSER=halo networks: halo_network:

方案二:Halo + MySQL

如果你更熟悉 MySQL,可以使用这个配置(同样创建 docker-compose.yaml):

yaml
version: "3" services: halo: image: registry.fit2cloud.com/halo/halo:2.21 restart: on-failure:3 depends_on: halodb: condition: service_healthy networks: halo_network: volumes: - ./halo2:/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 environment: - JVM_OPTS=-Xmx256m -Xms256m command: - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo - --spring.r2dbc.username=root - --spring.r2dbc.password=o#DwN&JSa56 # 改成你的密码 - --spring.sql.init.platform=mysql - --halo.external-url=http://localhost:8090/ # 改成你的域名或IP halodb: image: mysql:8.1.0 restart: on-failure:3 networks: halo_network: command: - --default-authentication-plugin=caching_sha2_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - --explicit_defaults_for_timestamp=true volumes: - ./mysql:/var/lib/mysql - ./mysqlBackup:/data/mysqlBackup healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"] interval: 3s retries: 5 start_period: 30s environment: - MYSQL_ROOT_PASSWORD=o#DwN&JSa56 # 与上面保持一致 - MYSQL_DATABASE=halo networks: halo_network:

第四步:启动服务

bash
# 启动容器 docker-compose up -d # 查看实时日志 docker-compose logs -f

第五步:配置防火墙/安全组

  • 云服务器:在服务器厂商后台将 8090 端口添加到安全组
  • 本地服务器:开放防火墙端口
    bash
    # CentOS/RHEL firewall-cmd --add-port=8090/tcp --permanent firewall-cmd --reload # Ubuntu/Debian ufw allow 8090/tcp

第六步:访问并初始化

  1. 浏览器访问:http://你的IP:8090/console
  2. 首次访问会进入初始化页面
  3. 按照提示完成初始化设置

💡 建议:如果要使用域名,请先配置好反向代理和域名解析再进行初始化


🔄 后续维护操作

更新 Halo 版本

  1. 备份数据(重要!)
  2. 修改 docker-compose.yaml 中的镜像版本:
    yaml
    image: registry.fit2cloud.com/halo/halo:2.21 # 改成新版本号
  3. 重启容器:
    bash
    docker-compose up -d

常用命令

bash
# 查看运行状态 docker-compose ps # 停止服务 docker-compose stop # 启动服务 docker-compose start # 重启服务 docker-compose restart # 删除容器(数据不会丢失) docker-compose down

🌐 配置域名访问(可选)

如果你有域名,建议配置 Nginx 反向代理:

nginx
upstream halo { server 127.0.0.1:8090; } server { listen 80; server_name www.yourdomain.com; 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; } }

配置完成后记得修改 docker-compose.yaml 中的 halo.external-url 为你的域名!

本文作者:__22号仔Stringer🫧

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!