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

Обзор развертывания Open-WebUI с Gemma3:27B на сервере

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

Для развертывания требуется операционная система на базе Linux, в частности Ubuntu, с правами root для управления системными службами и контейнерами Docker. Сервер должен иметь доступ к интернету для загрузки образов Docker и весов модели. Для оптимальной производительности требуется оборудование NVIDIA GPU, а также установленный NVIDIA Container Toolkit для обеспечения ускорения GPU внутри контейнеров Docker.

Следующие порты должны быть доступны и открыты в межсетевом экране (firewall) сервера:

  • Порт 443 для внешнего доступа по HTTPS.

  • Порт 8080 для внутренней коммуникации между веб-интерфейсом и бэкендом.

  • Порт 11434 для внутреннего API службы Ollama.

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

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN): gemma<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Доменная зона настроена как hostkey.in с префиксом gemma.

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

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

Путь к каталогу Назначение
/root/nginx Содержит конфигурацию Docker Compose для прокси Nginx и Certbot.
/root/nginx/compose.yml Файл Docker Compose, определяющий службу Nginx.
/etc/systemd/system/ollama.service Файл единицы systemd для службы Ollama.
/etc/systemd/system/ollama.service.bak Резервная копия исходного файла службы Ollama.
/etc/docker/daemon.json Конфигурация демона Docker для среды выполнения NVIDIA.
/data/nginx/nginx-certbot.env Файл окружения для конфигурации Nginx и Certbot.
/data/nginx/user_conf.d Каталог для пользовательских конфигураций Nginx.
/etc/letsencrypt Точка монтирования для SSL-сертификатов, управляемых Certbot.

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

Стек приложения состоит из трех основных компонентов: Ollama для вывода модели (inference), Open-WebUI для пользовательского интерфейса и Nginx с Certbot для обратного прокси и завершения SSL-соединений.

  1. Установка Ollama: Служба Ollama устанавливается с использованием официального скрипта установки. Служба настроена на прослушивание всех сетевых интерфейсов (0.0.0.0) и разрешает все источники (origins).

  2. Загрузка модели: Модель gemma3:27b загружается непосредственно в службу Ollama.

  3. Настройка Docker и NVIDIA: Docker устанавливается и настраивается для использования среды выполнения контейнеров NVIDIA. Устанавливаются пакеты nvidia-container-toolkit и nvidia-container-runtime для обеспечения передачи GPU (GPU passthrough).

  4. Развертывание Open-WebUI: Контейнер Open-WebUI запускается с поддержкой CUDA, с маппингом внутреннего порта 8080 и подключением к службе Ollama, работающей на хосте.

  5. Развертывание прокси: Контейнер Nginx с Certbot развертывается через Docker Compose для обработки SSL-сертификатов и маршрутизации трафика к внутренним службам.

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

Система полагается на пользователя root для первоначальной настройки и управления контейнерами Docker и службами systemd. Системный пользователь ollama создается для управления службой Ollama.

Меры безопасности включают:

  • Шифрование SSL/TLS принудительно применяется через Nginx и Certbot для всего внешнего трафика на порту 443.

  • Служба Ollama настроена с параметром OLLAMA_ORIGINS=* для разрешения подключений от веб-интерфейса.

  • Контейнеры Docker изолированы, с использованием специфических монтируемых томов (volume mounts) для сохранения данных.

Базы данных

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

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

Развертывание использует следующие контейнеры Docker:

  • Open-WebUI:

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

    • Имя: open-webui

    • Порты: Маппинг порта хоста 8080 на порт контейнера 8080.

    • GPU: Настроен с параметром --gpus all для ускорения CUDA.

    • Переменные окружения:

      • ENV: Установлено в dev.

      • OLLAMA_BASE_URLS: Установлено в http://host.docker.internal:11434.

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

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

  • Nginx-Certbot:

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

    • Метод развертывания: Управляется через docker compose в каталоге /root/nginx.

    • Режим сети: host.

    • Томы:

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

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

    • Окружение: Использует CERTBOT_EMAIL=hkadm@hostkey.com и загружает конфигурацию из /data/nginx/nginx-certbot.env.

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

Nginx действует как обратный прокси для приложения, обрабатывая завершение SSL-соединений через Certbot. Прокси настроен на прослушивание порта 443 для внешнего трафика и маршрутизацию запросов к внутренней службе Open-WebUI, работающей на порту 8080. Конфигурация Nginx управляется через файл Docker Compose, расположенный по пути /root/nginx/compose.yml. Пользовательские конфигурации доменов хранятся в /data/nginx/user_conf.d.

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

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

  • /root/nginx: Права доступа к каталогу установлены в 0755, владелец root:root.

  • /root/nginx/compose.yml: Права доступа к файлу установлены в 0644, владелец root:root.

  • /etc/docker/daemon.json: Права доступа к файлу установлены в 0644, владелец root:root.

  • /etc/systemd/system/ollama.service: Управляется systemd, обычно владелец root.

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

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

  • Nginx Compose: /root/nginx/compose.yml

  • Окружение Nginx: /data/nginx/nginx-certbot.env

  • Конфигурация демона Docker: /etc/docker/daemon.json

  • Служба Ollama: /etc/systemd/system/ollama.service

  • Данные Open-WebUI: Том Docker open-webui (отображается в /app/backend/data внутри контейнера).

  • SSL-сертификаты: Том Docker nginx_secrets (отображается в /etc/letsencrypt внутри контейнера Nginx).

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

Следующие порты настроены для приложения:

Порт Протокол Описание
443 HTTPS Внешний доступ к интерфейсу Open-WebUI через Nginx.
8080 HTTP Внутренний доступ к контейнеру Open-WebUI.
11434 HTTP Внутренний доступ к API Ollama.

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

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

Служба Ollama:

  • Запуск: systemctl start ollama

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

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

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

Контейнер Open-WebUI:

  • Запуск: docker start open-webui

  • Остановка: docker stop open-webui

  • Перезапуск: docker restart open-webui

  • Обновление: Загрузите последний образ командой docker pull ghcr.io/open-webui/open-webui:cuda и пересоздайте контейнер.

Контейнер Nginx-Certbot:

  • Перейдите в каталог конфигурации: cd /root/nginx

  • Запуск/Перезапуск: docker compose up -d

  • Остановка: docker compose down

  • Обновление: Загрузите последний образ и выполните docker compose up -d.

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