مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
سرور مجازی

ساخت S3 Object Storage با MinIO AIStor Free روی سرور مجازی

ساخت S3 Object Storage شخصی با MinIO در ۲۰۲۶؛ نصب AIStor Free، Bucket و Access Key روی VPS Object Storage فقط مخصوص AWS نیست. می‌توانید روی سرور خودتان یک Endpoint سازگار با S3 داشته…

ساخت S3 Object Storage با MinIO AIStor Free روی سرور مجازی
خلاصه سریع این آموزش

ساخت S3 Object Storage شخصی با MinIO در ۲۰۲۶؛ نصب AIStor Free، Bucket و Access Key روی VPS Object Storage فقط مخصوص AWS نیست. می‌توانید روی سرور خودتان یک Endpoint…

۱۲ دقیقه مطالعه ۰ دیدگاه ۱۰ مهر ۱۴۰۵ آخرین به‌روزرسانی

فهرست مطالب

ساخت S3 Object Storage شخصی با MinIO در ۲۰۲۶؛ نصب AIStor Free، Bucket و Access Key روی VPS

Object Storage فقط مخصوص AWS نیست. می‌توانید روی سرور خودتان یک Endpoint سازگار با S3 داشته باشید و اپلیکیشن، Backup Server، CDN، سیستم آرشیو یا نرم‌افزارهای مختلف را به آن متصل کنید.

اما MinIO در سال ۲۰۲۶ تغییر مهمی کرده است. بسیاری از آموزش‌های قدیمی هنوز دستور دانلود Community Binary یا اجرای تصویر قدیمی minio/minio را پیشنهاد می‌کنند؛ در حالی که مخزن Community قدیمی دیگر Maintained نیست. در این آموزش مسیر فعلی را دنبال می‌کنیم و MinIO AIStor Free را به‌عنوان S3 Object Storage تک‌سروری راه‌اندازی می‌کنیم.

⚠️ قبل از نصب: AIStor Free رایگان است، اما همان MinIO Community قدیمی با AGPL نیست. Free License محدودیت‌هایی دارد؛ از جمله عدم پشتیبانی از Distributed Multi-node، Site/Bucket Replication و Encryption at Rest. برای Lab، Backup سبک و Object Storage تک‌سروری مناسب است؛ برای معماری HA باید محدودیت License را بررسی کنید.

S3 Object Storage چیست؟

در Object Storage فایل با Path فایل‌سیستم سنتی مدیریت نمی‌شود؛ هر داده یک Object داخل Bucket است و از طریق API فراخوانی می‌شود.

S3 Endpoint
   |
   +--- bucket: backups
   |       +--- db.sql.zst
   |       +--- server.tar.zst
   |
   +--- bucket: media
           +--- image.webp
           +--- video.mp4

S3 چه کاربردهایی دارد؟

🔹 Backup Repository

🔹 ذخیره تصاویر و ویدئو

🔹 Backend فایل برای اپلیکیشن

🔹 Storage برای Podcast و Media

🔹 Origin برای CDN

🔹 Data Lake کوچک

مطلب مرتبط: S3 را پشت CDN قرار دهید

اگر Object Storage را برای تصاویر یا فایل‌های استاتیک می‌سازید، مقاله ساخت CDN شخصی و Image CDN با Nginx مسیر بعدی مناسبی است؛ S3 می‌تواند Origin فایل باشد و Edgeها محتوای پرتکرار را Cache کنند.

پیش‌نیازها

🔹 Ubuntu 24.04 LTS

🔹 Kernel 6.8 یا جدیدتر

🔹 یک Disk یا Volume مستقل برای Objectها

🔹 دامنه مانند s3.example.com

🔹 AIStor Free License

Object Storage برای فایل حجیم، Backup و Media

اگر حجم داده بالا است، علاوه بر CPU و RAM به ظرفیت Disk، IOPS و Traffic توجه کنید. برای Storage سنگین یا چند ترابایت داده، سرور اختصاصی می‌تواند نسبت به VPS کوچک منطقی‌تر باشد.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مرحله اول: نصب AIStor Server

برای سرور AMD64:

