# Collaboration features

Collaboration features are included in the On-Premises server to enable features such as:

* Server-side Editor API,
* document storage,
* import and export,
* connection optimization

> **Note**
>
> Full documentation of these features can be found in the [introduction](../../../../guides/collaboration/introduction.md) guide.

Collaboration features offer no lesser capabilities than in the SaaS version. However, they must be properly configured.\
At the moment, Collaboration features support several drivers to store documents and their data in different locations.

There is support for:

* [File system](#file-system),
* [AWS S3](#aws-s3),
* [Azure Blob Storage](#azure-blob-storage),
* [Database](#database-default).

<a id="reliability">

## Reliability

Collaboration features have high CPU consumption. If you use these features intensively we recommend using an external [CKEditor Collaboration Worker](worker.md) to improve reliability.

<a id="configurations">

## Configurations

To configure the collaboration features you need to set the appropriate environment variables.

```bash
COLLABORATION_STORAGE_DRIVER			 - optional (default: "database")
COLLABORATION_STORAGE_LOCATION		   - optional (default: "/var/cs/collaboration" if "filesystem" driver chosen, required for file system driver)
COLLABORATION_STORAGE_ACCESS_KEY_ID	  - optional (required for AWS S3 driver)
COLLABORATION_STORAGE_SECRET_ACCESS_KEY  - optional (required for AWS S3 driver)
COLLABORATION_STORAGE_REGION			 - optional (required for AWS S3 driver)
COLLABORATION_STORAGE_ENDPOINT		   - optional (required for AWS S3 driver)
COLLABORATION_STORAGE_BUCKET			 - optional (required for AWS S3 driver)
COLLABORATION_STORAGE_ACCOUNT_NAME	   - optional (required for Azure Blob Storage driver)
COLLABORATION_STORAGE_ACCOUNT_KEY		- optional (required for Azure Blob Storage driver)
COLLABORATION_STORAGE_CONTAINER		  - optional (required for Azure Blob Storage driver)
EDITOR_API_ACCESS_KEY					- optional (recommended when using the Server-side Editor API, must be the same as the one set in the CKEditor Collaboration Server On-premises)
```

<a id="database-default">

### Database (default)

To save the collaboration features data in the SQL database, set the driver only. The documents will be saved as blobs, in a database configured by the database configuration (MySQL and Postgres are supported at the moment).

```bash
COLLABORATION_STORAGE_DRIVER=database
```

<a id="file-system">

### File system

To save the collaboration features data using the file system, set the (`collaboration_storage_driver`) driver to `filesystem` and specify the (`collaboration_storage_location`) path.

> **Warning**
>
> If you run several instances of the application and use a load balancer to split traffic between instances, you must remember that the documents should be saved in one shared place. You can use an NFS disk or other solution.
>
> You can also use other drivers such as [AWS S3](#aws-s3), [Azure Blob Storage](#azure-blob-storage), or [Database](#database-default).

```bash
COLLABORATION_STORAGE_DRIVER=filesystem
COLLABORATION_STORAGE_LOCATION=/var/cs/documents
```

You should always mount the `/path/to/your/dir:/var/cs/documents` volume to preserve uploaded files in case your container gets removed.

The `COLLABORATION_STORAGE_LOCATION` variable specifies the path to save documents, but this is the path in the container. Therefore, the path to the mounted volume should be given.

<a id="aws-s3">

### AWS S3

To save the collaboration features data in the AWS S3, set driver (`collaboration_storage_driver`) to `s3` and specify the configuration to AWS S3. To configure AWS S3, provide data for the following variables:

* `collaboration_storage_region` - the region to send service requests to,

* `collaboration_storage_access_key_id` - your AWS access key ID,

* `collaboration_storage_secret_access_key` - your AWS secret access key,

* `collaboration_storage_endpoint` - the endpoint URI to send requests to. For example, services compatible with S3 can be used (eg. localstack, etc.). The endpoint must specify its protocol e.g. `s3://`, `https://`, etc.\
  By default, it is generated in a format `https://s3.[COLLABORATION_STORAGE_REGION].amazonaws.com`

```bash
COLLABORATION_STORAGE_DRIVER=s3
COLLABORATION_STORAGE_REGION=[AWS_REGION]
COLLABORATION_STORAGE_ACCESS_KEY_ID=[AWS_ACCESS_KEY_ID]
COLLABORATION_STORAGE_SECRET_ACCESS_KEY=[AWS_SECRET_ACCESS_KEY]
COLLABORATION_STORAGE_BUCKET=[AWS_S3_BUCKET]
COLLABORATION_STORAGE_ENDPOINT=[AWS_S3_ENDPOINT]
```

<a id="azure-blob-storage">

### Azure Blob Storage

To save the collaboration features data in the Azure Blob Storage, set the (`collaboration_storage_driver`) driver to `azure` and specify the configuration to Azure Blob Storage. To configure Azure Blob Storage, provide data for the following variables:

* `collaboration_storage_account_name` - your Azure account name,

* `collaboration_storage_account_key` - your Azure account key,

* `collaboration_storage_container` - your Azure Blob Storage container name.

* `collaboration_storage_endpoint` - the endpoint URI to send requests to. The endpoint must specify its protocol e.g. `https://`.\
  By default, it is generated in a format `https://[COLLABORATION_STORAGE_ACCOUNT_NAME].blob.core.windows.net`

```bash
COLLABORATION_STORAGE_DRIVER=azure
COLLABORATION_STORAGE_ACCOUNT_NAME=[AZURE_ACCOUNT_NAME]
COLLABORATION_STORAGE_ACCOUNT_KEY=[AZURE_ACCOUNT_KEY]
COLLABORATION_STORAGE_CONTAINER=[AZURE_CONTAINER]
COLLABORATION_STORAGE_ENDPOINT=[AZURE_ENDPOINT]
```

---

Full index of the Cloud Services documentation: [llms.txt](../../../../../llms.txt)
