Using Digital Ocean Spaces for an Asset Container
You might know it's possible to use Amazon S3 for your Asset Containers, but it's also very simple to use DigitalOcean Spaces.
Since Digital Ocean Spaces is compatible with the Amazon S3 API, you can use the s3 flysystem driver, but with Digital Ocean credentials.
Install#
First, install the AWS Flysystem adapter:
composer require league/flysystem-aws-s3-v3
Configure a filesystem#
Add a filesystem to config/filesystems.php, and make sure to use the s3 driver.
'do_spaces' => [
'driver' => 's3',
'key' => env('DO_SPACES_KEY'),
'secret' => env('DO_SPACES_SECRET'),
'endpoint' => env('DO_SPACES_ENDPOINT'),
'region' => env('DO_SPACES_REGION'),
'bucket' => env('DO_SPACES_BUCKET'),
'root' => env('DO_SPACES_ROOT'),
'url' => env('DO_SPACES_URL'),
'visibility' => 'public', // Set this public so the files uploaded are available publically.
],
DO_SPACES_KEY=
DO_SPACES_SECRET=
DO_SPACES_ENDPOINT=
DO_SPACES_REGION=
DO_SPACES_BUCKET=
DO_SPACES_ROOT=
DO_SPACES_URL=
- The
keyandsecretcan be generated in the "API" section of your dashboard. - You can find the
endpointin the Space's settings. It'll look something likehttps://nyc3.digitaloceanspaces.com. - The
regionwill be in the endpoint. e.g.nyc3 - The
bucketwill be the name of your space. e.g.myspace - You only need to set the
rootif you want this disk to be a subfolder of your space. This is fairly uncommon. - The
urlwill be in the header of the file browser, or in list of your spaces. It'll look something likehttps://myspace.nyc3.digitaloceanspaces.com - If you've enabled the CDN, it's possible you'd have a non-Digital Ocean
url. Look for the "edge" URL.
Link to the asset container#
Create a new Asset Container using this do_spaces as a Disk. You can do this via the CP or add a handle.yaml file to content/assets:
title: "MySpace"
disk: do_spaces
Hot Tip!
If you're having performance issues with S3 containers in the Control Panel, check out these optimization tips.
Docs Feedback
Submit improvements, related content, or suggestions through Github.
Betterify this page