mwikala / linode-s3
This plugin provides Linode Object Storage integration for Craft CMS
Package info
Type:craft-plugin
pkg:composer/mwikala/linode-s3
Requires
- php: ^8.0
- craftcms/cms: ^4.0.0-beta.4 | ^5.0.0
- craftcms/flysystem: ^1.0.0-beta.2 | ^2.0.0
- league/flysystem-aws-s3-v3: ^3.0.0
Requires (Dev)
- craftcms/rector: dev-main
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Linode Object Storage for Craft CMS
This plugin provides a Linode Object Storage filesystem for Craft CMS.
Requirements
- Craft CMS 5.0+
- PHP 8.2+
For Craft CMS 4 sites, use version 2.0.2 of this plugin.
Installation
Install the plugin from the Plugin Store, or with Composer:
cd /path/to/my-craft-project
composer require mwikala/linode-s3
php craft plugin/install linode-s3
The Composer package name is mwikala/linode-s3 and the Craft plugin handle is linode-s3.
Setup
- In Linode Cloud Manager, create an Object Storage bucket and an access key with access to that bucket.
- In Craft, go to Settings → Filesystems and create a new filesystem.
- Set Filesystem Type to Linode Object Storage.
- Enter your bucket details, or use environment variables such as
$LINODE_S3_BUCKET. - If files should be publicly accessible, enable Files in this filesystem have public URLs and set Base URL to the bucket URL or CDN/custom-domain URL.
Linode bucket URLs usually look like this:
https://[bucket-name].[region].linodeobjects.com
The plugin’s API Endpoint setting should be the same URL without the bucket name:
https://[region].linodeobjects.com
For example, a bucket URL of https://assets.eu-central-1.linodeobjects.com would use:
| Setting | Value |
|---|---|
| API Endpoint | https://eu-central-1.linodeobjects.com |
| Region | eu-central-1 |
| Bucket | assets |
| Base URL | https://assets.eu-central-1.linodeobjects.com |
If you set a Subfolder, don’t append it to the Base URL. Craft adds the subfolder automatically when generating asset URLs.
Public file access
Linode Object Storage does not support S3 object ACLs, so the plugin never sets per-object access. For files with public URLs enabled, make the bucket (or the relevant prefix) publicly readable in Linode Cloud Manager. That is what allows browser previews and public asset links to load.
Environment Variables
You can keep credentials and environment-specific bucket details in your project’s .env file:
# Linode Object Storage access key with read/write access to the bucket LINODE_S3_ACCESS_KEY= # Linode Object Storage secret key LINODE_S3_SECRET= # API endpoint, e.g. https://eu-central-1.linodeobjects.com LINODE_S3_ENDPOINT= # Region, e.g. eu-central-1 LINODE_S3_REGION= # Bucket name, e.g. assets LINODE_S3_BUCKET= # Public bucket, CDN, or custom-domain URL LINODE_S3_BUCKET_URL=
Then use these values in the filesystem settings:
| Setting | Value |
|---|---|
| API Endpoint | $LINODE_S3_ENDPOINT |
| Region | $LINODE_S3_REGION |
| Bucket | $LINODE_S3_BUCKET |
| Access Key ID | $LINODE_S3_ACCESS_KEY |
| Secret Access Key | $LINODE_S3_SECRET |
| Base URL | $LINODE_S3_BUCKET_URL |
Do not commit real access keys or secrets to source control.
License & Support
This plugin is released under the MIT license.
If you experience any issues with the plugin, please open an issue on GitHub and I’ll try to get it fixed or answered when I have some free time.