When accessing from VPN/Tailscale (e.g., 100.78.182.28), frontend was trying to reach backend on that same IP, but backend listens on SERVER_IP instead. Now uses SERVER_IP from network.json config, ensuring remote clients connect to the correct server address regardless of their access network.