Подключение MinIO к Laravel, Node.js и Python

    Команда Simple-Server
    05.06.2026
    14 мин

    Серия «MinIO на VPS»: Buckets и ключиSDK

    Источник совместимости: AWS S3 API, MinIO S3 compatibility.

    Общие параметры (из статьи про ключи):

    ПараметрПример
    Endpointhttps://s3.example.com
    Access Keyappuser
    Secret KeyAppUser_SecretPass456
    Bucketmy-app-uploads
    Regionus-east-1 (для MinIO часто фиксированный)

    Laravel (Flysystem S3)

    composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies

    .env:

    AWS_ACCESS_KEY_ID=appuser AWS_SECRET_ACCESS_KEY=AppUser_SecretPass456 AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=my-app-uploads AWS_ENDPOINT=https://s3.example.com AWS_USE_PATH_STYLE_ENDPOINT=true

    config/filesystems.php — диск s3 использует переменные AWS_*.

    Проверка в tinker:

    php artisan tinker --execute="Storage::disk('s3')->put('laravel-test.txt', 'hello'); echo Storage::disk('s3')->url('laravel-test.txt');"

    Node.js (@aws-sdk/client-s3)

    mkdir -p /tmp/minio-node && cd /tmp/minio-node npm init -y npm install @aws-sdk/client-s3

    upload.js:

    import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; import fs from "fs"; const client = new S3Client({ region: "us-east-1", endpoint: "https://s3.example.com", forcePathStyle: true, credentials: { ```bash accessKeyId: "appuser", secretAccessKey: "AppUser_SecretPass456",

    }, });

    await client.send(new PutObjectCommand({ Bucket: "my-app-uploads", Key: "node-test.txt", Body: fs.readFileSync("/etc/hostname"), })); console.log("upload OK");

    ```bash node upload.js

    Python (boto3)

    apt install -y python3-pip pip3 install boto3

    upload.py:

    import boto3 from botocore.client import Config s3 = boto3.client( ```bash "s3", endpoint_url="https://s3.example.com", aws_access_key_id="appuser", aws_secret_access_key="AppUser_SecretPass456", config=Config(signature_version="s3v4"), region_name="us-east-1",

    )

    with open("/etc/hostname", "rb") as f:

    s3.put_object(Bucket="my-app-uploads", Key="python-test.txt", Body=f.read())

    print("upload OK")

    ```bash python3 upload.py mc ls local/my-app-uploads

    HTTP без SDK (curl + presigned — опционально)

    Для отладки используйте mc:

    mc cp /etc/hosts local/my-app-uploads/curl-via-mc.txt

    Типичные ошибки SDK

    ОшибкаРешение
    SignatureDoesNotMatchforcePathStyle: true, правильный endpoint
    AccessDeniedPolicy пользователя — troubleshooting
    SSL errorsCA / self-signed — используйте Let's Encrypt

    VPS на Simple-Server

    Для развёртывания на production возьмите VPS/VDS с Ubuntu 22.04: root по SSH, NVMe и канал от 500 Мбит/с.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны