diff --git a/docs/admin/configuration/index.md b/docs/admin/configuration/index.md index 9f3d83e81..2c8e75f5d 100644 --- a/docs/admin/configuration/index.md +++ b/docs/admin/configuration/index.md @@ -11,16 +11,44 @@ Use these guides to tune OpenCloud behavior, integrations, and default settings. ## In this section -- [Authentication and Identity Management](./authentication-and-user-management/) - Internal and external IDP setup -- [Storage](./storage/) - Storage drivers and backend setup -- [Collabora](./collabora/) - Collabora integration and document compatibility -- [Set Default Quota](./set-default-quota.md) -- [Frontend Update Check](./frontend-update-check.md) -- [Mail Notifications](./mail-notifications.md) -- [Radicale Integration](./radicale-integration.md) -- [Collaborative Editing](./collaborative-editing.md) -- [Web Applications](./web-applications.md) -- [Link Password Policy](./link-password-policy.md) -- [Default Language](./default-language.md) -- [Euro Office](./euro-office.md) - Community supported Euro Office setup -- [Logging](./logging.md) +- [Authentication and Identity Management](./authentication-and-user-management/) + Configure internal and external identity providers, authentication settings, and user management options. + +- [Storage](./storage/) + Configure storage drivers, backend storage, and storage-related behavior for OpenCloud. + +- [Collabora](./collabora/) + Set up Collabora integration to create, edit, and collaborate on office documents directly in OpenCloud. + +- [Set Default Quota](./set-default-quota.md) + Define the default storage quota that is assigned to users. + +- [Frontend Update Check](./frontend-update-check.md) + Configure whether OpenCloud Web checks for available frontend updates. + +- [Mail Notifications](./mail-notifications.md) + Configure email notifications so users can receive messages about relevant OpenCloud events. + +- [Radicale Integration](./radicale-integration.md) + Integrate Radicale to provide calendar and contact functionality with OpenCloud. + +- [Web Applications](./web-applications.md) + Configure which web applications are available in the OpenCloud web interface. + +- [Link Password Policy](./link-password-policy.md) + Define password requirements for public links to improve link share security. + +- [Default Language](./default-language.md) + Set the default language used by OpenCloud for the web interface. + +- [Euro Office](./euro-office.md) + Configure the community-supported Euro Office integration for document editing. + +- [Logging](./logging.md) + Adjust logging settings to help monitor OpenCloud and troubleshoot issues. + +- [Announcement Banner](./announcement-banner.md) + Display a global announcement banner to notify users about maintenance or important information. + +- [Open Cloud Mesh (OCM)](./ocm.md) + Configure OCM federation between OpenCloud and trusted OCM-compatible systems. diff --git a/docs/admin/configuration/ocm.md b/docs/admin/configuration/ocm.md new file mode 100644 index 000000000..f93705977 --- /dev/null +++ b/docs/admin/configuration/ocm.md @@ -0,0 +1,520 @@ +--- +sidebar_position: 140 +id: ocm +title: Configure Open Cloud Mesh (OCM) +description: Configure Open Cloud Mesh (OCM) for an OpenCloud instance. +draft: false +--- + +# Configure Open Cloud Mesh (OCM) + +Open Cloud Mesh, abbreviated as OCM, is an open federation protocol that enables users on separate systems to connect and share files or folders. + +:::info + +OCM is not limited to federation between OpenCloud instances. OpenCloud can also connect to other OCM-compatible systems. Verified examples include CERNBox, Nextcloud, ownCloud, and Seafile. + +This guide covers only the OpenCloud side of the configuration. Refer to the documentation of the remote system for instructions on enabling and configuring OCM there. + +::: + +OCM uses an invitation-based workflow. A user at one OCM provider creates an invitation, and a user at a remote OCM provider accepts it. After the invitation has been accepted, both users are connected through OCM and can share resources across providers. + +OCM must be configured at every participating OCM provider. Follow this guide for each participating OpenCloud instance. + +This guide uses two OpenCloud instances as an example: + +```text +cloud1.opencloud.test +cloud2.opencloud.test +``` + +Replace these domains with the domains of your OpenCloud instance and the remote OCM provider. The use of two OpenCloud instances in the examples is not a protocol limitation. + +## Prerequisites + +Before configuring OCM, make sure that: + +- An OpenCloud instance and a remote OCM provider are available. +- Both OCM providers are reachable over HTTPS. +- Both OCM providers use valid TLS certificates. +- Each OCM provider can resolve and connect to the domain of the other provider. +- You have access to the `opencloud-compose` directory on every participating OpenCloud server. +- The OpenCloud configuration directory is mounted to `/etc/opencloud`. +- The OpenCloud data directory is persistent. + +Apply the configuration in this guide to every participating OpenCloud instance. Configure other OCM-compatible systems according to their respective documentation. + +## Enable OCM services + +Create an `ocm.yml` file in the root of the `opencloud-compose` directory with the following content: + +```yaml +services: + opencloud: + environment: + OC_ENABLE_OCM: 'true' + GRAPH_INCLUDE_OCM_SHAREES: 'true' +``` + +Add `ocm.yml` to the end of the existing `COMPOSE_FILE` value in the `.env` file. Keep all files that are already part of your deployment. For example: + +```bash +COMPOSE_FILE=docker-compose.yml:traefik/opencloud.yml:ocm.yml +``` + +Using a separate Compose overlay keeps the OCM configuration independent of `docker-compose.yml` and avoids conflicts when updating the `opencloud-compose` repository. + +`OC_ENABLE_OCM` enables the OCM backend services. + +`GRAPH_INCLUDE_OCM_SHAREES` includes connected OCM users in the recipient search of the sharing dialog. + +## Configure trusted OCM providers + +Create an `ocmproviders.json` file in the mounted OpenCloud configuration directory. Each entry in this file describes a trusted OCM provider. + +For example, if the host directory `/mnt/oc/config` is mounted to `/etc/opencloud`, create: + +```text +/mnt/oc/config/ocmproviders.json +``` + +The file is then available inside the container as: + +```text +/etc/opencloud/ocmproviders.json +``` + +The following example configures two OpenCloud instances as trusted OCM providers. For an OpenCloud-to-OpenCloud deployment, use the same provider configuration on both instances. When connecting to another OCM-compatible system, configure the relevant trusted providers on the OpenCloud side and follow the remote system's documentation for its provider configuration. + +Example configuration: + +```json +[ + { + "name": "OpenCloud 1", + "full_name": "OpenCloud 1", + "organization": "OpenCloud", + "domain": "cloud1.opencloud.test", + "homepage": "https://cloud1.opencloud.test", + "description": "OpenCloud instance 1", + "services": [ + { + "endpoint": { + "type": { + "name": "OCM", + "description": "OpenCloud 1 OCM API" + }, + "name": "OpenCloud 1 OCM API", + "path": "https://cloud1.opencloud.test/ocm/", + "is_monitored": true + }, + "api_version": "0.0.1", + "host": "https://cloud1.opencloud.test" + }, + { + "endpoint": { + "type": { + "name": "Webdav", + "description": "OpenCloud 1 WebDAV API" + }, + "name": "OpenCloud 1 WebDAV API", + "path": "https://cloud1.opencloud.test/dav/", + "is_monitored": true + }, + "api_version": "0.0.1", + "host": "https://cloud1.opencloud.test" + } + ] + }, + { + "name": "OpenCloud 2", + "full_name": "OpenCloud 2", + "organization": "OpenCloud", + "domain": "cloud2.opencloud.test", + "homepage": "https://cloud2.opencloud.test", + "description": "OpenCloud instance 2", + "services": [ + { + "endpoint": { + "type": { + "name": "OCM", + "description": "OpenCloud 2 OCM API" + }, + "name": "OpenCloud 2 OCM API", + "path": "https://cloud2.opencloud.test/ocm/", + "is_monitored": true + }, + "api_version": "0.0.1", + "host": "https://cloud2.opencloud.test" + }, + { + "endpoint": { + "type": { + "name": "Webdav", + "description": "OpenCloud 2 WebDAV API" + }, + "name": "OpenCloud 2 WebDAV API", + "path": "https://cloud2.opencloud.test/dav/", + "is_monitored": true + }, + "api_version": "0.0.1", + "host": "https://cloud2.opencloud.test" + } + ] + } +] +``` + +The `domain` values must not include a protocol. + +Correct: + +```json +"domain": "cloud2.opencloud.test" +``` + +Incorrect: + +```json +"domain": "https://cloud2.opencloud.test" +``` + +Validate the JSON file: + +```bash +python3 -m json.tool /mnt/oc/config/ocmproviders.json +``` + +## Enable the OCM web application + +The OCM web application, shown as ScienceMesh in OpenCloud Web, must be enabled in the OpenCloud Web configuration. + +Create `web.yaml` in the mounted OpenCloud configuration directory. + +For example, if `/mnt/oc/config` is mounted to `/etc/opencloud`, create: + +```text +/mnt/oc/config/web.yaml +``` + +Inside the container, the file is available as: + +```text +/etc/opencloud/web.yaml +``` + +Add the list of enabled web applications: + +```yaml +# OpenCloud web configuration +web: + config: + apps: + - files + - search + - text-editor + - pdf-viewer + - external + - admin-settings + - epub-reader + - preview + - app-store + - ocm +``` + +The `ocm` entry enables the ScienceMesh application in OpenCloud Web. + +:::important + +Do not remove web applications that are required by your deployment. If your existing `web.yaml` already contains an `apps` list, add `ocm` to the existing list instead of replacing it completely. To find out what `apps` are currently loaded, you can execute the following command: + +```bash +curl -sk https://cloud1.opencloud.test/config.json | jq .apps +[ + "files", + "search", + "text-editor", + "pdf-viewer", + "external", + "admin-settings", + "epub-reader", + "preview", + "app-store", + "rclone-crypt" +] +``` + +::: + +## Verify the configuration mount + +If your OpenCloud configuration directory is already mounted to `/etc/opencloud`, no additional mount for `web.yaml` is required. + +Example: + +```yaml +services: + opencloud: + volumes: + - ${OC_CONFIG_DIR:-opencloud-config}:/etc/opencloud + - ${OC_DATA_DIR:-opencloud-data}:/var/lib/opencloud + - ${OC_APPS_DIR:-./config/opencloud/apps}:/var/lib/opencloud/web/assets/apps +``` + +In this case, place both files in the mounted configuration directory: + +```text +ocmproviders.json +web.yaml +``` + +If your deployment does not mount the complete OpenCloud configuration directory, mount `web.yaml` explicitly: + +```yaml +services: + opencloud: + volumes: + - ./config/opencloud/web.yaml:/etc/opencloud/web.yaml +``` + +## Recreate the OpenCloud container + +Apply the configuration by recreating the OpenCloud container: + +```bash +docker compose up -d --force-recreate opencloud +``` + +Run this command on every participating OpenCloud instance. + +## Verify the configuration + +Check that OCM is enabled in the running container: + +```bash +docker compose exec opencloud printenv OC_ENABLE_OCM +``` + +Expected output: + +```text +true +``` + +Check that remote OCM users are included in the sharing search: + +```bash +docker compose exec opencloud printenv GRAPH_INCLUDE_OCM_SHAREES +``` + +Expected output: + +```text +true +``` + +Check that the provider configuration is available: + +```bash +docker compose exec opencloud \ + ls -la /etc/opencloud/ocmproviders.json +``` + +Check that the web configuration is available: + +```bash +docker compose exec opencloud \ + cat /etc/opencloud/web.yaml +``` + +Check the resolved Compose configuration: + +```bash +docker compose config | grep -A 10 -B 10 "OC_ENABLE_OCM" +``` + +## Verify OCM storage permissions + +OCM stores invitation and sharing information below the OpenCloud data directory. + +Check that the storage directory is available and writable by the OpenCloud container user: + +```bash +docker compose exec opencloud sh -lc 'id && ls -ld /var/lib/opencloud /var/lib/opencloud/storage /var/lib/opencloud/storage/ocm 2>/dev/null || true' +``` + +If `/var/lib/opencloud/storage/ocm` does not exist yet, it may be created when the first OCM operation is performed. + +If you use bind mounts, make sure that the mounted data directory is writable by the OpenCloud container user. + +Example: + +```bash +sudo chown -R 1000:1000 /mnt/oc/data +``` + +After changing permissions, recreate the container: + +```bash +docker compose up -d --force-recreate opencloud +``` + +## Verify connectivity + +Run the connectivity checks from inside the OpenCloud container. The following commands use the two OpenCloud instances from the example. For another OCM-compatible system, use the endpoints documented by the remote provider. + +On the first OpenCloud instance, check the second OpenCloud instance: + +```bash +docker compose exec opencloud curl -I https://cloud2.opencloud.test/ocm/ +docker compose exec opencloud curl -I https://cloud2.opencloud.test/sciencemesh/ +docker compose exec opencloud curl -I https://cloud2.opencloud.test/dav/ +``` + +On the second OpenCloud instance, check the first OpenCloud instance: + +```bash +docker compose exec opencloud curl -I https://cloud1.opencloud.test/ocm/ +docker compose exec opencloud curl -I https://cloud1.opencloud.test/sciencemesh/ +docker compose exec opencloud curl -I https://cloud1.opencloud.test/dav/ +``` + +The following responses are expected: + +- `/ocm/` can return `404` because no generic endpoint is available at the base path. +- `/sciencemesh/` should return `401` without authentication. +- `/dav/` should return `401` without authentication. + +A `401` response confirms that the endpoint is reachable and requires authentication. + +Errors such as `502 Bad Gateway`, DNS failures, TLS failures, or connection timeouts indicate a connectivity or reverse proxy problem. + +After configuring and verifying OCM, see [Connect and share with ScienceMesh](../../user/sharing/opencloud-mesh) for the user workflow. + +## Troubleshooting + +### The ScienceMesh application is not visible + +Check that `/etc/opencloud/web.yaml` exists inside the container: + +```bash +docker compose exec opencloud \ + cat /etc/opencloud/web.yaml +``` + +Make sure that the application list contains: + +```yaml +- ocm +``` + +Also verify the resolved Compose configuration: + +```bash +docker compose config | grep -A 5 -B 5 "web.yaml" +``` + +Recreate the container after every change: + +```bash +docker compose up -d --force-recreate opencloud +``` + +Reload OpenCloud Web without using the browser cache or open a private browser window. + +### Remote users are not shown in the sharing dialog + +Check the environment variable: + +```bash +docker compose exec opencloud \ + printenv GRAPH_INCLUDE_OCM_SHAREES +``` + +Expected output: + +```text +true +``` + +Also check that the users completed the OCM invitation process successfully. + +Remote users only appear as sharing recipients after the OCM connection has been established. + +For the user workflow, see [Connect and share with ScienceMesh](../../user/sharing/opencloud-mesh). + +### An invitation cannot be accepted + +Check that: + +- The OpenCloud instance and remote OCM provider are listed as trusted providers in `ocmproviders.json` where required. +- The domains in `ocmproviders.json` do not include `https://`. +- The OpenCloud instance and remote OCM provider can access each other over HTTPS. +- The required OCM endpoints are reachable. For an OpenCloud-to-OpenCloud connection, this includes the ScienceMesh endpoints. + +For checks that users can perform, see [Troubleshoot ScienceMesh](../../user/sharing/opencloud-mesh#troubleshooting). + +### The provider configuration is not loaded + +Check the file location: + +```bash +docker compose exec opencloud \ + ls -la /etc/opencloud/ocmproviders.json +``` + +Validate the JSON syntax: + +```bash +python3 -m json.tool /mnt/oc/config/ocmproviders.json +``` + +Check the OpenCloud logs: + +```bash +docker compose logs --since=15m opencloud \ + | grep -Ei "ocm|provider|sciencemesh|error|failed" +``` + +### An error message is shown in the web interface + +If OpenCloud Web shows an error message, expand the details and copy the `X-Request-Id`. + +Search for the request ID in the OpenCloud logs: + +```bash +docker compose logs --since=30m opencloud \ + | grep -F "" -C 20 +``` + +Replace `` with the request ID shown in the web interface. + +You can also search for OCM-related log entries: + +```bash +docker compose logs --since=30m opencloud \ + | grep -Ei "ocm|sciencemesh|invite|provider|federat|error|failed" +``` + +### OCM storage is not writable + +Check the storage permissions: + +```bash +docker compose exec opencloud sh -lc 'id && ls -ld /var/lib/opencloud /var/lib/opencloud/storage /var/lib/opencloud/storage/ocm 2>/dev/null || true' +``` + +If you use bind mounts, make sure that the mounted data directory is writable by the OpenCloud container user. + +Example: + +```bash +sudo chown -R 1000:1000 /mnt/oc/data +``` + +Recreate the container afterwards: + +```bash +docker compose up -d --force-recreate opencloud +``` diff --git a/docs/user/sharing/img/opencloud-mesh/accept-invitation.png b/docs/user/sharing/img/opencloud-mesh/accept-invitation.png new file mode 100644 index 000000000..f567a2617 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/accept-invitation.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/copy-invitation-token.png b/docs/user/sharing/img/opencloud-mesh/copy-invitation-token.png new file mode 100644 index 000000000..4818a2156 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/copy-invitation-token.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/federated-connection.png b/docs/user/sharing/img/opencloud-mesh/federated-connection.png new file mode 100644 index 000000000..45380c5a5 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/federated-connection.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/find-external-user.png b/docs/user/sharing/img/opencloud-mesh/find-external-user.png new file mode 100644 index 000000000..3b7202497 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/find-external-user.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png b/docs/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png new file mode 100644 index 000000000..798f278bf Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/generate-invitation.png b/docs/user/sharing/img/opencloud-mesh/generate-invitation.png new file mode 100644 index 000000000..facd79f02 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/generate-invitation.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/open-accept-invitations.png b/docs/user/sharing/img/opencloud-mesh/open-accept-invitations.png new file mode 100644 index 000000000..7a4819dcb Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/open-accept-invitations.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/open-ocm-application.png b/docs/user/sharing/img/opencloud-mesh/open-ocm-application.png new file mode 100644 index 000000000..5a01a402b Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/open-ocm-application.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/received-federated-share.png b/docs/user/sharing/img/opencloud-mesh/received-federated-share.png new file mode 100644 index 000000000..238c23bc8 Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/received-federated-share.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/select-external-share-type.png b/docs/user/sharing/img/opencloud-mesh/select-external-share-type.png new file mode 100644 index 000000000..fd53afd0a Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/select-external-share-type.png differ diff --git a/docs/user/sharing/img/opencloud-mesh/share-with-external-user.png b/docs/user/sharing/img/opencloud-mesh/share-with-external-user.png new file mode 100644 index 000000000..6e1345adb Binary files /dev/null and b/docs/user/sharing/img/opencloud-mesh/share-with-external-user.png differ diff --git a/docs/user/sharing/index.md b/docs/user/sharing/index.md index 539998d39..e54cb7b2f 100644 --- a/docs/user/sharing/index.md +++ b/docs/user/sharing/index.md @@ -6,7 +6,7 @@ title: Share files and folders # Share files and folders -This section explains how sharing works in OpenCloud. It covers internal sharing with members and groups, public links for external access, and File Drop links for receiving uploads. +This section explains how sharing works in OpenCloud. It covers internal sharing with members and groups, public links for external access, File Drop links for receiving uploads, and sharing with users on other OpenCloud instances through ScienceMesh. ## In this section @@ -18,3 +18,5 @@ This section explains how sharing works in OpenCloud. It covers internal sharing - [File Drop](./file-drop.md) Allow external users to upload files without giving them access to existing content. + +- [ScienceMesh](./opencloud-mesh.md) - Connect with users on another OpenCloud instance and share files or folders with them. diff --git a/docs/user/sharing/opencloud-mesh.md b/docs/user/sharing/opencloud-mesh.md new file mode 100644 index 000000000..7ec43b092 --- /dev/null +++ b/docs/user/sharing/opencloud-mesh.md @@ -0,0 +1,139 @@ +--- +sidebar_position: 40 +id: opencloud-mesh +title: ScienceMesh +description: Connect with users on another OpenCloud instance and share files or folders with them. +draft: false +--- + +# Connect and share with ScienceMesh + +The ScienceMesh application lets you connect with users on another OpenCloud instance and share files or folders with them. It uses the OpenCloud Mesh (OCM) protocol for connections between instances. + +Before you begin, an administrator must configure OCM on both participating instances. For configuration instructions, see [Configure OpenCloud Mesh](../../admin/configuration/ocm). + +## Open the ScienceMesh application + +1. Sign in to OpenCloud Web. +2. Open the application switcher. +3. Select the ScienceMesh application. + +The ScienceMesh application provides the interface for creating and accepting OCM invitations. + +Application switcher with the ScienceMesh application + +## Connect with a user + +Before you can share resources with a user on another instance, you must establish an OCM connection. + +:::important + +Create the invitation on one OpenCloud instance and accept it on the other OpenCloud instance. + +Do not accept an invitation on the same instance where it was created. + +::: + +### Create an invitation on your instance + +1. In the Invite users section, select Generate invitation. + + Invite users section with the Generate invitation button + +2. In the Generate new invitation dialog, optionally enter a description that helps you identify the invitation later. +3. Select Generate. + + Generate new invitation dialog with a description + +4. The invitation token is generated and copied to your clipboard automatically. +5. Send the complete copied token to the user on the other instance. + +If you need to copy the token again, find the invitation in the Invite users section and use the Copy base64 token action. + +Generated invitation and controls for copying the invitation token + +### Accept the invitation on the other instance + +The invited user completes the following steps on their OpenCloud instance: + +1. Sign in to OpenCloud Web. +2. Open the ScienceMesh application. + + Accept invitations section in the ScienceMesh application + +3. In the Accept invitations section, paste the complete token into Enter invite token. +4. Check that Institution displays the domain of the inviting OpenCloud instance. +5. Select Accept invitation. + + Invitation token with the detected institution and the Accept invitation button + +After the invitation has been accepted, the remote user becomes available as an OCM connection. + +New federated connection in the ScienceMesh application + +:::note + +Send the complete token that was copied automatically or use the Copy base64 token action. Do not manually copy the shortened token text displayed in the invitation table. + +By default, invitation tokens expire after 24 hours. If an invitation has expired, create a new invitation. + +::: + +## Share a file or folder + +After both users are connected: + +1. Open the Files application. +2. Select a file or folder. +3. Open the sharing panel. +4. From Share type, select External. + + Share type menu with External users selected + +5. Enter all or part of the connected remote user's name in the search field. +6. Select the matching user marked as External. + + Search results with an external federated user + +7. Configure the permissions. +8. Select Share. + + External user selected with permissions and the Share button + +The remote user should now receive the shared resource on the other OpenCloud instance. + +### Open the shared resource on the other instance + +The invited user completes the following steps on their OpenCloud instance: + +1. Open the Files application. +2. Select Shares in the left sidebar. +3. Open Shared with me. +4. Verify that the shared file or folder is listed. + +Federated folder under Shared with me on the receiving OpenCloud instance + +## Troubleshooting + +### The ScienceMesh application is not visible + +Sign out of OpenCloud Web and reload the page without using the browser cache, or open a private browser window. Sign in again and check the application switcher. + +If the ScienceMesh application is still unavailable, contact your administrator. + +### A user is not shown in the sharing dialog + +Make sure that Share type is set to External and that both users completed the invitation process successfully. Remote users only appear as sharing recipients after the OCM connection has been established. + +If the connection exists but the user is not shown, contact your administrator. + +### An invitation cannot be accepted + +Check that: + +- The invitation has not expired. +- You are signed in to the receiving OpenCloud instance. +- You are accepting the invitation on the other instance, not on the instance where it was created. +- The full invitation link or token was copied. + +If the invitation has expired, ask the inviting user to create a new one. If it still cannot be accepted, contact your administrator. diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/accept-invitation.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/accept-invitation.png new file mode 100644 index 000000000..686121c20 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/accept-invitation.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/copy-invitation-token.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/copy-invitation-token.png new file mode 100644 index 000000000..c873f96c2 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/copy-invitation-token.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/federated-connection.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/federated-connection.png new file mode 100644 index 000000000..06391956a Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/federated-connection.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/find-external-user.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/find-external-user.png new file mode 100644 index 000000000..74c383485 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/find-external-user.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png new file mode 100644 index 000000000..5b5a3e2cb Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation-dialog.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation.png new file mode 100644 index 000000000..b6a72d62c Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/generate-invitation.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-accept-invitations.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-accept-invitations.png new file mode 100644 index 000000000..88df31416 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-accept-invitations.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-ocm-application.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-ocm-application.png new file mode 100644 index 000000000..caf4ede9b Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/open-ocm-application.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/received-federated-share.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/received-federated-share.png new file mode 100644 index 000000000..f5d36daa0 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/received-federated-share.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/select-external-share-type.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/select-external-share-type.png new file mode 100644 index 000000000..892d60d74 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/select-external-share-type.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/share-with-external-user.png b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/share-with-external-user.png new file mode 100644 index 000000000..b120401e5 Binary files /dev/null and b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/img/opencloud-mesh/share-with-external-user.png differ diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/index.md b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/index.md index 03b9f0798..675f5c78a 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/index.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/index.md @@ -7,7 +7,7 @@ title: Dateien und Ordner teilen # Dateien und Ordner teilen Dieser Abschnitt erklärt, wie das Teilen in OpenCloud funktioniert. Er behandelt internes Teilen mit Mitgliedern und -Gruppen, öffentliche Links für externen Zugriff und File Drop zum Empfangen von Uploads. +Gruppen, öffentliche Links für externen Zugriff, File Drop zum Empfangen von Uploads und das Teilen mit Benutzern anderer OpenCloud-Instanzen über ScienceMesh. ## In diesem Abschnitt @@ -19,3 +19,5 @@ Gruppen, öffentliche Links für externen Zugriff und File Drop zum Empfangen vo - [File Drop](./file-drop.md) Erlauben Sie externen Benutzern das Hochladen von Dateien, ohne ihnen Zugriff auf bestehende Inhalte zu geben. + +- [ScienceMesh](./opencloud-mesh.md) - Verbinden Sie sich mit Benutzern einer anderen OpenCloud-Instanz und teilen Sie Dateien oder Ordner mit ihnen. diff --git a/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/opencloud-mesh.md b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/opencloud-mesh.md new file mode 100644 index 000000000..b59bf3151 --- /dev/null +++ b/i18n/de/docusaurus-plugin-content-docs/current/user/sharing/opencloud-mesh.md @@ -0,0 +1,139 @@ +--- +sidebar_position: 40 +id: opencloud-mesh +title: ScienceMesh +description: Verbinden Sie sich mit Benutzern einer anderen OpenCloud-Instanz und teilen Sie Dateien oder Ordner mit ihnen. +draft: false +--- + +# Mit ScienceMesh verbinden und teilen + +Mit der ScienceMesh-Anwendung können Sie sich mit Benutzern einer anderen OpenCloud-Instanz verbinden und Dateien oder Ordner mit ihnen teilen. Für Verbindungen zwischen Instanzen verwendet sie das OpenCloud-Mesh-Protokoll (OCM). + +Bevor Sie beginnen, muss ein Administrator OCM auf beiden beteiligten Instanzen konfigurieren. Eine Anleitung finden Sie unter [OpenCloud Mesh konfigurieren](../../admin/configuration/ocm). + +## ScienceMesh-Anwendung öffnen + +1. Melden Sie sich bei OpenCloud Web an. +2. Öffnen Sie den Anwendungsumschalter. +3. Wählen Sie die ScienceMesh-Anwendung aus. + +Die ScienceMesh-Anwendung stellt die Oberfläche zum Erstellen und Annehmen von OCM-Einladungen bereit. + +Anwendungsumschalter mit der ScienceMesh-Anwendung + +## Mit einem Benutzer verbinden + +Bevor Sie Inhalte mit einem Benutzer auf einer anderen Instanz teilen können, müssen Sie eine OCM-Verbindung herstellen. + +:::important + +Erstellen Sie die Einladung auf einer OpenCloud-Instanz und nehmen Sie sie auf der anderen OpenCloud-Instanz an. + +Nehmen Sie eine Einladung nicht auf derselben Instanz an, auf der sie erstellt wurde. + +::: + +### Einladung auf Ihrer Instanz erstellen + +1. Wählen Sie im Bereich Benutzer einladen die Option Einladung erstellen aus. + + Bereich Benutzer einladen mit der Schaltfläche Einladung erstellen + +2. Geben Sie im Dialog Neue Einladung erstellen optional eine Beschreibung ein, anhand derer Sie die Einladung später erkennen können. +3. Wählen Sie Erstellen aus. + + Dialog Neue Einladung erstellen mit einer Beschreibung + +4. Der Einladungstoken wird erstellt und automatisch in Ihre Zwischenablage kopiert. +5. Senden Sie den vollständigen kopierten Token an den Benutzer auf der anderen Instanz. + +Wenn Sie den Token erneut kopieren müssen, suchen Sie die Einladung im Bereich Benutzer einladen und verwenden Sie die Aktion Base64-Token kopieren. + +Erstellte Einladung und Aktionen zum Kopieren des Einladungstokens + +### Einladung auf der anderen Instanz annehmen + +Der eingeladene Benutzer führt auf seiner OpenCloud-Instanz folgende Schritte aus: + +1. Melden Sie sich bei OpenCloud Web an. +2. Öffnen Sie die ScienceMesh-Anwendung. + + Bereich Einladungen annehmen in der ScienceMesh-Anwendung + +3. Fügen Sie im Bereich Einladungen annehmen den vollständigen Token in das Feld Einladungstoken eingeben ein. +4. Prüfen Sie, ob unter Institution die Domain der einladenden OpenCloud-Instanz angezeigt wird. +5. Wählen Sie Einladung annehmen aus. + + Einladungstoken mit erkannter Institution und der Schaltfläche Einladung annehmen + +Nachdem die Einladung angenommen wurde, ist der Benutzer der anderen Instanz als OCM-Verbindung verfügbar. + +Neue föderierte Verbindung in der ScienceMesh-Anwendung + +:::note + +Senden Sie den vollständigen Token, der automatisch kopiert wurde, oder verwenden Sie die Aktion Base64-Token kopieren. Kopieren Sie nicht den verkürzten Token-Text, der in der Einladungstabelle angezeigt wird. + +Einladungstokens laufen standardmäßig nach 24 Stunden ab. Erstellen Sie eine neue Einladung, wenn ein Token abgelaufen ist. + +::: + +## Datei oder Ordner teilen + +Nachdem beide Benutzer verbunden sind: + +1. Öffnen Sie die Dateien-Anwendung. +2. Wählen Sie eine Datei oder einen Ordner aus. +3. Öffnen Sie den Freigabebereich. +4. Wählen Sie unter Freigabetyp die Option Extern aus. + + Menü Freigabetyp mit ausgewählten externen Benutzern + +5. Geben Sie den vollständigen Namen oder einen Teil des Namens des verbundenen Benutzers in das Suchfeld ein. +6. Wählen Sie den passenden, als Extern gekennzeichneten Benutzer aus. + + Suchergebnis mit einem externen föderierten Benutzer + +7. Konfigurieren Sie die Berechtigungen. +8. Wählen Sie Teilen aus. + + Ausgewählter externer Benutzer mit Berechtigungen und der Schaltfläche Teilen + +Der Benutzer auf der anderen OpenCloud-Instanz sollte die freigegebene Ressource jetzt erhalten. + +### Freigegebene Ressource auf der anderen Instanz öffnen + +Der eingeladene Benutzer führt auf seiner OpenCloud-Instanz folgende Schritte aus: + +1. Öffnen Sie die Dateien-Anwendung. +2. Wählen Sie in der linken Seitenleiste Freigaben aus. +3. Öffnen Sie Mit mir geteilt. +4. Prüfen Sie, ob die freigegebene Datei oder der freigegebene Ordner aufgeführt ist. + +Föderierter Ordner unter Mit mir geteilt auf der empfangenden OpenCloud-Instanz + +## Fehlerbehebung + +### Die ScienceMesh-Anwendung ist nicht sichtbar + +Melden Sie sich von OpenCloud Web ab und laden Sie die Seite ohne Browsercache neu oder öffnen Sie ein privates Browserfenster. Melden Sie sich erneut an und prüfen Sie den Anwendungsumschalter. + +Wenn die ScienceMesh-Anwendung weiterhin nicht verfügbar ist, wenden Sie sich an Ihren Administrator. + +### Ein Benutzer wird im Freigabedialog nicht angezeigt + +Prüfen Sie, ob Freigabetyp auf Extern gesetzt ist und beide Benutzer den Einladungsprozess erfolgreich abgeschlossen haben. Benutzer anderer Instanzen werden erst als Empfänger angezeigt, nachdem die OCM-Verbindung hergestellt wurde. + +Wenn die Verbindung besteht, der Benutzer aber nicht angezeigt wird, wenden Sie sich an Ihren Administrator. + +### Eine Einladung kann nicht angenommen werden + +Prüfen Sie Folgendes: + +- Die Einladung ist nicht abgelaufen. +- Sie sind bei der empfangenden OpenCloud-Instanz angemeldet. +- Sie nehmen die Einladung auf der anderen Instanz an und nicht auf der Instanz, auf der sie erstellt wurde. +- Der vollständige Einladungslink oder Token wurde kopiert. + +Wenn die Einladung abgelaufen ist, bitten Sie den einladenden Benutzer, eine neue Einladung zu erstellen. Wenn sie weiterhin nicht angenommen werden kann, wenden Sie sich an Ihren Administrator.