نحوه استقرار MinIO – سرور ذخیرهسازی شیء #
استقرار ذخیرهسازی شیء MinIO با Docker Compose، Traefik TLS و S3-Compatible Access.
MinIO یک سرور ذخیرهسازی شیء متنباز با کارایی بالا است که کاملاً با Amazon S3 API سازگار است. این سرور برای بارهای کاری مدرن مبتنی بر ابر طراحی شده است و آن را برای پشتیبانگیری، ذخیرهسازی رسانه، دریاچههای داده، تجزیه و تحلیل و ذخیرهسازی برنامه مناسب میکند.
این مقاله نحوه استقرار MinIO در اوبونتو ۲۴.۰۴ با استفاده از Docker Compose و ایمنسازی API و کنسول با استفاده از یک پروکسی معکوس Traefik را نشان میدهد.
پیش نیازها #
قبل از شروع:
- به عنوان یک کاربر غیر ریشه با امتیازات sudo به یک سرور اوبونتو ۲۴.۰۴ دسترسی پیدا کنید.
- داکر و داکر کامپوز را نصب کنید.
- دو نام دامنه را که به آدرس IP عمومی سرور شما اشاره میکنند، پیکربندی کنید:
console.example.com(برای رابط کاربری وب).s3.example.com(برای نقطه پایانی S3 API).
تنظیم ساختار دایرکتوری و متغیرهای محیطی #
MinIO دادههای شیء را روی دیسک ذخیره میکند و برای اعتبارنامهها، دامنهها و پیکربندی TLS به متغیرهای محیطی متکی است. این بخش ساختار دایرکتوری مورد نیاز برای ذخیرهسازی پایدار را آماده میکند و متغیرهای محیطی مورد استفاده توسط Docker Compose و Traefik را در طول استقرار تعریف میکند.
- پوشههای پروژه را ایجاد کنید.console
$ mkdir -p ~/minio/{data,letsencrypt}
data– دادههای واقعی شیء را ذخیره میکند.letsencrypt– فروشگاههای Traefik گواهینامههای ACME.
- به دایرکتوری ریشه MinIO بروید.console
$ cd ~/minio
- یک فایل
.envبرای ذخیره اطلاعات احراز هویت و پیکربندی دامنه خود ایجاد کنید.console$ nano .env - مقادیر زیر را اضافه کنید:ini
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=STRONG_PASSWORD DOMAIN_CONSOLE=console.example.com DOMAIN_API=s3.example.com LETSENCRYPT_EMAIL=admin@example.com
مقادیر متغیر را با مقادیر خودتان جایگزین کنید:
STRONG_PASSWORD– یک رمز عبور امن برای کاربر ادمین MinIO.console.example.com– دامنه برای کنسول وب MinIO.s3.example.com– دامنه برای نقطه پایانی MinIO S3 API.admin@example.com– آدرس ایمیل برای دریافت اعلانهای Let’s Encrypt.
فایل را ذخیره کنید و ببندید.
راه اندازی با Docker Compose #
این بخش سرور MinIO را پشت Traefik مستقر میکند. این پیکربندی دو سرویس را در معرض نمایش قرار میدهد: Console (رابط کاربری وب) روی پورت ۹۰۰۱ و API (دسترسی S3) روی پورت ۹۰۰۰.
- حساب کاربری خود را به گروه کاربری docker اضافه کنید.console
$ sudo usermod -aG docker $USER
- عضویت جدید گروه را اعمال کنید.console
$ newgrp docker - فایل مانیفست Docker Compose را ایجاد کنید.console
$ nano docker-compose.yml - محتویات زیر را اضافه کنید:yaml
services: traefik: image: traefik:latest container_name: traefik restart: unless-stopped environment: DOCKER_API_VERSION: "۱.۴۴" command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--certificatesresolvers.le.acme.httpchallenge=true" - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}" - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" ports: - "۸۰:۸۰" - "۴۴۳:۴۴۳" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt minio: image: minio/minio:latest container_name: minio restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} MINIO_BROWSER_REDIRECT_URL: https://${DOMAIN_CONSOLE} volumes: - ./data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: ۳ labels: - "traefik.enable=true" # Router 1: The S3 API (Port 9000) - "traefik.http.routers.minio-api.rule=Host(`${DOMAIN_API}`)" - "traefik.http.routers.minio-api.entrypoints=websecure" - "traefik.http.routers.minio-api.tls=true" - "traefik.http.routers.minio-api.tls.certresolver=le" - "traefik.http.routers.minio-api.service=minio-api-svc" - "traefik.http.services.minio-api-svc.loadbalancer.server.port=9000" # Router 2: The Web Console (Port 9001) - "traefik.http.routers.minio-console.rule=Host(`${DOMAIN_CONSOLE}`)" - "traefik.http.routers.minio-console.entrypoints=websecure" - "traefik.http.routers.minio-console.tls=true" - "traefik.http.routers.minio-console.tls.certresolver=le" - "traefik.http.routers.minio-console.service=minio-console-svc" - "traefik.http.services.minio-console-svc.loadbalancer.server.port=9001"
فایل را ذخیره کنید و ببندید.
این پیکربندی Docker Compose، MinIO را مستقر کرده و آن را با استفاده از Traefik به صورت ایمن از طریق HTTPS در معرض نمایش قرار میدهد. این تنظیمات، S3 API و کنسول وب MinIO را در دامنههای مختلف جدا میکند و در عین حال تمام مدیریت TLS را در Traefik متمرکز نگه میدارد.
سرویس مینیو
- ایمیج رسمی
minio/minioرا اجرا میکند و فضای ذخیرهسازی شیء سازگار با S3 با کارایی بالا را فراهم میکند. - MinIO را در server mode اجرا میکند و تمام اشیاء را در دایرکتوری
/dataذخیره میکند، که به طور مداوم از./dataروی میزبان mount میشود. - دو پورت داخلی را در معرض نمایش قرار میدهد:
- ۹۰۰۰ – نقطه پایانی MinIO S3 API (مورد استفاده توسط برنامهها، پشتیبانگیریها و کلاینتها).
- ۹۰۰۱ – کنسول وب MinIO برای مدیریت و نظارت.
- از متغیرهای محیطی برای موارد زیر استفاده میکند:
- اعتبارنامههای دسترسی روت (
MINIO_ROOT_USER,MINIO_ROOT_PASSWORD) را تعریف کنید. - مقدار
MINIO_BROWSER_REDIRECT_URLرا طوری تنظیم کنید که کنسول وب به درستی از طریق Traefik و از طریق HTTPS ریدایرکت شود.
- اعتبارنامههای دسترسی روت (
- شامل یک بررسی سلامت است که سلامت داخلی نقطه پایانی MinIO را تأیید میکند و به Docker اجازه میدهد تا در دسترس بودن سرویس را پیگیری کند.
ادغام Traefik (از طریق برچسبها)
- Traefik به طور خودکار MinIO را با استفاده از برچسبهای Docker کشف میکند.
- دو روتر HTTPS جداگانه تعریف شدهاند:
- روتر API MinIO
- ترافیک
${DOMAIN_API}را به رابط برنامهنویسی کاربردی S3 مربوط به MinIO روی پورت ۹۰۰۰ هدایت میکند. - برای دسترسی برنامهنویسیشده (SDKها، ابزارهای CLI، پشتیبانگیریها) در نظر گرفته شده است.
- ترافیک
- MinIO Console router
- ترافیک
${DOMAIN_CONSOLE}را به کنسول وب MinIO روی پورت ۹۰۰۱ هدایت میکند. - برای مدیریت مبتنی بر مرورگر در نظر گرفته شده است.
- ترافیک
- روتر API MinIO
- هر دو روتر:
- به نقطه ورود امن
websecureدهید. - برای دریافت و تمدید خودکار گواهینامههای TLS از Let’s Encrypt (
le) استفاده کنید.هر روتر به یک سرویس اختصاصی Traefik متصل میشود تا اطمینان حاصل شود که ترافیک به پورت داخلی صحیح هدایت میشود.
- به نقطه ورود امن
traefik service
- به عنوان پروکسی معکوس و پایانه TLS برای MinIO عمل میکند.
- روی پورتهای ۸۰ و ۴۴۳ روی میزبان گوش میدهد.
- به طور خودکار ترافیک HTTP را به HTTPS هدایت میکند.
- گواهیهای Let’s Encrypt ACME را در دایرکتوری
./letsencryptذخیره میکند. - از سوکت داکر (read-only) برای کشف سرویسها و اعمال پویای قوانین مسیریابی استفاده میکند.
- ایمیج رسمی
- سرویسها را شروع کنید.console
$ docker compose up -d - تأیید کنید که کانتینرها در حال اجرا هستند.console
$ docker compose psنکتهبرای اطلاعات بیشتر در مورد مدیریت پشته Docker Compose، به مقاله نحوه استفاده از Docker Compose مراجعه کنید.
دسترسی به MinIO #
- مرورگر وب خود را باز کنید و به دامنه کنسول خود بروید
https://console.example.com. - با استفاده از
MINIO_ROOT_USERوMINIO_ROOT_PASSWORDکه در فایل.envپیکربندی کردهاید، وارد سیستم شوید. - در اولین ورود، پنجرهی Acknowledge ظاهر میشود. برای پذیرش شرایط و رفتن به داشبورد، روی تأیید کلیک کنید.

نصب و کانفیگ MinIO - پس از ورود موفقیتآمیز، داشبورد Buckets بارگذاری میشود. اکنون میتوانید اولین سطل ذخیرهسازی خود را ایجاد کنید.
- برای آزمایش اتصال API، میتوانید از هر کلاینت سازگار با S3 (مانند s3cmd) با استفاده از جزئیات زیر استفاده کنید:
- Endpoint:
https://s3.example.com - Access Key: Value of
MINIO_ROOT_USER - Secret Key: Value of
MINIO_ROOT_PASSWORD
- Endpoint:
نتیجه گیری #
با دنبال کردن این مقاله، شما با موفقیت سرور ذخیرهسازی شیء MinIO را در اوبونتو ۲۴.۰۴ مستقر کردید. شما Traefik را طوری پیکربندی کردید که به طور ایمن ترافیک را به API S3 و کنسول مدیریت وب هدایت کند. اکنون سرور شما آماده ذخیره دادهها برای برنامهها، پشتیبانگیریها یا بارهای کاری هوش مصنوعی است. برای اطلاعات بیشتر، به مستندات MinIO مراجعه کنید.
