OwnCloud & Nextcloud integration

ADDON: How to integrate your IOP deployment with the Nextcloud or OwnCloud EFSS solutions.

Both Nextcloud (NC) and OwnCloud (OC) implement the OCM APIs, manage users, storage and files synchronization via WebDAV, so you may want to delegate some of the things we configured at Basic services to be handled by these EFSS solutions. The preferred configuration though is to use Reva as the IOP for the OCM-based federation layer, and this documentation is left for reference.

Prerequisites

You will need to run a recent installation of NC/OC, having installed & enabled the sciencemesh integration app. Please refer to the Deployment docs for a guide.

Installation

We will need to change the following configuration sections in the Reva config.

Storage

To tell the IOP to store/access user data on NC/OC, switch the storageprovider configuration to use the nextcloud driver and point endpoint to an URL of your OC/NC service.

[http.services.dataprovider]
driver = "nextcloud"

[grpc.services.storageprovider]
driver = "nextcloud"
data_server_url = "https://$yourdomain.iop$/data"

[grpc.services.storageprovider.drivers.nextcloud]
endpoint = "https://$yourdomain.cloud$/index.php/apps/sciencemesh/"
shared_secret = "$some-random-secret-to-be-shared-with-your-oc-nc$"

NOTE: The nextcloud driver is compatible both with Nextcloud and ownCloud installations.

Authentication

To tell the IOP to authenticate users using NC/OC built-in authentication, switch the authprovider configuration to use the nextcloud driver and point endpoint to an URL of your OC/NC service.

[grpc.services.authprovider]
auth_manager = "nextcloud"

[grpc.services.authprovider.auth_managers.nextcloud]
endpoint = "https://$yourdomain.cloud$/index.php/apps/sciencemesh/"
shared_secret = "$some-random-secret-to-be-shared-with-your-oc-nc$"

Users

To tell the IOP to use NC/OC as its user backend, switch the userprovider configuration to use the nextcloud driver and point endpoint to an URL of your OC/NC service.

[grpc.services.userprovider]
driver = "nextcloud"

[grpc.services.userprovider.drivers.nextcloud]
endpoint = "https://$yourdomain.cloud$/index.php/apps/sciencemesh/"
shared_secret = "$some-random-secret-to-be-shared-with-your-oc-nc$"

OCM

In the same way, we want to override the following OCM services to point to your NC/OC service.

OCM Core

[grpc.services.ocmcore]
driver = "nextcloud"

[grpc.services.ocmcore.drivers.nextcloud]
webdav_host = "https://$yourdomain.cloud$/"
endpoint = "https://$yourdomain.cloud$/index.php/apps/sciencemesh/"
shared_secret = "$some-random-secret-to-be-shared-with-your-oc-nc$"

OCM Share provider

[grpc.services.ocmshareprovider]
driver = "nextcloud"

[grpc.services.ocmshareprovider.drivers.nextcloud]
webdav_host = "https://$yourdomain.cloud$/"
endpoint = "https://$yourdomain.cloud$/index.php/apps/sciencemesh/"
shared_secret = "$some-random-secret-to-be-shared-with-your-oc-nc$"

Last modified October 27, 2023: Remove users list and providers list (072058d)