Look into NAT hairpinning on your router/firewall and see if you can use the external ip. :)
Selfhosted
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:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam.
-
Posts here are to be centered around self-hosting. Please ensure it is clear in your post how it relates to self-hosting.
-
Don't duplicate the full text of your blog or git here. Just post the link for folks to click.
-
Submission headline should match the article title.
-
No trolling.
-
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:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
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.
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
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.
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
So you get an http 200? What's in the log?
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.
~~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.
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.
Rip me then. I am struggling to find anything. Most links forward to owncloud.
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]
Check OC_CORS_ALLOW_ORIGINS and WEB_CORS_ALLOW_ORIGINS