bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення MinIO Object Storage на

calendar_month Jun 03, 2026 schedule 20 хв. читання visibility 589 переглядів
Установка MinIO Object Storage на VPS: S3-совместимое хранилище, SSL, бэкапы
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення MinIO Object Storage на VPS: S3-сумісне сховище, SSL, резервні копії

TL;DR

У цьому детальному посібнику ми крок за кроком налаштуємо MinIO — високопродуктивне, S3-сумісне об'єктне сховище — на вашому віртуальному або виділеному сервері. Ви дізнаєтеся, як встановити MinIO, забезпечити його безпечну роботу за допомогою SSL/TLS через Caddy, налаштувати автоматичний запуск як системного сервісу та реалізувати ефективну стратегію резервного копіювання для захисту ваших даних. До кінця посібника у вас буде повністю функціонуюче об'єктне сховище, готове для застосунків, резервних копій та інших завдань, що вимагають масштабованого та надійного зберігання.

  • Розгорнете MinIO як S3-сумісне об'єктне сховище на Ubuntu 24.04 LTS.
  • Налаштуєте автоматичне отримання та оновлення SSL-сертифікатів за допомогою Caddy для захищеного доступу.
  • Забезпечите запуск MinIO як системного сервісу з автоматичним стартом після перезавантаження.
  • Реалізуєте базові заходи безпеки: фаєрвол, захист від брутфорсу та використання SSH-ключів.
  • Розробите просту стратегію резервного копіювання для даних MinIO.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Ми будемо налаштовувати MinIO — це високопродуктивний, розподілений сервер об'єктного сховища, написаний на Go. Він розроблений для забезпечення S3-сумісного API, що робить його ідеальною заміною або доповненням до хмарних сервісів, таких як Amazon S3, DigitalOcean Spaces або Google Cloud Storage. MinIO дозволяє розгорнути власне об'єктне сховище на будь-якому обладнанні, від одного сервера до кластера з десятків вузлів, забезпечуючи при цьому високу доступність та масштабованість.

Що отримає читач у підсумку? Ви отримаєте повний контроль над своїми даними, незалежність від сторонніх провайдерів та можливість використовувати знайомий S3 API для своїх застосунків. Це особливо цінно для розробників, яким потрібно зберігати великі обсяги неструктурованих даних (зображення, відео, документи, логи, резервні копії) та інтегрувати їх зі своїми сервісами, будь то веб-застосунки, мікросервіси або аналітичні платформи. MinIO чудово підходить для створення приватної хмари для зберігання даних, хостингу статичних сайтів, зберігання медіа-файлів для CDN або навіть як бекенд для CI/CD-пайплайнів.

Які альтернативи існують і чому self-hosted на VPS? На ринку існує безліч хмарних рішень для об'єктного зберігання, таких як Amazon S3, Google Cloud Storage, Azure Blob Storage, DigitalOcean Spaces, Backblaze B2. Ці сервіси пропонують високу надійність, масштабованість і часто мають низьку вартість входу. Однак вони також мають свої недоліки: залежність від одного провайдера, потенційні проблеми з приватністю даних (особливо для чутливої інформації), непередбачувані витрати при великих обсягах трафіку та сховища, а також неможливість повного контролю над інфраструктурою.

Розгортання MinIO на власному VPS або виділеному сервері дає вам:

  • Повний контроль: Ви керуєте даними, безпекою та конфігурацією.
  • Передбачувані витрати: Ви платите фіксовану ціну за сервер, незалежно від обсягу збережених даних або трафіку (в рамках лімітів сервера).
  • Приватність даних: Ваші дані залишаються на вашому сервері, під вашим контролем.
  • Продуктивність: Можливість оптимізувати MinIO під свої конкретні завдання та використовувати ресурси сервера максимально ефективно.
  • Гнучкість: Можливість інтеграції з локальними сервісами без затримок та додаткових витрат на вихідний трафік.
Для багатьох компаній та індивідуальних розробників, особливо тих, хто працює з чутливими даними або прагне до оптимізації витрат у довгостроковій перспективі, self-hosted MinIO є оптимальним рішенням.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Вибір відповідного VPS-конфігу для MinIO залежить від передбачуваного навантаження, обсягу збережених даних та вимог до продуктивності. MinIO ефективно використовує доступні ресурси, але об'єктне сховище, особливо при інтенсивній роботі, може бути вимогливим до певних параметрів.

