Обзор развертывания Open WebUI и Ollama на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы на сервере должны быть выполнены следующие условия: - Операционная система Ubuntu. - Наличие прав суперпользователя (root) для установки пакетов и управления службами. - Установленный и работающий демон Docker. - Доступ к интернету для загрузки образов контейнеров и моделей. - Открытые порты для внешнего доступа: - Порт 80 и 443 для веб-сервера Nginx и получения SSL-сертификатов. - Порт 8080 для доступа к интерфейсу Open WebUI. - Порт 11434 для локального доступа к API Ollama.
Структура файлов и каталогов¶
Конфигурационные файлы и данные приложения размещаются в следующих директориях: - /root/nginx/ — каталог для конфигурации прокси-сервера и скрипта docker compose. - /root/nginx/compose.yml — файл конфигурации для запуска контейнеров Nginx и Certbot. - /data/nginx/ — каталог для хранения данных Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для Certbot. - /data/nginx/user_conf.d/ — каталог с пользовательскими конфигурациями виртуальных хостов. - /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf — файл конфигурации конкретного хоста с настройками проксирования. - /etc/systemd/system/ollama.service — файл конфигурации системной службы Ollama. - /etc/systemd/system/ollama.service.bak — резервная копия исходного файла службы Ollama.
Процесс установки приложения¶
Установка и настройка компонентов выполняются в следующей последовательности:
- Установка Ollama:
- Скачивается и запускается скрипт установки от разработчика через команду
curl -fsSL https://ollama.com/install.sh | sh. - Создается системный пользователь
ollama. -
Загружается модель
llama3.3с помощью командыollama pull llama3.3. -
Настройка службы Ollama:
- Файл службы
/etc/systemd/system/ollama.serviceмодифицируется для добавления переменных окружения:OLLAMA_HOST=0.0.0.0для доступа извне.OLLAMA_ORIGINS=*для разрешения всех источников.LLAMA_FLASH_ATTENTION=1для включения оптимизации внимания.
-
Демон
systemdперезагружается, а службаollamaперезапускается и включается в автозагрузку. -
Развертывание Open WebUI:
- Запускается контейнер Docker с образом
ghcr.io/open-webui/open-webui:cuda. - Контейнер привязывается к порту
8080и получает доступ ко всем GPU (--gpus all). - Данные приложения сохраняются в том
open-webuiпо пути/app/backend/data. -
Переменная окружения
OLLAMA_BASE_URLSуказывает на адресhttp://host.docker.internal:11434. -
Настройка прокси-сервера:
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlв директории/root/nginx. - В конфигурационный файл хоста добавляется правило проксирования запросов на порт
8080. - Запускаются контейнеры Nginx и Certbot через
docker compose up -d.
Контейнеры Docker и их запуск¶
В системе используются следующие контейнеры:
Контейнер 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 контейнера. - Используется том open-webui для хранения данных. - Установлен флаг --restart always для автоматического перезапуска. - Переменная ENV установлена в значение dev. Контейнеры Nginx и Certbot: Управляются через файл docker compose в директории /root/nginx. Конфигурация включает: - Образ jonasal/nginx-certbot:latest. - Режим сети host. - Том nginx_secrets для хранения сертификатов Let's Encrypt. - Монтирование каталога /data/nginx/user_conf.d в /etc/nginx/user_conf.d внутри контейнера. - Переменная CERTBOT_EMAIL установлена на hkadm@hostkey.com.
Запуск выполняется командой:
из директории/root/nginx. Прокси серверы¶
Для обработки входящего трафика и управления SSL-сертификатами используется связка Nginx и Certbot в контейнере.
- Домен и сертификаты: Сертификаты запрашиваются и хранятся в томе
nginx_secrets, который монтируется в/etc/letsencrypt. - Конфигурация хоста: Настройка проксирования осуществляется в файле
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf. - Правила маршрутизации:
- В блоке
location /удаляется существующая строкаproxy_pass. - Добавляется новая строка
proxy_pass http://127.0.0.1:8080;, перенаправляющая трафик на локальный контейнер Open WebUI.
Базы данных¶
Приложение Open WebUI использует встроенное хранилище данных, которое сохраняется в Docker-томе open-webui. Данные физически размещаются в директории, управляемой Docker, и монтируются в контейнер по пути /app/backend/data. Отдельная внешняя база данных не подключается.
Права доступа и безопасность¶
- Пользователи: Для работы Ollama создан системный пользователь
ollama. - Файлы конфигурации:
- Каталог
/root/nginxимеет права0755и владельцаroot:root. - Файл
/root/nginx/compose.ymlимеет права0644и владельцаroot:root. - Службы: Служба
ollamaработает от имени пользователяollamaи настроена на прослушивание всех интерфейсов (0.0.0.0). - Брандмауэр: Требуется открыть порты
80,443,8080и11434для внешнего доступа.
Запуск, остановка и обновление¶
Управление службами и контейнерами осуществляется следующими командами:
Управление службой Ollama: - Перезагрузка демона systemd:
- Перезапуск и включение в автозагрузку:Управление контейнером Open WebUI: - Проверка статуса:
- Остановка и удаление (если требуется):Управление прокси-сервером (Nginx/Certbot): - Запуск контейнеров:
- Остановка контейнеров: - Обновление конфигурации и перезапуск: