> For the complete documentation index, see [llms.txt](https://docs.norrnext.com/norrcompetition/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.norrnext.com/norrcompetition/remote-storage/general-information.md).

# General Information

Overview of remote cloud storage architecture and media synchronization in NorrCompetition.

### Overview

NorrCompetition includes built-in support for **Remote Cloud Storage**, allowing you to offload uploaded participant entry images and thumbnails directly to external object storage services (such as **Amazon Web Services S3**).

This architecture is powered by [Flysystem](https://flysystem.thephpleague.com/) filesystem abstraction, providing high scalability, lower local server disk consumption, and seamless CDN integration.

***

### How Remote Storage Works

1. **Upload & Processing**: When a contestant or administrator submits an entry image, NorrCompetition processes all configured thumbnail sizes (original, large, medium, small, square) and formats (JPEG, WebP, AVIF).
2. **Asynchronous / Save Synchronization**: The generated media files are immediately synced to your configured remote bucket via the active Flysystem storage provider plugin.
3. **Resilient Fallback Handling**:
   * The component checks for local asset availability first; if a file has been offloaded or moved, it seamlessly resolves to the remote cloud storage URL.
   * If a transient network glitch prevents immediate sync during upload, NorrCompetition automatically verifies and completes missing file syncs when administrators browse entries in the backend.

***

### Getting Started with Remote Storage

To enable remote cloud storage:

1. **Enable Storage Handler in Options**: Navigate to **NorrCompetition > Options > General tab**, locate the **Storage Handler** parameter, and select your remote filesystem provider (e.g. `Flysystem AWS S3`).
2. **Install & Configure the Storage Provider Plugin**: Install and publish the corresponding Flysystem storage plugin, such as [AWS S3](/norrcompetition/remote-storage/aws-s3.md) (`plg_flysystem_ncaws`), and provide your bucket credentials and region.

### Delayed Local Cleanup for Completed Contests

If you set **Delete Local Files** to **No** in the component options, local copies of photos are kept on your server while a contest is active (allowing fast local access and image re-cropping). To automatically free up local disk space after a contest ends, use the [NorrCompetition Media Cleanup](/norrcompetition/plugins/norrcompetition-media-cleanup.md) scheduled task plugin (**Delete Local Files Synced to Remote Storage (Completed Contests)**).

{% hint style="info" %}
**Using External Storage Mounted Directly to the Server:** If you have an external disk or network volume (NFS, block storage, secondary drive) mounted directly to your server's filesystem rather than a cloud service like AWS S3, you do not need the Remote Storage plugin. Simply move your uploads directory (by default `ncuploads`) to the mounted volume and create an OS symbolic link (`ln -s /mnt/external_storage/ncuploads /path/to/joomla/ncuploads`). You can also combine this with the [NorrCompetition Media Cleanup](/norrcompetition/plugins/norrcompetition-media-cleanup.md) plugin to purge heavy `orig_*` original files for completed contests.
{% endhint %}
