Open WebUI:自托管 AI 聊天界面

Open WebUI 是一个自托管的 AI Web 界面,可以把 Ollama、本地模型、OpenAI-compatible API 和多种工具能力整合到一个类似 ChatGPT 的界面里。 它最适合的场景是:你已经在本地或服务器上跑了大模型,想要一个易用的 Web UI 来管理模型、聊天记录、知识库、用户权限和工具扩展。 它解决什么问题 直接使用模型 API 或命令行工具虽然灵活,但日常使用不够顺手。Open WebUI 提供了一个完整的前端和后台管理能力,让模型服务变成一个可长期使用的 AI 工作台。 你可以用它来: 连接本地 Ollama 模型。 连接 OpenAI、OpenRouter、LM Studio、Groq、Mistral 等 OpenAI-compatible API。 管理聊天记录、模型列表、提示词和知识库。 给团队成员创建账号,并控制模型和功能权限。 上传文档做 RAG 问答。 配置 Web Search、工具调用、函数和 Pipeline。 在桌面和手机浏览器里使用同一个 AI 入口。 核心功能 多模型聊天 Open WebUI 支持同时接入多个模型后端。你可以在同一个界面里切换模型,也可以做多模型对比。 常见组合: 本地模型:Ollama、llama.cpp、vLLM。 云端模型:OpenAI、Anthropic。 中转或聚合服务:OpenRouter、Groq、Mistral、LM Studio 等 OpenAI-compatible 服务。 如果你的后端兼容 OpenAI API,一般都可以通过自定义 API Base URL 接入。 Ollama 集成 Open WebUI 和 Ollama 的组合很常见。Ollama 负责在本地运行模型,Open WebUI 负责提供聊天界面、用户管理和扩展能力。 ...

May 10, 2026 · 2 min · 384 words · Jiang Jun Jie

Wsl

Issues windows unix 编码问题 sudo apt update sudo apt install dos2unix dos2unix [filename] 导出、注销、导入 WSL WSL 发行版可以通过 wsl --export 导出成 tar 文件,再用 wsl --import 导入到新的目录。这个方法适合备份、迁移磁盘位置,或者重建 Docker Desktop 的 WSL 数据。 先查看当前发行版名称: wsl --list --verbose 操作前建议关闭所有 WSL 实例和 Docker Desktop: wsl --shutdown 准备备份和导入目录: mkdir E:\wsl\backup mkdir E:\wsl\docker-desktop-data mkdir E:\wsl\docker-desktop mkdir E:\wsl\Ubuntu 命令格式 导出: wsl --export <发行版名称> <tar文件路径> 注销: wsl --unregister <发行版名称> 导入: wsl --import <发行版名称> <安装目录> <tar文件路径> 注意:wsl --unregister 会删除对应发行版的数据。确认 tar 文件已经导出成功后,再执行注销。 迁移 docker-desktop-data docker-desktop-data 保存 Docker Desktop 的镜像、容器、volume 等数据。迁移前一定要先退出 Docker Desktop。 wsl --shutdown wsl --export docker-desktop-data E:\wsl\backup\docker-desktop-data.tar wsl --unregister docker-desktop-data wsl --import docker-desktop-data E:\wsl\docker-desktop-data E:\wsl\backup\docker-desktop-data.tar 迁移 docker-desktop docker-desktop 是 Docker Desktop 使用的 WSL 发行版。顺序同样是先导出,再注销,最后导入。 ...

August 30, 2023 · 1 min · 158 words · Jiang Jun Jie

Docker ELK

docker compose files https://github.com/deviantony/docker-elk

September 8, 2022 · 1 min · 4 words · Jiang Jun Jie

Docker GeoServer

version: '3.1' services: geoserver: image: geonode/geoserver:2.18.2 container_name: geoserver volumes: - /opt/geoserver/data:/geoserver_data/data ports: - 18080:8080 restart: always

September 8, 2022 · 1 min · 16 words · Jiang Jun Jie

Docker OSM

version: '3.2' services: osm: image: overv/openstreetmap-tile-server:latest container_name: osm volumes: - openstreetmap-data:/var/lib/postgresql/12/main # environment: # - ALLOW_CORS=enabled ports: - 28080:80 restart: always command: "run" networks: - proxy volumes: openstreetmap-data: external: true networks: proxy: external: true

September 8, 2022 · 1 min · 34 words · Jiang Jun Jie

Docker Oracle11gR2

