🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

nestjs-minio

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nestjs-minio

Minio object storage with nestjs

latest
Source
npmnpm
Version
2.8.0
Version published
Weekly downloads
8.2K
-16.73%
Maintainers
1
Weekly downloads
 
Created
Source

Nest Logo

Minio Module for Nest framework

NPM Version Package License NPM Downloads

Buy Me A Coffee

Description

This's a nest-minio module for Nest. This quickstart guide will show you how to install the client SDK and execute an example JavaScript program. For a complete list of APIs and examples, please take a look at the JavaScript Client API Reference documentation.

This document assumes that you have a working nodejs setup in place.

Installation

$ npm i --save nestjs-minio

Initialize MinIO Client

You need five items in order to connect to MinIO object storage server.

ParamsDescription
endPointURL to object storage service.
portTCP/IP port number. This input is optional. Default value set to 80 for HTTP and 443 for HTTPs.
accessKeyAccess key is like user ID that uniquely identifies your account.
secretKeySecret key is the password to your account.
useSSLSet this value to 'true' to enable secure (HTTPS) access

Provide the credentials for minio module by importing it as :

import { Module } from '@nestjs/common';
import { NestMinioClientController } from './nest-minio-client.controller';
import { NestMinioModule } from '../nest-minio.module';

@Module({
	controllers: [NestMinioClientController],
	imports: [
		NestMinioModule.register({
			isGlobal: true,
			endPoint: 'play.min.io',
			port: 9000,
			useSSL: true,
			accessKey: 'Q3AM3UQ867SPQQA43P2F',
			secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
		}),
	],
})
export class NestMinioClientModule {}

Then you can use it in the controller or service by injecting it in the controller as:


 constructor(@Inject(MINIO_CONNECTION) private readonly minioClient) {}

Multiple Clients In One Module

You can register multiple MinIO clients by importing NestMinioModule.register(...) multiple times and assigning a unique name to each client.

import { Module } from '@nestjs/common';
import { NestMinioModule } from 'nestjs-minio';

@Module({
  imports: [
    NestMinioModule.register({
      name: 'uploads',
      endPoint: 'localhost',
      port: 9000,
      useSSL: false,
      accessKey: 'test',
      secretKey: 'test1234',
    }),
    NestMinioModule.register({
      name: 'archive',
      endPoint: 'localhost',
      port: 9001,
      useSSL: false,
      accessKey: 'archive-user',
      secretKey: 'archive-pass',
    }),
  ],
})
export class StorageModule {}

Inject named clients using the decorator:

import { Controller } from '@nestjs/common';
import { Client } from 'minio';
import { InjectMinio } from 'nestjs-minio';

@Controller()
export class FilesController {
  constructor(
    @InjectMinio('uploads') private readonly uploadsClient: Client,
    @InjectMinio('archive') private readonly archiveClient: Client,
  ) {}
}

Connection Teardown

NestMinioService exposes manual teardown methods so applications can proactively close MinIO connections during graceful shutdown:

import { Injectable } from '@nestjs/common';
import { NestMinioService } from 'nestjs-minio';

@Injectable()
export class ShutdownService {
  constructor(private readonly minioService: NestMinioService) {}

  async closeMinio(): Promise<void> {
    await this.minioService.disconnect();
    // Aliases: close() and destroy()
  }
}

The module also performs this cleanup automatically on application shutdown.

Quick Start Example - File Uploader

This example program connects to an object storage server, makes a bucket on the server and then uploads a file to the bucket.

We will use the MinIO server running at https://play.min.io in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.


import { Controller, Get, Inject } from '@nestjs/common';
import { MINIO_CONNECTION } from '../constants';
import {Client, InjectMinio} from 'minio';

@Controller()
export class NestMinioClientController {
 // use inject token
  constructor(@Inject(MINIO_CONNECTION) private readonly minioClient: Client) {}

  // or use inject decorator
  // constructor(@InjectMinio() private readonly minioClient: Client) {}

  @Get()
  index() {
    const file = '/tmp/app.zip';

    const metaData = {
      'Content-Type': 'application/octet-stream',
      'X-Amz-Meta-Testing': 1234,
      example: 5678,
    };
    // Using fPutObject API upload your file to the bucket europetrip.
    this.minioClient.fPutObject(
      'europetripxxx3',
      'app.zip',
      file,
      metaData,
      function(err, etag) {
        if (err) {
          return console.log(err);
        }
        console.log('File uploaded successfully.');
      },
    );
  }
}


Keywords

minio

FAQs

Package last updated on 25 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts