Ubuntu使用docker安装Open WebUI

来自个人维基
Hovercool留言 | 贡献2026年6月22日 (一) 09:46的版本
跳转到导航 跳转到搜索

1. 确保Docker和Docker Compose已安装

检查Docker是否已安装

docker --version
docker compose version

如果未安装,可以参考之前的教程先安装Docker。

2. 创建Gitea工作目录

创建一个干净的目录,所有Gitea相关文件都会放在这里

mkdir -p ~/openwebui
cd ~/openwebui

这个 ~/openwebui目录就是未来迁移时需要整体打包的目录。

3. 创建docker-compose.yml

使用以下命令创建配置文件:

bash

nano docker-compose.yml

粘贴以下内容:

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:8080" #服务器端口:docker内端口
    volumes:
      - ./data:/app/backend/data
    # environment:
      # --- 根据你的情况选择配置,不需要的可以删除或注释掉 ---
      
      # 方案一:连接远程 Ollama 服务(推荐)
      # - OLLAMA_BASE_URL=http://192.168.1.100:11434  # 替换为你的 Ollama 服务器 IP
      
      # 方案二:使用 OpenAI 兼容 API(如 DeepSeek)
      # - OPENAI_API_BASE_URL=https://api.deepseek.com/v1
      # - OPENAI_API_KEY=sk-你的密钥
      
      # 可选:如果你不想注册登录,开启单用户模式
      # - WEBUI_AUTH=False
    # ...(端口、环境变量等)
    # Compose 原生支持,不需要任何额外参数
    mem_limit: 256m     # 硬上限 256MB
    cpus: '0.5'      # 最多用半个核

4. 下载镜像并启动

下载镜像:

docker pull ghcr.io/open-webui/open-webui:main
启动(上一步其实可省略,启动时应该也会自动下载):
$ docker compose up -d
[+] up 2/2
 ✔ Network openwebui_default Created                                                                 0.2s
 ✔ Container open-webui      Started

5. 创建nginx配置文件

server {

   server_name ai.xx.xx;
   location / {
       proxy_pass http://localhost:3000;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       # WebSocket 支持
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 86400;
   }
   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/ai.xx.xx/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/ai.xx.xx/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {

   if ($host = ai.xx.xx) {
       return 301 https://$host$request_uri;
   } # managed by Certbot


   listen 80;
   server_name ai.xx.xx;
   return 404; # managed by Certbot

}