curl --progress-bar -L \
https://dl.min.io/aistor/minio/release/linux-amd64/minio.deb \
-o minio.deb

sudo dpkg -i minio.deb

minio --version

Package یک User و Service مربوط به MinIO ایجاد می‌کند.

مرحله دوم: دریافت Free License

برای AIStor Free باید Free License را از MinIO/SUBNET دریافت کنید. فایل License را روی Server قرار دهید:

sudo mkdir -p /opt/minio

sudo touch 
  /opt/minio/minio.license

sudo chown -R 
  minio-user:minio-user 
  /opt/minio

محتوای License دریافتی را در فایل minio.license قرار دهید.

مرحله سوم: آماده‌سازی Storage

sudo mkdir -p \
  /mnt/drive-1/minio

sudo chown -R 
  minio-user:minio-user 
  /mnt/drive-1

برای Production واقعی بهتر است این مسیر روی Volume یا Disk مخصوص داده قرار داشته باشد، نه صرفاً Root Partition کوچک VPS.

مرحله چهارم: تنظیم /etc/default/minio

sudo nano /etc/default/minio

مقادیر اصلی:

MINIO_LICENSE="/opt/minio/minio.license"

MINIO_VOLUMES="/mnt/drive-1/minio"

MINIO_ROOT_USER="CHANGE_TO_RANDOM_ACCESS_KEY"

MINIO_ROOT_PASSWORD="CHANGE_TO_LONG_RANDOM_SECRET"

مقادیر تصادفی بسازید:

openssl rand -hex 16
openssl rand -hex 32

⚠️ هرگز minioadmin:minioadmin را روی Server واقعی نگه ندارید.

مرحله پنجم: راه‌اندازی Service

sudo systemctl enable minio.service
sudo systemctl start minio

sudo systemctl status minio

sudo journalctl -u minio -f

مرحله ششم: نصب MinIO Client یا mc

wget \
https://dl.min.io/aistor/mc/release/linux-amd64/mc \
-O mc

chmod +x ./mc

sudo mv ./mc 
/usr/local/bin/

mc --version

مرحله هفتم: اتصال CLI

mc alias set storage \
http://127.0.0.1:9000 \
YOUR_ROOT_USER \
YOUR_ROOT_PASSWORD

mc admin info storage

مرحله هشتم: ساخت اولین Bucket

mc mb storage/media

آپلود فایل:

mc cp photo.webp storage/media/

فهرست Objectها:

mc ls storage/media

Root Credential را به Application ندهید

Application نباید با Root User به S3 وصل شود. برای هر سرویس یک User یا Access Key محدود بسازید و فقط Permission همان Bucket را بدهید.

این کار Blast Radius نشت Credential را کاهش می‌دهد.

اتصال نرم‌افزارهای S3-Compatible

بیشتر SDKها به چهار مقدار نیاز دارند:

Endpoint:
https://s3.example.com

Access Key:
APP_ACCESS_KEY

Secret Key:
APP_SECRET_KEY

Bucket:
media

S3 Object Storage جای File System نیست

Object Storage برای Objectهای بزرگ و APIمحور عالی است، اما نباید آن را دقیقاً مثل ext4 یا یک Network Share معمولی فرض کنید. Rename، Directory و Metadata رفتار S3 مخصوص خود را دارند.

محدودیت مهم AIStor Free

قابلیت AIStor Free
Single-node بله
Multi-drive روی یک Node بله
Distributed Multi-node خیر
Replication محدود به Tier پولی
Encryption at Rest در Free در دسترس نیست

آیا Community Edition قدیمی MinIO را نصب کنیم؟

برای Lab و بررسی Code می‌توانید نسخه Source قدیمی را مطالعه یا Build کنید، اما مخزن رسمی Community اکنون Archived و Read-only است. برای Server جدید Production، استفاده از Binaryهای Legacy که دیگر Update امنیتی دریافت نمی‌کنند توصیه نمی‌شود.

سؤالات متداول

S3 Object Storage چیست؟

مدلی برای نگه‌داری Objectها داخل Bucket و دسترسی به آن‌ها از طریق API سازگار با S3 است.

آیا MinIO Community هنوز Maintained است؟

مخزن قدیمی Community در آوریل ۲۰۲۶ Archived شده و برای نصب تازه مسیر رسمی به AIStor تغییر کرده است.

آیا AIStor Free رایگان است؟

بله، Free License برای کاربردهای تک‌سروری ارائه می‌شود، اما محدودیت Feature دارد.

آیا می‌توان Backup روی S3 ذخیره کرد؟

بله، تعداد زیادی Backup Tool از S3 یا S3-Compatible Endpoint پشتیبانی می‌کنند.

آیا S3 برای CDN مناسب است؟

بله، Object Storage می‌تواند Origin فایل‌های استاتیک باشد و CDN جلوی آن قرار بگیرد.

در راه‌اندازی S3، Disk یا Access Key مشکل دارید؟

Storage Permission، TLS، Firewall، Bucket Policy و Access Key از نقاط رایج خطا هستند.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

جمع‌بندی

در ۲۰۲۶ ساخت S3 شخصی با MinIO دیگر دقیقاً شبیه آموزش‌های چند سال قبل نیست. Community Repository قدیمی Archived شده و برای Deployment تازه، AIStor Free گزینه فعلی MinIO برای Single-node است.

بعد از نصب، Endpoint استاندارد S3، Bucket و Access Key دارید و می‌توانید Backup Tool، Application یا CDN را به Storage شخصی خودتان متصل کنید.

ساخت Immutable Backup Storage ضدباج‌افزار با MinIO Object Lock؛ بکاپ WORM روی VPS

اگر Ransomware یا مهاجم به Backup Server دسترسی پیدا کند، داشتن نسخه پشتیبان به‌تنهایی کافی نیست؛ چون ممکن است همان Backupها نیز حذف یا رمزگذاری شوند. یکی از راه‌های مقاوم‌تر کردن لایه Backup، استفاده از Immutable Storage است.

در این آموزش یک Bucket سازگار با S3 می‌سازیم که Objectهای Backup برای مدت مشخصی در حالت WORM یا Write Once Read Many باقی بمانند. از MinIO AIStor Object Lock استفاده می‌کنیم و تفاوت Governance، Compliance و Legal Hold را هم عملی بررسی می‌کنیم.

⚠️ مهم: Immutable Backup معادل «غیرقابل‌حذف برای همیشه» نیست. Retention Policy باید با ظرفیت Storage، سیاست نگهداری و نرم‌افزار Backup شما هماهنگ باشد. انتخاب اشتباه Compliance Mode می‌تواند باعث شود حتی Administrator نیز تا پایان Retention نتواند داده را پاک کند.

Immutable Backup چیست؟

Immutable Backup نسخه‌ای است که در دوره Retention مشخص، Object Version آن قابل تغییر یا حذف نیست.

هدف این است که حتی اگر Credential نرم‌افزار Backup لو رفت، مهاجم نتواند Recovery Pointهای محافظت‌شده را بلافاصله پاک کند.

Production Server
       |
       v
Backup Software
       |
       v
S3 Bucket
Versioning + Object Lock
       |
       v
Immutable Recovery Points

پیش‌نیاز این مقاله

فرض می‌کنیم S3 Storage مقاله قبل را ساخته‌اید و mc به آن متصل است:

mc admin info storage

مطلب مرتبط: Backup واقعی با Restic و Backrest

Immutable Storage فقط مقصد مقاوم Backup است؛ هنوز به Software نیاز دارید که Backup Job و Restore را مدیریت کند. برای لایه Backup می‌توانید آموزش Backrest و Restic برای Backup و Restore سرور را مطالعه کنید. فقط توجه داشته باشید Retention Object Lock ممکن است عملیات Prune/Delete برخی ابزارها را تا پایان دوره Lock محدود کند.

Versioning، Governance و Compliance چه فرقی دارند؟

