Обзор развертывания 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.
Процесс установки приложения¶
Установка выполняется в несколько этапов, включающих подготовку системы, установку бэкенда и развертывание фронтенда.
- Установка базовых утилит:
-
Пакеты
curlиca-certificatesустанавливаются через менеджер пакетовapt. -
Установка Ollama:
- Скрипт установки загружается с официального репозитория и выполняется в системе.
- Создается системный пользователь
ollama. -
Загружается модель
deepseek-r1:70bчерез командуollama pull. -
Развертывание Open WebUI:
- Запускается контейнер Docker с образом
ghcr.io/open-webui/open-webui:cuda. - Контейнер использует режим сети
hostдля прямого доступа к портам. -
Для работы с GPU в конфигурации контейнера указан запрос на использование графического ускорителя.
-
Настройка прокси-сервера:
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlдля запуска Nginx с поддержкой Certbot. - Запускается контейнер Nginx через
docker compose up -d.
Базы данных¶
Приложение Open WebUI использует встроенное хранилище данных. Данные сохраняются в том-е Docker с именем open-webui, который монтируется в путь /app/backend/data внутри контейнера. Отдельная внешняя база данных не подключается.
Контейнеры Docker и их запуск¶
В системе развертываются два основных контейнера:
- Контейнер Open WebUI:
- Имя контейнера:
open-webui. - Образ:
ghcr.io/open-webui/open-webui:cuda. - Режим сети:
host. - Переменные окружения:
ENVустановлено в значениеdev.OLLAMA_BASE_URLSуказывает наhttp://127.0.0.1:11434.
- Монтирование тома:
open-webui:/app/backend/data. - Политика перезапуска:
always. -
Доступ к GPU через
device_requests. -
Контейнер Nginx с Certbot:
- Запускается через
docker composeв директории/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.
Прокси серверы¶
Прокси-сервер 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.