惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
The Last Watchdog
The Last Watchdog
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
WordPress大学
WordPress大学
The Hacker News
The Hacker News
C
Cybersecurity and Infrastructure Security Agency CISA
H
Help Net Security
GbyAI
GbyAI
V
V2EX
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
C
Cisco Blogs
月光博客
月光博客
B
Blog
T
Threat Research - Cisco Blogs
I
Intezer
Recent Announcements
Recent Announcements
Latest news
Latest news
S
Schneier on Security
美团技术团队
量子位
H
Hacker News: Front Page
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Webroot Blog
Webroot Blog
N
News | PayPal Newsroom
Martin Fowler
Martin Fowler
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
爱范儿
爱范儿
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
Cloudbric
Cloudbric
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
S
Securelist
Hacker News: Ask HN
Hacker News: Ask HN
Y
Y Combinator Blog
Attack and Defense Labs
Attack and Defense Labs
TaoSecurity Blog
TaoSecurity Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Ollama и Open WebUI на VPS без GPU: рабочий вариант или боль?
wturm · 2026-05-12 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение6 мин

Охват и читатели42

Туториал

Ollama и Open WebUI на VPS без GPU: рабочий вариант или боль?

Идея выглядит красиво: берём VPS, ставим Ollama, сверху поднимаем Open WebUI — и получаем личный ChatGPT на своём домене. Без лишних аккаунтов, с локальными моделями, историей диалогов и нормальным веб-интерфейсом.

На практике всё упирается не в саму установку. Поставить контейнеры обычно проще, чем потом честно ответить себе на вопрос: «А меня устраивает скорость?»

Без GPU модели работают на CPU. Значит, важны RAM, количество ядер, частота процессора, размер модели, квантизация, длина контекста и число одновременных пользователей. Open WebUI при этом не ускоряет модель. Он просто даёт удобный интерфейс к тому, что умеет Ollama или внешний API.

Если ожидание такое: «поставлю дешёвый VPS и получу быстрый аналог ChatGPT», скорее всего, будет боль. Если цель — пощупать self-hosted LLM, погонять лёгкие модели и понять ограничения, вариант вполне рабочий.

Что ставим и зачем

Минимальный стек обычно выглядит так:

  • Ollama — запускает локальные LLM и отдаёт API на порту 11434.

  • Open WebUI — веб-интерфейс: чаты, пользователи, настройки моделей, подключение к Ollama и внешним API.

  • Docker и Docker Compose — чтобы не размазывать установку по системе и проще обновляться.

  • nginx или другой reverse proxy — чтобы вывести интерфейс на домен, а не держать голый порт наружу.

  • SSL-сертификат — без HTTPS не стоит открывать панель в интернет.

  • Домен — удобнее для доступа и нормальной настройки TLS.

  • Базовая защита — firewall, закрытые порты, обновления, сильные пароли, аккуратное хранение токенов.

Для личной лаборатории можно поднять всё за вечер. Для рабочего сервиса этого мало: нужны бэкапы, закрытый доступ, мониторинг диска и контроль обновлений.

Минимальная конфигурация VPS

Ниже не «официальные требования», а практические ориентиры. Один и тот же сервер может вести себя по-разному на разных моделях и провайдерах. Особенно если CPU перепродан, диск медленный, а рядом на ноде шумные соседи.

Сценарий

CPU

RAM

SSD

Что ожидать

Минимальный тест

2–4 vCPU

8 GB RAM

60 GB SSD

Лёгкие модели, медленно, без комфорта

Нормальный старт

4 vCPU

16 GB RAM

80–120 GB SSD

Небольшие модели, личные тесты, один пользователь

Комфортнее

8 vCPU

32 GB RAM

120+ GB SSD

Лучше для экспериментов, больше запас под контекст и модели

Тяжёлые модели

Нужен GPU

32+ GB RAM

250+ GB SSD

Обычно не история про дешёвый VPS без GPU

