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. 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: rustfs
  • Port: 9000
  • Enable SSL: No
  • Enable Path Style: Yes
  • Legacy (v2) Authentication: No
  • 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 ````