Мінімальні вимоги:

  • Процесор (CPU): 1-2 ядра. MinIO не є сильно CPU-інтенсивним для базових операцій, але багатопотокові запити виграють від більшої кількості ядер. Для невеликих навантажень достатньо 1 ядра, для більш активного використання — 2 ядра.
  • Оперативна пам'ять (RAM): 2 ГБ. MinIO використовує RAM для кешування метаданих та буферизації даних. 2 ГБ — це комфортний мінімум для стабільної роботи. Якщо планується дуже багато дрібних об'єктів або високе конкурентне навантаження, 4 ГБ буде кращим варіантом.
  • Диск: Найкритичніший компонент.
    • Тип: Для об'єктного сховища вкрай важлива продуктивність диска. NVMe SSD або високопродуктивні SATA SSD є обов'язковими для гарної швидкості читання/запису. HDD підходять тільки для архівного зберігання з низькою частотою доступу.
    • Обсяг: Мінімум 50 ГБ для системи та початкових даних. Реальний обсяг залежить від ваших потреб. Переконайтеся, що у вас є достатньо місця для зростання.
    • Відмовостійкість: Якщо ви використовуєте один диск, розгляньте регулярні резервні копії. Для багатодискових конфігурацій MinIO підтримує erasure coding, але на одному VPS це зазвичай неактуально, якщо тільки ви не використовуєте блокове сховище, надане провайдером.
  • Мережа: 1 Гбіт/с. Хороша пропускна здатність мережі важлива, оскільки MinIO буде активно передавати дані. Для більшості VPS 1 Гбіт/с є стандартом. Переконайтеся, що у вашого провайдера немає прихованих обмежень або надмірних витрат на вихідний трафік.

Конкретний VPS-план для завдання:

Для запуску MinIO для команди розробників, невеликого SaaS-проєкту або особистих резервних копій рекомендується наступна конфігурація:

  • CPU: 2 ядра
  • RAM: 4 ГБ
  • Диск: 200-500 ГБ NVMe SSD (або більше, залежно від потреб)
  • Мережа: 1 Гбіт/с, необмежений або щедрий ліміт трафіку.

Можна взяти VPS із зазначеними характеристиками або аналогічний план в іншого провайдера, що пропонує NVMe SSD та достатній обсяг пам'яті.

Коли потрібен dedicated, а не VPS:

Виділений сервер стає необхідним, коли:

  • Потрібна екстремальна продуктивність I/O: Для дуже великих обсягів даних, високої частоти доступу або специфічних робочих навантажень, де продуктивність дискової підсистеми VPS може стати вузьким місцем через спільне використання ресурсів.
  • Потрібні великі обсяги зберігання: Якщо вам потрібно кілька терабайт або петабайт даних, виділений сервер з кількома дисками (наприклад, у RAID-масиві) буде більш економічним та продуктивним рішенням.
  • Висока доступність та відмовостійкість: Для кластерних розгортань MinIO з erasure coding, що вимагають кілька фізичних вузлів для розподілу даних та забезпечення відмовостійкості на рівні дисків та серверів.
  • Специфічні вимоги до безпеки або відповідності: Деякі нормативи можуть вимагати фізичної ізоляції обладнання.

Локація: на що впливає

Вибір локації сервера MinIO важливий з кількох причин:

  • Затримка (Latency): Чим ближче сервер до вашої цільової аудиторії або до серверів застосунків, які використовуватимуть MinIO, тим нижчою буде затримка при доступі до даних. Це критично для інтерактивних застосунків.
  • Законодавство: Розташування сервера може впливати на застосовне законодавство про захист даних (наприклад, GDPR в Європі).
  • Вартість трафіку: Деякі провайдери можуть мати різні тарифи на вихідний трафік залежно від регіону.

Вибирайте локацію, яка географічно найбільш близька до основних споживачів даних MinIO.

Підготовка сервера

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перед встановленням MinIO необхідно провести базове налаштування операційної системи. Передбачається, що ви використовуєте свіжу інсталяцію Ubuntu Server 24.04 LTS.

1. Підключення по SSH та оновлення системи

