Skip to content

About

MinIO Image Worker là một giải pháp background worker chuyên dụng được thiết kế cho hệ sinh thái MinIO / S3 Object Storage (Synology NAS, Cloud S3, AWS S3).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

🚀 MinIO Image Worker

Generic, Multi-Tenant, High-Performance Dynamic Image Processing Worker for MinIO / S3 Object Storage.

Node.js Docker Sharp MinIO


💡 Giới Thiệu (Overview)

MinIO Image Worker là một giải pháp background worker chuyên dụng được thiết kế cho hệ sinh thái MinIO / S3 Object Storage (Synology NAS, Cloud S3, AWS S3).

Giải pháp giải quyết triệt để bài toán: Khi ứng dụng Web/App di động upload ảnh gốc dung lượng lớn (3MB - 10MB), việc truy xuất danh sách sẽ làm đơ giật giao diện và tốn hàng GB băng thông.

minio-image-worker chạy độc lập 24/7 dưới dạng Docker Container, tự động phát hiện các ảnh mới trong MinIO và nén/tạo biến thể tĩnh WebP siêu nhẹ (thumbnail, preview,...) trong thời gian thực.


🔥 Tính Năng Nổi Bật (Key Features)

  • ⚡ Siêu Nhanh & Nhẹ (Powered by Sharp): Chuyển đổi định dạng ảnh gốc (.jpg, .png) sang WebP thế hệ mới, giảm dung lượng lên đến 95% nhưng giữ nguyên chất lượng hiển thị.
  • 🔄 Incremental Scan (Quét Tăng Trưởng Thông Minh): Theo dõi trạng thái nén bằng ETag. Không bao giờ scan lại hoặc nén lại các file đã làm -> Tiết kiệm 99% CPU/RAM cho máy chủ.
  • 📁 Multi-Tenant & Multi-Folder Support: Hỗ trợ quét tự động toàn bộ Bucket hoặc danh sách nhiều thư mục dự án cùng lúc (avatars/, documents/, vehicle-images/,...).
  • ⚙️ Config-Driven Architecture: Dễ dàng tùy chỉnh kích thước (width, height), độ nén (quality), định dạng (webp, avif) hoàn toàn qua file config.json mà không cần sửa code.
  • 🐳 Docker & Synology NAS Native: Đóng gói sẵn Dockerfile siêu nhỏ gọn (Alpine Node 22), dễ dàng deploy qua Synology Container Manager hoặc Docker Compose.

🏗️ Cấu Trúc Dự Án (Project Structure)

minio-image-worker/
├── config/
│   └── config.json       # File cấu hình quy định biến thể, prefix & concurrency
├── data/
│   └── state.json        # Lưu trữ trạng thái ETag đã nén (Incremental Scan)
├── src/
│   └── worker.js         # Core Worker Logic (MinIO S3 Client + Sharp Engine)
├── Dockerfile            # Lightweight Production Dockerfile (Node 22 Alpine)
├── docker-compose.yml    # File mẫu deploy Container Manager / Docker Compose
└── package.json

⚙️ Cấu Hình (config/config.json)

{
  "source": {
    "prefix": "",
    "extensions": [".jpg", ".jpeg", ".png", ".webp"]
  },
  "variants": {
    "thumbnail": {
      "width": 320,
      "height": 320,
      "fit": "cover",
      "format": "webp",
      "quality": 75
    },
    "preview": {
      "width": 1280,
      "height": 1280,
      "fit": "inside",
      "format": "webp",
      "quality": 82
    }
  },
  "worker": {
    "interval": 5000,
    "concurrency": 2
  }
}

🚀 Hướng Dẫn Cài Đặt & Deploy (Deployment Guide)

1. Build Docker Image (trên máy Dev)

docker build -t minio-image-worker:1.0.0 .

2. Deploy trên Synology NAS / Server bằng Docker Compose

Tạo file docker-compose.yml:

version: '3.8'

services:
  image-worker:
    image: minio-image-worker:1.0.0
    container_name: minio-image-worker
    restart: unless-stopped
    environment:
      TZ: Asia/Ho_Chi_Minh
      MINIO_ENDPOINT: 192.168.100.223:9000
      MINIO_ACCESS_KEY: your_access_key
      MINIO_SECRET_KEY: your_secret_key
      MINIO_SECURE: "false"
      MINIO_BUCKET: files
    volumes:
      - ./config:/app/config:ro
      - ./data:/app/data

👥 Tác Giả & Bản Quyền (Author)

  • Giấy phép: ISC License

About

MinIO Image Worker là một giải pháp background worker chuyên dụng được thiết kế cho hệ sinh thái MinIO / S3 Object Storage (Synology NAS, Cloud S3, AWS S3).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages