Managed to spin up Opencloud on my NAS. I put a host entry in NPM and it seems to be working. From external internet I can log in and upload files with no issues. But whenever I try to reach it through local IP and port, page loads but stays completely blank.

Googling didn't give reasonable leads. Has anyone had similar issue that they've fixed?

Edit: Forgot to write a solution that I have found.

It seems that Opencloud has to be accessed though an secure connection with a working SSL cert. My solution is to utilize local DNS service (in my case, pihole) and redirect dns record to your reverse proxy to be solved there. In my case op.example.com goes to a NPM on a local machine that answers with an Opencloud site. Page will be white/black for a few secs for some reason, but it will load webpage and will let me in.

all 12 comments

sorted by: hot top controversial new old
[–] 6 points 6 months ago* (2 children)

Look into NAT hairpinning on your router/firewall and see if you can use the external ip. :)

  • source
  • hideshow 2 child comments
  • [–] [S] 2 points 6 months ago (1 child)

    Is it similar to say Local DNS records? Cause I've tried to set it up and a few services worked. I could ping domain name and get local IP in return.

    But at some point everything stopped working and none of domains would return with any IP. I am yet to figure out why. I suspect that I was probably got banned by fail2ban, even tho I have checked jails and local IPs were not on the list.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 6 months ago (3 children)

    What is the status code of that page? Is it actually an empty response, or does it just look blank in a browser?

    When you access it from the internet, do you use an ip and port or a domain name? My first guess is that you entered the domain name somewhere in the config of either Opencloud or a reverse proxy, and the mismatch (between the expected domain name and the ip address used instead) is what causes trouble.

  • source
  • hideshow 3 child comments
  • [–] [S] 1 point 6 months ago (2 children)

    I set it to my domain.

    If i type oc.mydomain.com, page loads. If I type 192.168.1.99:9200, page seems to load at an instant but is clear white. No error codes. Browser detects that page has no SSL certificate. SSL cert should not be the issue as any other service I run across all devices including this one does work without a cert. It is just this one doesn't

  • source
  • parent
  • hideshow 2 child comments
  • [–] 0 points 6 months ago (1 child)

    So you get an http 200? What's in the log?

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 1 point 6 months ago

    Opencloud log:{"level":"info","service":"proxy","proto":"HTTP/1.1","request-id":"8a3e3843-6d22-4caf-b676-24d990dcf4da","traceid":"b2b46d4e445e2323954409b31d19851d","remote-addr":"work ip address","method":"PROPFIND","status":207,"path":"/remote.php/dav/spaces/a0ebc43e-12ce-4f1f-951e-3f2ba80564ab$0f1e2f93-c7a7-4ecb-b825-d47abee250f2","duration":279.156444,"bytes":1493,"time":"2026-04-29T12:26:55Z","line":"github.com/opencloud-eu/opencloud/services/proxy/pkg/middleware/accesslog.go:34","message":"access-log"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"8f52659d44e2253f431fbed3ba8b1dc5","time":"2026-04-29T12:27:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"8551e2dbf6821aea868ef1ca67c751ad","time":"2026-04-29T12:28:12Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"9ba91e889774d1cf61f196f4cf23a92a","time":"2026-04-29T12:29:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"bf9181c41b2f6166cd4e381bc1964a6c","time":"2026-04-29T12:30:12Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"59d0e3b7e8b39a4743460025410f90df","time":"2026-04-29T12:31:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"ac52c23e67bcaab083b839f62bea8551","time":"2026-04-29T12:32:12Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"d1216cc65676a0926f325b65ffa22142","time":"2026-04-29T12:33:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"a0c39b7d1f090ee4598ed316afce2600","time":"2026-04-29T12:34:12Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"c082ff54a4708083426693887ccecd94","time":"2026-04-29T12:35:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"a8c72111ea61af5460c290fe647860a8","time":"2026-04-29T12:36:12Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"} {"level":"info","service":"proxy","proto":"HTTP/1.1","request-id":"9199dd415038/I4snGgoCQT-000929","traceid":"c493de4bfc8b093b7e420da33aa7786e","remote-addr":"home ip address","method":"GET","status":200,"path":"/","duration":620.462889,"bytes":7679,"time":"2026-04-29T12:36:37Z","line":"github.com/opencloud-eu/opencloud/services/proxy/pkg/middleware/accesslog.go:34","message":"access-log"} {"level":"info","service":"storage-system","host.name":"9199dd415038","pkg":"rgrpc","traceid":"6d61a88b754f7642166fd4f116fdb879","time":"2026-04-29T12:37:13Z","line":"github.com/opencloud-eu/reva/v2@v2.42.6/internal/grpc/services/authprovider/authprovider.go:146","message":"user idp:"internal" opaque_id:"247cdd12-e7b8-44cb-86c4-912aa681a567" type:USER_TYPE_SERVICE authenticated"}

    "GET","status":200

    I guess 200 then. No idea what that means to be fair.

  • source
  • parent
  • [–] 1 point 6 months ago

    Check OC_CORS_ALLOW_ORIGINS and WEB_CORS_ALLOW_ORIGINS

  • source
  • [–] [B] 1 point 6 months ago

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

    Fewer Letters More Letters
    DNS Domain Name Service/System
    HTTP Hypertext Transfer Protocol, the Web
    IP Internet Protocol
    NAT Network Address Translation
    SSL Secure Sockets Layer, for transparent encryption
    VPN Virtual Private Network

    [Thread #262 for this comm, first seen 29th Apr 2026, 13:40] [FAQ] [Full list] [Contact] [Source code]

  • source
  • [–] 1 point 6 months ago* (last edited 6 months ago) (2 children)

    Open config.php and look for the entry named trusted_domains. Make sure it contains both the domain name and the local IP address:

    'trusted_domains' => array(
        0 => 'nextcloud.your.domain',         // the public FQDN
        1 => '172.22.?.?',                    // the local IP address
        2 => '...',                           // other addresses, like if you're using a VPN
    ),
    

    If the web app is opened using an address or DNS name that isn't included in this list, the browser will connect, but the app will refuse to work.

    Nevermind, I completely overlooked that the service is Opencloud, not Nextcloud. Nevertheless, you should investigate whether Opencloud has an equivalent config variable.

  • source
  • hideshow 2 child comments
  • [–] [S] 1 point 6 months ago

    Where do I find config.php? Initially I haven't set a config directory in .env that should result in config stored in a docker volume. I have explored docker volume and found no such file. Docker compose folder also has none.

  • source
  • parent