Nextcloud on Truenas scale Electric Eel

Hello, I have installed a new install of Truenas Scale Electric Eel. I have successfully installed Plex and Nginx Proxy Manager but am having install issues with Nextcloud. I have set my Datasets which are empty. Every time I install it stops at about 80% with an error. I have looked all over the internet, but all that are posted does not relate to my problem. When installing I get this error

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 509, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 556, in __run_body
rv = await self.middleware.run_in_thread(self.method, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1367, in run_in_thread
return await self.run_in_executor(io_thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1364, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 268, in nf
rv = func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 55, in nf
res = f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 183, in nf
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/apps/crud.py”, line 203, in do_create
return self.create_internal(job, app_name, version, data[‘values’], complete_app_details)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/apps/crud.py”, line 248, in create_internal
raise e from None
File “/usr/lib/python3/dist-packages/middlewared/plugins/apps/crud.py”, line 241, in create_internal
compose_action(app_name, version, ‘up’, force_recreate=True, remove_orphans=True)
File “/usr/lib/python3/dist-packages/middlewared/plugins/apps/compose_utils.py”, line 61, in compose_action
raise CallError(err_msg)
middlewared.service_exception.CallError: [EFAULT] Failed ‘up’ action for ‘nextcloud’ app. Please check /var/log/app_lifecycle.log for more details

When I have tried to set the permissions for user and group to www-data I get this error

File “/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/perm_check.py”, line 122, in check_acl_execute_impl
raise CallError(
middlewared.service_exception.CallError: [EPERM] Filesystem permissions on path /mnt/Disc-0/Nextcloud-AppData prevent access for user “www-data” to the path /mnt/Disc-0/Nextcloud-AppData/AppData-Storage. This may be fixed by granting the aforementioned user execute permissions on the path: /mnt/Disc-0/Nextcloud-AppData.
“”"

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 509, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 556, in run_body
rv = await self.middleware.run_in_thread(self.method, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1367, in run_in_thread
return await self.run_in_executor(io_thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1364, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 183, in nf
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 55, in nf
res = f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem
/acl.py", line 890, in setacl
return self.setacl_nfs4(job, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem
/acl.py", line 597, in setacl_nfs4
self.middleware.call_sync(
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1665, in call_sync
return methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/perm_check.py”, line 256, in check_acl_execute
run_with_user_context(check_acl_execute_impl, {
File “/usr/lib/python3/dist-packages/middlewared/utils/user_context.py”, line 55, in run_with_user_context
return exc.submit(func, *(func_args or )).result()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/_base.py”, line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/_base.py”, line 401, in __get_result
raise self._exception
middlewared.service_exception.CallError: [EPERM] Filesystem permissions on path /mnt/Disc-0/Nextcloud-AppData prevent access for user “www-data” to the path /mnt/Disc-0/Nextcloud-AppData/AppData-Storage. This may be fixed by granting the aforementioned user execute permissions on the path: /mnt/Disc-0/Nextcloud-AppData.

And when i tried to set permission for my dataset PostgresData to User netdata I get this eroor

File “/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/perm_check.py”, line 122, in check_acl_execute_impl
raise CallError(
middlewared.service_exception.CallError: [EPERM] Filesystem permissions on path /mnt/Disc-0/Nextcloud-AppData prevent access for user “netdata” to the path /mnt/Disc-0/Nextcloud-AppData/PostgresData-Storage. This may be fixed by granting the aforementioned user execute permissions on the path: /mnt/Disc-0/Nextcloud-AppData.
“”"

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 509, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 556, in run_body
rv = await self.middleware.run_in_thread(self.method, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1367, in run_in_thread
return await self.run_in_executor(io_thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1364, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 183, in nf
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 55, in nf
res = f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem
/acl.py", line 890, in setacl
return self.setacl_nfs4(job, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem
/acl.py", line 597, in setacl_nfs4
self.middleware.call_sync(
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1665, in call_sync
return methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/perm_check.py”, line 256, in check_acl_execute
run_with_user_context(check_acl_execute_impl, {
File “/usr/lib/python3/dist-packages/middlewared/utils/user_context.py”, line 55, in run_with_user_context
return exc.submit(func, *(func_args or )).result()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/_base.py”, line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/_base.py”, line 401, in __get_result
raise self._exception
middlewared.service_exception.CallError: [EPERM] Filesystem permissions on path /mnt/Disc-0/Nextcloud-AppData prevent access for user “netdata” to the path /mnt/Disc-0/Nextcloud-AppData/PostgresData-Storage. This may be fixed by granting the aforementioned user execute permissions on the path: /mnt/Disc-0/Nextcloud-AppData.

It says to set user to execute Permission on the path but am unsure how to do this. Thank you for any help

So you’re trying to add permissions for the user on /mnt/Disc-0/Nextcloud-AppData/PostgresData-Storage, but the error is saying that you cannot do that since that user does not have permissions on the parent dataset /mnt/Disc-0/Nextcloud-AppData. You can add that user to the parent and then you shouldn’t have any issues adding it to the child datasets.

How would I go about doing this. Thank you

Create the parent folder Nextcloud with App ACL permission. Then nestle two more datasets, one called html, one userdata with the same ACL permissions. Then create a 3rd dataset called pgdata but this time, click on advanced and choose posic in ACL Type, and then save it.
When you install nextcloud, chose the path for html and userdata and force acl user 33 with Full Access permission. When you chose pgdata folder, make sure you don’t select acl, but you must select automatic permissions.
The official TrueNas walkthrough does a good job at explaining this, but let me know how it goes.

Hello, I found out that if I Setup my Datasets as app I am unable to do anything but if I set my datasets to generic, I am able to change my permissions without a problem. Would this be ideal to leave them as generic.

You can set the Nextcloud dataset acl as generic, but you will need to add apps, ww-data and netdata users and group to it. You must then do the same thing for the two standard dataset (html and userdata). Don’t forget that the pgdata needs to have posic acl when you create it and nestle it in the Nexctloud dataset (in effect, you should have 3 datasets under Nextcloud). I’ll send you a screenshot of my datasets to see if it helps you.


Datasets required.


Acl required for Nextcloud, html and userdata datasets. You must make sure you add your admin account here too.

Pgdata acl set as needed by the automatic permissions checkbox in the Nextcloud app installation. You just need to make sure you select posic when creating this dataset.

where is posic located I Have searched and do not see that anywhere. Thank you

When you are creating the dataset, press advanced and scroll down to ACL types, and you should see it in the list there. If you have already created this dataset using generic Acl, delete it first.

Link to the official installation steps on TrueNas may help more.

Thank you. Everything is working now.

I gave up on Nextcloud on TrueNas - both pre and post Electric Eel. Way too hard to install for a novice user. Until it is a simple Docker one-click and its done, then I will not be using it. That may well be asking too much, I know, but that’s how I view it.

Deployed nextcloud with my own compose file over a year ago and never had any problems with stability or updated ever since. Took me like 20 Minutes.
Didn’t know anything about compose at the time but it wasn’t hard to learn the basics to get it working.

The same for me. I have a .yml Docker Compose file that works great, I can share it if needed. Installed from Portainer.

I’ve been reading and watching tutorials online for about a week, but none of them provided all the information, or they were outdated. That was until I found the official documentation and finally understood the issue with ACL permissions and how to assign them to the datasets Nextcloud needs. No, sir, it’s not just a simple click, and for a newbie, it can be really frustrating. I was close to switching to a more ‘user-friendly’ platform