DEV Community

Lucas Lima
Lucas Lima

Posted on

How to Use Vultr Object Storage with Laravel (S3-Compatible)

First steps

In this tutorial I assume that you have already prepared your Laravel project environment and have begginer/intermediate knowledge in PHP/Laravel.

First of all, we need to prepare our object storage environment on Vultr's admin panel. If you don't have a Vultr account just create one here. As soon as you have created your account you'll need to create an object storage and then a bucket. For this tutorial focus on how to implement this feature on Laravel i'll just skip this steps and leave a link wich explain all of them here.

1. Installing required packages

To achieve our goal, we need to install flysystem. Flysystem is a well-known file storage library for PHP, it supports many filesystems and provides interfaces for all of them. In our case we'll specifically use aws-s3 but if you want to know more about the library feel free to visit their official documentation page here

composer require league/flysystem-aws-s3-v3
Enter fullscreen mode Exit fullscreen mode

2. Configuration on Laravel

After we've successfully installed our dependency we need now to communicate Laravel that we have a new filesystem and it's credentials.

In config\filesystems.php on disks array you'll add the following:

'vultr' => [  
'driver' => 's3',  
'key'=> env('VULTR_ACCESS_KEY'),  
'secret' => env('VULTR_SECRET_KEY'),  
'region' => env('VULTR_REGION'),  
'bucket' => env('VULTR_BUCKET'),  
'endpoint' => env('VULTR_ENDPOINT'),  
],
Enter fullscreen mode Exit fullscreen mode

obs: You can obtain all this information in vult's panel on object storage section.

3. Environment variables

Now we need to add our credentials to .env to authenticate and execute the proper functions.

VULTR_ACCESS_KEY=youraccesskey  
VULTR_SECRET_KEY=yoursecretkey  
VULTR_REGION=sjc1  
VULTR_BUCKET=yourbucket  
VULTR_ENDPOINT=https://sjc1.vultrobjects.com
Enter fullscreen mode Exit fullscreen mode

4. And Voilà!

Now we can just call our storage class specifying the previously configured vultr disk:

Storage::disk('vultr')->putFile('uploads', request()->file, 'public');
Enter fullscreen mode Exit fullscreen mode

Now we can perform all object storage action within our laravel application!

References

https://laravel.com/docs/11.x/filesystem
https://ecwebservices.medium.com/how-to-use-vultr-object-storage-with-laravel-8-a21256f1b4a1

Top comments (0)