Спочатку підключіться до свого VPS по SSH, використовуючи облікові дані, надані провайдером. Зазвичай це користувач root або стандартний користувач з правами sudo.


ssh user@your_vps_ip_address

Потім оновіть список пакетів та встановлені пакети до останніх версій:


sudo apt update && sudo apt upgrade -y

Це забезпечить наявність усіх актуальних патчів безпеки та останніх версій системних утиліт.

2. Створення нового користувача з правами sudo (якщо не використовуєте root)

Робота під користувачем root не рекомендується для повсякденних завдань. Створіть нового користувача та надайте йому права sudo.


sudo adduser minioadmin
sudo usermod -aG sudo minioadmin

Тепер ви можете вийти з поточної сесії та увійти під новим користувачем:


exit
ssh minioadmin@your_vps_ip_address

3. Налаштування SSH-ключів для безпечного доступу

Використання SSH-ключів набагато безпечніше, ніж паролів. Якщо ви ще не згенерували ключі, зробіть це на своїй локальній машині:


ssh-keygen -t rsa -b 4096

Потім скопіюйте публічний ключ на ваш VPS (замініть minioadmin та your_vps_ip_address):


ssh-copy-id minioadmin@your_vps_ip_address

Після успішного копіювання ключа, рекомендується відключити автентифікацію за паролем для root та вашого нового користувача, щоб підвищити безпеку. Відредагуйте файл /etc/ssh/sshd_config:


sudo nano /etc/ssh/sshd_config

Знайдіть та змініть наступні рядки:


# Відключити вхід для root за паролем
PermitRootLogin prohibit-password
# Відключити автентифікацію за паролем для всіх
PasswordAuthentication no

Збережіть зміни (Ctrl+O, Enter, Ctrl+X) та перезапустіть SSH-сервіс:


sudo systemctl restart sshd

Важливо: Переконайтеся, що ви можете увійти по SSH за допомогою ключа, перш ніж відключати автентифікацію за паролем! Інакше ви втратите доступ до сервера.

4. Налаштування фаєрволу (UFW)

Фаєрвол необхідний для обмеження доступу до вашого сервера лише за необхідними портами. Ubuntu використовує UFW (Uncomplicated Firewall).


sudo apt install ufw -y # Встановлюємо UFW, якщо його немає
sudo ufw allow OpenSSH # Дозволяємо SSH (порт 22)
sudo ufw allow 80/tcp # Дозволяємо HTTP (для Caddy)
sudo ufw allow 443/tcp # Дозволяємо HTTPS (для Caddy)
sudo ufw enable # Вмикаємо фаєрвол
sudo ufw status # Перевіряємо статус

На даному етапі MinIO ще не встановлено, тому його порт (за замовчуванням 9000) поки що не відкриваємо.

5. Встановлення Fail2ban

Fail2ban допомагає захистити сервер від атак методом підбору паролів (brute-force) шляхом блокування IP-адрес, які здійснюють занадто багато невдалих спроб входу.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2ban за замовчуванням налаштований для захисту SSH. Ви можете перевірити його статус:


sudo fail2ban-client status
sudo fail2ban-client status sshd

Тепер ваш сервер готовий до встановлення MinIO та супутнього ПЗ.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

На цьому етапі ми встановимо MinIO та Caddy, який використовуватиметься для забезпечення HTTPS-доступу до MinIO.

1. Встановлення MinIO Server

Ми встановимо MinIO, завантаживши офіційний бінарник та налаштувавши його як системний сервіс. Для актуальності у 2026 році будемо використовувати останні стабільні версії.

1.1. Створення користувача та груп для MinIO

Для підвищення безпеки MinIO працюватиме під своїм власним непривілейованим користувачем.


sudo groupadd -r minio-user # Створюємо групу для MinIO
sudo useradd -r -s /sbin/nologin -g minio-user minio-user # Створюємо користувача без оболонки

1.2. Створення каталогів для MinIO

Створимо каталог для зберігання бінарника MinIO, даних та конфігурації.


sudo mkdir -p /usr/local/bin
sudo mkdir -p /etc/minio
sudo mkdir -p /var/lib/minio

1.3. Завантаження бінарника MinIO

Завантажимо останню стабільну версію MinIO. Актуальні версії можна завжди знайти на офіційному сайті MinIO або GitHub. На момент 2026 року, припустимо, що актуальна версія MinIO має формат RELEASE.2026-XX-XXTXX-XX-XXZ. Ми використовуватимемо mc (MinIO Client) для керування MinIO.


