DEV Community

Lucas Lima
Lucas Lima

Posted on

1

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

Heroku

Deploy with ease. Manage efficiently. Scale faster.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

Sentry image

👀 Watch Us Break (and Fix) a Laravel App with Sentry

In this on-demand workshop, we push a Laravel + React app to the edge—then show exactly how to debug it using Sentry. From error tracking to Session Replays and full-stack performance monitoring, it's all here. Bonus: watch AI bots pitch in to clean up the mess.

🎥 Watch now + follow along