version: '3.1' services: oracle-xe: image: gvenzl/oracle-xe:11 container_name: oracle-xe restart: always user: 1000:1000 environment: - ORACLE_PASSWORD={password} volumes: - ./data:/u01/app/oracle/oradata ports: - 1521:1521 network_mode: bridge version: '3.1' services: oracle11g: image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g container_name: oracle11g privileged: true ports: - 1521:1521 restart: always volumes: - /home/oracle/oradata:/home/oracle/app/oracle/oradata network_mode: bridge root的默认密码为helowin oracle默认密码为oracle

September 8, 2022 · 1 min · 45 words · Jiang Jun Jie

Docker Keycloak

version: '3' volumes: postgres_data: driver: local services: postgres: image: postgres volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak POSTGRES_PASSWORD: {db password} keycloak: image: quay.io/keycloak/keycloak:legacy environment: DB_VENDOR: POSTGRES DB_ADDR: postgres DB_DATABASE: keycloak DB_USER: keycloak DB_SCHEMA: public DB_PASSWORD: {db password} KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: {password} # Uncomment the line below if you want to specify JDBC parameters. The parameter below is just an example, and it shouldn't be used in production without knowledge. It is highly recommended that you read the PostgreSQL JDBC driver documentation in order to use it. #JDBC_PARAMS: "ssl=true" ports: - 8888:8080 depends_on: - postgres

September 8, 2022 · 1 min · 95 words · Jiang Jun Jie

Nginx

安装和配置Nginx容器 文件目录 /home/nginx/conf.d 用于存放配置文件 /home/nginx/cert 用于存放https证书 /home/nginx/html 用于存放网页文件 /home/nginx/logs 用于存放日志 运行nginx容器 docker run -d \ --name nginx --restart always \ -p 80:80 -p 443:443 \ -e "TZ=Asia/Shanghai" \ -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /home/nginx/conf.d:/etc/nginx/conf.d \ -v /home/nginx/logs:/var/log/nginx \ -v /home/nginx/cert:/etc/nginx/cert \ -v /home/nginx/html:/usr/share/nginx/html \ nginx:alpine 配置nginx 这里使用Nginx反向代理访问后端服务,由于容器内部通信,因此需要使用容器的IP,也就是172.17.0.1。 在/home/nginx/conf.d创建一个{name}.conf的配置文件,文件内容如下 server { listen 80; server_name 域名/外网IP; index index.html; root /usr/share/nginx/html/{name}/dist; #dist上传的路径 # 避免访问出现 404 错误 location / { try_files $uri $uri/ @router; index index.html; } location @router { rewrite ^.*$ /index.html last; } # 接口 location /api { proxy_pass http://172.17.0.1:8000; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # 授权接口 location /auth { proxy_pass http://172.17.0.1:8000; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # WebSocket 服务 location /webSocket { proxy_pass http://172.17.0.1:8000; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # 限制spring boot admin location ~ ^(/[^/]*)?/actuator(/.*)?$ { return 403; } # 头像 location /avatar { proxy_pass http://172.17.0.1:8000; } # 文件 location /file { proxy_pass http://172.17.0.1:8000; } } # 容器中 /usr/share/nginx/html/{name}/dist 对应宿主机的 /home/nginx/html/{name}/dist 目录,因此文件上传到宿主机的目录即可 将 .env.production 中的接口地址改为 ‘/’ 修改 api.js 中的 baseUrl = process.env.VUE_APP_BASE_API === ‘/’ ? ’’ : process.env.VUE_APP_BASE_API

March 30, 2021 · 1 min · 200 words · Jiang Jun Jie

Cas

install docker run --rm -p 8080:8080 apereo/cas-initializr:6.3.0 curl http://localhost:8080/starter.tgz -o cas.tgz tar -zxvf cas.tgz chmod +x docker-build.sh chmod +x docker-run.sh ./docker-build.sh

March 25, 2021 · 1 min · 21 words · Jiang Jun Jie

Docker MongoDB

start mongodb 4.4 in docker,use ~/mongo/data to persist data docker-compose.yml version: '3.1' services: mongodb: image: mongo:4.4 command: mongod --auth volumes: - ~/mongo/data:/data/db ports: - 27017:27017 restart: always environment: MONGO_INITDB_ROOT_USERNAME: {username} MONGO_INITDB_ROOT_PASSWORD: {password}

March 24, 2021 · 1 min · 32 words · Jiang Jun Jie