SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-08-26

Альтернативы Open WebUI для VPS: сравнение интерфейсов

Сравнение Open WebUI, LibreChat, Hollama и OrionChat для VPS с публичным IP. Узнайте, сколько RAM потребляет каждый интерфейс и как настроить безопасный доступ к Ollama.

Какая альтернатива Open WebUI подходит для VPS

Альтернативы Open WebUI почти всегда сравнивают в контексте ноутбука, где оперативная память стоит недорого, а сервисы не слушают публичные адреса. VPS меняет оба этих фактора, что влияет на рейтинг. Open WebUI остается оптимальным решением по умолчанию, как только в системе появляется второй пользователь, поскольку проект поддерживает полноценные учетные записи и панель администратора. Более легкие проекты выигрывают, когда интерфейс конкурирует с моделью за последний гигабайт оперативной памяти. Цена этого выигрыша — отсутствие встроенной аутентификации.

Все приведенные ниже сведения основаны на документации каждого проекта по состоянию на август 2026 года. Четыре критерия оценки актуальны только тогда, когда сервер доступен из сети Интернет.

Четыре критических фактора для публичного IP-адреса

  • Память рядом с моделью. Сервер модели — самый ресурсоемкий процесс на сервере. Каждый мегабайт, занятый интерфейсом, — это мегабайт, который недоступен модели.
  • Аутентификация. Некоторые проекты поддерживают учетные записи пользователей и роли. Другие предполагают, что работают локально на ноутбуке, и не имеют никакой системы входа.
  • Удаленный инференс. Интерфейс, который может обращаться только к 127.0.0.1:11434, вынуждает запускать модель на том же узле, где работает сам интерфейс.
  • Обслуживание. Один контейнер с файлом SQLite требует принципиально иного подхода, чем связка из шести контейнеров с MongoDB и векторной базой данных.

Сколько оперативной памяти модель оставляет для интерфейса

Интерфейс — не самый ресурсоемкий компонент системы. Модель потребляет значительно больше. Опубликованные размеры загружаемых файлов задают лишь нижнюю границу, так как веса должны находиться в оперативной памяти во время генерации ответов, а реальное потребление памяти превышает размер файла после выделения кэша контекста.

ChartPublished download size of common Ollama models, August 2026
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 ГБ оперативной памяти модель qwen3:4b объемом 2.5 ГБ оставляет менее 1.5 ГБ для операционной системы и всех остальных процессов. Кэш контекста сокращает этот объем по мере развития диалога, поэтому значение num_ctx — это не только вопрос качества ответов, но и решение по управлению памятью. Модель qwen3:8b объемом 5.2 ГБ на такой машине не запустится вовсе. Обзоры ноутбуков обычно упускают этот аспект, хотя именно здесь интерфейс чата, занимающий несколько сотен мегабайт, определяет, будет ли модель работать. Если вы подбираете сервер для моделей, значительно превышающих эти показатели, расчет для модели 27B на VPS без GPU наглядно показывает, как быстро интерфейс перестает быть решающим фактором.

Не доверяйте цифрам из обзоров, включая эту статью, — проводите измерения самостоятельно. Запустите docker stats --no-stream через час реальной работы, а не через минуту после старта контейнера, так как важная часть памяти выделяется при первом использовании. Ollama также выгружает веса из памяти после пяти минут простоя, поэтому замер, сделанный в перерыве между диалогами, не покажет пиковую нагрузку, и при отправке следующего сообщения система снова будет тратить ресурсы на загрузку, если только вы не закрепите модель в памяти с помощью keep_alive.

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.

Откройте страницу через туннель или прокси (оба способа описаны ниже) и создайте первую учетную запись. Эта запись станет администратором. Последующие регистрации создаются с ролью pending, что является задокументированным значением по умолчанию DEFAULT_USER_ROLE, поэтому посторонний человек, попавший на страницу, не сможет использовать вашу модель, пока администратор не одобрит его доступ.

Open WebUI потребляет больше оперативной памяти, чем проекты ниже, так как выполняет больше задач; страница производительности самого приложения указывает на наиболее ресурсоемкие компоненты. Стандартный движок эмбеддингов загружает модель sentence-transformers внутри контейнера, что требует около 500 МБ на каждый рабочий процесс. Установка RAG_EMBEDDING_ENGINE=ollama передает эту задачу серверу моделей, который вы уже используете. AUDIO_STT_ENGINE=webapi позволяет избежать загрузки локальной модели преобразования речи в текст. При использовании SQLite с не заданным DATABASE_POOL_SIZE пул соединений расширяется до большого внутреннего размера, и каждое соединение увеличивает собственный кэш страниц и карту памяти, поэтому на небольшом сервере установите 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, а также включает панель администратора для управления пользователями и ролями. Эти возможности требуют развертывания стека.

ChartContainers a default install adds, not counting the model server
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 RAM это ресурсы, которые могли бы потребоваться модели.

Обновление выполняется через git, и именно здесь часто возникают ошибки.

docker compose down
git pull
docker compose pull
docker compose up -d

git 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, что приводит к удалению контейнера при его остановке, поэтому интерфейс не восстанавливается после перезагрузки. При работе за обратным прокси добавьте -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 11434

ss теперь должен выводить 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 пользовательского эндпоинта, указанного выше. Этот запрос также исходит с сервера, поэтому правила браузера здесь не применяются. Тот же базовый URL и тот же ключ-заглушка работают и вне окна чата; это всё, что нужно, чтобы направить кодинг-агент на уже развернутую вами модель.

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 выход из системы не аннулирует токен, и он остается валидным до истечения срока действия.

Второй шаблон не подходит для проектов, работающих только в браузере. Прокси перед страницей не защищает endpoint модели, а запрос от этой страницы к другому имени хоста не передает ваш session cookie. В результате аутентифицирующий прокси перед Ollama отвечает перенаправлением на форму входа, и чат перестает работать. Либо направляйте endpoint модели через тот же хост, что и страницу, либо используйте первый шаблон.

Что выбрать

Если системой будет пользоваться кто-то кроме вас, запускайте 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 MB на воркер только для одной модели. Проверьте показатели на своем сервере с помощью 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, и проблема исчезнет.