# Завантаження MinIO Server
wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio # Завантажуємо бінарник MinIO
# Завантаження MinIO Client (mc)
wget -O /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc # Завантажуємо бінарник MinIO Client

1.4. Надання прав на виконання

Зробимо завантажені файли виконуваними.


sudo chmod +x /usr/local/bin/minio # Робимо MinIO виконуваним
sudo chmod +x /usr/local/bin/mc # Робимо MinIO Client виконуваним

1.5. Налаштування прав доступу для каталогу даних

Встановимо власника каталогу даних MinIO на створеного користувача minio-user.


sudo chown minio-user:minio-user /var/lib/minio # Змінюємо власника каталогу даних

2. Встановлення Caddy Web Server

Caddy використовуватиметься як зворотний проксі для MinIO та автоматично керуватиме SSL-сертифікатами Let's Encrypt. Це значно спрощує налаштування HTTPS.

2.1. Додавання репозиторію Caddy

Для отримання останньої стабільної версії Caddy додамо його офіційний репозиторій.


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Встановлюємо необхідні пакети
curl -1s https://dl.cloudsmith.io/public/caddy/stable/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Додаємо GPG-ключ
curl -1s https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Додаємо репозиторій

2.2. Встановлення Caddy

Оновимо список пакетів та встановимо Caddy.


sudo apt update # Оновлюємо список пакетів
sudo apt install caddy -y # Встановлюємо Caddy

Caddy буде встановлений як системний сервіс та автоматично запущений. Ви можете перевірити його статус:


sudo systemctl status caddy

3. Відкриття порту MinIO у фаєрволі (UFW)

Тепер, коли MinIO працюватиме, нам потрібно відкрити порт, на якому він слухатиме (за замовчуванням 9000). Caddy проксіюватиме запити на цей порт.


sudo ufw allow 9000/tcp # Дозволяємо доступ до порту MinIO
sudo ufw status # Перевіряємо статус UFW

На цьому етапі все необхідне програмне забезпечення встановлено. Переходимо до конфігурації.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Тепер, коли MinIO та Caddy встановлені, необхідно налаштувати їх для спільної роботи та забезпечити безпечний доступ через HTTPS.

1. Налаштування змінних середовища MinIO

MinIO використовує змінні середовища для своїх налаштувань, включаючи ключі доступу. Ми створимо файл /etc/minio/minio.conf для зберігання цих змінних.

Важливо: Замініть YOUR_MINIO_ACCESS_KEY та YOUR_MINIO_SECRET_KEY на надійні, довгі та складні значення. Ці ключі використовуватимуться для доступу до вашого сховища!


sudo nano /etc/minio/minio.conf

Додайте наступний вміст:


# MinIO Server Configuration
MINIO_ROOT_USER="YOUR_MINIO_ACCESS_KEY"
MINIO_ROOT_PASSWORD="YOUR_MINIO_SECRET_KEY"
MINIO_VOLUMES="/var/lib/minio" # Каталог для зберігання даних MinIO
MINIO_SERVER_URL="https://minio.your-domain.com" # URL, за яким буде доступний MinIO через Caddy

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

Переконайтеся, що цей файл доступний лише для читання користувачеві minio-user:


sudo chown root:minio-user /etc/minio/minio.conf
sudo chmod 640 /etc/minio/minio.conf

2. Створення Systemd Service для MinIO

Ми створимо системний сервіс, щоб MinIO автоматично запускався при старті сервера та керувався через systemctl.


sudo nano /etc/systemd/system/minio.service

Додайте наступний вміст:


[Unit]
Description=MinIO S3 Compatible Object Storage
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES --console-address ":9001"
EnvironmentFile=/etc/minio/minio.conf # Завантажуємо змінні середовища з нашого файлу
User=minio-user
Group=minio-user
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

Тепер перезавантажте systemd, увімкніть та запустіть сервіс MinIO:


sudo systemctl daemon-reload # Перезавантажуємо systemd
sudo systemctl enable minio # Вмикаємо автозапуск MinIO при старті системи
sudo systemctl start minio # Запускаємо MinIO
sudo systemctl status minio # Перевіряємо статус MinIO

