Webtop - Nextcloud integration setup

Nethserver: NethServer 7.8.2003
Webtop: 1.6.2

Hello @webtop_team and @lucag ,

I’ve been testing a bit more with WebTop so I’m editing this post a lot as I realize my original post was a bit of a mess and I’ve learned a lot already and have Webtop working well for our office.

But I’m having an issue that I’m hoping you can provide direction for me:

I have Nextcloud installed on my Nethserver and I’m adding in the ability to see my Nextcloud documents in WebTop for each user. I’ve followed these instructions:

https://nethserver.docs.nethesis.it/en/master/webtop5.html#nextcloud-integration

But when a user adds in Nextcloud resource we get a generic Error box with no details on the error when we try to access our Nextcloud from WebTop. I then looked in the WebTop Logs of Nethserver and I found the following log entries when I receive this generic error message:

2020-06-09 13:21:04 [ERROR] com.sonicle.webtop.vfs.Service - Error in ManageGridFile
org.apache.commons.vfs2.FileSystemException: Unknown message with code “Root not exist”.
at com.sonicle.webtop.vfs.sfs.StoreFileSystem.resolveRoot(StoreFileSystem.java:102)
at com.sonicle.webtop.vfs.sfs.StoreFileSystem.getRootFileObject(StoreFileSystem.java:82)
at com.sonicle.webtop.vfs.VfsManager.getTargetFileObject(VfsManager.java:1302)
at com.sonicle.webtop.vfs.VfsManager.listStoreFiles(VfsManager.java:611)
at com.sonicle.webtop.vfs.Service.processManageGridFiles(Service.java:864)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sonicle.webtop.core.app.servlet.BaseRequest.invokeMethod(BaseRequest.java:109)
at com.sonicle.webtop.core.app.servlet.PrivateRequest.processRequest(PrivateRequest.java:86)
at com.sonicle.webtop.core.app.servlet.PrivateRequest.doGet(PrivateRequest.java:113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at com.sonicle.webtop.core.app.shiro.filter.GZip.doFilterInternal(GZip.java:60)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Have I missed a step in setting up Nextcloud integration with WebTop?

Thank you.

Hello @lucag or @webtop_team,

Would you have any in-site for me on why I’m getting this error when connecting to our Nextcloud hosted on our Nethserver?

Thank you.

Hello and welcome. I think this is beyond the scope of Nethserver in general and you might find a better knowledge base over at Nextcloud forum.

Hello @royceb,

Appreciate the comment.

The issue I’m having is webtop connecting to my Nextcloud where both Webtop and Nextcloud are hosted on my Nethserver. This integration is from the Webtop configuration.

Hopefully the webtop support team can confirm why I’m receiving this error.

Thank you.

Hi, does your password contains a # char? If yes, it’s a known bug and in this case I suggest you to change your password to fix the problem.

1 Like

Hello @federico.ballarini,

No my password does not contain a # character.

Is there a plan to fix this known issue? Are there any other characters I need to be aware of that are not allowed?

Thank you.

Hi @greavette,
if you have configured a virtual host to access this Nextcloud you must take this into account when configuring the connection inside webtop.
In this case configure the connector like this:
NQRT3bOYVHsBN1pUm73PQS9i6UHzpI5WtQ
Let me know if this was the problem :wink:

2 Likes

Hello @lucag,

Very much appreciate your help once again. Could you give me a more clear idea of what I need to enter on the Nextcloud Resource? Here is the data I know for our website:

The virtualhost we use to access our Nextcloud looks like this (not our real domain):
https://mycloud.mycompany.com/nextcloud

When I login to my Nextcloud I can confirm my Webdav access in Settings as the following:
https://mycloud.mycompany.com/nextcloud/remote.php/dav/files/jane.doe/

So based on the screenshot you provided…what goes into the Host: field and what goes into the Path fields?

Does Host contain - https://mycloud.mycompany.com/nextcloud
and does Path contain - https://mycloud.mycompany.com/nextcloud/remote.php/dav/files/jane.doe/

Thank you.

1 Like

Hi @greavette,

from what you write is not using a dedicated virtual host for Nextcloud :wink:

At this point the configuration is simply this:
WebTop_5_Sonicle_Test_

In particular, in the Host field indicate localhost if Nextcloud is hosted on the same server or alternatively indicate the host name (resolvable by the internal dns) and in the Path field simply leave the one that is set up for you by default: /nextcloud/remote.php/webdav

Have you tried this yet ?

3 Likes

Hello @lucag,

Apologies for not replying sooner to your reply.

My Nextcloud is hosted on my Nethserver where also my Webtop is installed. So I’ve taken your suggestion and used localhost in the Host field. And I’ve left the Path field at default. I’ve tried to setup a connection from my Webtop to our Nextcloud for 3 of our accounts now and each time I receive a generic “Error” message on the screen. So I looked in the Webtop Log and found the following. Is there any reason from this log that would indicate what I’m doing wrong with connecting my Webtop to Nextcloud?

2020-06-24 01:17:21 [ERROR] com.sonicle.webtop.vfs.Service - Error in ManageGridFile
org.apache.commons.vfs2.FileSystemException: Unknown message with code "Root not exist".
	at com.sonicle.webtop.vfs.sfs.StoreFileSystem.resolveRoot(StoreFileSystem.java:102)
	at com.sonicle.webtop.vfs.sfs.StoreFileSystem.getRootFileObject(StoreFileSystem.java:82)
	at com.sonicle.webtop.vfs.VfsManager.getTargetFileObject(VfsManager.java:1302)
	at com.sonicle.webtop.vfs.VfsManager.listStoreFiles(VfsManager.java:611)
	at com.sonicle.webtop.vfs.Service.processManageGridFiles(Service.java:864)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sonicle.webtop.core.app.servlet.BaseRequest.invokeMethod(BaseRequest.java:109)
	at com.sonicle.webtop.core.app.servlet.PrivateRequest.processRequest(PrivateRequest.java:86)
	at com.sonicle.webtop.core.app.servlet.PrivateRequest.doGet(PrivateRequest.java:113)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at com.sonicle.webtop.core.app.shiro.filter.GZip.doFilterInternal(GZip.java:60)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

Thank you.

Hi @greavette,
… it may not even depend on webtop :thinking:
Do you confirm that your Nextcloud is working properly?
Can you try creating a direct webdav connection from a client PC to nextcloud and see if it works?

1 Like

Hello @lucag,

Here is what I’ve tested.

I login to my Nextcloud (hosted on my Nethserver) and in the settings of my Files page I can see my WebDav connection:

https://mycloud.mycompany.com/nextcloud/remote.php/dav/files/user/

I’ve tested using the above link using CyberDuck (WebDav) and I was successful in connecting to my Nextcloud Files.
I then used Windows Explorer to map a network drive and went through the wizard to “Connect to a Web site that you can use to store your documents and pictures” and put in my site above and my user and password. I am successful in connecting to my Nextcloud through Windows Explorer.

Are there any reasons from the WebTop log I provided earlier that would indicate why WebTop cannot connect to my Nextcloud?

Thank you.

Hi,

do you use 2FA for Nextcloud?

Regards…

Uwe

1 Like

Hello @transocean,

No I do not use 2FA for my Nextcloud.

Thank you.

Hi @greavette,
at this point I ran out of ideas :thinking:

We ask @matteo.albinola and @gabriele_bulfon for help if they have any other ideas based on what the log is reporting:

1 Like