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