Immich Login Fails After the Reverse Proxy Restarts

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

If Immich login fails only after the reverse proxy restarts, first prove whether the proxy path broke while the Immich application and account still work directly.

A restart can expose stale upstream addresses, missing shared-network membership, header changes, cookie behavior, or a proxy process that came back before its dependencies were reachable. Test the same account through the local Immich endpoint and the normal public hostname, then follow the first layer where the two paths diverge.

Use Direct Access to Separate Authentication From Proxy Failure

Test a known account against the Immich server through a trusted local route that bypasses the reverse proxy. If direct login succeeds while the public hostname spins, redirects, or returns an upstream error, the user record and core authentication path are probably intact. Keep the investigation on proxy, TLS, routing, and browser state.

A community case where direct access worked while proxied login failed illustrates this isolation method. The report is version-specific, so use it to justify comparing paths rather than assuming the same root cause.

If both direct and proxied login fail, stop changing proxy settings. Check Immich service health, database connectivity, account state, and server logs instead. A proxy restart that happened near the failure can be coincidence; the bypass test prevents that timing from becoming an unsupported diagnosis.

Verify the Proxy Can Reach the Current Immich Upstream

After the proxy restarts, confirm it can resolve and connect to the Immich upstream from its own network namespace. In Docker, a service-name upstream on a shared user-defined network is generally more stable than a manually copied container IP that changes when a container is recreated.

A reverse-proxy outage discussion involving proxy-to-Immich connectivity shows why upstream reachability and WebSocket-capable proxying should be checked before account recovery. Treat the exact configuration as anecdotal evidence, not a template for every proxy.

Restart the proxy by itself twice and watch whether its upstream resolves to the same service each time. A pass is an immediate successful connection without editing addresses. If name resolution, network membership, or the target port changes after recreation, fix the Compose network definition rather than repeatedly restarting the stack.

Inspect Forwarded Headers, TLS, and Cookie Behavior

Login can fail even when the proxy returns the Immich page because authentication depends on the complete HTTP path. Compare the proxy configuration before and after the restart, including host and scheme forwarding, HTTPS termination, redirects, any cookie rewriting, and whether a second proxy or tunnel is also modifying the response.

One Immich community discussion documents a duplicate-cookie login case where proxy cookie handling produced a login hang. That is a bounded case, but it is a useful reminder to inspect the browser response and cookies instead of assuming valid credentials guarantee a successful proxied session.

Do not delete all accounts or reset the database because a browser session looks stuck. Use a private window or a second browser after recording the original cookies and response. If a clean client works, clear only the affected site state and correct the proxy rule that created the bad cookie or redirect.

-15% OFF
Single board computer zimaboard2

Read Proxy Access and Error Logs at the Failed Request Timestamp

Reproduce one login attempt and record the exact time, public hostname, client, and returned status. Then inspect the proxy access and error logs around that request. Distinguish a request that never reached the proxy, a proxy-generated 4xx or 5xx, an upstream connection failure, and a request that reached Immich but received an application response.

The NGINX log troubleshooting workflow shows how status, upstream errors, request timing, and targeted logging provide a much stronger signal than repeatedly refreshing the login page. Apply the same principle to Caddy, Traefik, or another proxy.

If the proxy log shows a successful upstream response while the browser fails to complete login, inspect redirects, cookies, TLS, and client state. If the proxy cannot connect upstream, fix routing or service readiness. If Immich itself returns the error, follow the corresponding server log instead of treating the proxy as the cause.

Prove the Fix Survives the Restart That Originally Broke It

After correcting the confirmed cause, repeat the exact trigger: restart only the reverse proxy, wait for its health check, and log in through the public hostname. Then open an existing asset, upload a small file, and keep the session active long enough to verify normal API traffic.

The ZimaSpace guide to controlled remote-access paths provides the broader boundary: the proxy is only one layer in remote access, so DNS, TLS, authentication, and the private upstream must remain intentional and observable.

Pass only when login survives two proxy restarts and the same configuration starts cleanly after a full stack restart. Roll back recent proxy changes if a new header or cookie rule created the failure. Escalate with the proxy config diff, request status, upstream error, server log timestamp, and direct-versus-proxied test result.

Support & Tips

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.