尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Open WebUI 本地部署:5 分钟跑通容器 + 模型接入实操

Open WebUI 本地部署:5 分钟跑通容器 + 模型接入实操 Open WebUI 本地部署5 分钟跑通容器 模型接入实操【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webuiOpen WebUI 是一个能完全离线运行的自托管 AI 平台把 Ollama 的本地模型或任何 OpenAI 兼容 API 接进网页界面里聊天。本文覆盖四步跑起容器、接入你的模型、调出常用功能、稳住长期运行。跑通最小环境一条 Docker 命令部署 Open WebUI这条命令会拉取 Open WebUI 镜像并启动容器把服务端口映射到主机的 3000数据存进命名卷容器挂了自动拉起。docker run -d \ -p 3000:8080 \ --add-hosthost.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main参数逐个拆开看参数作用为什么需要-p 3000:8080容器 8080 映射到主机 30008080 是容器内服务监听端口用 3000 避免和主机上已有服务撞车--add-hosthost.docker.internal:host-gateway让容器里的host.docker.internal指向宿主机容器默认网络访问不到宿主机的 Ollama靠这个主机名兜住-v open-webui:/app/backend/data挂载数据卷到容器数据目录数据库、上传文件都在这个目录不挂载就随容器删除而丢--restart always容器退出后自动重启宿主机重启或进程崩溃后服务自己回来ghcr.io/open-webui/open-webui:main稳定版镜像:cuda是 GPU 加速变体:ollama内嵌了 Ollama跑通标志满足下面三点就算部署成功docker ps里容器状态是Up浏览器打开http://localhost:3000出现登录/注册界面第一个注册的账号自动成为管理员能进入后台管理页GPU 加速部署机器上有 NVIDIA 卡的话只改两处给容器加--gpus all开放全部 GPU镜像换成:cuda标签。前提是你已经在宿主机装好 NVIDIA Container Toolkit验证命令是docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi能列出显卡。接入你的模型本地、远程与第三方 API模型接入有三种场景选一个对应你 Ollama 或 API 的位置即可。本地直连Ollama 装在同一台机器基础命令里的--add-host参数就是为这个场景准备的容器会通过host.docker.internal:11434找到宿主机的 Ollama。如果这台机器还没装 Ollama更省事的做法是用:ollama标签镜像它把 Ollama 和 Open WebUI 打包在一个容器里docker run -d \ -p 3000:8080 \ -v ollama:/root/.ollama \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:ollama确认接上了进管理页的 Models 里点 Ollama 连接执行ollama pull llama3.2拉个模型右上角模型列表里出现它并能发起对话。远程服务OLLAMA_BASE_URL 指向另一台机器Ollama 部署在别的服务器上时用OLLAMA_BASE_URL环境变量指过去docker run -d \ -p 3000:8080 \ -e OLLAMA_BASE_URLhttp://192.168.1.50:11434 \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main要同时挂多台 Ollama改用OLLAMA_BASE_URLS多个地址用分号分隔。确认接上了管理页连接测试通过远程服务器上的模型全部出现在列表里。第三方 API任意 OpenAI 兼容接口LMStudio、vLLM、GroqCloud、OpenRouter 这类服务都按 OpenAI 兼容格式接docker run -d \ -p 3000:8080 \ -e OPENAI_API_BASE_URLhttps://api.groq.com/openai/v1 \ -e OPENAI_API_KEYyour_key \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main接上之后也能在 设置 → External Interfaces 里增删密钥不用重建容器。确认接上了Settings 里对应连接显示已连通模型列表出现该服务商的模型。支持的后端和连接方式汇总服务连接方式典型场景Ollama自动发现或OLLAMA_BASE_URL本地跑开源模型LMStudioOPENAI_API_BASE_URL指向http://127.0.0.1:1234/v1桌面端临时测模型vLLMOPENAI_API_BASE_URL兼容接入批量推理、高吞吐GroqCloud / OpenRouterOPENAI_API_BASE_URLOPENAI_API_KEY高速云端推理、多模型切换OpenAI 官方OPENAI_API_KEY直接走官方接口调出常用功能权限、插件、频道与定时任务配置管理员账号与角色第一个注册的账号就是管理员。想让管理员账号在启动时就固定下来加三个环境变量-e WEBUI_ADMIN_USERNAMEadmin \ -e WEBUI_ADMIN_PASSWORDChangeMe123! \ -e DEFAULT_USER_ROLEpending第三个参数控制新注册用户的默认角色pending表示待批准管理员在用户管理页逐个放行。角色可做的事典型使用者admin管理用户、模型、全局设置查看所有会话自托管运维者user聊天、上传文件、创建工具与频道日常使用者pending登录后等待审批无法使用功能新注册未批准的账号装插件Tools 和 Pipes插件分 Filters、Tools、Pipes、Skills 几类覆盖消息改写、外部工具调用、数据管道。进 Tools 页面社区市场里直接点安装然后分配给某个模型即可生效。想自己写一个最小骨架如下改消息内容后原样返回async def pipe(message: str, history: list, **kwargs) - str: if urgent in message: message [优先处理] message return message适用场景给消息自动打标、统一加前缀、按规则改写提示词。更多接入方式MCP、OpenAPI 工具服务器在 后端源码 的utils/mcp/目录能看到实现。开协作频道人和 AI 同一个时间线Channels 是团队共享的实时讨论区把模型拉进来后人和模型在同一条时间线里回复支持线程、表情反应、置顶。适合几个人一起评审同一份文档让模型逐条点评的场景。设定时任务AutomationsAutomations 让提示词按固定周期自动执行每次运行记录在日历上点进去能跳回那次运行产生的完整会话。适合每天早上自动汇总、周期性生成报告这类活。稳住运行调优参数、健康检查与备份参数别全调默认值对单机小团队够用。这五个是实际会动的配置项推荐值调整依据WEBUI_SECRET_KEY随机长字符串≥32 位启用认证后是硬要求丢了无法解密已有会话THREAD_POOL_SIZECPU 核数 × 2后端处理并发请求的线程池多人同时聊再往上加MODELS_CACHE_TTL默认 1 秒模型少可设 30模型列表的缓存刷新周期模型不常变就调大HF_HUB_OFFLINE完全离线环境设1阻止启动时尝试从外网拉模型避免卡住REDIS_URL多实例部署必填跨实例共享会话和 WebSocket 消息健康检查加自动重启一条命令带上--health-cmd容器内部每 30 秒自检一次docker run -d \ -p 3000:8080 \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ --health-cmd curl -f http://localhost:8080/health || exit 1 \ --health-interval 30s \ --health-timeout 10s \ --health-retries 3 \ ghcr.io/open-webui/open-webui:main备份脚本直接拷走把数据卷打包成 tar恢复时反向解到/app/backend/data即可#!/bin/bash DESTowui-$(date %F).tar docker run --rm \ -v open-webui:/data \ -v /backups:/backup \ alpine sh -c tar -cf /backup/$DEST -C /data . ls -lh /backups数据卷里是 SQLite 数据库加上传文件日常体积不大每天备一份足够。排掉高频坑5 个最常见的问题症状大概率原因解法页面打不开主机 3000 端口被占docker ps确认容器是 Up否则把-p改成空闲端口模型列表是空的容器连不上 Ollama检查有没有--add-hosthost.docker.internal:host-gateway或直接设OLLAMA_BASE_URL重启后数据没了启动时漏挂数据卷带-v open-webui:/app/backend/data重新跑旧数据如果没备份找不回来新账号登录进不去DEFAULT_USER_ROLEpending还没批准管理员进用户管理页点批准或直接注册第一个账号当管理员多人用一段时间后连接断开多实例但没配 Redis单机部署别开多实例要水平扩展就配REDIS_URL三个容易踩的坑对比着看❌-p 8080:8080宿主机容器同端口映射主机上已有服务占 8080 时直接起不来 ✅-p 3000:8080内外端口分开互不干扰❌ 重建容器时每次重新生成WEBUI_SECRET_KEY✅ 固定值写进.env文件复用否则每次重建老会话全部失效用户得重新登录❌ 图新把镜像切成:dev标签 ✅ 生产固定在:main稳定标签看完 release 说明再升级排查时先拉日志八成问题直接看得见docker logs -f --tail 100 open-webui想进一步定制仓库里的 部署配置 给了带 Ollama 的双容器编排环境变量全在 后端源码 里能查到默认值。自检与延伸部署完成前逐项过一遍✅docker ps状态显示Up容器没有反复重启✅ 浏览器打开http://localhost:3000首个账号登录成功且角色为 admin✅ 模型列表至少有一个模型发一句消息能收到回复✅ 删一条聊天记录重启容器后再删一条历史数据都还在✅ 跑一次上面的备份脚本/backups里出现非零大小的 tar 包✅ 删掉容器再重建带同样参数老账号密码还能登录说明数据卷生效延伸方向多实例扩展加 Redis 共享会话数据库换 PostgreSQL前面挂负载均衡主题定制改static/custom.css和 Logo管理页的品牌设置里也能换名API 集成管理、聊天、知识库都有 REST 接口可以直接写脚本自动化卡住的时候先拉日志再对照环境变量逐项核对多数问题这两步就能定位。【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表