Обзор развертывания Open WebUI и Ollama на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы на сервере должны быть выполнены следующие условия: - Операционная система: Ubuntu. - Наличие прав суперпользователя (root) или возможность выполнения команд через sudo. - Установленный Docker Engine для запуска контейнеров. - Доступ к интернету для загрузки образов контейнеров и моделей. - Открытые порты: - 80 и 443 для работы веб-сервера Nginx и получения SSL-сертификатов. - 8080 для доступа к интерфейсу Open WebUI. - 11434 для локального доступа к API Ollama (внутри сети хоста).
Структура файлов и каталогов¶
Конфигурация и данные приложения размещаются в следующих директориях: - /root/nginx/ — каталог для конфигурации прокси-сервера и файла compose.yml. - /data/nginx/user_conf.d/ — директория для пользовательских конфигурационных файлов Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Certbot. - /etc/systemd/system/ollama.service — файл конфигурации системного сервиса Ollama. - /usr/share/ollama/.ollama/models/ — хранилище загруженных моделей нейросетей. - /var/lib/docker/volumes/open-webui/ — том Docker для хранения данных приложения Open WebUI.
Процесс установки приложения¶
Установка выполняется в несколько этапов, включающих настройку системного сервиса и запуск контейнеров.
- Установка Ollama:
- Скачивается и выполняется скрипт установки с официального репозитория.
- Создается системный пользователь
ollama. -
Загружается модель
gpt-oss:20bчерез командуollama pull. -
Настройка сервиса Ollama:
- Файл сервиса
/etc/systemd/system/ollama.serviceмодифицируется для добавления переменных окружения:OLLAMA_HOST=0.0.0.0OLLAMA_ORIGINS=*LLAMA_FLASH_ATTENTION=1
-
Демон
systemdперезагружается, а сервисollamaперезапускается и включается в автозагрузку. -
Развертывание Open WebUI:
- Запускается контейнер Docker с образом
ghcr.io/open-webui/open-webui:cuda. - Контейнер получает доступ ко всем GPU устройствам (
--gpus all). -
Данные приложения сохраняются в том
open-webui. -
Настройка прокси-сервера:
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlдля запуска Nginx с Certbot. - В конфигурационный файл Nginx добавляется правило пересылки запросов на порт
8080. - Запускается контейнер прокси-сервера через
docker compose up -d.
Контейнеры Docker и их запуск¶
В системе используются два типа контейнеров: сервис Open WebUI и прокси-сервер Nginx.
Контейнер Open WebUI: Запускается командой:
docker run -d -p 8080:8080 --gpus all \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
-e ENV='dev' \
-e OLLAMA_BASE_URLS='http://host.docker.internal:11434' \
--restart always ghcr.io/open-webui/open-webui:cuda
8080 маппится на порт 8080 внутри контейнера. - Переменная OLLAMA_BASE_URLS указывает на адрес API Ollama через хост-машину. - Режим перезапуска установлен в always. Контейнер Nginx с Certbot: Управляется файлом compose.yml в директории /root/nginx. Конфигурация включает: - Образ: jonasal/nginx-certbot:latest. - Режим сети: host. - Том nginx_secrets монтируется в /etc/letsencrypt для хранения сертификатов. - Директория /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для загрузки пользовательских конфигов. - Переменная CERTBOT_EMAIL установлена на hkadm@hostkey.com.
Запуск осуществляется командой:
в директории/root/nginx. Прокси серверы¶
Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx с Certbot.
- Домен и сертификаты: Сертификаты запрашиваются и хранятся в томе
nginx_secrets. - Маршрутизация: В конфигурационном файле Nginx (расположенном в
/data/nginx/user_conf.d/) добавляется правило пересылки: Это правило размещается внутри блокаlocation /, перенаправляя весь трафик на локальный порт8080, где работает Open WebUI. - Переменные окружения: Настройка email для Certbot и другие параметры загружаются из файла
/data/nginx/nginx-certbot.env.
Базы данных¶
Приложение Open WebUI использует встроенное хранилище данных, которое сохраняется в томе Docker open-webui. Данные физически размещаются в директории /var/lib/docker/volumes/open-webui/_data. Отдельная внешняя база данных не подключается.
Права доступа и безопасность¶
- Пользователи: Для работы Ollama создан системный пользователь
ollama. - Файлы конфигурации:
- Директория
/root/nginxимеет права0755и принадлежит пользователюroot. - Файл
compose.ymlимеет права0644. - Сетевая безопасность:
- Сервис Ollama настроен на прослушивание всех интерфейсов (
0.0.0.0), но доступ к нему извне осуществляется только через прокси Nginx. - Переменная
OLLAMA_ORIGINSустановлена в*, разрешая запросы с любых источников для работы через прокси. - Брандмауэр: Требуется открыть порты
80и443для внешнего доступа к веб-интерфейсу.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через стандартные утилиты systemctl и docker.
Управление сервисом Ollama: - Перезагрузка демона:
- Перезапуск сервиса: - Включение в автозагрузку:Управление контейнером Open WebUI: - Проверка статуса:
- Остановка и удаление (если требуется):Управление прокси-сервером Nginx: - Запуск в фоновом режиме:
Команда выполняется из директории/root/nginx. - Остановка: