this post was submitted on 29 Apr 2026
13 points (88.2% liked)

Selfhosted

60093 readers
955 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam.

  3. Posts here are to be centered around self-hosting. Please ensure it is clear in your post how it relates to self-hosting.

  4. Don't duplicate the full text of your blog or git here. Just post the link for folks to click.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require your active participation in selfhosting or related communities, or the post will be removed. No more than 10% of your posts or comments may be self-promotional, or your post will be removed. F/LOSS Exception: If your post is about a project that is completely open source & can be self-hosted in full without payment, and your account is at least 7 days old, your post is exempt from this rule as long as you continue to engage in comments.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

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.

top 12 comments
sorted by: hot top controversial new old
[–] anamethatisnt@sopuli.xyz 7 points 1 month ago* (last edited 1 month ago) (1 children)

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

[–] imetators@lemmy.dbzer0.com 2 points 1 month ago (1 children)

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.

[–] anamethatisnt@sopuli.xyz 2 points 1 month ago

Kinda the opposite, NAT Hairpinning allows you to use the external domain and public IP from the inside.
https://docs.opnsense.org/manual/how-tos/nat_reflection.html#reflection-and-hairpin-nat

[–] WIPocket@lemmy.world 2 points 1 month ago (1 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.

[–] imetators@lemmy.dbzer0.com 1 points 1 month ago (1 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

[–] frongt@lemmy.zip 0 points 1 month ago (1 children)

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

[–] imetators@lemmy.dbzer0.com 1 points 1 month 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.

[–] rtxn@lemmy.world 1 points 1 month ago* (last edited 1 month 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.

[–] imetators@lemmy.dbzer0.com 1 points 1 month 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.

[–] imetators@lemmy.dbzer0.com 1 points 1 month ago

Rip me then. I am struggling to find anything. Most links forward to owncloud.

[–] Decronym@lemmy.decronym.xyz 1 points 1 month 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]

[–] surewhynotlem@lemmy.world 1 points 1 month ago

Check OC_CORS_ALLOW_ORIGINS and WEB_CORS_ALLOW_ORIGINS