前情提要:博主放在 Typecho 的数据不小心被全部清空了,只留下数据库文件,其他的媒体文件一个不留,遂打算重开一个博客,多方了解后,使用最新的 Halo2,在内网使用群晖部署。
1 - 创建资料文件夹
在群晖的 Docker 文件夹下新建 halo 文件夹,再在其下创建 halo2 和 db 两个文件夹

2 - 在 Container Manager 中新增项目

3 - 填写项目名称,选择刚刚创建的 halo 文件夹,并选择 “创建 compose.yaml 文件”

4 - 复制 docker_compose.yaml
注意下面的 --spring.r2dbc.password=openpostgresql 字段,可以在此处修改数据库密码。如需修改需要同时修改两处,一处是数据库容器,一处是 Halo 容器
version: "3"
services:
halo:
image: halohub/halo:2.16
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
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://127.0.0.1:8090/
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: