To mount an S3-compatible bucket in Nextcloud, enable the built-in External storage support app, add an Amazon S3 storage entry in the administrator’s External storage settings, and supply the bucket credentials plus the provider’s endpoint details. Nextcloud uses the Amazon S3 backend for compatible services; you do not need to install a separate app for each S3 vendor. The exact hostname, region, and path-style setting depend on the object-storage provider.
This guide follows the current Nextcloud administration documentation for the S3 and external-storage backends, checked October 6, 2026. The labels may differ slightly between server versions and themes. A mount can be reachable while still behaving differently from a local Nextcloud folder, especially when files are changed directly in the bucket.
What should you check before adding the bucket?
Confirm these details with your S3 provider before opening Nextcloud settings:
- The bucket name and the credentials for an access key.
- The provider’s generic S3 endpoint hostname, such as
s3.example.net. Use the endpoint itself, not a bucket-specific URL that already contains the bucket name. - The region or signing region if the provider requires one.
- Whether requests should use virtual-hosted style (
https://bucket.endpoint/) or path style (https://endpoint/bucket). - The HTTPS port, normally 443, and whether your server can reach that endpoint through its firewall and DNS.
Create a dedicated access key for this mount and limit its permissions to the bucket and actions it needs. Do not paste secrets into a ticket, screenshot, or shell history. Nextcloud’s S3 setup requires an access key ID and secret access key; it does not validate every provider-specific permission policy for you.
Is this the same as making S3 Nextcloud’s primary storage?
No. An external-storage mount exposes an existing bucket as a folder inside Nextcloud. It is useful when you want to browse or manage files in a bucket while keeping the bucket accessible to other S3 tools. Primary object storage is a different server-wide architecture with different operational assumptions. If you need to choose between them, review Nextcloud’s primary object storage documentation before changing a production data design.
How do you add the S3-compatible mount in the web interface?
1. Enable External storage support
Sign in as a Nextcloud administrator, open Apps, and enable the bundled External storage support app. It is included with Nextcloud but may be disabled by default. If it is already enabled, continue to the storage settings.
2. Open the administrator’s External storage page
Open your profile menu, choose Settings, then find External storage in the Administration section. This page is for admin-configured mounts. A storage that an individual user configures in personal settings is only available to that user; an admin mount can be available to selected users and groups.
3. Create a mount and choose the S3 backend
In the new row, enter a simple Folder name, for example Archive. This becomes the visible folder name in Nextcloud and must be a name, not a path; do not put slashes in it. In the storage-type selector, choose Amazon S3. Under Authentication, choose Access key.
4. Enter the bucket and credentials
Enter the exact bucket name, access key ID, and secret access key from your provider. Treat the secret as a password. Nextcloud documentation notes that bucket names for this backend must meet AWS S3 naming requirements, even when the service is hosted elsewhere; underscores are not accepted. If the provider’s bucket name includes an underscore, check whether the provider offers a compatible bucket name before troubleshooting the credentials.
5. Set the endpoint, region, and request style
For Amazon-hosted S3, specify the correct region. For a non-Amazon service, set the provider’s generic hostname. Use the endpoint and region values published by the provider; there is no universal region value for every S3-compatible product.
| Setting | What to enter |
|---|
| Hostname | The generic endpoint, for example s3.example.net, without the bucket subdomain or path. |
| Port | The provider’s TLS port; commonly 443. |
| Enable SSL | Leave enabled when the endpoint supports HTTPS. Use a trusted certificate. |
| Region | The provider’s signing region when required; leave at the provider-recommended value for compatible services. |
| Enable Path Style | Enable only if the endpoint requires requests in the form endpoint/bucket instead of bucket.endpoint. |
| Legacy (v2) authentication | Leave off unless your provider specifically requires the older signature version. The default is v4. |
Nextcloud’s current S3 guide specifically says to use the generic endpoint hostname for non-Amazon storage. It also describes path-style addressing as provider-dependent. Do not toggle path style as a guess if you can get the expected addressing mode from the provider’s S3 documentation.
6. Restrict who can use the mount
Use Available for to assign only the intended Nextcloud users or groups. An admin-configured mount may otherwise be available broadly. Also inspect the mount’s options after saving: read-only mode and sharing controls may be appropriate for archives or shared buckets. Sharing behavior can affect who can expose files through Nextcloud, so set it deliberately.
7. Confirm that Nextcloud can connect
When the required fields are valid, the storage row is saved automatically. A green status indicator means Nextcloud can use the configured storage; red or yellow indicates that the connection or configuration needs attention. The admin page may temporarily mark a failed storage unavailable for ten minutes. Click its status icon or reload the page to trigger another check after correcting a value.
8. Test with a harmless file
Open Files as a user who has access to the mount. Confirm that the folder appears, create or upload a small test file, download it again, and delete it if the bucket is intended to be writable. If the mount is meant to be read-only, test that users can read files and verify that writes are blocked. A green indicator alone does not confirm that every user permission or intended read/write behavior is correct.
How can you check the mount from the command line?
For installations where you administer the server, Nextcloud also provides occ commands for external storage. Run commands from the Nextcloud installation directory and use the web-server account appropriate to your system. On many Linux installations it is www-data, but package and container installations can differ.
sudo -E -u www-data php occ files_external:list
sudo -E -u www-data php occ files_external:verify <mount_id>
Replace <mount_id> with the ID shown by the list command. A successful verification confirms that Nextcloud can establish the configured connection at that moment. For Nextcloud AIO or another container deployment, use that deployment’s documented way to execute occ inside the app container instead of copying the host command unchanged.
Why might the mount fail even when the values look right?
| Symptom | First checks |
|---|
| Red or yellow status | Check bucket spelling, key and secret, endpoint hostname, TLS port, DNS, firewall egress, and certificate trust. |
| Signature or authorization error | Confirm the signing region and key permissions with the provider. Check whether the provider requires path-style addressing. |
| Connection timeout | Verify that the Nextcloud host can reach the S3 endpoint on the configured port; browser access from your laptop does not prove server connectivity. |
| Some folders or objects are missing | Check for unsupported repeated slashes in object prefixes and consider running an external-storage scan. |
| It works for an administrator but not a user | Review the Available for assignments, group membership, and whether the user is opening the correct mount. |
When a service uses a self-signed certificate, the server must trust that certificate; disabling certificate verification is not a safe substitute. Nextcloud’s current manual also warns that repeated delimiters such as Photos//cat.png are unsupported and that affected prefixes may be ignored.
What happens when files change directly in the bucket?
Nextcloud maintains an internal file cache for external storage. If another tool adds, edits, or deletes objects directly in S3, Nextcloud may not see the change immediately. The current External Storage guide recommends periodic rescans for storage types without push notifications. You can find the mount ID with files_external:list and run:
sudo -E -u www-data php occ files_external:scan <mount_id>
Schedule a scan according to the freshness you need and the load your server can handle. A scan is not the same as instantaneous change notifications. Nextcloud also documents a metadata risk: a rescan may interpret an external rename as a deleted old object plus a new object, removing Nextcloud-side shares, tags, comments, and activity history associated with the old entry. For that reason, perform renames through Nextcloud when preserving that metadata matters.
How do you know the setup is complete?
- The S3 mount shows a green status in the administrator’s External storage page.
- Users in the intended group can see the mount, while unassigned users cannot.
- A test upload, download, and deletion behave as intended—or writes are blocked for a read-only mount.
- The server can discover changes made outside Nextcloud after the configured scan interval.
- Credentials are stored only in the Nextcloud configuration and provider account, and access is limited to the required bucket.
For version-specific details, consult the official Nextcloud S3 external-storage guide, the External Storage administration guide, and the official occ command reference. Providers vary in endpoint, region, permissions, and addressing requirements, so their S3 setup documentation remains authoritative for those values.