Альтернативы Open WebUI для VPS: сравнение решений
Сравнение Open WebUI, LibreChat, Hollama и OrionChat для VPS с публичным IP. Узнайте, сколько RAM потребляет интерфейс и как настроить аутентификацию для защиты сервера.
Какая альтернатива Open WebUI подходит для VPS
Альтернативы Open WebUI почти всегда сравнивают в контексте использования на ноутбуке, где оперативная память доступна в избытке, а сервисы не слушают публичные адреса. VPS меняет оба этих фактора, что влияет на рейтинг решений. Open WebUI остается оптимальным выбором по умолчанию, как только в системе появляется второй пользователь, поскольку проект поддерживает полноценные учетные записи и панель администратора. Более легковесные проекты выигрывают, когда интерфейс конкурирует с моделью за последний гигабайт оперативной памяти. Цена этого преимущества — отсутствие встроенной аутентификации.
Все приведенные ниже данные основаны на документации соответствующих проектов по состоянию на август 2026 года. Четыре критерия оценки актуальны только тогда, когда сервер доступен из сети Интернет.
Четыре фактора, имеющие значение при работе с публичным IP
- Память рядом с моделью. Сервер модели — самый ресурсоемкий процесс на сервере. Каждый мегабайт, занятый интерфейсом, — это мегабайт, который недоступен модели.
- Аутентификация. Некоторые проекты поддерживают учетные записи и роли пользователей. Другие предполагают, что они являются единственным запущенным приложением, и не имеют никакой системы входа.
- Удаленный инференс. Интерфейс, который может обращаться только к
127.0.0.1:11434, вынуждает размещать модель на том же сервере, где находится сам интерфейс. - Обслуживание. Один контейнер с файлом SQLite требует иного подхода, чем шесть контейнеров с MongoDB и векторной базой данных в связке.
Сколько оперативной памяти модель оставляет для интерфейса
Интерфейс — не самый ресурсоемкий компонент системы. Модель потребляет значительно больше. Опубликованные размеры файлов для скачивания указывают лишь на нижний порог, так как веса должны находиться в оперативной памяти во время генерации ответа, а реальное потребление памяти превышает размер скачанного файла после выделения кэша контекста.
The data behind this chart
[
{
"label": "llama3.2:3b",
"download_gb": "2.0"
},
{
"label": "qwen3:4b",
"download_gb": "2.5"
},
{
"label": "gemma3:4b",
"download_gb": "3.3"
},
{
"label": "qwen3:8b",
"download_gb": "5.2"
}
]Это показатели, опубликованные на страницах библиотеки Ollama в августе 2026 года. Это заявленные размеры, а не результаты измерений. На VPS с 4 GB оперативной памяти модель qwen3:4b размером 2.5 GB оставляет менее 1.5 GB для операционной системы и всех остальных процессов, при этом кэш контекста сокращает этот объем по мере развития диалога. Модель qwen3:8b размером 5.2 GB на такой сервер не поместится вовсе. Это ситуация, которую никогда не освещают в обзорах для ноутбуков, и именно здесь чат-интерфейс, занимающий несколько сотен мегабайт, определяет, будет ли модель работать.
Проводите измерения самостоятельно, а не доверяйте цифрам из обзоров, включая этот. Запустите docker stats --no-stream через час реальной работы, а не через минуту после запуска контейнера, так как память, имеющая значение, выделяется при первом обращении.
Open WebUI: по-прежнему стандарт для нескольких пользователей
Open WebUI запускается из одного образа и хранит данные в одном томе.
docker run -d -p 127.0.0.1:3000:8080 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:mainКоманда в README проекта публикует -p 3000:8080, который слушает все интерфейсы. Префикс 127.0.0.1: ограничивает его только loopback. На VPS этот префикс важнее всего остального в строке, так как Docker создает собственные правила iptables, и опубликованный порт игнорирует ваши правила ufw deny.
Получите доступ к странице через туннель или прокси (оба способа описаны ниже), затем создайте первую учетную запись. Эта запись станет администратором. Последующие регистрации создаются с ролью pending, что является задокументированным значением по умолчанию DEFAULT_USER_ROLE, поэтому посторонний человек, попавший на страницу, не сможет использовать вашу модель, пока администратор не одобрит его.
Open WebUI потребляет больше памяти, чем проекты ниже, так как выполняет больше функций, а страница производительности самого приложения указывает на наиболее затратные части. Стандартный движок эмбеддингов загружает модель sentence-transformers внутри контейнера, что требует около 500 МБ на каждый рабочий процесс. Установка RAG_EMBEDDING_ENGINE=ollama передает эту задачу серверу моделей, который у вас уже запущен. AUDIO_STT_ENGINE=webapi позволяет избежать загрузки локальной модели преобразования речи в текст. Если DATABASE_POOL_SIZE не задан при работе с SQLite, пул использует большой внутренний размер, и каждое соединение увеличивает собственный кэш страниц и карту памяти, поэтому на небольшом сервере установите DATABASE_POOL_SIZE=8 и DATABASE_SQLITE_PRAGMA_MMAP_SIZE=0. ENABLE_AUTOCOMPLETE_GENERATION=False отключает отправку запросов на дополнение текста к модели, пока пользователь еще печатает.
LibreChat: многопользовательский режим и стек компонентов
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat
cp .env.example .env
docker compose up -dИнтерфейс отвечает на порту 3080. LibreChat стоит рассмотреть, если вам нужна полноценная система управления учетными записями, а не просто форма входа: проект поддерживает авторизацию через LDAP и OAuth2, а также включает панель администратора для управления пользователями и ролями. Эти возможности требуют развертывания стека.
The data behind this chart
[
{
"label": "OrionChat",
"containers": 0,
"notes": "static files, served by a web server you already run"
},
{
"label": "Hollama",
"containers": 1,
"notes": "one container serving a browser app"
},
{
"label": "Open WebUI",
"containers": 1,
"notes": "application and SQLite in one image"
},
{
"label": "LibreChat",
"containers": 6,
"notes": "api, admin panel, MongoDB, Meilisearch, pgvector, RAG API"
}
]Стандартный compose-файл запускает 6 сервисов: api, admin panel, MongoDB, Meilisearch, pgvector, RAG API. Ни один из них не является языковой моделью. MongoDB и pgvector требуют выделения оперативной памяти, и на сервере с 4 GB это отнимает ресурсы, необходимые для работы модели.
Обновление выполняется через git, и именно здесь чаще всего возникают ошибки.
docker compose down
git pull
docker compose pull
docker compose up -dgit pull завершается с конфликтом, если вы отредактировали отслеживаемый файл docker-compose.yml, в результате чего обновление применяется лишь частично. Вносите свои изменения в docker-compose.override.yml, который предусмотрен в проекте для этих целей, а секретные данные храните в .env. Оба файла не отслеживаются git, поэтому git pull их не затрагивает.
Настройте LibreChat на работу с вашим сервером моделей, указав собственный endpoint в librechat.yaml.
endpoints:
custom:
- name: "Ollama"
apiKey: "ollama"
baseURL: "http://model-host:11434/v1/"
models:
default: ["llama3.2"]
fetch: true
titleConvo: true
titleModel: "current_model"
modelDisplayLabel: "Ollama"Замените model-host на адрес сервера, где запущен Ollama. Поле apiKey должно присутствовать, даже если Ollama игнорирует его значение, поэтому можно использовать любой заполнитель. Если LibreChat запущен в Docker, а Ollama работает на том же хосте, localhost внутри контейнера будет указывать на сам контейнер, поэтому используйте host.docker.internal.
Hollama и OrionChat: браузер выполняет всю работу
Hollama предоставляет браузерное приложение из одного небольшого контейнера. Чаты хранятся в локальном хранилище вашего браузера, а не на сервере.
docker run -d --restart unless-stopped -p 127.0.0.1:4173:4173 --name hollama ghcr.io/fmaclen/hollama:latestВерсия этой команды из README использует --rm, что приводит к удалению контейнера при его остановке, поэтому интерфейс не восстанавливается после перезагрузки. При использовании reverse proxy добавьте -e VITE_ALLOWED_HOSTS='chat.example.com', так как образ разрешает только хост localhost и отвечает на запрос для любого другого имени хоста ошибкой blocked-host вместо загрузки приложения.
OrionChat идет еще дальше и вообще не имеет серверного компонента. Клонируйте репозиторий и отдавайте папку через веб-сервер, который у вас уже запущен, или откройте index.html с диска. API-ключи хранятся в localStorage браузера, история чатов остается в браузере, а приложение удаляет самые старые чаты, как только их количество превышает 512.
Ни в одном из проектов нет системы входа, так как нет сервера, который мог бы ее проверить. На ноутбуке это приемлемо. На VPS это означает, что страница никогда не должна быть опубликована в 0.0.0.0, и это влечет за собой нюанс, который легко упустить: браузер обращается к модели напрямую, а не через сервер.
Этот факт определяет, где данные проекты применимы. Ваш браузер должен иметь прямой доступ к Ollama, поэтому Ollama должна слушать не только loopback, а у Ollama нет никакой аутентификации. Из этого следуют два правила браузера. Страница, отдаваемая по HTTPS, не может обращаться к обычному HTTP-эндпоинту, и консоль выводит Mixed Content: The page at 'https://chat.example.com/' was loaded over HTTPS, but requested an insecure resource 'http://203.0.113.10:11434/api/tags'. This request has been blocked.. Вызов любого другого источника (origin) отклоняется с ошибкой has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource, пока вы не разрешите этот источник.
Документированный способ изменить любую из этих настроек в Ollama — это использование systemd override.
sudo systemctl edit ollama.service[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=https://chat.example.com"sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo ss -lntp | grep 11434ss теперь должен выводить 0.0.0.0:11434 там, где раньше выводил 127.0.0.1:11434. Вносите это изменение только в том случае, если межсетевой экран или прокси с аутентификацией уже контролируют доступ к порту, так как открытый порт 11434 — это открытый сервер моделей, а массовые сканеры быстро находят новые публичные порты. SSH-туннель, приведенный ниже, позволяет избежать этой проблемы: страница работает с источника localhost, который Ollama разрешает по умолчанию, а порт при этом не выходит за пределы сервера.
Может ли каждый из них использовать удаленный эндпоинт Ollama или vLLM
Open WebUI может, при этом соединение устанавливается на стороне сервера. OLLAMA_BASE_URL=http://model-host:11434 указывает на Ollama. Для vLLM или любого другого сервера, совместимого с OpenAI, настройте OPENAI_API_BASE_URL=http://model-host:8000/v1 с непустым значением OPENAI_API_KEY и сохраните суффикс /v1, который является обязательным. OPENAI_API_BASE_URLS поддерживает несколько бэкендов, разделенных точкой с запятой.
LibreChat может делать это через baseURL для пользовательского эндпоинта, указанного выше. Этот запрос также исходит с сервера, поэтому правила браузера здесь не применяются.
Hollama и OrionChat могут подключаться к любому эндпоинту, который вы введете в их настройках, но запрос при этом отправляется из вашего браузера. Все, что описано в предыдущем разделе, применимо только к ним и ни к чему другому из перечисленного здесь.
Разделение интерфейса и модели — это главное преимущество использования удаленного эндпоинта. Разместите интерфейс на маломощном устройстве, а модель — там, где достаточно оперативной памяти. Это также подходящий момент, чтобы решить должен ли Ollama или vLLM обслуживать запросы, так как они ведут себя совершенно по-разному, когда к модели обращаются несколько пользователей одновременно. Если сервер модели еще не готов, начните с запуска Ollama на VPS, а если у вас устройство только с CPU, ознакомьтесь с сравнением Ollama и llama.cpp, прежде чем выбирать среду выполнения.
Никогда не публикуйте чат-интерфейс без авторизации на 0.0.0.0
На странице по обеспечению безопасности Open WebUI указано, что проект «предназначен для частных доверенных сетей, подобно другой self-hosted инфраструктуре, такой как базы данных, реестры контейнеров и CI-серверы», и рекомендуется размещать его за VPN или за reverse proxy с аутентификацией. Проект без какой-либо системы входа в систему требует как минимум такого же подхода.
Проверьте, какие порты прослушиваются, прежде чем доверять системе.
sudo ss -lntp | grep -E ':(3000|3080|4173|11434)'Строка с 127.0.0.1:3000 — это то, что вам нужно. Строка с 0.0.0.0:3000 означает, что ваш чат-интерфейс доступен из публичного интернета. С вашего собственного компьютера команда curl -sI http://YOUR.VPS.IP:3000, возвращающая HTTP/1.1 200 OK, говорит о том же более прямолинейно.
Отключение авторизации в Open WebUI с помощью WEBUI_AUTH=False — это настройка для одного пользователя на машине, к которой никто другой не имеет доступа. Она также не применяется к установке, в которой уже созданы учетные записи, выдавая сообщение You can't turn off authentication because there are existing users..
Первый шаблон: привязка к loopback и доступ через SSH. Опубликуйте все порты на 127.0.0.1, затем пробросьте нужные: ssh -N -L 3000:127.0.0.1:3000 you@vps.example.com, и откройте http://localhost:3000 на вашем ноутбуке. Ничего не опубликовано, поэтому ничего нельзя просканировать. Для Hollama или OrionChat пробросьте порт модели той же командой с помощью -L 11434:127.0.0.1:11434, оставив Ollama на loopback. Надежность этого шаблона зависит только от вашей настройки SSH, поэтому используйте его в связке с SSH только по ключам и защищенный sshd.
Второй шаблон: reverse proxy, выполняющий аутентификацию до того, как приложение получит запрос. Оставьте приложение на loopback, отдайте прокси 443 порт и настройте перед ним единый вход (SSO). Traefik, управляемый через Docker Compose labels с Authentik в качестве провайдера идентификации обеспечивает каждое приложение на сервере единым входом и сертификатом. При размещении Open WebUI за TLS (transport layer security) установите WEBUI_SESSION_COOKIE_SECURE=true и WEBUI_SESSION_COOKIE_SAME_SITE=strict. Также сократите JWT_EXPIRES_IN, значение по умолчанию для которого составляет четыре недели, так как в документации Open WebUI указано: без Redis выход из системы не аннулирует токен, и он остается валидным до истечения срока действия.
Второй шаблон не спасает проекты, работающие только в браузере. Прокси перед страницей не защищает эндпоинт модели, а запрос от этой страницы к другому имени хоста не передает ваш сессионный cookie. В результате аутентифицирующий прокси перед Ollama отвечает перенаправлением на форму входа, и чат перестает работать. Либо направляйте эндпоинт модели через то же имя хоста, что и страницу, либо используйте первый шаблон.
Что выбрать
Если сервисом будет пользоваться кто-то, кроме вас, запускайте Open WebUI. В нем реализована полноценная система учетных записей, новые пользователи попадают в очередь на одобрение, а разработчики публикуют рекомендации по обеспечению безопасности, которым можно следовать. Если вам требуется поддержка LDAP или панель администратора, используйте LibreChat, но предварительно убедитесь с помощью docker stats, что его шесть сервисов вместе с вашей моделью поместятся в ресурсы системы, прежде чем полагаться на это решение. Если вы единственный пользователь на маломощном сервере, где модель уже заняла большую часть оперативной памяти, запускайте Hollama или OrionChat через SSH-туннель, позволяя браузеру хранить состояние. Неправильный выбор для VPS — это публикация любого из этих инструментов на 0.0.0.0 без предварительной авторизации.
FAQ
Безопасно ли открывать Open WebUI напрямую на публичном IP-адресе?
На странице рекомендаций по безопасности само приложение описывается как ПО для частных доверенных сетей, находящееся в одной категории с базами данных или серверами CI. В нем есть полноценные учетные записи, и первая созданная учетная запись становится администратором, в то время как последующие остаются в статусе pending до одобрения, поэтому оно значительно безопаснее интерфейсов без авторизации. Тем не менее, разместите его за reverse proxy с TLS и, по возможности, используйте единый вход (SSO). Опубликуйте порт контейнера как 127.0.0.1:3000:8080, чтобы правила iptables, создаваемые Docker, не открыли его в интернет без вашего ведома.
Какая альтернатива Open WebUI потребляет меньше всего оперативной памяти на VPS?
Варианты, работающие в браузере, такие как Hollama и OrionChat, так как приложение выполняется на стороне клиента. Сервер лишь отдает статические файлы, а для OrionChat вообще не требуется контейнер с приложением. Open WebUI удерживает в памяти процесс Python, базу данных и, по умолчанию, локальную модель эмбеддингов, что, согласно документации, требует около 500 МБ на воркер только для модели эмбеддингов. Проверьте показатели на своем сервере с помощью docker stats --no-stream, так как они меняются в зависимости от включенных функций.
Могут ли эти чат-интерфейсы использовать сервер Ollama на другом хосте?
Open WebUI и LibreChat могут, при этом соединение устанавливается самим сервером, поэтому правила браузера не применяются. Установите OLLAMA_BASE_URL для Open WebUI или baseURL в пользовательском endpoint для LibreChat. Для vLLM или другого сервера, совместимого с OpenAI, используйте OPENAI_API_BASE_URL с суффиксом /v1 и непустым API key. Hollama и OrionChat также могут указывать на любой адрес, но запрос отправляется из вашего браузера, поэтому endpoint должен быть доступен и из вашего браузера.
Почему мой браузерный чат-интерфейс не может подключиться к Ollama?
Две причины охватывают почти все случаи. Ollama по умолчанию привязывается к 127.0.0.1:11434, поэтому браузер на другой машине не сможет подключиться, пока не будет изменена переменная OLLAMA_HOST. Кроме того, Ollama принимает кросс-доменные запросы только с localhost, поэтому страница, загруженная с вашего домена, получит отказ с ошибкой No 'Access-Control-Allow-Origin' header is present on the requested resource, пока этот источник не будет указан в OLLAMA_ORIGINS. Если страница работает по HTTPS, а endpoint по HTTP, браузер заблокирует вызов как смешанный контент (mixed content) еще до того, как его увидит Ollama. Установите обе переменные в файле переопределения systemctl edit ollama.service или пробросьте порт через SSH, и проблема исчезнет.