S3 / Object storage

S3-compatible object storage can be easily tested with the included containers. Two options are available:

  • rustfs (recommended) - A fast, lightweight S3-compatible object storage server written in Rust
  • minio - Abandoned S3-compatible object storage server (open-source version moved to maintenance-only mode with stripped-down UI)

rustfs is the preferred option for development and testing due to its performance and simplicity.

Starting rustfs

Start the container using the following command:

docker compose up -d rustfs

Primary object storage

Primary object storage can be enabled by setting the PRIMARY=rustfs environment variable either in your .env file or in docker-compose.yml for individual containers.

PRIMARY=rustfs docker compose up nextcloud rustfs

External object storage

External storage can be configured in the Nextcloud admin settings (configuration labels may depend on app version). This is an example configuration for the nc-external bucket, buckets will be automatically created so you can name any bucket you like:

General: - External storage: S3 Storage - Authentication: Static credentials / Access Key Storage configuration: - Bucket: nc-external - Hostname: rustfs - Port: 9000 - Enable SSL: No - Enable Path Style: Yes - Use Legacy S3 signing (v2) / Legacy (v2) Authentication: No Authentication: - Access Key: nextcloud - Secret Key: nextcloud

Accessing rustfs console

rustfs can be accessed via the browser at http://rustfs.local with the following credentials:

  • Username: nextcloud
  • Password: nextcloud

Minio (Alternative)

Minio is a more feature-rich alternative with additional management capabilities. However, critics often point to recent controversial changes, including shifting to a maintenance-only mode for the open-source version and stripping down the UI. For these reasons, rustfs is now the recommended choice for most development workflows.

Starting Minio

Start the container using the following command:

docker compose up -d minio

Primary object storage

Primary object storage can be enabled by setting the PRIMARY=minio environment variable either in your .env file or in docker-compose.yml for individual containers.

PRIMARY=minio docker compose up nextcloud minio

External object storage

External storage can be configured in the Nextcloud admin settings. This is an example configuration for the nc-external bucket, buckets will be autocreated so you can name any bucket you like:

  • Bucket: nc-external
  • Authentication: Access Key
  • Hostname: minio
  • Port: 9000
  • Enable SSL: No
  • Enable Path Style: Yes
  • Legacy (v2) Authentication: No
  • Access Key: nextcloud
  • Secret Key: nextcloud

Accessing Minio

Minio can be accessed via the browser at http://minio.local with the following credentials:

  • Username: nextcloud
  • Password: nextcloud

Using mc command line

This can be useful for admin operations like setting a bucket quota on the nc-external bucket name:

``` docker compose exec minio mc alias set minio http://localhost:9000 nextcloud nextcloud docker compose exec minio mc quota set minio/nc-external --size 1k ````