Update nexus: fix conflicts and sync local changes

This commit is contained in:
Shen Wei
2026-04-26 12:06:50 +08:00
parent 191797c01b
commit f09834b5a5
2443 changed files with 254323 additions and 255154 deletions

View File

@@ -1,165 +1,165 @@
---
title: "MinIO + Zipline 自托管图床应用安装教程"
type: source
tags: [docker, image, minio, n8n, nas, synology, zipline]
date: 2025-12-29
---
## Source File
- [[raw/Home Office/MinIO + Zipline 自托管图床应用安装教程.md]]
## Summary (用中文描述)
- **核心主题**:在 Synology NAS 上通过 Docker Compose 部署 MinIO + Zipline 自托管图床解决方案
- **问题域**:家庭/小型办公环境需要自托管的图片存储服务,替代云服务(图床)
- **方法/机制**
- MinIO 作为 S3 兼容对象存储后端,提供高性价比的本地存储
- Zipline 作为图片上传 UI 和 API 服务层,支持 n8n 工作流集成
- PostgreSQL 作为 Zipline 的元数据存储
- 使用 `mc` 命令行工具设置 Public Bucket 匿名访问
- pg_dump 实现 PostgreSQL 逻辑备份脚本
- Synology Hyper Backup 配合定时任务实现增量归档
- **结论/价值**:零成本、完全自控的图床方案,适合技术用户家庭部署
## Key Claims (用中文描述)
- MinIO + Zipline 架构将存储性能与元数据管理分离MinIO 存储性能仅受 NAS 硬盘/SSD 限制Zipline 仅处理 metadata
- Docker Compose `depends_on` + `condition: service_healthy` 实现服务启动顺序保障,避免竞态条件
- pg_dump 逻辑备份是 Synology NAS 环境的标准热备份方案,零停机、迁移能力强
- "脑体分离"PostgreSQL 元数据 + MinIO 文件实体)是图床系统的核心架构特征,备份必须同时覆盖两者
## Key Quotes
> "Zipline 将元数据存在 Postgres将文件实体存在 MinIO你的备份方案必须确保这两者在时间点上是尽可能一致的。" — 备份策略核心挑战
> "docker exec $PG_CONTAINER pg_dump -U $PG_USER -d $PG_DB | gzip > $BACKUP_DIR/db_$DATE.sql.gz" — 热备份标准命令
## Key Concepts
- [[图床]]:托管图片/媒体文件的服务,通过 URL 直接访问
- [[S3-兼容对象存储]]MinIO 实现的 S3 API 兼容对象存储
- [[Docker堆栈]]:多容器 Docker Compose 编排,多服务依赖管理
- [[逻辑备份]]:通过 pg_dump 导出 SQL而非物理文件备份
- [[数据一致性]]:分布式存储系统中元数据与文件实体的时间点一致性
- [[匿名访问策略]]MinIO mc anonymous 命令设置 bucket 公共读写权限
## Key Entities
- [[MinIO]]:开源 S3 兼容对象存储MinIO + Zipline 架构的存储后端
- [[Zipline]]:开源图床应用,提供前端上传 UI 和 REST API
- [[PostgreSQL]]Zipline 的元数据数据库
- [[群晖 NAS]]Synology NAS部署 Docker 的硬件平台
- [[n8n]]:工作流自动化工具,通过 Zipline API 实现图片上传
- [[Synology Hyper Backup]]:群晖备份套件
- [[pg_dump]]PostgreSQL 逻辑备份工具
## Connections
- [[Zipline]] ← depends_on ← [[MinIO]]S3 存储)
- [[Zipline]] ← depends_on ← [[PostgreSQL]](元数据)
- [[n8n]] ← calls ← [[Zipline API]](图片上传)
- [[pg_dump]] ← backup ← [[PostgreSQL]]
- [[Synology Hyper Backup]] ← backup ← [[MinIO 数据目录]]
- [[Docker堆栈]] ← orchestrates ← [[MinIO]] + [[Zipline]] + [[PostgreSQL]]
## Contradictions
- 与 [[rsync增量备份]] 冲突:
- 冲突点:数据库备份方式
- 当前观点pg_dump 逻辑备份SQL 文件,可跨平台迁移)
- 对方观点rsync 增量备份(文件级同步,适合 Docker 卷)
- 协调两者互补——pg_dump 备份元数据rsync/Hyper Backup 备份文件实体
## Architecture
```
[DSM Docker UI]
├── MinIO (9000 API, 9001 Console)
│ └── /volume1/docker/zipline-stack/minio/minio_data
├── PostgreSQL (Zipline DB)
│ └── /volume1/docker/zipline-stack/zipline/pg_data
└── Zipline (暴露 3333)
├── 前端上传 UI
└── n8n API 上传
Zipline → MinIOS3 → NAS 存储
```
## Docker Compose Key Config
```yaml
services:
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
ports:
- "9000:9000" # API
- "9001:9001" # Console
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: Abcd_1234
postgres:
image: postgres:16
environment:
POSTGRES_USER: zipline
POSTGRES_PASSWORD: zipline
POSTGRES_DB: zipline
zipline:
image: ghcr.io/diced/zipline:latest
depends_on:
minio:
condition: service_healthy
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgres://zipline:***@postgres:5432/zipline
STORAGE_ENGINE: s3
S3_BUCKET: zipline-bucket
S3_ENDPOINT: http://minio:9000
S3_ACCESS_KEY: admin
S3_SECRET_KEY: Abcd_1234
S3_FORCE_PATH_STYLE: "true"
```
## mc (MinIO Client) Anonymous Access Commands
```bash
# 设置别名
mc alias set local http://192.168.3.17:9000 admin StrongPasswordHere
# 创建 bucket
mc mb local/zipline-bucket
# 设置公共读写权限
mc anonymous set public local/zipline-bucket
# 匿名权限类型
# - download: 仅下载GET
# - upload: 仅上传PUT
# - public: 读写
# - none: 禁用匿名访问
```
## Backup Script
```bash
#!/bin/bash
BACKUP_DIR="/volume1/docker/zipline-stack/backups"
PG_CONTAINER="zipline_postgres"
PG_USER="zipline"
PG_DB="zipline"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# pg_dump 逻辑备份(热备份)
docker exec "$PG_CONTAINER" pg_dump -U "$PG_USER" -d "$PG_DB" | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
# 清理旧备份
find "$BACKUP_DIR" -name "db_*.sql.gz" -mtime +$RETENTION_DAYS -delete
```
## Reference URLs
- [Docker Volume Documentation](https://docs.docker.com/storage/volumes/)
- [MinIO Docker Persistence](https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-single-node-single-drive.html)
- [Synology ACL Settings](https://kb.synology.com/en-global/DSM/tutorial/How_to_manage_ACL_settings_on_your_Synology_NAS)
- [MinIO mc anonymous](https://min.io/docs/enterprise/aistor-object-store/reference/cli/mc-anonymous/)
---
title: "MinIO + Zipline 自托管图床应用安装教程"
type: source
tags: [docker, image, minio, n8n, nas, synology, zipline]
date: 2025-12-29
---
## Source File
- [[raw/Home Office/MinIO + Zipline 自托管图床应用安装教程.md]]
## Summary (用中文描述)
- **核心主题**:在 Synology NAS 上通过 Docker Compose 部署 MinIO + Zipline 自托管图床解决方案
- **问题域**:家庭/小型办公环境需要自托管的图片存储服务,替代云服务(图床)
- **方法/机制**
- MinIO 作为 S3 兼容对象存储后端,提供高性价比的本地存储
- Zipline 作为图片上传 UI 和 API 服务层,支持 n8n 工作流集成
- PostgreSQL 作为 Zipline 的元数据存储
- 使用 `mc` 命令行工具设置 Public Bucket 匿名访问
- pg_dump 实现 PostgreSQL 逻辑备份脚本
- Synology Hyper Backup 配合定时任务实现增量归档
- **结论/价值**:零成本、完全自控的图床方案,适合技术用户家庭部署
## Key Claims (用中文描述)
- MinIO + Zipline 架构将存储性能与元数据管理分离MinIO 存储性能仅受 NAS 硬盘/SSD 限制Zipline 仅处理 metadata
- Docker Compose `depends_on` + `condition: service_healthy` 实现服务启动顺序保障,避免竞态条件
- pg_dump 逻辑备份是 Synology NAS 环境的标准热备份方案,零停机、迁移能力强
- "脑体分离"PostgreSQL 元数据 + MinIO 文件实体)是图床系统的核心架构特征,备份必须同时覆盖两者
## Key Quotes
> "Zipline 将元数据存在 Postgres将文件实体存在 MinIO你的备份方案必须确保这两者在时间点上是尽可能一致的。" — 备份策略核心挑战
> "docker exec $PG_CONTAINER pg_dump -U $PG_USER -d $PG_DB | gzip > $BACKUP_DIR/db_$DATE.sql.gz" — 热备份标准命令
## Key Concepts
- [[图床]]:托管图片/媒体文件的服务,通过 URL 直接访问
- [[S3-兼容对象存储]]MinIO 实现的 S3 API 兼容对象存储
- [[Docker堆栈]]:多容器 Docker Compose 编排,多服务依赖管理
- [[逻辑备份]]:通过 pg_dump 导出 SQL而非物理文件备份
- [[数据一致性]]:分布式存储系统中元数据与文件实体的时间点一致性
- [[匿名访问策略]]MinIO mc anonymous 命令设置 bucket 公共读写权限
## Key Entities
- [[MinIO]]:开源 S3 兼容对象存储MinIO + Zipline 架构的存储后端
- [[Zipline]]:开源图床应用,提供前端上传 UI 和 REST API
- [[PostgreSQL]]Zipline 的元数据数据库
- [[群晖 NAS]]Synology NAS部署 Docker 的硬件平台
- [[n8n]]:工作流自动化工具,通过 Zipline API 实现图片上传
- [[Synology Hyper Backup]]:群晖备份套件
- [[pg_dump]]PostgreSQL 逻辑备份工具
## Connections
- [[Zipline]] ← depends_on ← [[MinIO]]S3 存储)
- [[Zipline]] ← depends_on ← [[PostgreSQL]](元数据)
- [[n8n]] ← calls ← [[Zipline API]](图片上传)
- [[pg_dump]] ← backup ← [[PostgreSQL]]
- [[Synology Hyper Backup]] ← backup ← [[MinIO 数据目录]]
- [[Docker堆栈]] ← orchestrates ← [[MinIO]] + [[Zipline]] + [[PostgreSQL]]
## Contradictions
- 与 [[rsync增量备份]] 冲突:
- 冲突点:数据库备份方式
- 当前观点pg_dump 逻辑备份SQL 文件,可跨平台迁移)
- 对方观点rsync 增量备份(文件级同步,适合 Docker 卷)
- 协调两者互补——pg_dump 备份元数据rsync/Hyper Backup 备份文件实体
## Architecture
```
[DSM Docker UI]
├── MinIO (9000 API, 9001 Console)
│ └── /volume1/docker/zipline-stack/minio/minio_data
├── PostgreSQL (Zipline DB)
│ └── /volume1/docker/zipline-stack/zipline/pg_data
└── Zipline (暴露 3333)
├── 前端上传 UI
└── n8n API 上传
Zipline → MinIOS3 → NAS 存储
```
## Docker Compose Key Config
```yaml
services:
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
ports:
- "9000:9000" # API
- "9001:9001" # Console
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: Abcd_1234
postgres:
image: postgres:16
environment:
POSTGRES_USER: zipline
POSTGRES_PASSWORD: zipline
POSTGRES_DB: zipline
zipline:
image: ghcr.io/diced/zipline:latest
depends_on:
minio:
condition: service_healthy
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgres://zipline:***@postgres:5432/zipline
STORAGE_ENGINE: s3
S3_BUCKET: zipline-bucket
S3_ENDPOINT: http://minio:9000
S3_ACCESS_KEY: admin
S3_SECRET_KEY: Abcd_1234
S3_FORCE_PATH_STYLE: "true"
```
## mc (MinIO Client) Anonymous Access Commands
```bash
# 设置别名
mc alias set local http://192.168.3.17:9000 admin StrongPasswordHere
# 创建 bucket
mc mb local/zipline-bucket
# 设置公共读写权限
mc anonymous set public local/zipline-bucket
# 匿名权限类型
# - download: 仅下载GET
# - upload: 仅上传PUT
# - public: 读写
# - none: 禁用匿名访问
```
## Backup Script
```bash
#!/bin/bash
BACKUP_DIR="/volume1/docker/zipline-stack/backups"
PG_CONTAINER="zipline_postgres"
PG_USER="zipline"
PG_DB="zipline"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# pg_dump 逻辑备份(热备份)
docker exec "$PG_CONTAINER" pg_dump -U "$PG_USER" -d "$PG_DB" | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
# 清理旧备份
find "$BACKUP_DIR" -name "db_*.sql.gz" -mtime +$RETENTION_DAYS -delete
```
## Reference URLs
- [Docker Volume Documentation](https://docs.docker.com/storage/volumes/)
- [MinIO Docker Persistence](https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-single-node-single-drive.html)
- [Synology ACL Settings](https://kb.synology.com/en-global/DSM/tutorial/How_to_manage_ACL_settings_on_your_Synology_NAS)
- [MinIO mc anonymous](https://min.io/docs/enterprise/aistor-object-store/reference/cli/mc-anonymous/)