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