Any Cloud

By Jared Howland, Jon Fackrell, & Julian Maurice Omeka S module for storing items in the cloud storage of your choice.
Download 3.2.0

Scrutinizer Code Quality Build Status Maintainability StyleCI DOI

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:

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

  1. Install the plugin by downloading and unzipping the latest module and loading it into the modules directory of your Omeka S instance.
  2. Enable the plugin from the Admin side of your installation under “Modules”.
  3. 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',
        ],
    ],

Google

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

  1. 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] 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
    • [ ] Write tests for module
    • [ ] Support module translation
Version Released Minimum Omeka version
3.2.0January 26, 2024 [info]^3.0.0||^4.0.0
3.1.5October 09, 2023 [info]^3.0.0||^4.0.0
3.0.1August 21, 2023 [info]^3.0.0||^4.0.0
3.0.0February 19, 2023 [info]^3.0.0|^4.0.0
2.0.0January 05, 2021 [info]^3.0.0
1.1.5June 17, 2020 [info]^1.3.0 || ^2.0.0
1.1.4January 19, 2020 [info]^1.3.0 || ^2.0.0
1.1.3November 21, 2019 [info]^1.3.0 || ^2.0.0
1.1.2November 20, 2019 [info]^1.3.0 || ^2.0.0
1.1.1August 27, 2019 [info]^1.3.0 || ^2.0.0
1.1.0May 15, 2019 [info]^1.3.0
1.0.2May 06, 2019 [info]^1.3.0
1.0.1March 12, 2019 [info]^1.3.0
1.0.0March 12, 2019 [info]^1.3.0
0.3.2February 07, 2019 [info]
0.3.1February 05, 2019 [info]
0.3.0February 03, 2019 [info]