На 8 GB RAM уже можно экспериментировать, но запас маленький. Сама система, Docker, Open WebUI, кэш, фоновые процессы и модель быстро съедают память. Если модель не влезает в RAM, начинается swap, и интерактивность превращается в ожидание.

16 GB RAM — более честный старт для небольших моделей. 32 GB дают больше свободы, но не делают CPU магическим ускорителем: память помогает загрузить модель и держать контекст, а скорость всё равно зависит от вычислений.

Почему без GPU всё не так весело

LLM-инференс — вычислительно тяжёлая задача. GPU хорошо подходит для параллельных операций, поэтому локальные модели на видеокартах ощущаются совсем иначе. На обычном VPS без GPU модель считает токены на CPU.

Главные ограничения такие.

Скорость генерации ниже. Даже если модель запустилась, ответ может печататься медленно. Для одиночных экспериментов терпимо. Для ежедневной работы, где хочется быстро получить ответ и пойти дальше, начинает раздражать.

RAM важнее, чем кажется. Модель должна поместиться в память с учётом квантизации и контекста. Чем крупнее модель и чем длиннее контекст, тем больше памяти нужно. Если памяти не хватает, сервер может начать активно использовать swap или просто упереться в OOM.

Большие модели могут не иметь смысла. Формально можно пытаться запускать модели крупнее, но «запустилось» и «можно пользоваться» — разные вещи. На CPU тяжёлая модель может отвечать так медленно, что практической пользы почти не остаётся.

Несколько пользователей быстро ломают комфорт. Один человек пишет запрос раз в пару минут — нормально. Два-три активных пользователя уже создают очередь, особенно если ответы длинные.

Open WebUI не ускоряет инференс. Это важный момент. Open WebUI удобен: история, промпты, пользователи, подключение к разным backend. Но если Ollama медленно генерирует на CPU, интерфейс не сделает модель быстрее.

Пример docker-compose

Ниже минимальный пример для Ollama + Open WebUI в Docker Compose. Это не финальный production-шаблон, а отправная точка для тестового стенда.

services:  ollama:    image: ollama/ollama:latest    container_name: ollama    restart: unless-stopped    volumes:      - ollama:/root/.ollama    ports:      - "127.0.0.1:11434:11434"  open-webui:    image: ghcr.io/open-webui/open-webui:main    container_name: open-webui    restart: unless-stopped    depends_on:      - ollama    environment:      - OLLAMA_BASE_URL=http://ollama:11434    volumes:      - open-webui:/app/backend/data    ports:      - "127.0.0.1:3000:8080"
volumes:  ollama:  open-webui:

Что здесь важно:

  • Ollama слушает внутри Docker-сети и локально на 127.0.0.1, а не на всех интерфейсах.

  • Open WebUI ходит к Ollama по имени сервиса ollama.

  • Данные Ollama и Open WebUI лежат в named volumes, а не исчезают после пересоздания контейнера.

  • Наружу не открываются публичные порты 11434 и 3000 напрямую.

Для доступа с домена обычно ставят nginx или другой reverse proxy: HTTPS снаружи, проксирование на 127.0.0.1:3000 внутри сервера. Отдельно настраивают firewall и правила доступа.

После запуска можно зайти в контейнер Ollama и скачать модель:

docker compose up -d
docker exec -it ollama ollama pull qwen2.5:3b

Модель здесь приведена как пример лёгкого класса. Перед рабочим использованием лучше проверить актуальное имя в библиотеке Ollama и подобрать вариант под свою память и задачу.

[HUMAN_REVIEW] Проверить перед публикацией актуальность Docker-образов ollama/ollama:latest, ghcr.io/open-webui/open-webui:main, переменной OLLAMA_BASE_URL и выбранного имени модели в документации Ollama/Open WebUI.

Безопасность

Самая опасная ошибка — поднять Open WebUI, убедиться, что «оно открылось», и оставить панель торчать в интернет на дефолтных настройках.