حالت رفتار مناسب برای
Versioning نسخه‌های قبلی Object را نگه می‌دارد Undo و History
Governance کاربر عادی نمی‌تواند Lock را دور بزند؛ User دارای Permission خاص می‌تواند محیط‌های مدیریتی منعطف‌تر
Compliance حتی Root نمی‌تواند Object Version را قبل از پایان Retention حذف کند WORM سخت‌گیرانه
Legal Hold تا زمان برداشتن Hold، Object قفل می‌ماند پرونده، Audit و نگهداری نامحدود

Backup Storage بهتر است Failure Domain جدا داشته باشد

اگر Production و Immutable Backup روی همان VPS، همان Disk و همان Credential باشند، Protection واقعی محدود می‌شود. برای Backup مهم بهتر است مقصد روی سرور یا Storage جدا قرار داشته باشد.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مرحله اول: ساخت Bucket با Object Lock

برای ساده‌ترین و واضح‌ترین طراحی، Bucket را از ابتدا با Lock بسازید:

mc mb --with-lock \
storage/immutable-backups

فعال شدن Object Lock، Versioning را نیز فعال می‌کند.

مرحله دوم: بررسی Versioning

mc version info \
storage/immutable-backups

مرحله سوم: Retention آزمایشی Governance

قبل از رفتن سراغ Compliance طولانی، ابتدا Governance کوتاه را آزمایش کنید:

mc retention set \
  --default \
  GOVERNANCE \
  "7d" \
  storage/immutable-backups

بررسی تنظیم:

mc retention info \
storage/immutable-backups

مرحله چهارم: Upload یک Backup آزمایشی

tar -czf \
server-backup.tar.gz \
/etc/nginx

mc cp 
server-backup.tar.gz 
storage/immutable-backups/

این Object باید Retention پیش‌فرض Bucket را به ارث ببرد.

مرحله پنجم: دیدن Versionهای Object

mc ls --versions \
storage/immutable-backups/

چرا mc rm ساده تست کافی نیست؟

در Bucket Versioned، حذف عادی ممکن است فقط یک Delete Marker ایجاد کند و نسخه اصلی را پنهان کند. این به معنی حذف شدن نسخه Immutable نیست.

برای بررسی واقعی باید Version ID را ببینید و تلاش کنید همان Version محافظت‌شده را حذف کنید. Retention باید این عملیات را مسدود کند.

مرحله ششم: Compliance Mode برای Backup واقعی

⚠️ قبل از اجرای این دستور روی داده واقعی مطمئن شوید Retention درست است. در Compliance Mode حتی Root User نیز نمی‌تواند Object Version را قبل از پایان زمان Lock حذف کند.

نمونه Retention سی‌روزه:

mc retention set \
  --default \
  COMPLIANCE \
  "30d" \
  storage/immutable-backups

اعمال Retention هنگام Upload

برای Object مشخص نیز می‌توان Retention تعیین کرد:

mc cp \
  --retention-mode COMPLIANCE \
  --retention-duration 30d \
  database.sql.zst \
  storage/immutable-backups/

Legal Hold چه زمانی به درد می‌خورد؟

Retention مدت مشخص دارد؛ Legal Hold تاریخ پایان خودکار ندارد و تا زمانی که User دارای Permission آن را بردارد باقی می‌ماند.

mc legalhold set \
storage/immutable-backups/important.tar.zst

ساعت سرور اهمیت امنیتی دارد

Retention به زمان وابسته است. اگر ساعت Server اشتباه باشد، محاسبه Retain Until می‌تواند مشکل پیدا کند. NTP و Time Synchronization را جدی بگیرید.

timedatectl status

sudo timedatectl set-ntp true

Retention چند روز باشد؟

یک عدد ثابت برای همه وجود ندارد. Retention باید با RPO، حجم Backup، نرخ تغییر داده، ظرفیت Storage و سیاست حذف هماهنگ باشد.

سناریو نمونه Retention آزمایشی
Backup روزانه شخصی ۷ تا ۳۰ روز
Server کاری مهم ۳۰ تا ۹۰ روز براساس ظرفیت
آرشیو قانونی براساس Policy و الزامات قانونی

این اعداد فقط مثال طراحی هستند؛ قبل از Compliance واقعی ظرفیت را محاسبه کنید.

Immutable Storage و قانون 3-2-1-1-0

