This seems to be the closest open source app to Google Drive. Looks super promising. Would love to see this in the app catalog!
The other file share / management apps are, IMO, a bit “jenky”, and a lot of us don’t want the overhead of NextCloud.
This seems to be the closest open source app to Google Drive. Looks super promising. Would love to see this in the app catalog!
The other file share / management apps are, IMO, a bit “jenky”, and a lot of us don’t want the overhead of NextCloud.
Nextcloud is also open source, has, as far as i know, the same feature set as opencloud (maybe even more), and is available as an app
It’s grossly the same basic feature set (and as Nextcloud is a much more mature project, I’d expect its feature set to be greater), but a very different philosophy–to name two major differences, it’s written in Go IIRC[1], and it uses flat files rather than a database for all its metadata and configuration. Unfortunately, unless it’s seen a drastic change in the last few weeks, its deployment is a complete mess.[2]
It’s much more performant and Nextcloud, IMO, is a bit bloated and not beginner-friendly for setup / deployment.
Anyway, we could point out flaws all day, but I think users should have more choices on which file management and sharing system they use, as there are already less user friendly options than OpenCloud available in the app catalog.
Just a request for another supported app here!
Have you tried it out yet? I gave up trying to get it to run properly after about a week of messing with it. It’s got potential but it needs a LOT more work.
I installed the App, set up a subdomain through Cloudflare tunnel and added it as the application URL in the config, but it doesn’t seem to work fully.
If I access it from the public address provided by Cloudflare, I can’t login with the admin/admin. Looking at the container logs I keep getting:
failed to verify access token: oidc: failed to decode provider discovery object: expected Content-Type = application/json, got \"text/html\
If I try to access it throgh the local address, I get however this:
Please check if the file config.json exists and is correct.
Did anyone succeed to make it work?
Nevermind about my reply; it turns out that Cloudflare tunnel is blocking access to many required API endpoints. Removing the policy (to use Google sign in) solved it.
Has anyone got this to work? It seems like the URL that you configure is passed to opencloud with a trailing / like “h…://cloud.example.org/”. This leads to a lot of requests from the browser like “h…://cloud.example.org//themes/opencloud/theme.json” what cannot be handled by this application and is redirected to “h…://cloud.example.net/”.
When I take the URL and remove the second “/”, I reach the theme.json.
I lost over three hours of my life in the same doomloop. Tried every method I know of tweaking the Cloudflared Tunnel headers, but had to throw in the towel. The only thing that is making me feel better is that It seems just about every other person on the internet has had a hard time installing this – and not just on TrueNas either.
@2b2bff it seems @akos may have got it up and running.
This guy put out a detailed tutorial: Running opencloud - great nextcloud replacement - Byte Pursuits – I don’t recall if he deployed on TrueNas though.
I actually switched to Seafile. Seems much more powerful for a “Google Drive replacement”, although it also took quite some hours to get it running correctly, building it from a custom Docker container.
Isn’t that WebUI only or am I mistaken?
Seafile comes with native clients. Works great!
I could get Opencloud up and running straigt forward from the App Store now. It’s running behind a local Nginx Proxy Manager.
What not working is the Onlyoffice integration: Sorry, editor could not be loaded. Please contact your administrator.
Log Opencloud Container:
2025-12-27 14:16:46.211885+00:00{"level":"error","service":"collaboration","request-id":"","proto":"HTTP/1.1","method":"GET","path":"/wopi/files/06beead40462696c5a23d89ebf86fed36d6a940fca00a44fb70a35bb6a9cd6f6","WopiSessionId":"f7e5b9c4-2cdf-4b56-b38c-f5bba87038f3","WopiOverride":"","WopiProof":"MVrGLGOxUgy/zlbdLPZWEeT1lilv3+6FkckxUHXIv9h+LCgkW9S7eNi0LXMk3NyIi0zfO0+Qc+daM0UfvkmuSpgSxvjQIWBbdU/930dzywjigVDpLUQhjwef29FIe2vXoJVKAQumvaHDUoKyuWg9fWnZK3h1kA34AsbEZYpSoCACrhoXmXMeerRL/wF3N1RXKCJCFa/VUQvrxsa88+MryIvJNXfzfABAUaBrlxISdk04e3A4MDd6YLB6KZddxDcu10FROroGG/ejWNdyxEJSGnxOEHLyf8CHNFNs72P1x3KBeR5ZY/V63GwS0pKiAuSomqur92D6P+rFhWRMWlZ4XA==","WopiProofOld":"MVrGLGOxUgy/zlbdLPZWEeT1lilv3+6FkckxUHXIv9h+LCgkW9S7eNi0LXMk3NyIi0zfO0+Qc+daM0UfvkmuSpgSxvjQIWBbdU/930dzywjigVDpLUQhjwef29FIe2vXoJVKAQumvaHDUoKyuWg9fWnZK3h1kA34AsbEZYpSoCACrhoXmXMeerRL/wF3N1RXKCJCFa/VUQvrxsa88+MryIvJNXfzfABAUaBrlxISdk04e3A4MDd6YLB6KZddxDcu10FROroGG/ejWNdyxEJSGnxOEHLyf8CHNFNs72P1x3KBeR5ZY/V63GwS0pKiAuSomqur92D6P+rFhWRMWlZ4XA==","WopiStamp":"639024418061950000","error":"error parsing token: token signature is invalid: signature is invalid","time":"2025-12-27T14:16:46Z","message":"failed to dismantle reva token manager"}
Log Onlyoffice Container:
2025-12-27 14:16:37.245248+00:00[2025-12-27T14:16:37.244] [ERROR] [localhost] [51bf9c83287110e2acb3f34856eced040e2a77ebf0a764fa19ea528883a1399f] [userId] [d2cac188-524d-4132-9151-705dce3d2a72] nodeJS - wopi error checkFileInfo:AxiosError: Request failed with status code 401
2025-12-27 14:16:37.245301+00:00at settle (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:37.245309+00:00at RedirectableRequest.handleResponse (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:37.245318+00:00at RedirectableRequest.emit (node:events:536:35)
2025-12-27 14:16:37.245337+00:00at RedirectableRequest._processResponse (/snapshot/server/Common/node_modules/follow-redirects/index.js:409:10)
2025-12-27 14:16:37.245342+00:00at ClientRequest.<anonymous> (/snapshot/server/Common/node_modules/follow-redirects/index.js:102:12)
2025-12-27 14:16:37.245348+00:00at Object.onceWrapper (node:events:639:26)
2025-12-27 14:16:37.245362+00:00at ClientRequest.emit (node:events:524:28)
2025-12-27 14:16:37.245367+00:00at HTTPParser.parserOnIncomingClient (node:_http_client:702:27)
2025-12-27 14:16:37.245372+00:00at HTTPParser.parserOnHeadersComplete (node:_http_common:118:17)
2025-12-27 14:16:37.245376+00:00at TLSSocket.socketOnData (node:_http_client:544:22)
2025-12-27 14:16:37.245393+00:00at Axios.request (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:37.245399+00:00at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2025-12-27 14:16:37.245404+00:00at async Object.downloadUrlPromise (/snapshot/server/Common/sources/utils.js)
2025-12-27 14:16:46.213241+00:00[2025-12-27T14:16:46.212] [ERROR] [localhost] [06beead40462696c5a23d89ebf86fed36d6a940fca00a44fb70a35bb6a9cd6f6] [userId] [f7e5b9c4-2cdf-4b56-b38c-f5bba87038f3] nodeJS - wopi error checkFileInfo:AxiosError: Request failed with status code 401
2025-12-27 14:16:46.213301+00:00at settle (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:46.213312+00:00at RedirectableRequest.handleResponse (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:46.213340+00:00at RedirectableRequest.emit (node:events:536:35)
2025-12-27 14:16:46.213347+00:00at RedirectableRequest._processResponse (/snapshot/server/Common/node_modules/follow-redirects/index.js:409:10)
2025-12-27 14:16:46.213352+00:00at ClientRequest.<anonymous> (/snapshot/server/Common/node_modules/follow-redirects/index.js:102:12)
2025-12-27 14:16:46.213366+00:00at Object.onceWrapper (node:events:639:26)
2025-12-27 14:16:46.213372+00:00at ClientRequest.emit (node:events:524:28)
2025-12-27 14:16:46.213377+00:00at HTTPParser.parserOnIncomingClient (node:_http_client:702:27)
2025-12-27 14:16:46.213381+00:00at HTTPParser.parserOnHeadersComplete (node:_http_common:118:17)
2025-12-27 14:16:46.213394+00:00at TLSSocket.socketOnData (node:_http_client:544:22)
2025-12-27 14:16:46.213399+00:00at Axios.request (/snapshot/server/Common/node_modules/axios/dist/node/axios.cjs)
2025-12-27 14:16:46.213404+00:00at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2025-12-27 14:16:46.213422+00:00at async Object.downloadUrlPromise (/snapshot/server/Common/sources/utils.js)
The JWT Secret is definitvely the same on both containers. Does anyone have an idea?
Can you share more details on the config?
Maybe my undoing was trying to use a Tunnel, but I use Cloudflared tunnels for my entire infrastructure.
I’ll second that. Could you please share you config? I’m trying to do exactly what you did - get it up and running behind NPM. Can not get past the missing config error. I’m convinced it is a access issue with the datasets, but can’t figure it out.
Thanks!!