Минимальный чек-лист:

  • не открывать Open WebUI без авторизации;

  • не публиковать Ollama API наружу без необходимости;

  • закрыть лишние порты через firewall;

  • использовать HTTPS, а не голый HTTP;

  • поставить сильный пароль и не переиспользовать его;

  • хранить API-токены и ключи не в случайных заметках и не в публичных compose-файлах;

  • регулярно обновлять контейнеры, но не делать это вслепую на рабочем стенде;

  • следить за диском: модели, логи и volume могут расти незаметно;

  • делать бэкапы данных Open WebUI, если там есть полезная история, настройки и пользователи.

Если Open WebUI нужен только вам, иногда проще закрыть его за VPN, Tailscale/WireGuard или хотя бы ограничить доступ по IP.

Когда VPS без GPU подходит

CPU-only VPS имеет смысл, если ожидания адекватные:

  • личные тесты;

  • изучение Ollama и Open WebUI;

  • лёгкие модели;

  • редкие запросы;

  • прототипы;

  • локальные эксперименты с промптами;

  • интерфейс Open WebUI для себя;

  • проверка идеи перед покупкой GPU-сервера;

  • связка с внешними API, где VPS держит интерфейс и автоматику, а не саму тяжёлую модель.

Когда лучше не мучиться

Есть сценарии, где VPS без GPU почти сразу превращается в компромисс ради компромисса:

  • нужна скорость ответа, похожая на коммерческие AI-сервисы;

  • пользователей больше одного-двух;

  • нужны тяжёлые модели;

  • нужен длинный контекст;

  • планируется клиентский или внутренний production-сервис;

  • важна стабильная задержка;

  • нужна генерация изображений;

  • параллельно крутятся n8n, боты, база, reverse proxy и ещё несколько сервисов;

  • нет времени администрировать сервер и разбираться, почему всё стало медленным после очередного обновления.

Отдельно про генерацию изображений: Stable Diffusion, ComfyUI и похожие задачи на CPU — это обычно не тот опыт, который хочется повторять. Там GPU нужен не для красоты, а для нормальной скорости работы.

API или свой сервер

Здесь нет универсального ответа. Свой сервер даёт контроль: данные, окружение, интерфейс, интеграции, возможность экспериментировать с локальными моделями. Но вместе с контролем приходят обновления, безопасность, бэкапы, мониторинг, подбор моделей и постоянные компромиссы по железу.

API проще стартует. Не нужно думать, влезет ли модель в RAM, сколько токенов в секунду выдаст VPS и почему контейнер съел диск. Минусы тоже есть: зависимость от провайдера, стоимость запросов, лимиты, вопросы приватности и доступности.

На практике часто выигрывает гибридная схема. VPS держит Open WebUI, n8n, бота, базу, reverse proxy и бизнес-логику. А модели подключаются через API или через отдельный GPU-хост, если локальный инференс действительно нужен.

Я отдельно собрал хаб с калькулятором и таблицами по VPS, GPU, API, Ollama, Open WebUI и AI-агентам.

Это не отменяет ручного подбора под задачу, но помогает прикинуть порядок ресурсов: где хватит VPS, где нужен GPU, а где дешевле и спокойнее уйти в API.

Вывод

Ollama + Open WebUI на VPS без GPU запускать можно. Это нормальный вариант для личной лаборатории, лёгких моделей, изучения self-hosted LLM и редких запросов.

Но это не замена полноценной GPU-инфраструктуре. Если нужна скорость, тяжёлые модели, длинный контекст, несколько пользователей или рабочий AI-сервис для клиентов, CPU-only VPS быстро покажет потолок.

Самый здоровый подход — начинать с цели. Если нужно понять стек и поэкспериментировать, берите VPS с запасом по RAM и не ждите чудес от CPU. Если нужен быстрый и стабильный результат, смотрите в сторону GPU или API. А Open WebUI в этой схеме можно использовать как удобную точку входа: к локальной Ollama, внешним моделям или гибридной инфраструктуре.