MinIO має бути запущений і слухати на порту 9000 (API) та 9001 (консоль). Переконайтеся, що у виводі systemctl status minio немає помилок.

3. Налаштування Caddyfile для зворотного проксі та SSL

Caddy проксіюватиме запити з вашого доменного імені на локальний MinIO, автоматично отримуючи та оновлюючи SSL-сертифікати.

Важливо: Переконайтеся, що ваш домен (наприклад, minio.your-domain.com) вказує на IP-адресу вашого VPS у DNS за допомогою A-запису.


sudo nano /etc/caddy/Caddyfile

Замініть існуючий вміст на наступний (замініть minio.your-domain.com на ваш фактичний домен):


minio.your-domain.com {
    reverse_proxy localhost:9000 # Проксіюємо API MinIO
    # Для консолі MinIO (опціонально, якщо потрібна веб-консоль через той самий домен)
    # reverse_proxy /minio-console/ localhost:9001
    # Якщо ви хочете, щоб вся консоль була доступна на окремому піддомені,
    # або просто через інший порт, то це краще налаштувати окремо.
    # Для простоти, ми проксіюємо лише API MinIO на 9000.
    # Консоль MinIO за замовчуванням доступна на порту 9001.
    # Якщо ви хочете її проксіювати через той самий домен, то
    # minio.your-domain.com {
    #     handle /minio-console/ {
    #         reverse_proxy localhost:9001
    #     }
    #     handle / {
    #         reverse_proxy localhost:9000
    #     }
    # }
    # Для простоти та безпеки, можна залишити консоль доступною лише локально або через SSH-тунель
    # або на окремому домені. Тут ми проксіюємо лише API.

    # Додаємо заголовки, необхідні для MinIO
    header Access-Control-Allow-Origin ""
    header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
    header Access-Control-Allow-Headers "Accept, Authorization, Content-Type, Content-Length, X-Amz-Date, X-Amz-User-Agent, X-Amz-Content-Sha256, X-Amz-SignedHeaders, X-Amz-Signature, X-Minio-Deployment-ID, X-Minio-Identity-Tag, X-Minio-Release"
    header X-Minio-Deployment-ID "MINIO_DEPLOYMENT_ID"
    header X-Minio-Identity-Tag "MINIO_IDENTITY_TAG"
    header X-Minio-Release "MINIO_RELEASE"
}

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

Перезапустіть Caddy, щоб застосувати зміни:


sudo systemctl reload caddy # Перезавантажуємо Caddy
sudo systemctl status caddy # Перевіряємо статус Caddy

Caddy має успішно запуститися, отримати SSL-сертифікат для вашого домену та почати проксіювати запити на MinIO.

4. Перевірка працездатності

4.1. Перевірка доступності MinIO через Caddy (HTTPS)

Ви можете використовувати curl для перевірки доступності вашого MinIO API через HTTPS.


curl -I https://minio.your-domain.com/minio/health/live

Ви маєте отримати HTTP-статус 200 OK, що означає, що MinIO працює та доступний через Caddy з SSL.


HTTP/2 200
server: Caddy
content-length: 0
date: Mon, 01 Jan 2026 12:00:00 GMT

4.2. Використання MinIO Client (mc)

На вашій локальній машині або на VPS ви можете використовувати mc для взаємодії з MinIO.

Спочатку додайте ваш MinIO-сервер до списку mc:


mc alias set myminio https://minio.your-domain.com YOUR_MINIO_ACCESS_KEY YOUR_MINIO_SECRET_KEY --api S3v4

Замініть myminio на бажане ім'я, https://minio.your-domain.com на ваш домен, а YOUR_MINIO_ACCESS_KEY та YOUR_MINIO_SECRET_KEY на ті, що ви вказали у minio.conf.

Тепер ви можете створювати бакети та завантажувати файли:


mc mb myminio/myfirstbucket # Створюємо новий бакет
echo "Hello MinIO" > testfile.txt
mc cp testfile.txt myminio/myfirstbucket/ # Завантажуємо файл
mc ls myminio/myfirstbucket # Перевіряємо вміст бакету

Якщо всі команди виконуються успішно, ваше MinIO-сховище повністю налаштовано та функціонує.

4.3. Доступ до MinIO Console (опціонально)

