Open WebUI: свой ChatGPT-интерфейс на VPS
Open WebUI — это ChatGPT-подобный веб-интерфейс для любых LLM: локальных через Ollama или облачных через OpenAI API. Ставится в Docker за пару минут и даёт аккаунты, историю и работу с документами.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что умеет Open WebUI
Это самостоятельный веб-фронтенд, максимально похожий на ChatGPT, но полностью на твоём сервере.
- Мультимодели — Ollama и любой OpenAI-совместимый API.
- Аккаунты и роли — общий доступ для команды.
- RAG — загрузка документов и чат по ним.
- История чатов хранится у тебя, а не в чужом облаке.
Веб-интерфейс лёгкий, а вот модель за ним ест ресурсы. Если гонять Ollama на том же сервере, пригодятся быстрые ядра и диск — AMD EPYC + NVMe у MAATRIX как раз про отзывчивость загрузки моделей и документов.
Главная причина ставить Open WebUI на свой сервер — приватность и предсказуемая цена. Переписка сотрудников с моделью не уходит в чужое облако, а расходы фиксированы стоимостью VPS, а не числом токенов. Для команды, работающей с внутренними документами, договорами или кодом, это часто решающий аргумент: RAG по загруженным файлам работает локально, и данные не покидают периметр.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для Open WebUIСтавим Docker
База — Ubuntu и Docker.
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER && newgrp docker
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Запуск Open WebUI
Самый быстрый способ — один контейнер. Если Ollama уже стоит на хосте, свяжем их.
docker run -d --name open-webui \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--restart always \
ghcr.io/open-webui/open-webui:main
Открой http://SERVER_IP:3000 — первый зарегистрированный пользователь становится админом. Флаг host.docker.internal позволяет контейнеру достучаться до Ollama, запущенной прямо на хосте; на Linux для этого иногда нужно добавить --add-host=host.docker.internal:host-gateway. Том open-webui хранит базу пользователей, историю чатов и загруженные документы — не удаляй его при обновлении образа, иначе потеряешь все данные.
Подключаем облачные модели
Open WebUI умеет и в OpenAI API — можно смешивать локальные и облачные модели в одном интерфейсе. Задай ключ и base_url в переменных окружения или в настройках админки.
docker run -d --name open-webui \
-p 3000:8080 \
-e OPENAI_API_BASE_URL=https://api.openai.com/v1 \
-e OPENAI_API_KEY=sk-... \
-v open-webui:/app/backend/data \
--restart always \
ghcr.io/open-webui/open-webui:main
Точно так же вместо OpenAI можно указать свой vLLM или агрегатор LiteLLM. В интерфейсе пользователь просто выбирает нужную модель из выпадающего списка — локальную или облачную, — а администратор решает, какие из них вообще доступны и кому. Это удобный способ дать команде и быстрый локальный ассистент для рутины, и мощную облачную модель для сложных задач, не заводя два разных сервиса.
docker-compose для связки с Ollama
Удобнее держать Ollama и WebUI вместе.
services:
ollama:
image: ollama/ollama
volumes: [ollama:/root/.ollama]
webui:
image: ghcr.io/open-webui/open-webui:main
ports: ["3000:8080"]
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes: [open-webui:/app/backend/data]
depends_on: [ollama]
volumes:
ollama: {}
open-webui: {}
docker compose up -d
HTTPS и защита
Веб-интерфейс с логинами обязан работать по HTTPS. Поставь Nginx и бесплатный сертификат.
sudo apt -y install nginx certbot python3-certbot-nginx
sudo certbot --nginx -d chat.example.com
- Проксируй на 3000 и включи WebSocket-заголовки для стрима ответов.
- Закрой порт 3000 фаерволом, наружу только 443.
- Отключи открытую регистрацию после создания нужных аккаунтов.
Отдельно стоит наладить бэкапы тома с данными: там лежат аккаунты, история и загруженные для RAG документы, и терять их при переезде или сбое обидно. Достаточно периодически архивировать каталог volume — например, ночным cron с последующей выгрузкой в объектное хранилище. На хостинге, где бэкапы делаются автоматически каждый день, эта задача частично снимается с плеч, но собственную копию критичных данных иметь всё равно полезно.
Для обновления образа просто останови контейнер, вытяни свежий тег и подними заново с тем же томом — данные переживут апгрейд. Пробовать новые версии на проде вслепую не стоит: иногда меняется схема БД, поэтому перед крупным обновлением сделай снимок тома.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для Open WebUIОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Нужен ли GPU для Open WebUI?
Самому интерфейсу — нет. GPU нужен модели за ним. С облачным OpenAI API интерфейс работает и на самом лёгком VPS.
Где хранится история чатов?
В томе с данными на твоём сервере (backend/data). Ничего не уходит третьим лицам, если ты не подключил внешние модели.
Можно ли дать доступ команде?
Да, есть регистрация, роли и админка. После создания аккаунтов открытую регистрацию лучше выключить.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.