Если после запуска Open WebUI и создания учётной записи администратора список моделей пуст, отправленное сообщение пока останется без ответа. Для нашего чата Open WebUI работает как веб-оболочка: чтобы вычислить ответ, ему нужен отдельный сервер, который запустит языковую модель.
В этом уроке мы установим локальный сервер моделей Ollama, скачаем небольшую проверочную модель qwen2.5:0.5b и свяжем её с нашим контейнером Open WebUI. Когда вся цепочка заработает, запрос пройдёт такой маршрут: браузер отправляет сообщение в контейнер Open WebUI, тот передаёт его серверу Ollama, а Ollama запускает модель qwen2.5:0.5b и возвращает ответ обратно в интерфейс.
Сначала проверим ответ модели прямо в терминале через саму Ollama, а затем повторим тот же вопрос в окне чата Open WebUI, чтобы убедиться в исправности каждого звена.
Выберем ветку для своей системы
Нужны уже работающий Open WebUI в Docker и учётная запись администратора из урока про первый вход и базовые настройки. В Windows подойдёт выбранная раньше установка через docker run или Docker Compose: переделывать работающий контейнер не потребуется. В macOS и Ubuntu Linux продолжаем установку через Compose из соответствующей ветки курса. Здесь разбираем подключение к Docker-установке Open WebUI; самостоятельное приложение Open WebUI Desktop использует другой способ запуска. Интернет понадобится для загрузки Ollama и файлов модели.
Способ установки Ollama, адрес подключения и даже окно терминала зависят от операционной системы. Выберите свою систему в таблице ниже. Проходить нужно только свою ветку, а затем перейдите к общему шагу настройки адреса в веб-интерфейсе.
| Система | Где работает Ollama | В каком окне выполняем команды для Ollama | В каком окне управляем Docker |
|---|---|---|---|
| Windows | Обычное приложение Windows в фоновом режиме | В окне PowerShell | В терминале Ubuntu (WSL2), через выбранный ранее docker run или Compose |
| macOS | Обычное приложение macOS | В программе «Терминал» macOS | В программе «Терминал» macOS |
| Ubuntu Linux 24.04 | Отдельный сервис в существующем проекте Docker Compose (на процессоре, CPU) | В обычном терминале Ubuntu из папки ~/projects/open-webui | В обычном терминале Ubuntu из папки ~/projects/open-webui |
В Windows команды управления контейнером Open WebUI мы вводили в Ubuntu WSL2, а приложение Ollama для Windows устанавливается в саму Windows. Поэтому команды ollama и диагностику её локального сервера мы будем выполнять в обычном окне PowerShell, а не внутри терминала Ubuntu. Устанавливать вторую копию Ollama внутрь WSL2 не нужно.
На компьютерах Mac мы используем нативное приложение Ollama для macOS. Согласно ответам на частые вопросы по Ollama, запуск Ollama внутри контейнера под Docker Desktop на macOS не позволяет задействовать аппаратное ускорение графического процессора Apple Silicon, тогда как обычное приложение macOS умеет работать с чипами серии M (на процессорах Intel расчёты пойдут на CPU).
В Ubuntu Linux мы пойдём другим путём: добавим официальный Docker-образ Ollama вторым сервисом прямо в наш существующий файл compose.yaml. Это базовая конфигурация для работы на центральном процессоре (CPU). Настраивать драйверы видеокарты и менять сетевые службы хоста для неё не требуется.
Для пользователей Ubuntu Linux сохраняется правило про sudo. Если в прошлых уроках вы вводили команды Docker с префиксом sudo, здесь также добавляйте sudo перед каждой командой, начинающейся с docker (например, sudo docker compose ps).
Запустим Ollama и загрузим модель
Прежде чем настраивать веб-интерфейс, добьёмся ответа от самой модели через командную строку. Так мы заранее проверим, что сервер Ollama запущен, а модель полностью скачалась и способна генерировать текст. Переходите сразу к подразделу для вашей операционной системы.
Windows и macOS: установим приложение Ollama
Скачаем и установим официальное приложение для своей системы:
- Для Windows загрузим установщик со страницы Ollama для Windows и запустим его. После установки программа работает в фоновом режиме (значок появляется в области уведомлений на панели задач).
- Для Mac загрузим архив или образ со страницы Ollama для macOS, перенесём приложение в папку «Программы» (
Applications) и запустим его.
После установки и первого запуска приложения закроем и заново откроем окно PowerShell (в Windows) или «Терминал» (в macOS). Это нужно, чтобы командная оболочка подхватила обновлённый путь к исполняемому файлу ollama.
Проверим, что утилита командной строки доступна и откликается:
Если в ответ появилась строка с номером версии, загрузим небольшую модель qwen2.5:0.5b из официального каталога с помощью команды ollama pull:
Тег qwen2.5:0.5b выбрали для проверки связи: файл модели в реестре занимает около 398 МБ, а семейство Qwen 2.5 поддерживает русский язык. Указанный объём в 398 МБ отражает только размер скачиваемого артефакта на диске, а не минимальные требования к оперативной памяти или видеопамяти. Эта небольшая модель нужна для упражнения. Высокую скорость и качество ответов мы здесь не обещаем и не рекомендуем её для рабочих задач.
Когда загрузка завершится, проверим список локальных моделей командой ollama list:
В выводе должна присутствовать строка с точным именем qwen2.5:0.5b. Запомним это написание: именно такой тег мы будем указывать на всех следующих шагах.
Теперь отправим модели короткий проверочный запрос прямо из терминала через команду ollama run:
Дождёмся появления ответа в терминале. Точная формулировка не важна: главное, чтобы модель вернула законченное осмысленное предложение на русском языке и управление вернулось в командную строку. Как только ответ получен, можно переходить к следующему разделу «Укажем адрес Ollama в Open WebUI».
Ubuntu Linux: добавим Ollama в существующий Compose
В Ubuntu Linux мы не устанавливаем Ollama прямо в систему, а добавляем её в существующий проект Docker Compose. Перейдём в папку нашего проекта:
Откроем файл compose.yaml в текстовом редакторе. Добавим описание второго сервиса ollama в существующий блок services: и новый том ollama: в нижний блок volumes:.
Все прежние настройки сервиса open-webui, имя проекта, порты и привязку к файлу секретного ключа ./open-webui.env мы оставляем без изменений. Если ранее вы меняли порт интерфейса (например, на 3001) или фиксировали конкретную версию образа open-webui, сохраните свои значения. Сам файл open-webui.env трогать или генерировать заново не нужно.
Полный файл compose.yaml после добавления сервиса будет выглядеть так:
Разберём настройки сервиса ollama:
image: ollama/ollamaуказывает официальный образ из документации Ollama по Docker. Без указания конкретного тега Docker загрузит текущий образ по умолчанию (latest), который разработчики со временем обновляют. Конфигурация без дополнительных блоков устройств запускает модели на центральном процессоре (CPU).volumes: - ollama:/root/.ollamaвместе с нижней строчкойollama:в секцииvolumesсоздаёт отдельный именованный том для хранения скачанных языковых моделей. Том сохраняет модели при перезапуске или обновлении контейнера, поэтому качать их заново не придётся.- Отсутствие секции
ports:у сервисаollamaсделано намеренно. Как объясняется в руководстве по сетям Docker Compose, сервисы одного файлаcompose.yamlпо умолчанию попадают в общую сеть проекта и могут обращаться друг к другу напрямую по имени сервиса. Публиковать порт11434на хост-машину не требуется. Без секцииportsпорт не пробрасывается на интерфейсы хоста. Это не изолирует контейнер от самого Docker-хоста и соседних контейнеров в той же сети проекта.
Проверим, что после редактирования структура YAML-файла не нарушена и в нём не появилось дублирующихся секций services или volumes:
Если команда завершилась без сообщений об ошибках, запустим новый сервис ollama в фоновом режиме (напоминаем про префикс sudo, если вы используете его для работы с Docker):
Имя сервиса ollama в конце команды указывает, какой контейнер запустить. Работающий open-webui эта команда не обновляет. При первом запуске загрузка образа ollama/ollama займёт некоторое время.
Проверим состояние контейнеров проекта:
В списке должны отображаться оба сервиса: open-webui и ollama в состоянии Up (или running).
Теперь проверим версию сервера Ollama, выполнив команду внутри запущенного контейнера через docker compose exec:
Если сразу после старта контейнера команда сообщает, что внутренний сервер (демон) Ollama ещё не готов или не отвечает, подождите немного, проверьте состояние через docker compose ps и посмотрите журнал запуска командой docker compose logs --tail=80 ollama, а затем повторите проверку версии.
Когда сервер откликнулся, скачаем проверочную модель qwen2.5:0.5b внутрь тома контейнера:
Как и в нативной ветке, тег qwen2.5:0.5b (около 398 МБ в реестре) выбран для проверки соединения. Семейство поддерживает русский язык, но размер файла не показывает потребление оперативной памяти, а выбор модели для упражнения не означает рекомендации для рабочих задач.
Убедимся, что модель появилась в локальном списке контейнера:
В выводе должна быть указана модель qwen2.5:0.5b. Запустим тестовую генерацию ответа прямо в контейнере:
При работе на процессоре (CPU) генерация даже короткого ответа может занять заметное время. Дождёмся, пока модель допишет осмысленное предложение до конца и вернёт управление терминалу. Точное совпадение текста нам не важно.
Укажем адрес Ollama в Open WebUI
Если модель ответила в терминале, сервер Ollama готов к следующей проверке. Теперь объясним контейнеру Open WebUI, по какому сетевому адресу искать этот сервер.
Адрес localhost:11434 или 127.0.0.1:11434 здесь не подходит: запрос к Ollama отправляет процесс Open WebUI внутри собственного Docker-контейнера. Для любого контейнера адрес localhost (127.0.0.1) указывает на него самого, а внутри контейнера open-webui никакой Ollama нет.
Выбор правильного адреса зависит от того, где именно запущена Ollama в вашей ветке:
| Ваша ветка | Какой базовый URL вводить в Open WebUI | Почему используется этот адрес |
|---|---|---|
| Windows и macOS (приложение Ollama + Docker Desktop) | http://host.docker.internal:11434 | Специальное имя host.docker.internal в Docker Desktop позволяет контейнеру обратиться к сервису, работающему на основной системе (хосте). |
Ubuntu Linux (сервис ollama в том же Compose) | http://ollama:11434 | Внутри общей сети Docker Compose контейнеры находят друг друга по имени сервиса (ollama) и внутреннему порту (11434) через встроенный DNS. |
В Linux есть особенность. В нашем файле compose.yaml у сервиса open-webui с прошлого урока записана строка extra_hosts: - host.docker.internal:host-gateway. Может возникнуть вопрос: почему бы тогда и в Linux не установить Ollama прямо в систему и не обратиться к ней через host.docker.internal? Дело в том, что нативная Ollama по умолчанию слушает только локальный интерфейс 127.0.0.1:11434. Запись host-gateway в Linux перенаправляет запросы контейнера на сетевой мост Docker хост-машины, но сервис, привязанный строго к 127.0.0.1, с этого моста всё равно недоступен. Чтобы не менять сетевые настройки хоста и не расширять привязку портов в системе, мы и запустили Ollama соседним контейнером в общей сети Compose.
Перейдём к настройке в браузере:
- Откроем Open WebUI (по умолчанию
http://127.0.0.1:3000) и войдём под учётной записью администратора. - Откроем меню настроек администратора. Согласно официальному руководству по подключению Ollama, путь в английском интерфейсе выглядит как Settings → Admin → Connections (в русской локализации разделы могут называться «Настройки» → «Панель администратора» или «Администрирование» → «Подключения»; точные подписи и расположение элементов зависят от версии Open WebUI).
- Найдём блок управления подключениями Ollama API (Manage Ollama API Connections). Адрес вводим в секции Ollama; расположенная рядом секция OpenAI API предназначена для другого типа подключения.
- В поле адреса введём базовый URL из таблицы выше для своей ветки:
http://host.docker.internal:11434— для Windows и macOS;http://ollama:11434— для Ubuntu Linux.
- Убедимся, что указан именно базовый адрес сервера и порт, без добавочных путей вроде
/api/tags,/apiили/v1. Поле ключа API (API Key) оставляем пустым, так как локальный сервер Ollama не требует аутентификации. - Сохраним изменения кнопкой сохранения в интерфейсе настроек.
Мы настраиваем адрес прямо через панель администратора и не добавляем переменную OLLAMA_BASE_URL в файл open-webui.env, чтобы не задавать адрес одновременно в двух местах. Как указано в справочнике по переменным окружения Open WebUI, эти параметры также могут задаваться через окружение (причём список OLLAMA_BASE_URLS имеет приоритет над одиночной OLLAMA_BASE_URL), но в нашей установке проще и нагляднее управлять адресом из интерфейса.
Получим ответ в новом чате
Когда адрес сохранён, проверим, проходит ли сообщение через Open WebUI к модели и возвращается ли ответ. Имя модели в выпадающем списке показывает, что она доступна для выбора. Один этот список, который может быть сохранён в кэше, ещё не подтверждает, что сервер сейчас отвечает. Полная проверка завершается только тогда, когда модель сгенерирует ответ в чате.
Выполним проверку на своей системе:
- Перейдём на главный экран Open WebUI и откроем новый чат (если список моделей не обновился сразу, можно обновить страницу в браузере).
- В списке выбора модели найдём и выберем точно тот тег, который мы скачивали в терминале:
qwen2.5:0.5b. - Отправим в чат тот же самый короткий вопрос:
- Дождёмся завершения генерации.
Если модель выбрана, индикатор загрузки сменился текстом, и в окне чата появилось законченное осмысленное предложение по теме вопроса, значит, подключение работает. Текст ответа в веб-интерфейсе не обязан дословно совпадать с тем, что модель выдала ранее в терминале: языковые модели генерируют текст заново при каждом обращении. Также не стоит оценивать по этому короткому тесту общие интеллектуальные способности модели.
Проверим, где остановилось подключение
Если на каком-то шаге команда вернула ошибку, список моделей в интерфейсе остался пустым или ответ в чате не появляется, не спешите переустанавливать Docker или удалять тома. Найдём точное место обрыва, проверяя цепочку от сервера Ollama к контейнеру Open WebUI.
1. Терминал пишет, что команда ollama не найдена
- В Windows: убедитесь, что установщик Ollama для Windows завершил работу, а команды вводятся в обычном окне PowerShell, а не внутри терминала Ubuntu (WSL2). Если окно PowerShell было открыто ещё до установки программы, закройте его и откройте новое, чтобы обновилась переменная
PATH. - На macOS: проверьте, что приложение Ollama перенесено в папку
Applicationsи хотя бы один раз запущено, после чего перезапустите программу «Терминал». - В Ubuntu Linux: в нашей ветке программа не установлена в саму систему. Все команды
ollamaнужно запускать внутри контейнера через префиксdocker compose exec ollama ...(и сsudo, если вы используете его для Docker), находясь в папке~/projects/open-webui.
2. Команда ollama list или ollama run выдаёт ошибку соединения с сервером
Это означает, что клиент командной строки не может достучаться до фонового процесса самой Ollama.
- В Windows и macOS: проверьте, запущено ли приложение Ollama (в Windows посмотрите на значок в трее, на Mac можно открыть его через строку меню или Spotlight), и запустите его при необходимости. Дополнительно можно проверить, откликается ли локальный HTTP API на стандартном адресе
127.0.0.1:11434, обратившись к точке/api/tags. В PowerShell на Windows выполните:В Терминале macOS выполните:Исправный сервер вернёт JSON со спискомmodels. В PowerShell командаInvoke-RestMethodпреобразует этот ответ в объект, поэтому в окне он будет отображаться иначе, чем при вызовеcurl. - В Ubuntu Linux: адрес
127.0.0.1:11434из браузера или терминала самой Ubuntu не проверяет наш контейнер Ollama: мы не публиковали его порт на хост-машину. Вместо этого перейдите в~/projects/open-webui, проверьте статус контейнера и посмотрите его журнал:Если сервисollamaостановлен или отсутствует в списке, сначала проверьте синтаксис файла командойdocker compose config --quiet, а затем запустите сервис черезdocker compose up -d ollama.
3. Сервер отвечает, но массив models пуст
Если команда ollama list (или запрос к /api/tags) выполняется без ошибок, но не показывает ни одной модели (в JSON возвращается пустой список "models": []), значит, сервер работает, но в этом конкретном экземпляре Ollama ещё нет скачанных моделей. Выполните загрузку ollama pull qwen2.5:0.5b (или docker compose exec ollama ollama pull qwen2.5:0.5b на Linux) и дождитесь завершения загрузки. Помните, что наличие модели на хосте само по себе ещё не доказывает, что контейнер Open WebUI видит этот сервер.
4. В терминале модель отвечает, но в Open WebUI список моделей пуст или выходит ошибка подключения
Если в командной строке ollama list и ollama run работают штатно, а веб-интерфейс не видит сервер, следующим проверим участок между контейнером open-webui и сервером Ollama:
- Откройте настройки администратора (Settings → Admin → Connections) и проверьте введённый адрес:
- для Windows и macOS должно быть
http://host.docker.internal:11434; - для Ubuntu Linux должно быть
http://ollama:11434.
- для Windows и macOS должно быть
- Убедитесь, что в конце адреса не приписаны служебные пути
/api/tags,/apiили/v1, адрес вписан именно в секцию Ollama API (а не OpenAI), и вы нажали кнопку сохранения. Если ранее вы самостоятельно добавляли в окружение переменныеOLLAMA_BASE_URLилиOLLAMA_BASE_URLS, проверьте их значения: по документации Open WebUIOLLAMA_BASE_URLSимеет приоритет над одиночной переменной. - Для Ubuntu Linux проверьте, что оба контейнера запущены в одном проекте
open-webuiиз папки~/projects/open-webui(docker compose ps). Они должны находиться в общей сети Compose; сама командаpsпоказывает состояние контейнеров, а не проверяет их сетевую связь. - Посмотрим журнал Open WebUI, чтобы увидеть текст сетевой ошибки. Для установки через Compose выполним следующие команды в терминале своей системы; в Windows это Ubuntu WSL2:
Если в Windows выбрана установка через
docker run, в том же терминале Ubuntu WSL2 посмотрим журнал существующего контейнера по имени из предыдущего урока:Команда docker logs читает журнал и не меняет способ установки. Для неё не нужна папка проекта Compose. - В Windows и macOS доступность адреса
host.docker.internal:11434зависит от работы сетевой подсистемы Docker Desktop и правил локального брандмауэра. Если в логахopen-webuiвидна ошибка соединения или тайм-аут при обращении кhost.docker.internal:11434, проверьте, что приложение Ollama и Docker Desktop запущены на одной системе и соединение не блокируется защитным ПО.
5. Модель qwen2.5:0.5b видна в списке чата, но ответ не генерируется или обрывается
Список моделей получают через GET /api/tags, но отображённое имя может остаться в кэше. Если ответа нет, отдельно проверим запуск модели:
- В Windows повторите тест в PowerShell, на macOS в «Терминале»:
ollama run qwen2.5:0.5b "Ответь одним коротким предложением: для чего нужен список дел?". В Ubuntu Linux выполняйте его в терминале Ubuntu из папки~/projects/open-webuiчерез контейнер:docker compose exec ollama ollama run qwen2.5:0.5b "Ответь одним коротким предложением: для чего нужен список дел?". Если вы используете Docker сsudo, добавьте этот префикс и здесь. - Если на компьютере мало свободной оперативной памяти или расчёты идут на загруженном процессоре (особенно в контейнерной CPU-ветке на Linux), загрузка весов модели в память и генерация первых слов могут занимать продолжительное время.
- Для установки через Compose посмотрим
docker compose logs --tail=80 open-webui, а в Ubuntu Linux такжеdocker compose logs --tail=80 ollama. В Windows с установкой черезdocker runиспользуемdocker logs --tail=80 open-webuiв Ubuntu WSL2. Журналы помогут проверить, не завершился ли процесс модели из-за нехватки памяти.
Чего не нужно делать при диагностике
В разделе устранения ошибок подключения Open WebUI и на форумах можно встретить советы, рассчитанные на другие сетевые схемы. В нашей локальной установке не применяйте следующие действия как универсальный способ починки:
- Не меняйте привязку Ollama на
0.0.0.0(OLLAMA_HOST=0.0.0.0) и не пробрасывайте порт11434наружу. Поскольку локальный API Ollama работает без пароля и ключей, открытие порта на всех сетевых интерфейсах может сделать ваш сервер моделей доступным для других устройств в сети в обход страницы входа Open WebUI. - Не отключайте системный брандмауэр (файрвол) и не задавайте переменную
OLLAMA_ORIGINS=*. - Не удаляйте том
open-webui_open-webuiи не используйте флаги сброса базы данных ради исправления опечатки в URL. Опечатку в адресе исправляем и заново сохраняем в панели администратора (Settings → Admin → Connections), сохранив все свои чаты и учётную запись.
Урок завершён, когда выбранная в чате модель qwen2.5:0.5b возвращает законченный ответ на ваш вопрос.

