[GH-ISSUE #207] Home not loading #131

Open
opened 2026-10-18 14:06:24 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @leonardopereira10 on GitHub (May 19, 2026).
Original GitHub issue: https://github.com/open-webui/desktop/issues/207

When i mark "Serve on local network" homepage of Desktop app stop of load and the status still as 'Starting'

Image Image
Originally created by @leonardopereira10 on GitHub (May 19, 2026). Original GitHub issue: https://github.com/open-webui/desktop/issues/207 When i mark "Serve on local network" homepage of Desktop app stop of load and the status still as 'Starting' <img width="1015" height="521" alt="Image" src="https://github.com/user-attachments/assets/f171fe98-a960-44df-8b9f-031241404568" /> <img width="983" height="379" alt="Image" src="https://github.com/user-attachments/assets/ddda222c-f642-4a2e-943a-8717149cecd1" />
Author
Owner

@ub14 commented on GitHub (Oct 6, 2026):

I reproduced this issue on Windows and found the cause in the Desktop source.

Environment:

  • Open WebUI Desktop 0.0.20
  • Open WebUI 0.11.4
  • Windows

With “Serve on local network” enabled, the Open WebUI backend starts correctly with:

open-webui serve --host 0.0.0.0 --port 30080

The backend is actually reachable over the LAN and also through 127.0.0.1.

The problem is in the Desktop readiness check.

In startServerHandler(), the server URL returned by startServer() is passed directly to checkUrlAndOpen():

SERVER_URL = url2;
...
checkUrlAndOpen(SERVER_URL, async () => {
  SERVER_REACHABLE = true;
  sendToRenderer("server:ready", { url: SERVER_URL });
  updateTray();
});

When “Serve on local network” is enabled, SERVER_URL is:

http://0.0.0.0:<port>

checkUrlAndOpen() then performs an Electron net.fetch() against that URL. Connecting to 0.0.0.0 as a destination fails, so the readiness callback is never reached and the Desktop remains stuck in “Starting”.

There is already URL normalization elsewhere in the Desktop code that converts http://0.0.0.0 to http://localhost, but that happens later in connectTo(), after the initial readiness check.

A minimal fix is to normalize the URL only for the readiness check:

const readinessUrl = SERVER_URL?.startsWith("http://0.0.0.0")
  ? SERVER_URL.replace("http://0.0.0.0", "http://127.0.0.1")
  : SERVER_URL;

checkUrlAndOpen(readinessUrl, async () => {
  SERVER_REACHABLE = true;
  sendToRenderer("server:ready", { url: SERVER_URL });
  updateTray();
});

This keeps SERVER_URL unchanged for the rest of the application. The backend should continue binding to 0.0.0.0; only the Desktop's local readiness check should use 127.0.0.1 (or localhost).

I also verified this independently by running the same backend manually with:

open-webui serve --host 0.0.0.0 --port 30080

The backend worked correctly and was accessible over the LAN, confirming that the problem is specifically in the Desktop readiness check, not in the Open WebUI LAN server itself.

This investigation and the proposed fix were identified with assistance from ChatGPT (GPT-5.6 Luna).

<!-- gh-comment-id:6006398099 --> @ub14 commented on GitHub (Oct 6, 2026): I reproduced this issue on Windows and found the cause in the Desktop source. Environment: - Open WebUI Desktop 0.0.20 - Open WebUI 0.11.4 - Windows With **“Serve on local network”** enabled, the Open WebUI backend starts correctly with: ``` open-webui serve --host 0.0.0.0 --port 30080 ``` The backend is actually reachable over the LAN and also through `127.0.0.1`. The problem is in the Desktop readiness check. In `startServerHandler()`, the server URL returned by `startServer()` is passed directly to `checkUrlAndOpen()`: ``` SERVER_URL = url2; ... checkUrlAndOpen(SERVER_URL, async () => { SERVER_REACHABLE = true; sendToRenderer("server:ready", { url: SERVER_URL }); updateTray(); }); ``` When **“Serve on local network”** is enabled, `SERVER_URL` is: ``` http://0.0.0.0:<port> ``` `checkUrlAndOpen()` then performs an Electron `net.fetch()` against that URL. Connecting to `0.0.0.0` as a destination fails, so the readiness callback is never reached and the Desktop remains stuck in **“Starting”**. There is already URL normalization elsewhere in the Desktop code that converts `http://0.0.0.0` to `http://localhost`, but that happens later in `connectTo()`, after the initial readiness check. A minimal fix is to normalize the URL only for the readiness check: ``` const readinessUrl = SERVER_URL?.startsWith("http://0.0.0.0") ? SERVER_URL.replace("http://0.0.0.0", "http://127.0.0.1") : SERVER_URL; checkUrlAndOpen(readinessUrl, async () => { SERVER_REACHABLE = true; sendToRenderer("server:ready", { url: SERVER_URL }); updateTray(); }); ``` This keeps `SERVER_URL` unchanged for the rest of the application. The backend should continue binding to `0.0.0.0`; only the Desktop's local readiness check should use `127.0.0.1` (or `localhost`). I also verified this independently by running the same backend manually with: ``` open-webui serve --host 0.0.0.0 --port 30080 ``` The backend worked correctly and was accessible over the LAN, confirming that the problem is specifically in the Desktop readiness check, not in the Open WebUI LAN server itself. This investigation and the proposed fix were identified with assistance from **ChatGPT (GPT-5.6 Luna)**.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-webui/desktop#131
No description provided.