Server is not reachable, Android, Invalid SSL Certificate
I just setup Immich on my Ubuntu 20 server using docker compose. It is accessible through an nginx reverse proxy via https://immich.mydomain.com (not the actual domain). Immich and the database are hosted on my server, but UPLOAD_LOCATION points to an existing directory in a SMB network share (mounted via CIFS 3.0 in fstab).
I can access Immich via the web interface, but when I try to connect via the Android app (https://immich.mydomain.com/api) it says "Server is not reachable". The logs say "Invalid SSL certificate for immich.mydomain.com:443". I had to update my TLS certficiate to add the immich.mydomain.com domain, but it started working in the browser after that. I can see the updated certificate in my browser with the new domain. Maybe Android is just caching the old certificate?
curl also complains about the certificate. But I can at least get a response if I disable certificate validation.
On top of that, the web interface gives an error when I try to upload any images and it does not display any of the pictures already in the UPLOAD_LOCATION directory. The upload error doesn't give me any information and I'm not sure where to find relevant logs.
The UPLOAD_LOCATION directory has 777 permissions and is owned by the users group.
14 Replies
:wave: Hey @CivBase,
Thanks for reaching out to us. Please follow the recommended actions below; this will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker compose ps
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
Checklist
1. :ballot_box_with_check: I have verified I'm on the latest release(note that mobile app releases may take some time).
2. :ballot_box_with_check: I have read applicable release notes.
3. :ballot_box_with_check: I have reviewed the FAQs for known issues.
4. :ballot_box_with_check: I have reviewed Github for known issues.
5. :ballot_box_with_check: I have tried accessing Immich via local ip (without a custom reverse proxy).
6. :ballot_box_with_check: I have uploaded the relevant logs, docker compose, and .env files, making sure to use code formatting.
7. :ballot_box_with_check: I have tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.Your curl command makes it pretty clear that your proxy is serving an invalid or untrusted certificate
This wouldn’t be an Immich related issue
Where is your cert from?
It's from letsencrypt
I just renewed the certificate this morning. It should be valid until 23 Nov 2024. Firefox accepts it without problems.

Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Can you take a screenshot of the advanced page in the app setting?
If curl doesn’t accept it, something is clearly broken in that case
Maybe you can share the domain here and we can test it
I actually just fixed the upload issue by re-doing the nginx config. But the SSL issue is still a thing
I just went to take that screenshot and found the "Allow self-signed SSL certificates" option. I enabled that and now the Android app can connect
That shouldn’t be necessary though, your reverse proxy or network setup is broken
If you have a real cert
That's weird, yeah
I'll have to look into that. But like you said earlier, that's not an Immich issue
Thanks for the help!
No prob. Note that video playback won’t work with a self signed cert
This thread has been closed. To re-open, use the button below.
In case someone comes across this in the future: I had the exact same issue, and it was because I was using
cert.pem
as my ssl_certificate
in nginx instead of fullchain.pem
. Immich (and curl) need the intermediate certificate in the fullchain.pem
, but most web browsers seem to already know the Let's Encrypt intermediate CA and so don't show the issue