mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-07 11:28:35 -05:00
[GH-ISSUE #15391] issue: Cannot pull ollama-webui-tool:latest - 401 Unauthorized from ghcr.io #56219
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @GuyMannDude on GitHub (Jun 29, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/15391
Check Existing Issues
Installation Method
Git Clone
Open WebUI Version
v0.6.15
Ollama Version (if applicable)
0.9.3
Operating System
Unraid 7.1.3
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
"The ollama-webui-tool:latest Docker image should be pulled successfully from ghcr.io, and the container should start and run without errors, making the web-search tool available for use within Open WebUI."
Actual Behavior
"When attempting to install the ollama-webui-tool Docker container (both via Unraid's Community Applications and by direct manual docker run command), the image pull from ghcr.io consistently fails with a 401 Unauthorized error
The docker pull command output is:
Unable to find image 'ghcr.io/open-webui/ollama-webui-tool:latest' locally
docker: Error response from daemon: Head 'https://ghcr.io/v2/open-webui/ollama-webui-tool/manifests/latest': denied.
Actual Behavior:
"When attempting to install the ollama-webui-tool Docker container (both via Unraid's Community Applications and by direct manual docker run command), the image pull from ghcr.io consistently fails with a 401 Unauthorized error.
The docker pull command output is:
Unable to find image 'ghcr.io/open-webui/ollama-webui-tool:latest' locally
docker: Error response from daemon: Head 'https://ghcr.io/v2/open-webui/ollama-webui-tool/manifests/latest': denied.
A direct curl -I to the manifest URL confirms the 401 Unauthorized response:
HTTP/2 401
content-type: application/json
www-authenticate: Bearer realm="https://ghcr.io/token",service="ghcr.io",scope="repository:open-webui/ollama-webui-tool:pull"
date: Sun, 29 Jun 2025 13:58:18 GMT
content-length: 73
x-github-request-id: DFA0:10E8:9D4CA0:A33DF2:68614672
Steps to Reproduce
Okay, this is the most critical part for them to reproduce your issue. I will consolidate all the steps you've taken and the exact errors you encountered.
Steps to Reproduce:
Initial Setup (Prerequisites):
<Your Unraid OS Version, e.g., 6.12.24>(running on AMD Ryzen Threadripper CPU).docker run).ollama/ollama:latestHost11434(Host) ->11434(Container)OLLAMA_HOST=0.0.0.0Started<Your Ollama Version, e.g., 0.1.32>docker run).ghcr.io/open-webui/open-webui:ollamaHost8080(Host) ->8080(Container)OLLAMA_BASE_URL=http://localhost:11434Started<Your Open WebUI Version, e.g., v0.6.15>http://<your_unraid_ip>:8080and Llama 3.1 model was successfully downloaded and is functional.Attempting to Install
ollama-webui-tool(First Attempt via Community Applications):ollama-webui-tool.ollama-webui-toolentry.ghcr.io/open-webui/ollama-webui-tool:latestHost8001(Host) ->8001(Container)TOOLS=web-searchollama-webui-toolcontainer did not appear in the Unraid Docker list.Attempted Manual Installation (Second Attempt):
Restarted Docker Service (Third Attempt):
Direct Docker Pull from Unraid Terminal (Diagnostic):
docker pull ghcr.io/open-webui/ollama-webui-tool:latestDirect HTTP Check from Unraid Terminal (Further Diagnostic):
curl -I https://ghcr.io/v2/open-webui/ollama-webui-tool/manifests/latestLogs & Screenshots
text error warn system array login
2025-06-29 11:17:24.043 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/config HTTP/1.1" 200 - {}
2025-06-29 11:17:24.070 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/auths/ HTTP/1.1" 200 - {}
2025-06-29 11:17:24.094 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/config HTTP/1.1" 200 - {}
2025-06-29 11:17:24.101 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/chats/archived?page=1&order_by=updated_at&direction=desc HTTP/1.1" 200 - {}
2025-06-29 11:17:24.109 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63548 - "GET /api/changelog HTTP/1.1" 200 - {}
2025-06-29 11:17:24.113 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /api/v1/channels/ HTTP/1.1" 200 - {}
2025-06-29 11:17:24.114 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:17:24.116 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
2025-06-29 11:17:24.123 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/chats/all/tags HTTP/1.1" 200 - {}
2025-06-29 11:17:24.124 | INFO | open_webui.routers.openai:get_all_models:391 - get_all_models() - {}
2025-06-29 11:17:24.124 | INFO | open_webui.routers.ollama:get_all_models:334 - get_all_models() - {}
2025-06-29 11:17:24.129 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/chats/pinned HTTP/1.1" 200 - {}
2025-06-29 11:17:24.139 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:17:24.139 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63545 - "GET /api/v1/folders/ HTTP/1.1" 200 - {}
2025-06-29 11:17:24.260 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/chats/?page=2 HTTP/1.1" 200 - {}
2025-06-29 11:17:24.384 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /api/models HTTP/1.1" 200 - {}
2025-06-29 11:17:24.390 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /api/v1/configs/banners HTTP/1.1" 200 - {}
2025-06-29 11:17:24.395 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /api/v1/tools/ HTTP/1.1" 200 - {}
2025-06-29 11:17:24.402 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:17:24.408 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce/tags HTTP/1.1" 200 - {}
2025-06-29 11:17:24.414 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
Task IDs for chat 2f2185ae-d6f6-452b-8e31-cb5cad4368ce: []
2025-06-29 11:17:24.420 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /api/tasks/chat/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:17:24.435 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63549 - "GET /ollama/api/version HTTP/1.1" 200 - {}
2025-06-29 11:17:24.556 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /api/version/updates HTTP/1.1" 200 - {}
2025-06-29 11:17:28.167 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /manifest.json HTTP/1.1" 200 - {}
2025-06-29 11:17:30.884 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63558 - "GET /_app/immutable/chunks/CByx3Qer.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.889 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63554 - "GET /_app/immutable/chunks/BziaGcAU.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.890 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63555 - "GET /_app/immutable/chunks/DcvuaZaN.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.890 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63556 - "GET /_app/immutable/chunks/BkEhPLPW.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.890 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /_app/immutable/chunks/ZU7kMImr.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.896 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63557 - "GET /_app/immutable/chunks/COPb5i_W.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.897 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63558 - "GET /_app/immutable/chunks/Cg0lRgje.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.903 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63554 - "GET /_app/immutable/chunks/oXGXpM6b.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.903 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63556 - "GET /_app/immutable/chunks/CqhVeAu1.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.903 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63555 - "GET /_app/immutable/chunks/DPUOQ5xq.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.910 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63550 - "GET /_app/immutable/nodes/19.YALumMd9.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.911 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63557 - "GET /_app/immutable/chunks/DB5oTZlc.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:30.911 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63558 - "GET /_app/immutable/chunks/DM0op-0k.js.map HTTP/1.1" 200 - {}
2025-06-29 11:17:36.946 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63561 - "GET /c/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:17:36.959 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63561 - "GET /static/loader.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.964 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63565 - "GET /_app/immutable/chunks/Bk--KVgx.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.964 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /_app/immutable/entry/app.BXxIoc47.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.966 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63563 - "GET /_app/immutable/entry/start._bB3G5P7.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.968 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63562 - "GET /static/custom.css HTTP/1.1" 200 - {}
2025-06-29 11:17:36.970 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63561 - "GET /_app/immutable/chunks/C1FmrZbK.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.970 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /_app/immutable/chunks/DIXatSDb.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.971 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /static/splash.png HTTP/1.1" 200 - {}
2025-06-29 11:17:36.972 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63565 - "GET /_app/immutable/chunks/CoU9NT7-.js HTTP/1.1" 200 - {}
2025-06-29 11:17:36.976 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /static/splash-dark.png HTTP/1.1" 200 - {}
2025-06-29 11:17:37.501 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/config HTTP/1.1" 200 - {}
2025-06-29 11:17:37.547 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/v1/auths/ HTTP/1.1" 200 - {}
2025-06-29 11:17:37.608 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/config HTTP/1.1" 200 - {}
2025-06-29 11:17:37.617 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/v1/chats/archived?page=1&order_by=updated_at&direction=desc HTTP/1.1" 200 - {}
2025-06-29 11:17:37.628 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/changelog HTTP/1.1" 200 - {}
2025-06-29 11:17:37.632 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63565 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:17:37.635 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/channels/ HTTP/1.1" 200 - {}
2025-06-29 11:17:37.639 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
2025-06-29 11:17:37.644 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/chats/all/tags HTTP/1.1" 200 - {}
2025-06-29 11:17:37.648 | INFO | open_webui.routers.openai:get_all_models:391 - get_all_models() - {}
2025-06-29 11:17:37.648 | INFO | open_webui.routers.ollama:get_all_models:334 - get_all_models() - {}
2025-06-29 11:17:37.652 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/chats/pinned HTTP/1.1" 200 - {}
2025-06-29 11:17:37.661 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63565 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:17:37.662 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/folders/ HTTP/1.1" 200 - {}
2025-06-29 11:17:37.873 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/models HTTP/1.1" 200 - {}
2025-06-29 11:17:37.878 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/v1/configs/banners HTTP/1.1" 200 - {}
2025-06-29 11:17:37.883 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/v1/tools/ HTTP/1.1" 200 - {}
2025-06-29 11:17:37.889 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:17:37.895 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce/tags HTTP/1.1" 200 - {}
2025-06-29 11:17:37.900 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
Task IDs for chat 2f2185ae-d6f6-452b-8e31-cb5cad4368ce: []
2025-06-29 11:17:37.905 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /api/tasks/chat/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:17:37.939 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63564 - "GET /ollama/api/version HTTP/1.1" 200 - {}
2025-06-29 11:17:38.021 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63566 - "GET /api/version/updates HTTP/1.1" 200 - {}
2025-06-29 11:18:08.554 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "POST /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:18:08.580 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:18:18.812 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "POST /api/chat/completions HTTP/1.1" 200 - {}
2025-06-29 11:18:18.834 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:18:22.022 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "POST /api/chat/completed HTTP/1.1" 200 - {}
2025-06-29 11:18:22.061 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "POST /api/v1/chats/2f2185ae-d6f6-452b-8e31-cb5cad4368ce HTTP/1.1" 200 - {}
2025-06-29 11:18:22.067 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63585 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-06-29 11:18:37.831 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63605 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:19:05.600 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63621 - "GET /audio/notification.mp3 HTTP/1.1" 206 - {}
2025-06-29 11:19:05.729 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63621 - "GET /static/apple-touch-icon.png HTTP/1.1" 200 - {}
2025-06-29 11:19:38.089 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63640 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:20:38.827 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63676 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:20:45.886 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63705 - "GET /api/v1/chats/?page=2 HTTP/1.1" 200 - {}
2025-06-29 11:21:39.830 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63719 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:22:40.824 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63734 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:23:41.822 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63742 - "GET /_app/version.json HTTP/1.1" 200 - {}
2025-06-29 11:24:43.830 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.0.0.26:63758 - "GET /_app/version.json HTTP/1.1" 200 - {}
Additional Information
docker run
-d
--name='ollama-webui-tool'
--net='host'
--pids-limit 2048
-e TZ="America/Los_Angeles"
-e HOST_OS="Unraid"
-e HOST_HOSTNAME="SERVERAL"
-e HOST_CONTAINERNAME="ollama-webui-tool"
-e 'TCP_PORT_8001'='8001'
-l net.unraid.docker.managed=dockerman 'ghcr.io/open-webui/ollama-webui-tool:latest'
Unable to find image 'ghcr.io/open-webui/ollama-webui-tool:latest' locally
docker: Error response from daemon: Head "https://ghcr.io/v2/open-webui/ollama-webui-tool/manifests/latest": denied.
See 'docker run --help'.
The command failed.
HTTP/2 401
content-type: application/json
www-authenticate: Bearer realm="https://ghcr.io/token",service="ghcr.io",scope="repository:open-webui/ollama-webui-tool:pull"
date: Sun, 29 Jun 2025 13:58:18 GMT
content-length: 73
x-github-request-id: DFA0:10E8:9D4CA0:A33DF2:68614672
@tjbck commented on GitHub (Jun 30, 2025):
There's no such thing as ollama-webui-tool.