website/integrations/chat-communication-collaboration/nextcloud/index.mdx
Nextcloud is a suite of client-server software for creating and using file hosting services. Nextcloud is free and open-source, which means that anyone is allowed to install and operate it on their own private server devices.
:::warning If you require server side encryption, you must use LDAP. OpenID and SAML will cause irrevocable data loss. Nextcloud server side encryption requires access to the user's cleartext password, which Nextcloud has access to only when using LDAP because the user enters their password directly into Nextcloud. :::
:::caution This setup only works when Nextcloud is running with HTTPS enabled. See here on how to configure this. :::
:::info If there’s an issue with the configuration, you can log in using the built-in authentication by visiting http://nextcloud.company/login?direct=1. :::
It is possible to configure Nextcloud to use OIDC, SAML, or LDAP for authentication. Below are the steps to configure each method.
import TabItem from "@theme/TabItem"; import Tabs from "@theme/Tabs";
<Tabs defaultValue="oidc" values={[ { label: "OIDC", value: "oidc" }, { label: "SAML", value: "saml" }, { label: "LDAP", value: "ldap" } ]}
<TabItem value="oidc">
The following placeholders are used in this guide:
nextcloud.company is the FQDN of the Nextcloud installation.authentik.company is the FQDN of the authentik installation.:::info This documentation lists only the settings that you need to change from their default values. Be aware that any changes other than those explicitly mentioned in this guide could cause issues accessing your application. :::
:::warning If you require server side encryption, you must use LDAP. OpenID and SAML will cause irrevocable data loss. :::
Let's start by considering which user attributes need to be available in Nextcloud:
authentik already provides some default scopes with claims, such as:
email scope: includes email and email_verifiedprofile scope: includes name, given_name, preferred_username, nickname, groupsopenid scope: a default required by the OpenID spec (contains no claims)If you do not need storage quota, group information, or to manage already existing users in Nextcloud, skip to the next section.
If you want to control user storage and designate Nextcloud administrators, you will need to create a property mapping.
Log in to authentik as an administrator and open the authentik Admin interface.
Navigate to Customization > Property mappings and click Create.
Name: Nextcloud Profile
Scope name: nextcloud
Expression:
# Extract all groups the user is a member of
groups = [group.name for group in user.groups.all()]
# In Nextcloud, administrators must be members of a fixed group called "admin".
# If a user is an admin in authentik, ensure that "admin" is appended to their group list.
if user.is_superuser and "admin" not in groups:
groups.append("admin")
return {
"name": request.user.name,
"groups": groups,
# Set a quota by using the "nextcloud_quota" property in the user's attributes
"quota": user.group_attributes().get("nextcloud_quota", None),
# To connect an existing Nextcloud user, set "nextcloud_user_id" to the Nextcloud username.
"user_id": user.attributes.get("nextcloud_user_id", str(user.uuid)),
}
Click Finish.
:::info
To set a quota, define the nextcloud_quota attribute for individual users or groups. For example, setting it to 1 GB will restrict the user to 1GB of storage. If not set, storage is unlimited.
:::
:::info
To connect to an existing Nextcloud user, set the nextcloud_user_id attribute to match the Nextcloud username (found under the user's Display name in Nextcloud).
:::
Log in to authentik as an administrator and open the authentik Admin interface.
Navigate to Applications > Applications and click Create with Provider to create an application and provider pair. (Alternatively you can first create a provider separately, then create the application and connect it with the provider.)
Strict redirect URI to https://nextcloud.company/apps/user_oidc/code.Nextcloud Profile scope mapping, add it to Selected Scopes.Based on the User's UUIDClick Submit to save the new application and provider.
:::info
Depending on your Nextcloud configuration, you may need to use https://nextcloud.company/index.php/ instead of https://nextcloud.company/.
:::
In Nextcloud, ensure that the OpenID Connect user backend app is installed.
Log in to Nextcloud as an administrator and navigate to Settings > OpenID Connect.
Click the + button and enter the following settings:
Identifier: authentik
Client ID: Client ID from authentik
Client secret: Client secret from authentik
Discovery endpoint: https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration
Scope: email profile nextcloud openid
Under Attribute mappings:
User ID mapping: sub (or user_id for existing users)
Display name mapping: name
Email mapping: email
Quota mapping: quota (leave blank if the Nextcloud Profile property mapping was skipped)
Groups mapping: groups (leave blank if the Nextcloud Profile property mapping was skipped)
:::tip Enable Use group provisioning to allow writing to this field. :::
Use unique user ID: If this option is disabled, Nextcloud will use the mapped user ID as the Federated Cloud ID.
:::info
If authentik and Nextcloud are running on the same host, you will need to add 'allow_local_remote_servers' => true to your nextcloud config.php file. This setting allows remote servers with local addresses.
:::
:::tip
To avoid a hashed Federated Cloud ID, deselect Use unique user ID and use user_id for the User ID mapping.
:::
:::danger
If you're using the Nextcloud Profile property mapping and want administrators to retain their ability to log in, make sure that Use unique user ID is disabled. If this setting is enabled, it will remove administrator users from the internal admin group and replace them with a hashed group ID named "admin," which does not have real administrative privileges.
:::
Automatically redirect users to authentik when they access Nextcloud by running the following command on your Nextcloud docker host:
```bash
sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:app:set --value=0 user_oidc allow_multiple_user_backends
```
To confirm that authentik is correctly configured with Nextcloud, log out and then log back in by clicking OpenID Connect. You'll then be redirected to authentik to log in, and once authentication is successful, you'll reach the Nextcloud dashboard.
</TabItem> <TabItem value="saml">The following placeholders are used in this guide:
- `nextcloud.company` is the FQDN of the Nextcloud installation.
- `authentik.company` is the FQDN of the authentik installation.
:::info This documentation lists only the settings that you need to change from their default values. Be aware that any changes other than those explicitly mentioned in this guide could cause issues accessing your application. :::
:::warning If you require server side encryption, you must use LDAP. OpenID and SAML will cause irrevocable data loss. :::
Log in to authentik as an administrator and open the authentik Admin interface.
Navigate to Applications > Applications and click Create with Provider to create an application and provider pair. (Alternatively you can first create a provider separately, then create the application and connect it with the provider.)
https://nextcloud.company/apps/user_saml/saml/acs.https://authentik.company.https://nextcloud.company/apps/user_saml/saml/metadata.Post.Click Submit to save the new application and provider.
:::info
Depending on your Nextcloud configuration, you might need to use https://nextcloud.company/index.php/ instead of https://nextcloud.company/.
:::
To configure group quotas you will need to create groups in authentik for each quota, and a property mapping.
nextcloud-15GB), assign a custom attribute (e.g., nextcloud_quota), and click Create.Log in to authentik as an administrator and open the authentik Admin interface.
Navigate to Customization > Property mappings and click Create.
Name: Provide a name for the property mapping.
SAML Attribute Name: nextcloud_quota
Expression:
return user.group_attributes().get("nextcloud_quota", "1 GB")
:::info
Where "1 GB" is the default if a quota is not set.
:::
Click Finish to save the property mapping.
nextcloud_quota.To grant Nextcloud admin access to authentik users you will need to create a property mapping.
Name: Provide a name for the property mapping.
SAML Attribute Name: http://schemas.xmlsoap.org/claims/Group
Expression:
for group in request.user.all_groups():
yield group.name
if ak_is_group_member(request.user, name="<authentik nextcloud admin group's name>"):
yield "admin"
Log in to Nextcloud as an administrator and navigate to Apps by clicking your profile picture in the top right corner.
Under App bundles, install the SSO & SAML authentication bundle.
Click your profile picture in the top right corner and select Administrative settings. Under SSO & SAML authentication, click Use built-in SAML authentication.
In the General section, set:
http://schemas.goauthentik.io/2021/02/saml/uidauthentik:::danger
Using the UID attribute as username is not recommended because of its mutable nature. If you map to the username instead, disable username changing and set the UID attribute to http://schemas.goauthentik.io/2021/02/saml/username.
:::
In the Identity Provider Data section, set:
https://authentik.companyhttps://authentik.company/application/saml/<application_slug>/sso/binding/redirect/Under Show optional Identity Provider settings:
https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/In the Attribute mapping section, set:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/namehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddresshttp://schemas.xmlsoap.org/claims/Group (optional):::info
If Nextcloud is behind a reverse proxy, force HTTPS by adding 'overwriteprotocol' => 'https' to the Nextcloud config/config.php file. See this guide for more details.
:::
To confirm that authentik is properly configured with Nextcloud, log out and log back in using the SSO and SAML log in option. You will be redirected to authentik to log in; if successful you will then be redirected to the Nextcloud dashboard.
</TabItem> <TabItem value="ldap">The following placeholders are used in this guide:
nextcloud.company is the FQDN of the Nextcloud installation.authentik.company is the FQDN of the authentik installation.:::info This documentation lists only the settings that you need to change from their default values. Be aware that any changes other than those explicitly mentioned in this guide could cause issues accessing your application. :::
Log in to authentik as an administrator and open the authentik Admin interface.
Navigate to Applications > Applications and click Create with Provider to create an application and provider pair. (Alternatively you can first create a provider separately, then create the application and connect it with the provider.)
Click Submit to save the new application and provider.
Log in to authentik as an admin, and open the authentik Admin interface.
Navigate to Applications > Outposts and click Create.
LDAPClick Create.
In Nextcloud, ensure that the LDAP user and group backend app is installed.
Log in to Nextcloud as an administrator.
Navigate to Settings > LDAP user and group backend and configure the following settings:
On the Server tab:
ldap:// or ldaps://. If using LDAPS you will also need to specify the certificate that is being used.389 or 636 for secure LDAP.On the Users tab:
Users.On the LDAP/AD integration tab:
cn.uiduidgidNumbernamecngidNumbermailPrimaryAddressOn the Groups tab:
groups.:::info
If Nextcloud is behind a reverse proxy, force HTTPS by adding 'overwriteprotocol' => 'https' to the Nextcloud config/config.php file. See the Nextcloud admin manual for more details.
:::
To confirm that authentik is properly configured with Nextcloud, log out and log back in using LDAP credentials. If successful you will then be redirected to the Nextcloud dashboard.
</TabItem> </Tabs>