За замовчуванням MinIO Console доступна на порту 9001. Для доступу до неї ззовні ви можете:

  • Налаштувати окремий піддомен для консолі (наприклад, console.your-domain.com) у Caddy, проксіюючи його на localhost:9001.
  • Використовувати SSH-тунелювання для безпечного доступу до порту 9001 з вашої локальної машини:
    
    ssh -L 9001:localhost:9001 minioadmin@your_vps_ip_address
                

    Потім відкрийте у браузері http://localhost:9001 на вашій локальній машині.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Резервне копіювання є критично важливим аспектом для будь-якого сховища даних. MinIO, будучи об'єктним сховищем, має свої особливості в резервному копіюванні. Обслуговування включає регулярні оновлення та моніторинг.

1. Що резервувати

У контексті MinIO вам потрібно резервувати:

  • Дані MinIO: Самі об'єкти, що зберігаються в бакетах. Це основний обсяг даних.
  • Конфігураційні файли MinIO: Файл /etc/minio/minio.conf, який містить ваші ключі доступу та інші налаштування.
  • Конфігураційні файли Caddy: Файл /etc/caddy/Caddyfile і, можливо, каталог /var/lib/caddy/.local/share/caddy/, де Caddy зберігає SSL-сертифікати. Хоча сертифікати можна перевипустити, резервна копія прискорить відновлення.

2. Простий скрипт авторезервного копіювання даних MinIO

Найефективніший спосіб резервного копіювання даних MinIO — це використання команди mc mirror для синхронізації даних з іншим S3-сумісним сховищем (наприклад, інший MinIO-сервер, AWS S3, DigitalOcean Spaces або Backblaze B2). Ми налаштуємо скрипт для дзеркалювання всіх бакетів з нашого MinIO на зовнішній S3-сумісний сервіс.

Припустимо, у вас є другий S3-сумісний сервіс (наприклад, backup-s3.example.com) з доступом BACKUP_ACCESS_KEY та BACKUP_SECRET_KEY.

2.1. Додавання зовнішнього S3 до mc alias

Спочатку додайте ваш зовнішній S3-сервіс до mc alias на вашому VPS.


mc alias set external-s3 https://backup-s3.example.com BACKUP_ACCESS_KEY BACKUP_SECRET_KEY --api S3v4

2.2. Створення скрипта резервного копіювання

Створимо скрипт /usr/local/bin/minio_backup.sh:


sudo nano /usr/local/bin/minio_backup.sh

Додайте наступний вміст:


#!/bin/bash

# Каталог для тимчасових файлів логів
BACKUP_LOG_DIR="/var/log/minio-backups"
mkdir -p "$BACKUP_LOG_DIR"

# Файл логу для поточного запуску
LOG_FILE="$BACKUP_LOG_DIR/minio_backup_$(date +\%Y\%m\%d_\%H\%M\%S).log"

echo "--- MinIO Backup Started: $(date) ---" | tee -a "$LOG_FILE"

# Шлях до MinIO Client
MC_PATH="/usr/local/bin/mc"

# Ім'я вашого локального MinIO alias
LOCAL_MINIO_ALIAS="myminio"
# Ім'я вашого зовнішнього S3 alias для резервних копій
REMOTE_S3_ALIAS="external-s3"

# Отримуємо список усіх бакетів у локальному MinIO
BUCKETS=$($MC_PATH ls $LOCAL_MINIO_ALIAS --json | jq -r '.[].key')

if [ -z "$BUCKETS" ]; then
    echo "No buckets found on $LOCAL_MINIO_ALIAS. Exiting." | tee -a "$LOG_FILE"
    exit 0
fi

for BUCKET in $BUCKETS; do
    echo "Backing up bucket: $BUCKET" | tee -a "$LOG_FILE"
    # Створюємо бакет на віддаленому сховищі, якщо його немає
    $MC_PATH mb $REMOTE_S3_ALIAS/$BUCKET 2>/dev/null
    # Дзеркалюємо вміст бакета
    # --overwrite перезаписує файли, якщо вони відрізняються
    # --recursive для рекурсивного копіювання
    # --force примусове копіювання
    # --remove видаляє файли на цільовому сховищі, яких немає у джерелі (використовуйте обережно!)
    $MC_PATH mirror --overwrite --force --recursive $LOCAL_MINIO_ALIAS/$BUCKET $REMOTE_S3_ALIAS/$BUCKET 2>&1 | tee -a "$LOG_FILE"
    if [ ${PIPESTATUS[0]} -ne 0 ]; then
        echo "Error backing up $BUCKET" | tee -a "$LOG_FILE"
    else
        echo "Successfully backed up $BUCKET" | tee -a "$LOG_FILE"
    fi
