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

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

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

Для развертывания требуется Linux-сервер с операционной системой Ubuntu 22.04 или Ubuntu 24.04. Ubuntu 25.04 не поддерживается из-за отсутствия официальной поддержки CUDA от NVIDIA для релизов, не являющихся LTS (Long Term Support). Для установки драйверов, настройки сервисов и управления контейнерами система должна иметь права root.

  • Операционная система: Ubuntu 22.04 или Ubuntu 24.04.

  • Права доступа: Доступ root или права sudo.

  • Аппаратное обеспечение: Видеокарта NVIDIA с совместимыми драйверами для ускорения CUDA.

  • Сеть: Доступ в интернет для загрузки пакетов и моделей.

  • Порты: Порты 80 и 443 должны быть открыты для работы обратного прокси и завершения SSL-соединений.

FQDN финальной панели

Приложение доступно через домен hostkey.in. Полное доменное имя (FQDN) формируется по следующему шаблону: ollama<Server ID>.hostkey.in

Сервис слушает порт 443 для HTTPS-трафика.

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

Развертывание использует специфические директории для конфигурации, хранения данных и сертификатов:

  • Конфигурация Nginx: /data/nginx/user_conf.d/

  • Файл compose для Nginx: /root/nginx/compose.yml

  • Переменные окружения Nginx: /data/nginx/nginx-certbot.env

  • Юнит-файл сервиса Ollama: /etc/systemd/system/ollama.service

  • Резервная копия Ollama: /etc/systemd/system/ollama.service.bak

  • Томы Docker:

  • nginx_secrets: Хранит сертификаты Let's Encrypt.

  • open-webui: Хранит данные бэкенда приложения.

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

Установка включает настройку операционной системы, установку драйверов NVIDIA и CUDA, конфигурирование Docker для поддержки GPU, а также развертывание сервиса Ollama и контейнера Open WebUI.

  1. Подготовка системы: Система обновляется, а ядро обновляется до стека HWE (Hardware Enablement), если используется Ubuntu 22.04.

  2. Установка CUDA и драйверов:

    • Устанавливается компилятор GCC.

    • Устанавливаются ключевое кольцо (keyring) и набор инструментов CUDA в зависимости от версии релиза Ubuntu.

    • Переменные окружения для CUDA добавляются в файл ~/.bashrc.

    • Удаляется модуль ядра nouveau, инициализируются драйверы NVIDIA.

  3. Поддержка GPU в Docker:

    • На Ubuntu 22.04 устанавливается nvidia-docker2.

    • На Ubuntu 24.04 устанавливается nvidia-container-toolkit.

    • Сервис Docker перезапускается для применения изменений.

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

    • Бинарный файл Ollama устанавливается через официальный скрипт установки.

    • Создается системный пользователь с именем ollama.

    • Скачивается модель по умолчанию qwen3:14b.

  5. Конфигурация сервиса:

    • Генерируется и активируется юнит-файл systemd ollama.service.

    • Сервис перезапускается для применения новой конфигурации.

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

Безопасность обеспечивается через обратный прокси и изоляцию контейнеров.

  • Межсетевой экран (Firewall): Порты 80 и 443 открыты для контейнера Nginx для обработки входящего трафика.

  • Изоляция пользователей: Сервис Ollama работает под выделенным системным пользователем и группой ollama.

  • SSL/TLS: Сертификаты SSL управляются автоматически контейнером nginx-certbot с использованием Let's Encrypt.

  • Сетевые ограничения: Сервис Ollama настроен на прослушивание адреса 0.0.0.0, но внешний доступ к нему осуществляется только через прокси Nginx.

Базы данных

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

Контейнеры Docker и их развертывание

Два основных контейнера Docker развертываются с помощью docker compose:

  1. Open WebUI:

    • Образ: ghcr.io/open-webui/open-webui:main

    • Имя контейнера: open-webui

    • Политика перезапуска: always

    • Томы: Том open-webui монтируется в /app/backend/data.

    • Хосты: Добавляется host.docker.internal, указывающий на шлюз хоста.

  2. Прокси Nginx:

    • Образ: jonasal/nginx-certbot:latest

    • Политика перезапуска: unless-stopped

    • Порты: Порты хоста 80 и 443 маппятся на порты контейнера 80 и 443.

    • Томы:

      • nginx_secrets монтируется в /etc/letsencrypt.

      • Директория хоста /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.

    • Зависимости: Зависит от сервиса open-webui.

Развертывание управляется командой docker compose, выполняемой в директории /root/nginx.

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

Nginx выступает в роли обратного прокси и терминала SSL для приложения.

  • Расположение конфигурации: /data/nginx/user_conf.d/ollama<Server ID>.hostkey.in.conf

  • Проксирование (Proxy Pass): Трафик перенаправляется из блока location Nginx в контейнер Open WebUI по адресу http://open-webui:8080.

  • Управление SSL: Контейнер nginx-certbot автоматически обрабатывает генерацию и обновление сертификатов.

  • Окружение: Прокси использует электронную почту hkadm@hostkey.com для уведомлений от Let's Encrypt.

Настройки прав доступа

Права доступа к файлам и директориям настроены следующим образом:

  • Директория Nginx: /root/nginx принадлежит root:root с правами 0755.

  • Файл compose: /root/nginx/compose.yml принадлежит root:root с правами 0644.

  • Файл сервиса Ollama: /etc/systemd/system/ollama.service принадлежит root:root с правами 0644.

  • Пользователь Ollama: Пользователь ollama является системным пользователем, используемым для запуска сервиса Ollama.

Расположение файлов конфигурации и данных

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

  • Compose для Nginx: /root/nginx/compose.yml

  • Конфигурация пользователя Nginx: /data/nginx/user_conf.d/ollama<Server ID>.hostkey.in.conf

  • Переменные окружения Nginx: /data/nginx/nginx-certbot.env

  • Сервис Ollama: /etc/systemd/system/ollama.service

  • Данные Ollama: Управляются томом Docker open-webui.

Доступные порты для подключения

Следующие порты доступны для внешних и внутренних подключений:

  • Порт 443: HTTPS-трафик для интерфейса Open WebUI через Nginx.

  • Порт 80: HTTP-трафик для перенаправления SSL и валидации Let's Encrypt.

  • Порт 3000: Внутренний порт, определенный в конфигурации (не открыт для внешнего доступа).

  • Порт 8080: Внутренний порт, используемый контейнером Open WebUI, проксируемый Nginx.

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

Управление сервисами осуществляется через systemd для Ollama и Docker Compose для веб-интерфейса.

  • Сервис Ollama:

  • Запуск: systemctl start ollama

  • Остановка: systemctl stop ollama

  • Перезапуск: systemctl restart ollama

  • Включение при загрузке: systemctl enable ollama

  • Контейнеры Docker (Open WebUI и Nginx):

  • Запуск/Обновление: docker compose up -d (выполняется в /root/nginx)

  • Остановка: docker compose down (выполняется в /root/nginx)

  • Просмотр логов: docker compose logs -f (выполняется в /root/nginx)

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