Перейти к содержанию

Обзор развертывания Open WebUI с Ollama на сервере

Предпосылки и предварительные требования

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Система должна иметь доступ к интернету для загрузки пакетов и образов контейнеров. Требуется наличие прав суперпользователя (root) или возможности выполнения команд через sudo.

Необходимы следующие сетевые порты: - Порт 80 для HTTP-запросов и проверки валидации сертификатов ACME. - Порт 443 для HTTPS-трафика. - Порт 8080 для локального доступа к приложению Open WebUI. - Порт 11434 для локального доступа к API Ollama.

Структура файлов и каталогов

Конфигурация и данные приложения распределены по следующим каталогам:

  • /root/nginx/ — каталог для конфигурации прокси-сервера и запуска контейнера Nginx.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для Nginx и Certbot.
  • /data/nginx/user_conf.d/ — каталог с пользовательскими конфигурациями виртуальных хостов Nginx.
  • Файлы конфигурации HTTPS имеют расширение .hostkey.in.conf.
  • Файлы конфигурации HTTP имеют расширение .hostkey.in.http.conf.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для Nginx и Certbot.
  • /etc/systemd/system/ollama.service — основной файл сервиса Ollama.
  • /etc/systemd/system/ollama.service.d/override.conf — файл переопределения параметров сервиса Ollama.
  • /var/www/certbot/ — каталог внутри контейнера Nginx для хранения файлов проверки ACME.

Процесс установки приложения

Установка выполняется в несколько этапов, включающих подготовку системы, установку бэкенда и развертывание фронтенда.

  1. Установка базовых утилит:
  2. Пакеты curl и ca-certificates устанавливаются через менеджер пакетов apt.

  3. Установка Ollama:

  4. Скрипт установки загружается с официального репозитория и выполняется в системе.
  5. Создается системный пользователь ollama.
  6. Загружается модель deepseek-r1:70b через команду ollama pull.

  7. Развертывание Open WebUI:

  8. Запускается контейнер Docker с образом ghcr.io/open-webui/open-webui:cuda.
  9. Контейнер использует режим сети host для прямого доступа к портам.
  10. Для работы с GPU в конфигурации контейнера указан запрос на использование графического ускорителя.

  11. Настройка прокси-сервера:

  12. Создается каталог /root/nginx.
  13. Генерируется файл compose.yml для запуска Nginx с поддержкой Certbot.
  14. Запускается контейнер Nginx через docker compose up -d.

Базы данных

Приложение Open WebUI использует встроенное хранилище данных. Данные сохраняются в том-е Docker с именем open-webui, который монтируется в путь /app/backend/data внутри контейнера. Отдельная внешняя база данных не подключается.

Контейнеры Docker и их запуск

В системе развертываются два основных контейнера:

  1. Контейнер Open WebUI:
  2. Имя контейнера: open-webui.
  3. Образ: ghcr.io/open-webui/open-webui:cuda.
  4. Режим сети: host.
  5. Переменные окружения:
    • ENV установлено в значение dev.
    • OLLAMA_BASE_URLS указывает на http://127.0.0.1:11434.
  6. Монтирование тома: open-webui:/app/backend/data.
  7. Политика перезапуска: always.
  8. Доступ к GPU через device_requests.

  9. Контейнер Nginx с Certbot:

  10. Запускается через docker compose в директории /root/nginx.
  11. Образ: jonasal/nginx-certbot:latest.
  12. Режим сети: host.
  13. Монтирование томов:
    • nginx_secrets:/etc/letsencrypt для хранения сертификатов.
    • /data/nginx/user_conf.d:/etc/nginx/user_conf.d для конфигураций хостов.
  14. Переменная CERTBOT_EMAIL установлена на hkadm@hostkey.com.

Прокси серверы

Прокси-сервер Nginx настроен для обработки входящего трафика и обеспечения SSL-шифрования.

Конфигурация HTTPS: - В файле конфигурации виртуального хоста добавляется директива proxy_pass http://127.0.0.1:8080; для пересылки запросов на Open WebUI. - Устанавливается заголовок Host через proxy_set_header Host $host;. - Старые строки proxy_pass удаляются перед добавлением новых.

Конфигурация HTTP (порт 80): - Создается виртуальный хост для перенаправления всего трафика на HTTPS через код ответа 301. - Локация /.well-known/acme-challenge/ настроена для проверки валидации сертификатов, корневой директорией является /var/www/certbot.

Проверка и перезагрузка: - После внесения изменений конфигурация проверяется командой nginx -t внутри контейнера. - При успешной проверке сервис перезагружается командой nginx -s reload.

Права доступа и безопасность

Файлы конфигурации и каталоги имеют следующие права доступа: - Каталог /root/nginx имеет права 0755, владелец root. - Файл /root/nginx/compose.yml имеет права 0644, владелец root. - Файлы конфигурации в /data/nginx/user_conf.d/ имеют права 0644. - Каталог /etc/systemd/system/ollama.service.d имеет права 0755.

Сервис Ollama настроен на прослушивание всех интерфейсов (0.0.0.0) через переменную окружения OLLAMA_HOST. Доступ к API разрешен для всех источников через переменную OLLAMA_ORIGINS=*.

Запуск, остановка и обновление

Управление сервисами осуществляется через стандартные утилиты Docker и Systemd.

Управление Ollama: - Перезагрузка демона и перезапуск сервиса выполняются через systemctl daemon-reload и systemctl restart ollama. - Сервис настроен на автоматический запуск при старте системы (enabled: yes).

Управление Open WebUI: - Контейнер управляется через команды Docker. - Автоматический перезапуск настроен политикой always.

Управление Nginx: - Запуск контейнера выполняется командой docker compose up -d в директории /root/nginx. - Перезагрузка конфигурации внутри контейнера выполняется командой docker exec nginx-nginx-1 nginx -s reload.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×