MinIO на VPS: собственное S3-хранилище за 15 минут

Облако и DevOps · 19.04.2026
MinIO на VPS: собственное S3-хранилище за 15 минут

MinIO: собственное S3-хранилище на VPS

MinIO — высокопроизводительное объектное хранилище с полной совместимостью с Amazon S3 API. Идеально для хранения медиафайлов, бэкапов, статики и ML-датасетов прямо на вашем VPS.

Установка через Docker Compose

# /opt/minio/docker-compose.yml
version: '3.8'
services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "9000:9000"   # S3 API
      - "9001:9001"   # Web Console
    volumes:
      - /data/minio:/data
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: StrongPassword123!
      MINIO_VOLUMES: "/data"
    command: server /data --console-address ":9001"
    restart: unless-stopped
mkdir -p /data/minio
docker compose up -d

Nginx Reverse Proxy + SSL

server {
    listen 443 ssl;
    server_name s3.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/s3.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/s3.yourdomain.com/privkey.pem;

    # S3 API
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size 0;  # без лимита размера файла
        proxy_buffering off;
        proxy_request_buffering off;
    }
}

server {
    listen 443 ssl;
    server_name minio-console.yourdomain.com;
    # ... аналогичный блок для порта 9001
    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Создание бакетов и пользователей через CLI

# Установить mc (MinIO Client)
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc && mv mc /usr/local/bin/

# Подключиться к серверу
mc alias set myminio https://s3.yourdomain.com minioadmin StrongPassword123!

# Создать бакет
mc mb myminio/website-uploads
mc mb myminio/backups

# Сделать бакет публичным (для статики)
mc policy set public myminio/website-uploads

# Создать пользователя
mc admin user add myminio appuser AppUserPass123
mc admin policy attach myminio readwrite --user appuser

Интеграция с PHP (AWS SDK)

composer require aws/aws-sdk-php
 'latest',
    'region'   => 'us-east-1',  // MinIO не использует регион, но параметр обязателен
    'endpoint' => 'https://s3.yourdomain.com',
    'use_path_style_endpoint' => true,
    'credentials' => [
        'key'    => 'appuser',
        'secret' => 'AppUserPass123',
    ],
]);

// Загрузить файл
$result = $s3->putObject([
    'Bucket'     => 'website-uploads',
    'Key'        => 'images/photo.jpg',
    'SourceFile' => '/tmp/photo.jpg',
    'ACL'        => 'public-read',
]);

echo $result['ObjectURL'];
Совет: MinIO поддерживает версионирование файлов, lifecycle-политики и репликацию между несколькими серверами. Включите версионирование командой mc version enable myminio/backups.
← Назад в базу знаний Задать вопрос поддержке