Цель этой инструкции — установить Ollama как локальный backend для моделей и Open WebUI как веб-интерфейс в стиле ChatGPT. Конфигурация рассчитана на безопасный локальный режим: сервисы не должны быть доступны из сети, а Ollama должен слушать только 127.0.0.1.
Docker официально поддерживает Ubuntu Resolute 26.04 LTS, поэтому для Ubuntu 26.04 лучше использовать официальный Docker APT-репозиторий, а не пакет docker.io из стандартных репозиториев Ubuntu.
1. Общая схема
После установки у вас будет такая схема:
Браузер
↓
http://127.0.0.1:8080
↓
Open WebUI в Docker
↓
http://127.0.0.1:11434
↓
Ollama systemd service
↓
локальные модели
Важный принцип: не открывайте Ollama на 0.0.0.0:11434, если не понимаете последствия. Для локальной рабочей станции достаточно 127.0.0.1:11434.
2. Установка Docker на Ubuntu 26.04
Сначала удалите возможные конфликтующие пакеты:
sudo apt remove -y docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
Добавьте официальный репозиторий Docker:
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Установите Docker Engine:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверьте:
sudo systemctl status docker
sudo docker run hello-world
Эти команды соответствуют официальному способу установки Docker Engine через APT-репозиторий.
По желанию можно разрешить запуск docker без sudo:
sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker "$USER"
newgrp docker
Но учитывайте: группа docker даёт пользователю фактически root-level доступ к системе, о чём прямо предупреждает документация Docker.
Проверка без sudo:
docker run hello-world
3. Важное замечание про Docker и firewall
Если вы используете ufw, firewalld или вручную написанные правила, помните: Docker может менять сетевые правила и проброс портов. В документации Docker отдельно указано, что опубликованные Docker-порты могут обходить правила ufw/firewalld, а при использовании nftables нужно внимательно относиться к цепочкам Docker/iptables-nft.
В этой статье Open WebUI будет запускаться через --network host, поэтому Docker-публикация портов через -p не используется.
4. Установка Ollama
Установите Ollama официальным скриптом:
curl -fsSL https://ollama.com/install.sh | sh
Официальная Linux-инструкция Ollama использует именно эту команду. ([Ollama][3])
Запустите и включите сервис:
sudo systemctl enable --now ollama
sudo systemctl status ollama
Проверьте API:
curl http://127.0.0.1:11434/api/version
Если всё нормально, вы получите JSON с версией Ollama.
5. Принудительно оставить Ollama только на localhost
По умолчанию Ollama обычно слушает локальный интерфейс, но для аккуратной конфигурации лучше зафиксировать это явно.
Откройте override для systemd-сервиса:
sudo systemctl edit ollama.service
Добавьте:
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Примените:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Документация Ollama рекомендует задавать переменные окружения для Linux именно через systemctl edit ollama.service, затем выполнять daemon-reload и перезапуск сервиса.
Проверьте, что Ollama слушает только localhost:
ss -lntp | grep 11434
Ожидаемый результат:
127.0.0.1:11434
Если видите 0.0.0.0:11434, значит Ollama доступен на всех интерфейсах, и это нужно исправить.
6. Где Ollama хранит модели
Посмотреть текущий сервис:
systemctl cat ollama
Проверить переменные окружения процесса:
pid=$(pidof ollama)
sudo tr '\0' '\n' < /proc/$pid/environ | grep OLLAMA
Если OLLAMA_MODELS не задана, модели обычно лежат в домашнем каталоге пользователя, от которого запущен сервис. Для системной установки это часто пользователь ollama.
Проверьте его домашний каталог:
getent passwd ollama
Частый путь:
/usr/share/ollama/.ollama/models
Проверить размер:
sudo du -sh /usr/share/ollama/.ollama/models
7. Как перенести модели на другой диск
Это полезно, если корневой раздел / небольшой, а модели могут занимать десятки или сотни гигабайт.
Допустим, отдельный диск смонтирован в /mnt/ai.
Создайте каталог:
sudo mkdir -p /mnt/ai/ollama
sudo chown -R ollama:ollama /mnt/ai/ollama
Откройте override:
sudo systemctl edit ollama.service
Добавьте или расширьте секцию:
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_MODELS=/mnt/ai/ollama"
Примените:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Проверьте:
pid=$(pidof ollama)
sudo tr '\0' '\n' < /proc/$pid/environ | grep OLLAMA
Должно быть:
OLLAMA_HOST=127.0.0.1:11434
OLLAMA_MODELS=/mnt/ai/ollama
Если модели уже были скачаны раньше, можно перенести старое хранилище:
sudo systemctl stop ollama
sudo rsync -aH --info=progress2 \
/usr/share/ollama/.ollama/models/ \
/mnt/ai/ollama/
sudo chown -R ollama:ollama /mnt/ai/ollama
sudo systemctl start ollama
После проверки старый каталог можно удалить, но лучше сначала убедиться, что ollama list показывает модели.
8. Установка Open WebUI
Open WebUI удобнее запускать в Docker. Важная часть команды — volume:
-v open-webui:/app/backend/data
В документации Open WebUI указано, что этот volume нужен для сохранения базы данных и пользовательских данных.
Запустите Open WebUI так:
docker run -d \
--name open-webui \
--restart unless-stopped \
--network host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
Откройте:
http://127.0.0.1:8080
Режим --network host здесь используется осознанно: он позволяет контейнеру Open WebUI обращаться к Ollama на 127.0.0.1:11434 хостовой системы. В troubleshooting-разделе Open WebUI отдельно описан случай, когда контейнер не видит Ollama на 127.0.0.1:11434, и предлагается использовать --network=host; при этом адрес WebUI становится http://localhost:8080.
Проверить контейнер:
docker ps
docker logs --tail=100 open-webui
9. Важный нюанс про --network host и localhost
Команда выше хорошо решает проблему, когда Open WebUI не видит локальный Ollama. Но у --network host есть нюанс: контейнер использует сетевой стек хоста. Поэтому обязательно проверьте, на каком адресе слушает Open WebUI:
ss -lntp | grep 8080
Хороший вариант:
127.0.0.1:8080
Плохой вариант для локальной установки:
0.0.0.0:8080
Если видите 0.0.0.0:8080, значит веб-интерфейс может быть доступен из локальной сети. В таком случае закройте доступ firewall-правилом. Для ufw:
sudo ufw deny 8080/tcp
sudo ufw allow in on lo to any port 8080 proto tcp
Проверка с этой же машины:
curl http://127.0.0.1:8080
Проверка, что снаружи порт не торчит:
ss -lntp | grep -E '11434|8080'
Для максимально строгой схемы можно запускать Open WebUI не через --network host, а через обычный Docker bridge с пробросом только на 127.0.0.1. Но тогда контейнер не сможет обратиться к Ollama на 127.0.0.1:11434, пока Ollama слушает только localhost хоста. Поэтому практичный локальный вариант — оставить --network host и проверить/закрыть порт 8080.
10. Проверка связки Ollama + Open WebUI
Проверьте, что Ollama видит модели:
ollama list
Проверьте API Ollama:
curl http://127.0.0.1:11434/api/tags
Проверьте WebUI:
curl -I http://127.0.0.1:8080
Если модель скачана, но не появилась в Open WebUI:
docker logs --tail=200 open-webui
curl http://127.0.0.1:11434/api/tags
Если в api/tags модель есть, а в WebUI её нет, чаще всего проблема в OLLAMA_BASE_URL или в том, что WebUI подключён к другому Ollama.
11. Установка моделей
Скачать модель:
ollama pull qwen3:8b
Запустить интерактивно:
ollama run qwen3:8b
Список моделей:
ollama list
Удалить модель:
ollama rm qwen3:8b
Удалить все модели:
ollama list | awk 'NR>1 {print $1}' | xargs -r ollama rm
Рекомендации по моделям и видеокартам
Главное ограничение — VRAM. Размер модели в Ollama — это не вся память, которая потребуется во время работы. Нужен запас под контекст, KV-cache, графическую оболочку, драйвер и саму систему. Поэтому модель размером 8–9 GB может быть тесной для карты с 8 GB VRAM.
Ориентируйтесь так:
| VRAM | Комфортный класс моделей | Что ставить первым |
|---|---|---|
| 8 GB | 3B–8B, лучше Q4 | qwen3:4b, qwen3:8b, llama3.1:8b, qwen2.5-coder:7b |
| 10 GB | 7B–8B уверенно, 14B с компромиссами | qwen3:8b, qwen3:14b |
| 12 GB | 8B–14B хорошо, 20B частично с offload | qwen3:14b, gemma3:12b, gpt-oss:20b |
| 16 GB | 14B–20B хорошо | gpt-oss:20b, qwen3:14b, qwen3:30b с компромиссами |
| 24 GB | 20B–32B хорошо | qwen3:30b, qwen3:32b, qwen2.5-coder:32b |
| 48–80+ GB | 70B+ / 120B | gpt-oss:120b, крупные Qwen/Llama |
У Ollama для qwen3 указаны, например: qwen3:4b около 2.5 GB, qwen3:8b около 5.2 GB, qwen3:14b около 9.3 GB, qwen3:30b около 19 GB и qwen3:32b около 20 GB. ([Ollama][6]) Для gpt-oss указано: gpt-oss:20b около 14 GB, gpt-oss:120b около 65 GB, обе с контекстом 128K.
RTX 3060
RTX 3060 часто встречается в варианте 12 GB, хотя существуют и варианты на 8 GB. В таблице NVIDIA для RTX 30 указано, что RTX 3060 имеет конфигурацию 12 GB / 8 GB, RTX 3070 — 8 GB, RTX 3080 — 12 GB / 10 GB.
Для RTX 3060 12 GB:
ollama pull qwen3:8b
ollama pull qwen3:14b
ollama pull qwen2.5-coder:7b
Можно попробовать:
ollama pull gpt-oss:20b
Но gpt-oss:20b может частично уходить в RAM/CPU, особенно при большом контексте.
RTX 3070 8 GB
Для 8 GB лучше не начинать с 14B. Оптимальный выбор:
ollama pull qwen3:4b
ollama pull qwen3:8b
ollama pull llama3.1:8b
ollama pull qwen2.5-coder:7b
qwen3:14b будет тяжёлым вариантом для 8 GB.
RTX 3080 10/12 GB
Для RTX 3080 10 GB:
ollama pull qwen3:8b
ollama pull qwen2.5-coder:7b
Для RTX 3080 12 GB можно добавить:
ollama pull qwen3:14b
ollama pull gemma3:12b
gpt-oss:20b можно попробовать, но это уже пограничный вариант.
RTX 4060 8 GB
RTX 4060 имеет 8 GB GDDR6, а RTX 4060 Ti бывает 8 GB или 16 GB.
Для RTX 4060 8 GB:
ollama pull qwen3:4b
ollama pull qwen3:8b
ollama pull qwen2.5-coder:7b
Если нужен кодинг, начинайте с:
ollama pull qwen2.5-coder:7b
RTX 4070 12 GB
Для RTX 4070 12 GB хороший баланс:
ollama pull qwen3:14b
ollama pull gemma3:12b
ollama pull qwen2.5-coder:14b
Для локального “GPT-подобного” reasoning-чата можно попробовать:
ollama pull gpt-oss:20b
Но для быстрой работы и длинного контекста всё равно лучше иметь запас VRAM.
RTX 5060 8 GB
RTX 5060 у NVIDIA указана с 8 GB GDDR7. RTX 5060 Ti бывает в вариантах 16 GB / 8 GB GDDR7.
Для RTX 5060 8 GB:
ollama pull qwen3:4b
ollama pull qwen3:8b
ollama pull qwen2.5-coder:7b
Не стоит начинать с gpt-oss:20b или 30B/32B моделей: работать может, но скорость и отзывчивость будут плохими.
RTX 5060 Ti 16 GB
Для 16 GB уже можно использовать более серьёзные модели:
ollama pull qwen3:14b
ollama pull gpt-oss:20b
ollama pull qwen2.5-coder:14b
Можно попробовать:
ollama pull qwen3:30b
Но qwen3:30b весит около 19 GB, поэтому на 16 GB VRAM он, скорее всего, будет частично выгружаться в RAM.
Практический набор моделей
Минимальный набор для большинства пользователей
ollama pull qwen3:8b
ollama pull qwen2.5-coder:7b
qwen3:8b — хороший универсальный чат.
qwen2.5-coder:7b — хороший вариант для программирования.
Для видеокарт 12 GB
ollama pull qwen3:14b
ollama pull gemma3:12b
ollama pull qwen2.5-coder:14b
Для видеокарт 16 GB
ollama pull gpt-oss:20b
ollama pull qwen3:14b
ollama pull qwen2.5-coder:14b
Для RTX 3090 / 4090 / 5090 и карт с 24 GB+
ollama pull qwen3:30b
ollama pull qwen3:32b
ollama pull qwen2.5-coder:32b
ollama pull gpt-oss:20b
Для серверных GPU 80 GB+
ollama pull gpt-oss:120b
gpt-oss:120b в Ollama занимает около 65 GB, поэтому для обычных 8–24 GB видеокарт это не лучший вариант.
Проверка использования GPU
Во время генерации в другом терминале выполните:
nvidia-smi
Также можно посмотреть, где работает модель:
ollama ps
Если модель частично или полностью ушла в CPU/RAM, генерация будет заметно медленнее.
Обновление
Обновить Ollama:
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl restart ollama
Обновить Open WebUI:
docker pull ghcr.io/open-webui/open-webui:main
docker rm -f open-webui
docker run -d \
--name open-webui \
--restart unless-stopped \
--network host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
Данные Open WebUI сохранятся в volume open-webui.
Краткий итог
Для локальной установки на Ubuntu 26.04 оптимальная схема такая:
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama
sudo systemctl edit ollama.service
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_MODELS=/mnt/ai/ollama"
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama pull qwen3:8b
ollama pull qwen2.5-coder:7b
docker run -d \
--name open-webui \
--restart unless-stopped \
--network host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
После этого откройте:
http://127.0.0.1:8080
И обязательно проверьте:
ss -lntp | grep -E '11434|8080'
Идеально, если Ollama слушает только:
127.0.0.1:11434
А Open WebUI не доступен из внешней сети.








