diff --git a/docs/admin/configuration/authentication-and-user-management/external-idp.md b/docs/admin/configuration/authentication-and-user-management/external-idp.md index f7233049..e12c5c09 100644 --- a/docs/admin/configuration/authentication-and-user-management/external-idp.md +++ b/docs/admin/configuration/authentication-and-user-management/external-idp.md @@ -2,14 +2,16 @@ sidebar_position: 1 id: external-idp title: External OpenID Connect Identity Provider +description: Integrating external OpenID Connect Identity Providers +draft: false --- # Integrating external OpenID Connect Identity Providers -## OpenCloud Configuration - The following environment variables are relevant when connecting OpenCloud to an external IDP +## OpenCloud Configuration + - `OC_OIDC_ISSUER`: Set this to the issuer URL of the external Identity Provider - `OC_EXCLUDE_RUN_SERVICES`: To disable the built-in Identity Provider set this to `idp` - `PROXY_OIDC_REWRITE_WELLKNOWN`: Set this to `true` to expose the Identity @@ -103,7 +105,9 @@ The default `role_claim` (or `PROXY_ROLE_ASSIGNMENT_OIDC_CLAIM`) is `roles`. The claim_value: opencloudGuest ``` -Note: When `PROXY_ROLE_ASSIGNMENT_DRIVER` is set to `oidc` it is recommended to set `GRAPH_ASSIGN_DEFAULT_USER_ROLE` to `false`. +:::note +When `PROXY_ROLE_ASSIGNMENT_DRIVER` is set to `oidc` it is recommended to set `GRAPH_ASSIGN_DEFAULT_USER_ROLE` to `false`. +::: ## Client Configuration @@ -113,9 +117,9 @@ OpenCloud requires several OIDC clients to be configured in the Identity Provide The web client is used for browser-based access to OpenCloud: -- **Client ID**: `web` -- **Client Type**: Public client -- **Redirect URIs**: +- Client ID: `web` +- Client Type: Public client +- Redirect URIs: - `https://your-domain.example.com/` - `https://your-domain.example.com/oidc-callback.html` - `https://your-domain.example.com/oidc-silent-redirect.html` @@ -124,9 +128,9 @@ The web client is used for browser-based access to OpenCloud: The desktop client is used for the OpenCloud desktop application: -- **Client ID**: `OpenCloudDesktop` -- **Client Type**: Public client -- **Redirect URIs**: +- Client ID: `OpenCloudDesktop` +- Client Type: Public client +- Redirect URIs: - `http://127.0.0.1` - `http://localhost` @@ -134,24 +138,24 @@ The desktop client is used for the OpenCloud desktop application: #### Android App -- **Client ID**: `OpenCloudAndroid` -- **Client Type**: Public client -- **Redirect URIs**: `oc://android.opencloud.eu` -- **Post Logout Redirect URIs**: `oc://android.opencloud.eu` +- Client ID: `OpenCloudAndroid` +- Client Type: Public client +- Redirect URIs: `oc://android.opencloud.eu` +- Post Logout Redirect URIs: `oc://android.opencloud.eu` #### iOS App -- **Client ID**: `OpenCloudIOS` -- **Client Type**: Public client -- **Redirect URIs**: `oc://ios.opencloud.eu` -- **Post Logout Redirect URIs**: `oc://ios.opencloud.eu` +- Client ID: `OpenCloudIOS` +- Client Type: Public client +- Redirect URIs: `oc://ios.opencloud.eu` +- Post Logout Redirect URIs: `oc://ios.opencloud.eu` ### Additional Clients #### Cyberduck File Transfer Client -- **Client ID**: `Cyberduck` -- **Client Type**: Public client -- **Redirect URIs**: +- Client ID: `Cyberduck` +- Client Type: Public client +- Redirect URIs: - `x-cyberduck-action:oauth` - `x-mountainduck-action:oauth` diff --git a/docs/admin/configuration/authentication-and-user-management/keycloak.md b/docs/admin/configuration/authentication-and-user-management/keycloak.md index e7cde01a..f45dafb9 100644 --- a/docs/admin/configuration/authentication-and-user-management/keycloak.md +++ b/docs/admin/configuration/authentication-and-user-management/keycloak.md @@ -2,6 +2,8 @@ sidebar_position: 3 id: keycloak title: Keycloak Integration +description: Keycloak Integration +draft: false --- # Keycloak Integration @@ -9,9 +11,9 @@ title: Keycloak Integration OpenCloud supports using Keycloak as an external identity provider, providing enterprise-grade identity management capabilities. This guide explains how to set up and configure Keycloak with OpenCloud. This guide is divided into three main sections: -- **[Keycloak Integration Overview](#opencloud-configuration-for-keycloak-general)**: A brief overview of the integration process. -- **[Shared User Directory Mode](#configuration-for-shared-directory-mode)**: Keycloak and OpenCloud share a common LDAP directory for user management. -- **[Autoprovisioning Mode](#configuration-for-autoprovisioning-mode)**: OpenCloud autoprovisions users in a separate LDAP directory managed by OpenCloud. +- [Keycloak Integration Overview](#opencloud-configuration-for-keycloak-general): A brief overview of the integration process. +- [Shared User Directory Mode](#configuration-for-shared-directory-mode): Keycloak and OpenCloud share a common LDAP directory for user management. +- [Autoprovisioning Mode](#configuration-for-autoprovisioning-mode): OpenCloud autoprovisions users in a separate LDAP directory managed by OpenCloud. ## OpenCloud Configuration for Keycloak (General) @@ -64,8 +66,8 @@ If you need to manually configure the clients in Keycloak: OpenCloud supports Keycloak's backchannel logout feature, which allows Keycloak to notify OpenCloud when a user logs out. This ensures that all sessions are properly terminated: -- **Backchannel Logout URL**: `https://your-domain.example.com/backchannel_logout` -- **Backchannel Logout Session Required**: `true` +- Backchannel Logout URL: `https://your-domain.example.com/backchannel_logout` +- Backchannel Logout Session Required: `true` ## Shared User Directory Mode @@ -97,7 +99,7 @@ graph TD In this mode, a readable LDAP Directory with existing users serves as a central user directory for both Keycloak and OpenCloud. -**Key characteristics:** +Key characteristics: - LDAP is the source of truth for user information - The LDAP server uses standard attributes (uid, cn, sn, givenName, mail) @@ -115,7 +117,7 @@ OpenCloud can work with any LDAP schema containing standard attributes: - Groups are stored in a dedicated organizational unit - Default configuration sets LDAP as read-only -**Example LDAP Structure:** +Example LDAP Structure: ```bash dc=example,dc=org # Base DN @@ -185,7 +187,7 @@ OpenCloud provides complete example deployments using Docker Compose: 1. Navigate to `deployments/examples/opencloud_full` 2. Edit the `.env` file to enable the Shared Directory Mode: -**For Shared Directory Mode:** +For Shared Directory Mode: ```bash # Enable services @@ -202,7 +204,7 @@ Keycloak is configured during startup by importing the `keycloak-realm.dist.json :::warning -Keycloak can import the realm configuration file **only once** during the first startup. If you need to change the configuration, you must delete the Keycloak container and volume and restart it. This will reset Keycloak to its initial state. +Keycloak can import the realm configuration file only once during the first startup. If you need to change the configuration, you must delete the Keycloak container and volume and restart it. This will reset Keycloak to its initial state. ::: @@ -214,14 +216,14 @@ This mode is suitable in scenarios where the OpenIDConnect provider is external ```mermaid graph TD subgraph opencloud["OpenCloud Deployment"] - LDAP[("`**LDAP Server** + LDAP[("`LDAP Server - managed by opencloud - custom schema`")] - OpenCloud["`**OpenCloud Server**`"] + OpenCloud["`OpenCloud Server`"] Stop((("Block
disabled
Users"))) end subgraph existing["Existing Infrastructure"] - Keycloak("`**Keycloak**
(OIDC Provider)`") + Keycloak("`Keycloak
(OIDC Provider)`") UserDirectory[("`Federated Identity Provider - Microsoft - Google @@ -245,7 +247,7 @@ graph TD ``` - Keycloak manages the users, groups, and roles -- The openCloud Clients and Sessions are configured in Keycloak +- The OpenCloud Clients and Sessions are configured in Keycloak - Simplified user management with "just-in-time" provisioning - Federation with external identity providers is supported (e.g., Google, GitHub, Facebook, Microsoft) - In this case, we need to provide an LDAP server which is fully controlled by OpenCloud and needs a custom [LDAP Schema](https://github.com/opencloud-eu/opencloud/blob/main/deployments/examples/shared/config/ldap/schemas/10_opencloud_schema.ldif). @@ -292,7 +294,7 @@ OpenCloud provides complete example deployments using Docker Compose: 1. Navigate to `deployments/examples/opencloud_full` 2. Edit the `.env` file to enable the Autoprovisioning Mode: -**For Autoprovisioning Mode:** +For Autoprovisioning Mode: ```bash # Enable services @@ -308,7 +310,7 @@ Keycloak is configured during startup by importing the `keycloak-autoprovisionin :::warning -Keycloak can import the realm configuration file **only once** during the first startup. If you need to change the configuration, you must delete the Keycloak container and volume and restart it. This will reset Keycloak to its initial state. +Keycloak can import the realm configuration file only once during the first startup. If you need to change the configuration, you must delete the Keycloak container and volume and restart it. This will reset Keycloak to its initial state. ::: @@ -316,9 +318,9 @@ Keycloak can import the realm configuration file **only once** during the first Common issues and solutions: -- **User cannot log in**: +- User cannot log in: - Check LDAP connectivity and user existence - Check if each user has an OpenCloud Role assigned - Verify that the client IDs and redirect URIs match exactly -- **Groups not synchronized**: Verify group mappings in Keycloak -- **User creation fails (autoprovisioning mode)**: Ensure LDAP has write permissions in Autoprovisioning Mode +- Groups not synchronized: Verify group mappings in Keycloak +- User creation fails (autoprovisioning mode): Ensure LDAP has write permissions in Autoprovisioning Mode diff --git a/docs/admin/configuration/logging.md b/docs/admin/configuration/logging.md index 9f1ced1f..10fda98e 100644 --- a/docs/admin/configuration/logging.md +++ b/docs/admin/configuration/logging.md @@ -2,18 +2,14 @@ sidebar_position: 13 id: logging title: Logging +description: Logging in OpenCloud +draft: false --- # Logging in OpenCloud ---- - -## Introduction - Logging helps monitor OpenCloudโ€™s health and diagnose issues. Log output varies by level, from minimal to detailed. By default, logs are written to `stderr`. In Docker deployments, logs are accessible via `docker logs`. ---- - ## Log Levels Set the global log level using the `OPEN_CLOUD_LOG_LEVEL` environment variable. You can also override it per service using service-specific variables. Default is `error`. @@ -40,8 +36,6 @@ Routine events that confirm expected behavior and operation. Highly detailed messages for diagnosing problems. Use cautiously in production due to verbosity. ---- - ## Request Correlation ### X-Request-ID diff --git a/docs/admin/configuration/mail-notifications.md b/docs/admin/configuration/mail-notifications.md index 37b65895..af82b62a 100644 --- a/docs/admin/configuration/mail-notifications.md +++ b/docs/admin/configuration/mail-notifications.md @@ -2,16 +2,15 @@ sidebar_position: 9 id: mail-notificatons title: Mail Notifications -description: 'How to activate mail notifications in OpenCloud.' +description: How to activate mail notifications in OpenCloud. +draft: false --- # Mail notifications in OpenCloud -## This guide shows how to configure your OpenCloud instance to send notification E-Mails by modifying the `.env` file in your OpenCloud setup +This guide shows how to configure your OpenCloud instance to send notification E-Mails by modifying the `.env` file in your OpenCloud setup ---- - -### ๐Ÿ› ๏ธ Step 1: Open the .env File +## Open the .env File Edit the file with your preferred text editor: @@ -21,14 +20,12 @@ nano .env Or use vim, code, or gedit as you prefer. ---- - -### ๐Ÿ“ Step 2: Add or Modify These Environment Variables +## Add or modify these Environment Variables Adjust the following lines in your `.env` file according to your SMTP provider and requirements. Note: `SMTP_TRANSPORT_ENCRYPTION` and `SMTP_INSECURE` may vary depending on your setup. -**SMTP Settings:** +SMTP Settings: ```env SMTP_HOST=YOUR_SMTP_HOST @@ -40,17 +37,15 @@ SMTP_TRANSPORT_ENCRYPTION=none SMTP_INSECURE=true ``` -โš ๏ธ In the .env file, values should be written without quotation marks. Do not use 'single quotes' or "double quotes" โ€” just enter the plain value. - ---- +:::warning +In the .env file, values should be written without quotation marks. Do not use 'single quotes' or "double quotes" โ€” just enter the plain value. +::: -### ๐Ÿ’พ Step 3: Save and Exit +## Save and exit For nano, press Ctrl + O to save and Ctrl + X to exit. ---- - -### ๐Ÿ”„ Step 4: Restart OpenCloud +## Restart OpenCloud Apply the changes by restarting the OpenCloud services: @@ -59,6 +54,4 @@ docker compose down docker compose up -d ``` ---- - OpenCloud is now successfully configured to deliver notification emails, including those triggered by actions such as file sharing. diff --git a/docs/admin/configuration/radicale-integration.md b/docs/admin/configuration/radicale-integration.md index 46dd1ed6..81d875f6 100644 --- a/docs/admin/configuration/radicale-integration.md +++ b/docs/admin/configuration/radicale-integration.md @@ -2,9 +2,12 @@ sidebar_position: 12 id: radicale-integration title: Calendar and Contacts Integration with Radicale -description: 'How to enable Calendar and Contacts integration via Radicale in OpenCloud.' +description: How to enable Calendar and Contacts integration via Radicale in OpenCloud. +draft: false --- +# Integration with Radicale + OpenCloud is able to act as an authenticating reverse proxy for the open-source CalDAV and CardDAV Server [Radicale](https://radicale.org). With that, users get a calender- and contacts server out of the box with OpenCloud that can be @@ -26,7 +29,7 @@ To use this feature you need at least OpenCloud Version 2.3.0. Earlier releases some of the required features. This guide assumes that you already have a running deployment based on the `opencloud_full` deployment example. -### 1. Configure the `.env` file to deploy Radicale +### Configure the `.env` file to deploy Radicale In the root directory of the `opencloud_full` deployment example, usually `opencloud/deployments/examples/opencloud_full`, remove the `#` symbol from the line: @@ -35,7 +38,7 @@ remove the `#` symbol from the line: #RADICALE=:radicale.yml ``` -### 2. Update the deployment +### Update the deployment ```bash docker compose up -d diff --git a/docs/admin/configuration/storage/cephfs.md b/docs/admin/configuration/storage/cephfs.md index 865bb0c6..097069e0 100644 --- a/docs/admin/configuration/storage/cephfs.md +++ b/docs/admin/configuration/storage/cephfs.md @@ -2,5 +2,6 @@ sidebar_position: 2 id: storage-cephfs title: 'CephsFS' +description: CephsFS draft: true --- diff --git a/docs/admin/configuration/storage/decomposeds3.md b/docs/admin/configuration/storage/decomposeds3.md index 30f70bf8..b87fd161 100644 --- a/docs/admin/configuration/storage/decomposeds3.md +++ b/docs/admin/configuration/storage/decomposeds3.md @@ -2,23 +2,21 @@ sidebar_position: 3 id: storage-decomposeds3 title: 'Decomposeds3' +description: Decomposeds3 Storage Driver +draft: false --- # Decomposeds3 Storage Driver Decomposeds3 is a storage driver for OpenCloud that uses MinIO, an S3-compatible object storage, for handling file storage efficiently. This setup leverages S3โ€™s scalability while integrating seamlessly with OpenCloud. ---- - -**Prerequisites:** - -- **Linux**, **Mac** or **Windows** Subsystem for Linux [(WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) -- [**Docker**](https://docs.docker.com/compose/install/) -- [**Docker Compose**](https://docs.docker.com/compose/install/) +## Prerequisites ---- +- Linux, Mac or Windows Subsystem for Linux [(WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) +- [Docker](https://docs.docker.com/compose/install/) +- [Docker Compose](https://docs.docker.com/compose/install/) -## 1. Download +## Download Download the `opencloud_full` folder (this folder contains a multi-file Docker Compose configuration): @@ -26,7 +24,7 @@ Download the `opencloud_full` folder (this folder contains a multi-file Docker C git clone https://github.com/opencloud-eu/opencloud.git ``` -## 2. Start +## Start Navigate to the Docker Compose configuration folder: @@ -50,7 +48,7 @@ docker compose up -d This starts all necessary containers in the background. -## 3. Add local domains to /etc/hosts +## Add local domains to /etc/hosts Edit the /etc/hosts file and add the following entries for local access: @@ -59,23 +57,21 @@ Edit the /etc/hosts file and add the following entries for local access: 127.0.0.1 minio.opencloud.test ``` -## 4. Login +## Login Login with your browser: - [https://cloud.opencloud.test](https://cloud.opencloud.test) -- user: **admin** -- password: **admin** +- user: admin +- password: admin -๐ŸŽ‰ Congratulations! Youโ€™ve successfully set up and launched OpenCloud! Happy hacking!๐Ÿš€ +Congratulations! Youโ€™ve successfully set up and launched OpenCloud! Happy hacking!๐Ÿš€ Admin general Admin general ---- - -### Troubleshooting +## Troubleshooting If you encounter any issues or errors, try finding a solution here: diff --git a/docs/admin/configuration/storage/posixfs.md b/docs/admin/configuration/storage/posixfs.md index 4c1e5164..6651acef 100644 --- a/docs/admin/configuration/storage/posixfs.md +++ b/docs/admin/configuration/storage/posixfs.md @@ -2,6 +2,8 @@ sidebar_position: 1 id: storage-posix title: 'PosixFS' +description: PosixFX Storage Driver +draft: false --- # PosixFS Storage Driver @@ -10,51 +12,51 @@ PosixFS is a storage driver that saves OpenClouds files and folders in a folder PosixFS Driver supports two different modes: -1. The _non collaborative mode_ where the filesystem tree in use is exclusively granted to OpenCloud -2. The _collaborative mode_ where modifications of the underlying file tree are permitted by other processes than OpenCloud +- The _non collaborative mode_ where the filesystem tree in use is exclusively granted to OpenCloud +- The _collaborative mode_ where modifications of the underlying file tree are permitted by other processes than OpenCloud -# General Notes +## General Notes The following general notes apply to both modes of the driver. -## Metadata +### Metadata To enable OpenCloud to operate without a database, additional metadata is stored using the extended file attributes of each file. If the total size of this metadata exceeds the limitations imposed by the underlying file system, it is automatically moved to a separate metadata file. In such cases, only a reference to this metadata file remains in the extended attributes. This entire process is handled transparently by OpenCloud. -## Access Model +### Access Model -To ensure reliable operation in _non-collaborative mode_, the underlying file system used by the PosixFS driver **must not** be modified while OpenCloud is running. The assigned file system tree must be exclusively reserved for access by OpenCloud. +To ensure reliable operation in _non-collaborative mode_, the underlying file system used by the PosixFS driver must not be modified while OpenCloud is running. The assigned file system tree must be exclusively reserved for access by OpenCloud. All files and directories must be owned by the same user and group under which the OpenCloud process is running. File and directory permissions must allow OpenCloud to read, write, and traverse the entire tree. These conditions are automatically fulfilled as long as the root directory of the assigned tree is writable. -### Assimilation +#### Assimilation When OpenCloud starts up, it scans the assigned file system tree for newly added or modified files and directories. During this process, metadata is updated and internal caches are built accordingly. This is referred to as the _assimilation_ of new resources. -It is important to note that assimilation does **not** trigger post-upload checks, such as virus scanning. Since the files are already in their final location within the file system, such checks would be ineffective at this stage and are therefore skipped. +It is important to note that assimilation does not trigger post-upload checks, such as virus scanning. Since the files are already in their final location within the file system, such checks would be ineffective at this stage and are therefore skipped. -However, indexing for the search service **does** take place for assimilated resources. +However, indexing for the search service does take place for assimilated resources. -## Startup +### Startup When OpenCloud with PosixFS starts up, it is running over the entire file system to warm up the caches. This might take some time. -## Backup +### Backup With PosixFS backup and restore is easy. The entire OpenCloud filesystem tree can be snapshotted regularly and restored as needed. It depends on the filesystem type how that has to be done in detail. -## Migration +### Migration PosixFS in this so called _non collaborative mode_ is the default for new installations of OpenCloud. There is currently no way to migrate OpenCloud installations with DecomposedFS backend to PosixFS. If that is needed, data needs to be copied into a new installation of OpenCloud. -# PosixFS Non Collaborative Mode +## PosixFS Non Collaborative Mode This describes special aspects of the non collaborative mode. -## External Access +### External Access When OpenCloud is shut down, limited manipulation of the underlying file system tree is possible for certain administration tasks such as @@ -72,7 +74,7 @@ Whenever files are manipulated externally to OpenCloud, it is important to remem ::: -## Configuration +### Configuration The PosixFS storage driver is part of the default OpenCloud bundle. @@ -82,24 +84,24 @@ Involved configuration settings (environment variables) to enable PosixFS are: - `STORAGE_USERS_ID_CACHE_STORE` needs to be set to `nats-js-kv` - `STORAGE_USERS_POSIX_ROOT` can be omitted for default, or set the storage root directory -# PosixFS Collaborative Mode +## PosixFS Collaborative Mode This section describes the collaborative mode of the PosixFS driver, which allows the file system to be modified while OpenCloud is running. Changes made in this mode are reflected in real time in OpenCloud clients. -## Usage +### Usage Collaborative mode should always be used with caution. It is intended only for well-defined use cases that are carefully planned, configured, and tested. Operation must take place in a controlled environment. Compared to non-collaborative mode, collaborative mode requires significantly more system resources to monitor the file system. Server hardware must be appropriately sized to handle this increased load. -## External Access +### External Access External access to files is permitted under specific conditions. File changes are detected and assimilated in real time. The following guidelines are critical for smooth and reliable operation: - Creating new files and folders is the preferred method of external modification. -- Do **not use** symbolic links. +- Do not use symbolic links. - Moving files across OpenCloud spaces is not supported and will not be detected as such. - Editing or deleting large numbers of files may cause errors in tree size calculation. - Continuously monitor server system resources to identify potential bottlenecks. @@ -107,7 +109,7 @@ The following guidelines are critical for smooth and reliable operation: It is essential to maintain correct file ownership and permissions when modifying the file system externally. Files must be created with the correct user and permissions from the outset. Retroactive changes are discouraged, as assimilation may already be in progress. -## Configuration +### Configuration In addition to the configuration required for non-collaborative mode, the following setting must be enabled for local file systems such as XFS, ext4, and others: diff --git a/docs/admin/configuration/web-applications.md b/docs/admin/configuration/web-applications.md index f779103c..acc18243 100644 --- a/docs/admin/configuration/web-applications.md +++ b/docs/admin/configuration/web-applications.md @@ -2,51 +2,52 @@ sidebar_position: 11 id: web-applications title: Web Aplications -description: 'How to enable web applications in OpenCloud.' +description: How to enable web applications in OpenCloud. +draft: false --- -Administrators have the ability to provide additional web applications to their users. This feature is especially useful for organizations that want to integrate third-party tools or provide internally developed apps within the OpenCloud environment. +# Web Aplications ---- +Administrators have the ability to provide additional web applications to their users. This feature is especially useful for organizations that want to integrate third-party tools or provide internally developed apps within the OpenCloud environment. -## ๐Ÿš€ Installing a Web Application +## Installing a Web Application You can install a web application in just a few steps: -### 1. Open the App Store +### Open the App Store -Use the **Application Switcher** in the top navigation bar of OpenCloud and navigate to the **App Store**. +Use the Application Switcher in the top navigation bar of OpenCloud and navigate to the App Store. App Store -### 2. Download the Application +### Download the Application Find and download the application you want to install. -### 3. Extract and copy +### Extract and copy Unzip the downloaded archive and copy the extracted folder into the web application directory. By default, this path is: ```bash -opencloud/services/web/assets/apps +opencloud-compose/config/opencloud/apps ``` -### 4. Access in OpenCloud +### Access in OpenCloud Once the app is copied to the correct location, it will automatically appear in the OpenCloud interface. ---- - -## โš™๏ธ Configure a Web Application +## Configure a Web Application -Some OpenCloud apps require additional configuration โ€” for example, the **External Sites** app. +Some OpenCloud apps require additional configuration โ€” for example, the External Sites app. These configurations can be managed in the following file: ```bash -opencloud/deployments/examples/opencloud_full/config/opencloud/apps.yaml +opencloud-compose/config/opencloud/apps/external-sites/manifest.json ``` -๐Ÿ“˜ Note: Configuration details vary between apps. +:::note +Configuration details vary between apps. For specific setup instructions, please refer to the official documentation of the respective app. +:::