done

echo "--- MinIO Backup Finished: $(date) ---" | tee -a "$LOG_FILE"

# Очищення старих логів (наприклад, старших за 30 днів)
find "$BACKUP_LOG_DIR" -type f -name "minio_backup_*.log" -mtime +30 -delete
echo "Old logs cleaned up." | tee -a "$LOG_FILE"

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

Зробіть скрипт виконуваним:


sudo chmod +x /usr/local/bin/minio_backup.sh

2.3. Налаштування Cron для автоматичного запуску

Додамо скрипт до розкладу cron для щоденного запуску. Наприклад, о 3 годині ночі.


sudo crontab -e

Виберіть редактор (якщо запропоновано) та додайте наступний рядок у кінець файлу:


0 3 * * * /usr/local/bin/minio_backup.sh > /dev/null 2>&1

Цей рядок запускає скрипт щодня о 03:00. Вивід скрипта перенаправляється в /dev/null, але логи зберігаються в /var/log/minio-backups/.

2.4. Резервне копіювання конфігураційних файлів

Конфігураційні файли можна резервувати окремо, наприклад, за допомогою rsync в інший каталог або на зовнішній сервер.


# Приклад резервного копіювання конфігів у локальний архів
sudo tar -czvf /root/minio_configs_$(date +\%Y\%m\%d).tar.gz /etc/minio/minio.conf /etc/caddy/Caddyfile
# Потім цей архів можна перенести на віддалене сховище

3. Обслуговування та оновлення

3.1. Оновлення MinIO

MinIO активно розвивається, і регулярні оновлення важливі для отримання нових функцій, покращень продуктивності та виправлень безпеки. Процес оновлення MinIO досить простий:


sudo systemctl stop minio # Зупиняємо сервіс MinIO
wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio # Завантажуємо новий бінарник
sudo chmod +x /usr/local/bin/minio # Надаємо права на виконання
sudo systemctl start minio # Запускаємо MinIO
sudo systemctl status minio # Перевіряємо статус

Рекомендується проводити оновлення у "вікно обслуговування" (maintenance window), щоб мінімізувати потенційні простої, хоча MinIO часто підтримує rolling updates для кластерних конфігурацій.

3.2. Оновлення Caddy

Caddy, будучи встановленим з репозиторію, оновлюється стандартним способом:


sudo apt update
sudo apt upgrade caddy -y
sudo systemctl reload caddy # Перезавантажуємо Caddy після оновлення

3.3. Оновлення операційної системи

Регулярно оновлюйте всю систему для отримання патчів безпеки та стабільності.


sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y # Видалення непотрібних пакетів
sudo reboot # Перезавантаження, якщо були оновлення ядра або критичних компонентів

Плануйте перезавантаження в періоди низького навантаження.

Вирішення проблем + FAQ

Тут зібрані типові проблеми та поширені запитання, які можуть виникнути під час роботи з MinIO на VPS.

MinIO не запускається або видає помилку "Permission denied"

Що перевірити: Переконайтеся, що користувач minio-user має правильні права доступу до каталогу даних /var/lib/minio та бінарника /usr/local/bin/minio. Також перевірте файл /etc/minio/minio.conf на предмет одруківок та правильних дозволів.

Як виправити:


sudo chown minio-user:minio-user /var/lib/minio
sudo chmod +x /usr/local/bin/minio
sudo chown root:minio-user /etc/minio/minio.conf
sudo chmod 640 /etc/minio/minio.conf
sudo systemctl daemon-reload
sudo systemctl restart minio
sudo systemctl status minio
        
Перевірте логи MinIO: journalctl -u minio.service -f.

Caddy не отримує SSL-сертифікат або не проксіює запити