معماری مقاوم‌تر Backup معمولاً فقط یک Repository ندارد. یک نمونه:

🔹 ۳ نسخه از داده

🔹 ۲ نوع Storage یا Failure Domain

🔹 ۱ نسخه Off-site

🔹 ۱ نسخه Offline یا Immutable

🔹 ۰ خطا در Restore Test

Backup Tool باید با Object Lock سازگار باشد

بعضی Backup Toolها هنگام Prune یا Retention داخلی خودشان تلاش می‌کنند Objectهای قدیمی را حذف کنند. اگر آن Object هنوز WORM Locked باشد، عملیات Delete شکست می‌خورد.

بنابراین Retention نرم‌افزار Backup و Retention Storage را جداگانه و هماهنگ طراحی کنید.

Immutable به معنی ضدخرابی سخت‌افزار نیست

Object Lock جلوی Delete و Overwrite منطقی را می‌گیرد، اما اگر تنها Disk خراب شود، Data Center از دسترس خارج شود یا کل VPS حذف شود، Immutability به‌تنهایی Recovery ایجاد نمی‌کند.

برای داده مهم، نسخه دوم در Failure Domain جدا همچنان لازم است.

مشکلات رایج

Object پاک نمی‌شود

اگر Compliance یا Governance فعال است، Retention Info و Version ID را بررسی کنید. این رفتار ممکن است دقیقاً همان Protection مورد انتظار باشد.

Backup Software در Prune خطا می‌دهد

احتمالاً Tool می‌خواهد Objectی را حذف کند که هنوز Lock است. Policy نرم‌افزار و Storage را هماهنگ کنید.

Storage پر شده ولی فایل‌ها حذف نمی‌شوند

Compliance Retention را نمی‌توان صرفاً برای آزاد کردن Disk دور زد. به همین دلیل Capacity Planning قبل از Lock بسیار مهم است.

برای طراحی Retention یا Backup Repository مطمئن نیستید؟

اگر Governance، Compliance، ظرفیت Storage یا سازگاری نرم‌افزار Backup برایتان مبهم است، قبل از Lock طولانی بهتر است معماری بررسی شود؛ چون بعضی تصمیم‌ها تا پایان Retention قابل بازگشت نیستند.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

سؤالات متداول

Immutable Backup چیست؟

Backupی است که نسخه محافظت‌شده آن در مدت Retention قابل تغییر یا حذف نیست.

WORM یعنی چه؟

Write Once Read Many؛ داده نوشته می‌شود و در دوره Lock می‌توان آن را خواند اما نسخه محافظت‌شده قابل تغییر نیست.

Governance با Compliance چه تفاوتی دارد؟

Governance برای User دارای Permission خاص قابل Bypass است؛ Compliance حتی برای Root نیز تا پایان Retention قابل حذف نیست.

آیا Object Lock جلوی Ransomware را می‌گیرد؟

می‌تواند حذف یا Overwrite نسخه‌های Lockشده را محدود کند و لایه مهمی در مقاومت در برابر Ransomware باشد، اما جای معماری Backup کامل را نمی‌گیرد.

آیا حذف عادی Object در Bucket Versioned یعنی Backup پاک شده است؟

لزوماً نه؛ حذف بدون Version ID ممکن است Delete Marker بسازد و نسخه اصلی همچنان تحت Retention باقی بماند.

آیا Immutable Storage باید روی سرور جدا باشد؟

برای داده مهم، جدا کردن Failure Domain و Credentialها Protection واقعی‌تری ایجاد می‌کند.

جمع‌بندی

Versioning به‌تنهایی Backup را Immutable نمی‌کند. برای ساخت Repository مقاوم‌تر باید Object Lock و Retention را روی Versionهای Backup اعمال کنید.

Governance برای شروع و تست انعطاف بیشتری دارد؛ Compliance سخت‌گیرانه‌تر است و قبل از استفاده باید Capacity و Policy دقیق مشخص شوند.

در نهایت Immutable Storage فقط یک لایه از Data Protection است. نسخه Off-site، Credential جدا و Restore Test همچنان بخش‌های ضروری معماری Backup هستند.

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *