主机资讯与使用指南
Halo 部署教程:Docker Compose、PostgreSQL 与博客域名
用社区版 Halo 和 PostgreSQL 建立博客,设置持久化目录、访问域名和数据库密码。
选择 Halo 社区版并准备域名
Halo 的社区版和付费版使用不同镜像。本文采用社区版和 PostgreSQL,先准备 Docker、Compose 和一个博客域名,再建立 ~/halo 目录。域名通过 Caddy 或现有面板指向本机 8090 端口。
把数据库密码写入 .env
在 ~/halo 建立 .env,填写自选强密码与最终 HTTPS 地址。下面的占位内容都需要替换。
HALO_DB_PASSWORD=替换为独立强密码
HALO_URL=https://blog.example.com将 .env 的读取权限限制给当前管理用户,不放进公开仓库。密码变量同时用于数据库和 Halo 连接参数。
保存 compose.yaml
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.26
restart: unless-stopped
depends_on:
halodb:
condition: service_healthy
ports:
- "127.0.0.1:8090:8090"
volumes:
- ./halo2:/root/.halo2
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=${HALO_DB_PASSWORD}
- --spring.sql.init.platform=postgresql
- --halo.external-url=${HALO_URL}
halodb:
image: postgres:15
restart: unless-stopped
environment:
POSTGRES_USER: halo
POSTGRES_DB: halo
POSTGRES_PASSWORD: ${HALO_DB_PASSWORD}
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U halo -d halo"]
interval: 10s
timeout: 5s
retries: 52.26 是本文采用的 Halo 版本系列,安装其他版本时查看对应发行说明。PostgreSQL 使用 15 系列,已有数据的机器不能直接更换数据库主版本。
启动后完成博客初始化
cd ~/halo
sudo docker compose config --quiet
sudo docker compose up -d
sudo docker compose logs --tail=100 halo反向代理上游填 127.0.0.1:8090,域名地址与 HALO_URL 保持一致。通过域名打开初始化页面,建立管理员和站点信息,再发布一篇文章、上传图片检查访问。
保存程序目录和数据库
halo2 保存 Halo 文件,db 保存 PostgreSQL 数据。数据库备份采用 PostgreSQL 的导出或一致性备份方式;运行中复制整个 db 目录不能代替可靠备份。更新前记录镜像版本,保存环境配置和数据。