Any Cloud Storage (Omeka S Module)
This module allows you to store your Omeka S files on one of the following external cloud platforms rather than the local server disk:
- Amazon S3 Storage
- Microsoft Azure Storage
- Google Cloud Storage
- Wasabi Cloud Storage (uses the Amazon S3 Storage adapter)
- DigitalOcean Spaces (uses the Amazon S3 Storage adapter)
- Scaleway Object Storage (uses the Amazon S3 Storage adapter)
- Dropbox
It uses a filesystem abstraction system called Flysystem. You can build your own adapters to use with the system if there is a cloud storage system you would like to use but is not currently available via this module.
It is recommended that once you pick an external storage service you continue using it as migrating to a different external file system is not currently supported.
Installation and Configuration
- Install the plugin by downloading and unzipping the latest module and loading it into the
modules
directory of your Omeka S instance. - Enable the plugin from the Admin side of your installation under “Modules”.
- Configure the module from the Admin side to include credentials for the cloud storage system you would like to use. You can also choose to configure the module from the
config/local.config.php
file (see server-side configuration)
After that, when you upload media for an item, it will upload to your selected cloud service rather than to your server’s local storage.
Server-side configuration
It's possible to configure the module entirely by editing the
config/local.config.php
file.
First, you need to change the alias for Omeka\File\Store
to the adapter you
want to use, and then you have to configure the adapter itself inside the
file_store
section.
For instance, if you want to use Dropbox, config/local.config.php
should look like this:
<?php
return [
'service_manager' => [
'aliases' => [
'Omeka\File\Store' => 'AnyCloud\File\Store\Dropbox',
],
],
'file_store' => [
'dropbox' => [
'access_token' => 'YOUR_ACCESS_TOKEN',
],
],
];
AWS
Alias should be set to AnyCloud\File\Store\Aws
.
Available options:
'file_store' => [
'aws' => [
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'REGION',
'endpoint' => 'ENDPOINT',
'bucket' => 'BUCKET',
],
],
Azure
Alias should be set to AnyCloud\File\Store\Azure
.
Available options:
'file_store' => [
'azure' => [
'account_name' => 'ACCOUNT_NAME',
'account_key' => 'ACCOUNT_KEY',
'container_name' => 'CONTAINER_NAME',
],
],
Digital Ocean
Alias should be set to AnyCloud\File\Store\DigitalOcean
.
Available options:
'file_store' => [
'digital_ocean' => [
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'REGION',
'endpoint' => 'ENDPOINT',
'bucket' => 'BUCKET',
],
],
Dropbox
Alias should be set to AnyCloud\File\Store\Dropbox
.
Available options:
'file_store' => [
'dropbox' => [
'access_token' => 'ACCESS_TOKEN',
],
],
Alias should be set to AnyCloud\File\Store\Google
.
Available options:
'file_store' => [
'google' => [
'project_id' => 'PROJECT_ID',
'credentials_path' => '/path/to/credentials.json', // This path is relative to AnyCloud's module path
],
],
Scaleway
Alias should be set to AnyCloud\File\Store\Scaleway
.
Available options:
'file_store' => [
'scaleway' => [
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'REGION',
'endpoint' => 'ENDPOINT',
'bucket' => 'BUCKET',
],
],
Wasabi
Alias should be set to AnyCloud\File\Store\Wasabi
.
Available options:
'file_store' => [
'wasabi' => [
'key' => 'KEY',
'secret' => 'SECRET',
'region' => 'REGION',
'endpoint' => 'ENDPOINT',
'bucket' => 'BUCKET',
],
],
Known Issues
- No migration from one cloud/filesystem to another. Pick one or manually transfer things if you decide to change services.
Warning
Use this module at your own risk.
It’s always recommended to backup your files and databases and to check your archives regularly so you can roll back if needed.
Troubleshooting
See online issues on the module issues page on GitHub.
TODO
-
- [ ] Provide more detailed instructions on setting up each cloud storage system (possibly using the GitHub wiki)
-
- [X] Remove need for users to manually change the alias in
config/local.config.php
(v0.2.0)
- [X] Remove need for users to manually change the alias in
-
- [X] Move all config data to a form so users can use the admin module system to enter their credentials without the need to access server files (v0.2.0)
-
- [X] Make config forms prettier and easier to use (v0.3.0)
-
- [X] Get a DOI for the software (v1.0.0)
-
- [X] Integrate a Wasabi cloud adapter (v1.1.0)
Possible Enhancements
-
- [ ] Allow migration between different cloud platforms
-
- [ ] Support Archive Repertory
-
- [ ] Write tests for module
-
- [ ] Support module translation