Що перевірити:

  1. Переконайтеся, що ваш домен (наприклад, minio.your-domain.com) правильно вказує на IP-адресу вашого VPS у DNS (A-запис).
  2. Перевірте, що порти 80 і 443 відкриті у фаєрволі (UFW).
  3. Перевірте синтаксис /etc/caddy/Caddyfile.
  4. Переконайтеся, що MinIO запущений і слухає на порту 9000.

Як виправити:


sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl restart caddy
sudo systemctl status caddy
        
Дивіться логи Caddy: journalctl -u caddy.service -f.

Не можу підключитися до MinIO через mc alias

Що перевірити:

  1. Правильність URL-адреси, Access Key та Secret Key, використаних при створенні mc alias set.
  2. Доступність вашого домену MinIO з вашої локальної мережі (ping, curl).
  3. Правильність налаштувань фаєрволу на VPS (порти 80, 443 для Caddy).

Як виправити: Перестворіть mc alias, уважно перевіривши всі параметри. Переконайтеся, що немає одруківок у ключах доступу, і URL відповідає HTTPS-адресі, через яку MinIO доступний. Якщо ви використовуєте консоль MinIO, спробуйте увійти через неї, щоб переконатися в правильності ключів.

Який VPS-конфіг мінімально підійде?

Для мінімального використання MinIO, наприклад, для особистих резервних копій або невеликих тестових проектів, вам знадобиться VPS з 1 ядром CPU, 2 ГБ RAM і щонайменше 50 ГБ NVMe SSD. Однак для будь-якого більш серйозного навантаження, такого як зберігання медіа-файлів для веб-додатку або використання MinIO як бекенда для CI/CD, рекомендується 2 ядра CPU, 4 ГБ RAM і 200+ ГБ NVMe SSD. Продуктивність диска (IOPS) є ключовим фактором для об'єктного сховища.

Що вибрати — VPS чи dedicated для цього завдання?

Вибір між VPS та виділеним сервером залежить від масштабу та вимог до продуктивності. VPS ідеально підходить для більшості середніх завдань: розробка, невеликі SaaS-проекти, особисті та командні резервні копії, хостинг статичних сайтів. Він економічний та досить гнучкий. Виділений сервер стає необхідним, коли потрібна максимальна продуктивність дискової підсистеми (особливо для великих обсягів даних), висока пропускна здатність мережі без обмежень, або коли MinIO працюватиме в кластерній конфігурації з erasure coding для забезпечення високої доступності та відмовостійкості на рівні кількох фізичних дисків та машин. Для дуже великих обсягів даних (терабайти і вище) або критично важливих бізнес-додатків виділений сервер надає більше контролю та гарантованих ресурсів.

Як оновити MinIO без простою?

Для одного MinIO-сервера "без простою" у строгому сенсі цього слова зазвичай не вийде, оскільки сервіс потрібно зупинити для заміни бінарника. Однак, якщо ви використовуєте MinIO у розподіленому режимі (кілька вузлів), ви можете виконувати rolling update, оновлюючи вузли по черзі, поки інші вузли продовжують обслуговувати запити. Для одиночного VPS-сервера плануйте коротке вікно обслуговування (кілька хвилин), щоб зупинити MinIO, оновити бінарник і запустити його знову. Caddy кешуватиме запити на короткий час, мінімізуючи видимий простій для клієнтів.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

У цьому посібнику ми успішно розгорнули MinIO Object Storage на вашому VPS, забезпечили його безпеку за допомогою HTTPS через Caddy та налаштували базову систему резервного копіювання. Тепер у вас є потужне та гнучке S3-сумісне сховище, повністю під вашим контролем, готове до інтеграції з вашими програмами та сервісами.

Куди рухатися далі?

  1. Моніторинг: Налаштуйте моніторинг MinIO за допомогою Prometheus та Grafana для відстеження продуктивності, використання диска та інших метрик. MinIO надає вбудовані ендпоінти для Prometheus.
  2. Масштабування: Якщо ваші потреби у сховищі зростають, розгляньте можливість переходу на кластер MinIO з кількома вузлами для підвищення продуктивності та відмовостійкості.
  3. Інтеграція: Інтегруйте MinIO з вашими програмами, використовуючи офіційні S3 SDK для різних мов програмування, або налаштуйте його як бекенд для інших інструментів, таких як Nextcloud, GitLab або системи резервного копіювання.

Поділитися цим записом:

встановлення minio об'єктне сховище на VPS: S3-су
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.