I have searched the existing issues and discussions.
I am using the latest version of Open WebUI.
Installation Method
Other
Open WebUI Version
v0.5.20
Ollama Version (if applicable)
No response
Operating System
MacOS 14.3.1
Browser (if applicable)
Firefox 136.0.2 (aarch64)
Confirmation
I have read and followed all instructions in README.md.
I am using the latest version of both Open WebUI and Ollama.
I have included the browser console logs.
I have included the Docker container logs.
I have listed steps to reproduce the bug in detail.
Expected Behavior
Run open-webui with DATA_DIR=$PWD uvx --python 3.12 open-webui@latest serve
open http://<hostname>:8080 in Firefox
See the first-time admin account creation page
Actual Behavior
Run open-webui with DATA_DIR=$PWD uvx --python 3.12 open-webui@latest serve
open http://<hostname>:8080 in Firefox
Observe the loading page repeatedly reload.
Steps to Reproduce
See above
Logs & Screenshots
There are no logs output to the browser console, and because the page reload happens so quickly, it's not possible to capture the network activity in devtools either.
On the server, and after a successful configuration of the admin account via Chrome, the logs look like this:
The reload behaviour persists after the admin account is added, so it doesn't appear to be related to the uninitialised initial state.
Additional Information
It works fine in Chrome 134.0.6998.89 for me on the same mac as above. Note that open-webui and the browser are on different machines for me: the server is running on Ubuntu 24.04.
Originally created by @regularfry on GitHub (Mar 24, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/12003
### Check Existing Issues
- [x] I have searched the existing issues and discussions.
- [x] I am using the latest version of Open WebUI.
### Installation Method
Other
### Open WebUI Version
v0.5.20
### Ollama Version (if applicable)
_No response_
### Operating System
MacOS 14.3.1
### Browser (if applicable)
Firefox 136.0.2 (aarch64)
### Confirmation
- [x] I have read and followed all instructions in `README.md`.
- [x] I am using the latest version of **both** Open WebUI and Ollama.
- [x] I have included the browser console logs.
- [x] I have included the Docker container logs.
- [x] I have listed steps to reproduce the bug in detail.
### Expected Behavior
1. Run open-webui with `DATA_DIR=$PWD uvx --python 3.12 open-webui@latest serve`
2. open `http://<hostname>:8080` in Firefox
3. See the first-time admin account creation page
### Actual Behavior
1. Run open-webui with `DATA_DIR=$PWD uvx --python 3.12 open-webui@latest serve`
2. open `http://<hostname>:8080` in Firefox
3. Observe the loading page repeatedly reload.
### Steps to Reproduce
See above
### Logs & Screenshots
There are no logs output to the browser console, and because the page reload happens so quickly, it's not possible to capture the network activity in devtools either.
On the server, and *after* a successful configuration of the admin account via Chrome, the logs look like this:
```
$ DATA_DIR=$PWD uvx --python 3.12 open-webui@latest serve
Installed 323 packages in 203ms
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Loading WEBUI_SECRET_KEY from /home/alex/src/ai/open-webui/.webui_secret_key
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages/open_webui
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [open_webui.env] 'ENABLE_SIGNUP' loaded from the latest database entry
INFO [open_webui.env] 'DEFAULT_LOCALE' loaded from the latest database entry
INFO [open_webui.env] 'DEFAULT_PROMPT_SUGGESTIONS' loaded from the latest database entry
WARNI [open_webui.env]
WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.
INFO [open_webui.env] Embedding model set: sentence-transformers/all-MiniLM-L6-v2
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages/pydub/utils.py:300: SyntaxWarning: invalid escape sequence '\('
m = re.match('([su]([0-9]{1,2})p?) \(([0-9]{1,2}) bit\)$', token)
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages/pydub/utils.py:301: SyntaxWarning: invalid escape sequence '\('
m2 = re.match('([su]([0-9]{1,2})p?)( \(default\))?$', token)
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages/pydub/utils.py:310: SyntaxWarning: invalid escape sequence '\('
elif re.match('(flt)p?( \(default\))?$', token):
/home/alex/.cache/uv/archive-v0/aQnSuzzvOqdmEZyYLhHz8/lib/python3.12/site-packages/pydub/utils.py:314: SyntaxWarning: invalid escape sequence '\('
elif re.match('(dbl)p?( \(default\))?$', token):
WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.5.20 - building the best open-source AI user interface.
https://github.com/open-webui/open-webui
Fetching 30 files: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30/30 [00:00<00:00, 14324.81it/s]
INFO: Started server process [651929]
INFO: Waiting for application startup.
2025-03-24 10:16:54.991 | INFO | open_webui.utils.logger:start_logger:140 - GLOBAL_LOG_LEVEL: INFO - {}
2025-03-24 10:17:04.034 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54916 - "GET /static/splash.png HTTP/1.1" 200 - {}
2025-03-24 10:17:04.034 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54915 - "GET /static/loader.js HTTP/1.1" 200 - {}
2025-03-24 10:17:04.051 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54916 - "GET /_app/immutable/chunks/Dropdown.DGkAVmTB.js HTTP/1.1" 404 - {}
2025-03-24 10:17:04.051 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54915 - "GET /_app/immutable/chunks/GarbageBin.C8Ktxmzm.js HTTP/1.1" 404 - {}
2025-03-24 10:17:04.227 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-03-24 10:17:04.273 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/loader.js HTTP/1.1" 304 - {}
2025-03-24 10:17:04.277 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54961 - "GET /static/splash.png HTTP/1.1" 304 - {}
2025-03-24 10:17:04.438 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:04.668 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:04.873 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:05.088 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:05.329 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:05.605 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:05.810 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:06.019 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:06.057 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54961 - "GET /static/splash.png HTTP/1.1" 304 - {}
2025-03-24 10:17:06.059 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/loader.js HTTP/1.1" 304 - {}
2025-03-24 10:17:06.226 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:06.429 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:06.639 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:06.835 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:07.036 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:07.238 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:07.443 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:07.655 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:07.853 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:08.061 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:08.271 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:08.479 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:08.685 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:08.890 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:09.098 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:09.136 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54961 - "GET /static/splash.png HTTP/1.1" 304 - {}
2025-03-24 10:17:09.137 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/loader.js HTTP/1.1" 304 - {}
2025-03-24 10:17:09.306 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:09.513 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:09.714 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:09.931 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:10.212 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:10.421 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:10.623 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:10.860 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:11.070 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:11.274 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:11.534 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:11.748 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:11.951 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:12.179 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:12.242 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/loader.js HTTP/1.1" 304 - {}
2025-03-24 10:17:12.252 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/splash.png HTTP/1.1" 304 - {}
2025-03-24 10:17:12.511 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:12.759 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:12.996 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:13.216 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:13.435 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:13.650 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:13.862 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:14.080 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:14.349 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:14.677 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:15.043 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /_app/version.json HTTP/1.1" 304 - {}
2025-03-24 10:17:15.195 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54960 - "GET /static/loader.js HTTP/1.1" 304 - {}
2025-03-24 10:17:15.197 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.1.113:54980 - "GET /static/splash.png HTTP/1.1" 304 - {}
^C
```
The reload behaviour persists after the admin account is added, so it doesn't appear to be related to the uninitialised initial state.
### Additional Information
It works fine in Chrome 134.0.6998.89 for me on the same mac as above. Note that open-webui and the browser are on different machines for me: the server is running on Ubuntu 24.04.
GiteaMirror
added the bug label 2026-05-13 03:00:38 -05:00
Have you tried on Safari? For me on MacOS with Safari, I'm currently running in the same behaviour. At least when I'm accessing my dev deployment, for others it works again...
<!-- gh-comment-id:2748784413 -->
@almajo commented on GitHub (Mar 24, 2025):
Have you tried on Safari? For me on MacOS with Safari, I'm currently running in the same behaviour. At least when I'm accessing my dev deployment, for others it works again...
However I do have another bit of information. If I open the URL http://<hostname>:8080, Firefox goes into a reload loop. If I open http://<hostname>.lan:8080, which is an alias provided by the DNS server on my network, it seems to work fine.
<!-- gh-comment-id:2748891518 -->
@regularfry commented on GitHub (Mar 24, 2025):
No, I don't see that behaviour on Safari.
However I do have another bit of information. If I open the URL `http://<hostname>:8080`, Firefox goes into a reload loop. If I open `http://<hostname>.lan:8080`, which is an alias provided by the DNS server on my network, it seems to work fine.
@zhanghao-njmu commented on GitHub (Mar 24, 2025):
After restarting the Open WebUI service, I also encountered the issue of being unable to reach the login page when accessing the IP address and port. However, switching to a different browser resolved the problem. This suggests the issue might be related to cached cookies or data in the original browser.
I haven't investigated further, but I found a workaround: accessing http://<hostname>:<port>/auth directly forces the application to display the login page.
However, simply navigating to http://<hostname>:<port> still results in the continuous reloading behavior and doesn't allow direct login.
<!-- gh-comment-id:2748941492 -->
@zhanghao-njmu commented on GitHub (Mar 24, 2025):
After restarting the Open WebUI service, I also encountered the issue of being unable to reach the login page when accessing the IP address and port. However, **switching to a different browser resolved the problem**. This suggests the issue might be related to cached cookies or data in the original browser.
I haven't investigated further, but I found a workaround: accessing **`http://<hostname>:<port>/auth`** directly forces the application to display the login page.
However, simply navigating to `http://<hostname>:<port>` still results in the continuous reloading behavior and doesn't allow direct login.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @regularfry on GitHub (Mar 24, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/12003
Check Existing Issues
Installation Method
Other
Open WebUI Version
v0.5.20
Ollama Version (if applicable)
No response
Operating System
MacOS 14.3.1
Browser (if applicable)
Firefox 136.0.2 (aarch64)
Confirmation
README.md.Expected Behavior
DATA_DIR=$PWD uvx --python 3.12 open-webui@latest servehttp://<hostname>:8080in FirefoxActual Behavior
DATA_DIR=$PWD uvx --python 3.12 open-webui@latest servehttp://<hostname>:8080in FirefoxSteps to Reproduce
See above
Logs & Screenshots
There are no logs output to the browser console, and because the page reload happens so quickly, it's not possible to capture the network activity in devtools either.
On the server, and after a successful configuration of the admin account via Chrome, the logs look like this:
The reload behaviour persists after the admin account is added, so it doesn't appear to be related to the uninitialised initial state.
Additional Information
It works fine in Chrome 134.0.6998.89 for me on the same mac as above. Note that open-webui and the browser are on different machines for me: the server is running on Ubuntu 24.04.
@almajo commented on GitHub (Mar 24, 2025):
Have you tried on Safari? For me on MacOS with Safari, I'm currently running in the same behaviour. At least when I'm accessing my dev deployment, for others it works again...
@regularfry commented on GitHub (Mar 24, 2025):
No, I don't see that behaviour on Safari.
However I do have another bit of information. If I open the URL
http://<hostname>:8080, Firefox goes into a reload loop. If I openhttp://<hostname>.lan:8080, which is an alias provided by the DNS server on my network, it seems to work fine.@zhanghao-njmu commented on GitHub (Mar 24, 2025):
After restarting the Open WebUI service, I also encountered the issue of being unable to reach the login page when accessing the IP address and port. However, switching to a different browser resolved the problem. This suggests the issue might be related to cached cookies or data in the original browser.
I haven't investigated further, but I found a workaround: accessing
http://<hostname>:<port>/authdirectly forces the application to display the login page.However, simply navigating to
http://<hostname>:<port>still results in the continuous reloading behavior and doesn't allow direct login.