LINUX.ORG.RU

Установка Ollama + Open WebUI на Ubuntu 26.04 для локальных чатов

 , open webui, ,


1

1

Цель этой инструкции — установить 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 GB3B–8B, лучше Q4qwen3:4b, qwen3:8b, llama3.1:8b, qwen2.5-coder:7b
10 GB7B–8B уверенно, 14B с компромиссамиqwen3:8b, qwen3:14b
12 GB8B–14B хорошо, 20B частично с offloadqwen3:14b, gemma3:12b, gpt-oss:20b
16 GB14B–20B хорошоgpt-oss:20b, qwen3:14b, qwen3:30b с компромиссами
24 GB20B–32B хорошоqwen3:30b, qwen3:32b, qwen2.5-coder:32b
48–80+ GB70B+ / 120Bgpt-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 не доступен из внешней сети.

★★

Проверено: maxcom ()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от jura12

но файлы не читает.

Их можно ему в чат подсунуть нужные и задать по ним вопрос. Вполне удобно тоже, но думать надо больше, чем «сделай то не знаю што вот мамка».

Zhbert ★★★★★
()
Ответ на: комментарий от jura12

как будет время сделаю статью про настройку Ollama под VSCode, я у себя уже настроил, будет быстрее

unclestephen ★★
() автор топика

curl -fsSL https://ollama.com/install.sh | sh

Серьёзно? В вашей Убунте нет ollama в официальных репах? Ну и мрак.

Как же всё сложно и мудрёно описано в целом.

wandrien ★★★★
()

ollama ставится буквально одной строчкой. Лучше бы написал как codex запускать, например так:

CODEX_OSS_BASE_URL=http://x.x.x.x:11434/v1 \
codex --oss -m "huihui_ai/Qwen3.6-abliterated:35b-Claude-4.6-q4_K" --dangerously-bypass-approvals-and-sandbox

P.S.: huihui_ai/Qwen3.6-abliterated:35b-Claude-4.6-q4_K - модель на 24гб, показала у меня локально лучший результат на 5090 по производительность/эффективность

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от unclestephen

Пока он не начнуть стучать, ты об этом не узнаешь

MEZON ★★★★★
()
Ответ на: комментарий от unclestephen

Буквально всем. Как минимум это лишнее звено.

MEZON ★★★★★
()

OpenWebui сейчас стал очень функциональным, каждый релиз полотно фич (хотя не все, что уже есть, работают хорошо). Ты бы лучше сконцентрировался на нём. Какими фичами пользуешься сам, что умеет OpenWebui, что не очень? Мне например пришлось доставить ряд расширений отсюда.

mamina_radost
()

А Open WebUI не доступен из внешней сети.

У нас вебморда торчит наружу, и ничего. Просто нужно иметь не только искусственный интеллект, но и естественного немножко. (%

mord0d ★★★★★
()

docker-compose.yml

services:
  llama.cpp:
    image: ghcr.io/ggml-org/llama.cpp:server-cuda
    container_name: llama.cpp
    environment:
      - LLAMA_CACHE=/cache
      - LLAMA_ARG_HF=unsloth/Qwen2.5-Coder-7B-Instruct-GGUF:Q4_K_M
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./llama_data/models:/models
      - ./llama_data/cache:/cache
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

networks:
  ollama-network:
    name: ollama-network
    driver: bridge

Веб интерфейс будет доступен только локально на 8080. llama.cpp даёт интерфейс для чата. Говорят и работает быстрее. Модели брать на huggingface.co. Так же llama научилась сама скачивать модели

CrazyAlex25 ★★★
()
Последнее исправление: CrazyAlex25 (всего исправлений: 3)
Ответ на: комментарий от CrazyAlex25

Если нужен именно ollama + openwebui (+бонус comfy для генерации изображений)

# docker-compose.yml
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    volumes:
      - ./open-webui:/app/backend/data
    depends_on:
      - ollama
    ports:
      - ${OPEN_WEBUI_PORT-3000}:8080
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - COMFYUI_BASE_URL=http://comfyui:8188
    restart: unless-stopped
    networks:
      - ollama-network

  comfyui:
    build:
      context: .
      dockerfile: comfyui.Dockerfile
    image: comfyui:local
    container_name: comfyui
    ports:
      - "8188:8188"
    volumes:
      - ./comfyui/models:/opt/ComfyUI/models
      - ./comfyui/output:/opt/ComfyUI/output
      - ./comfyui/custom_nodes:/opt/ComfyUI/custom_nodes
      - ./comfyui/user:/opt/ComfyUI/user
    command: python3 main.py --enable-manager --listen 0.0.0.0 --port 8188 --cpu
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    restart: unless-stopped
    networks:
      - ollama-network
    deploy:
      resources:
      reservations:
        devices:
        - driver: nvidia
          count: all
          capabilities: [gpu]
      limits:
        cpus: 12
        memory: 32G
    runtime: nvidia

networks:
  ollama-network:
    name: ollama-network
    driver: bridge


# comfyui.Dockerfile
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive \
    PIP_NO_CACHE_DIR=true
SHELL ["/bin/bash", "-o", "pipefail", "-c"] 
RUN echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf.d/no-install-recommends
RUN apt-get update \
    && apt-get install -y \
        git \
        python3-pip \
        python3-venv \
    && rm -rf /var/lib/apt/lists/*
RUN git clone --depth=1 https://github.com/Comfy-Org/ComfyUI.git /opt/ComfyUI
WORKDIR /opt/ComfyUI
RUN python3 -m venv /opt/comfyenv
RUN /opt/comfyenv/bin/pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
RUN /opt/comfyenv/bin/pip install -r requirements.txt
RUN /opt/comfyenv/bin/pip install -r manager_requirements.txt
ENV PATH="/opt/comfyenv/bin:$PATH"
CMD ["python3", "main.py"]

CrazyAlex25 ★★★
()

Какой дурень вообще пользуется этой олламой?

windows10 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.