Індекс журналуDockup / польова нотатка
Note / self-host-open-webui

Як розгорнути Open WebUI на власній інфраструктурі у 2026 році: endpoints моделей, сховище та безпека

Практичний посібник із self-hosting Open WebUI: Docker, порти, постійні дані, TLS, безпека, резервні копії та проблеми, які заважають використанню в production. У 2026 році.

Сприймайте Open WebUI як невелику систему, а не як Docker-образ. Користувацька мета Open WebUI зрозуміла: надати chat interface для OpenAI-compatible і локальних endpoints моделей. Розгортання можна вважати прийнятним лише тоді, коли ви можете підключити один віддалений endpoint моделі, отримати потокову відповідь чату, завантажити документ, виконати retrieval і знову відкрити розмову після перезапуску.

Ця відмінність допомагає виявити проблему, з якою оператори стикаються після локального тестування: OLLAMA_BASE_URL вказує на localhost усередині WebUI-контейнера. Вона також дає змогу скласти достатньо конкретний план резервного копіювання та оновлення, щоб його можна було протестувати.

Оберіть найпростішу життєздатну топологію Open WebUI

Почніть із network namespace Open WebUI: його web listener працює на порту 8080, а не на host-порту, скопійованому з tutorial для ноутбука. Мережевий контракт Open WebUI — це OpenAI-compatible API або доступний сервіс Ollama. Зберігайте приватні endpoints у внутрішньому DNS, дозволяйте лише необхідні outbound-виклики та надайте Open WebUI service credential з обмеженими правами.

Після виконання вимоги запустіть повний сценарій — підключіть один віддалений endpoint моделі, отримайте потокову відповідь чату, завантажте документ, виконайте retrieval і знову відкрийте розмову після перезапуску. Записуйте логи та вимірювання latency моделі, кількості concurrent streams, embedding jobs, розміру завантажених файлів і зростання vector index. Ці дані стануть першою перевіреною архітектурою та зроблять подальші переміщення між обчислювальними ресурсами Dockup і підключеним сервером тестованими.

TLS — це просто, а згенеровані URL — ні

Випуск TLS-сертифіката — лише половина маршруту Open WebUI. Зробіть endpoint моделі доступним із container network. Усередині спрямовуйте трафік на 8080 і передавайте зовнішню схему, щоб згенеровані URL та secure cookies залишалися узгодженими.

Перевіряйте повний сценарій Open WebUI із чистої мережі, а не лише root page. Помилку 502 або проблему із сертифікатом можна локалізувати за допомогою автоматичного налаштування домену й TLS. Якщо трафік доходить до процесу, а OLLAMA_BASE_URL вказує на localhost усередині WebUI-контейнера, діагностуйте цю умову саме там, де вона виникає, замість того щоб бездумно додавати redirect-и.

Запускайте Open WebUI, не приховуючи важливих деталей

Зробіть початковий запуск Open WebUI достатньо відтворюваним, щоб його можна було перевірити в pull request.

docker run -d \
  --name open-webui \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v open-webui-data:/app/backend/data \
  -e WEBUI_SECRET_KEY=replace-with-a-long-random-value \
  ghcr.io/open-webui/open-webui:main

Не покладайтеся на latest, коли в системі вже є реальні дані. Зафіксуйте робочий digest, користувача контейнера та ownership змонтованих директорій. Перегляньте application log протягом повного тесту — підключіть один віддалений endpoint моделі, отримайте потокову відповідь чату, завантажте документ, виконайте retrieval і знову відкрийте розмову після перезапуску — та зафіксуйте всі migrations до того, як спрямовувати production traffic на цей маршрут.

Оновлюйте Open WebUI без здогадок

Idle health check мало що говорить про Open WebUI. Відстежуйте latency моделі, кількість concurrent streams, embedding jobs, розмір завантажених файлів і зростання vector index, а потім налаштуйте alert на симптом, який бачать користувачі: невдале виконання дії «підключити один віддалений endpoint моделі, отримати потокову відповідь чату, завантажити документ, виконати retrieval і знову відкрити розмову після перезапуску». Тримайте liveness локальним і недорогим; readiness має повідомляти про migrations або initialization, не спричиняючи restart storm.

Ризикова зона під час оновлення полягає в тому, що database migrations, retrieval backends і налаштування endpoints моделей можуть змінюватися незалежно від chat frontend. Прочитайте release notes, створіть snapshot стану, розгорніть цільову версію на основі відновленої копії та повторіть acceptance action. Якщо OLLAMA_BASE_URL вказує на localhost усередині WebUI-контейнера, зіставте client request із першим релевантним application log, а не видаляйте дані чи навмання додавайте redirect-и.

П’ять перевірок, надійніших за health контейнера

Не використовуйте трафік першого користувача як acceptance test для Open WebUI. Підготуйте безпечний sample state і виконайте повну дію «підключити один віддалений endpoint моделі, отримати потокову відповідь чату, завантажити документ, виконати retrieval і знову відкрити розмову після перезапуску». Зафіксуйте точний public URL, результат, image reference і часовий інтервал логів, пов’язаний із запуском.

Замініть контейнер і повторіть перевірку без повторного створення даних. Потім виконайте recovery на порожньому host; умовою успішного відновлення є повернення accounts, chats, files і retrieval collections, а також можливість відновленого instance підключитися до того самого endpoint моделі. На кожному проході спостерігайте latency моделі, кількість concurrent streams, embedding jobs, розмір завантажених файлів і зростання vector index та налаштуйте alert на погіршення transaction, а не на idle metrics контейнера.

Одна фінальна перевірка має навмисно завершитися помилкою: тимчасово забороніть test identity доступ до OpenAI-compatible API або доступного сервісу Ollama. Переконайтеся, що повідомлення Open WebUI вказує на відповідну boundary, а не запускає видалення даних чи нескінченний restart. Відновіть коректну умову та підтвердьте, що та сама sample transaction виконується успішно. Додайте цю коротку drill-перевірку до release checklist.

Знайдіть кожен байт, який Open WebUI зберігає постійно

Для Open WebUI безпечний redeploy починається з users, chats, files, vector data та application configuration. Змонтуйте /app/backend/data до bootstrap, запишіть безпечні sample data та замініть контейнер, щоб довести фактичну persistence цього шляху. Перевірте шлях, замінивши контейнер, поки безпечні sample data ще існують; це допоможе виявити mounts, спрямовані на директорію на один рівень вище або нижче.

Потім протестуйте disaster recovery на чистому host. За потреби використовуйте application-consistent database export і переконайтеся, що accounts, chats, files і retrieval collections повертаються, а відновлений instance може підключитися до того самого endpoint моделі. Посібник із резервного копіювання баз даних із перевіреним відновленням задає надійнішу ціль, ніж проста перевірка створення archive file.

Не надавайте Open WebUI повний доступ до host

Безпечне розгортання Open WebUI починається з обмеження повноважень. Не залишайте signup відкритим і не використовуйте ephemeral WEBUI_SECRET_KEY. Натомість вимкніть public sign-up, якщо він не потрібен, зберігайте стабільний WebUI secret і обмежте адміністрування моделей довіреними користувачами.

Ставтеся до WEBUI_SECRET_KEY відповідно до його ролі в Open WebUI: зберігайте чутливі значення поза Git, документуйте наслідки rotation і ніколи не підставляйте public example у production. Обмежте administrative routes, використовуйте private DNS для dependencies і перевіряйте кожен bind mount. Коли логи надсилаються до central logging system, відфільтруйте secrets і private content до того, як вони залишать сервер.

Використовуйте Dockup для platform layer

Dockup усуває ручну роботу з reverse proxy та lifecycle навколо Open WebUI. Під час заміни сервіс отримує стабільний HTTPS route до 8080, injected configuration і persistent storage. Підключений customer server працює за тією самою моделлю, що й compute, розміщений у Dockup.

Після запуску виконайте application contract: зробіть endpoint моделі доступним із container network, підключіть і протестуйте OpenAI-compatible API або доступний сервіс Ollama та виконайте таку перевірку: підключіть один віддалений endpoint моделі, отримайте потокову відповідь чату, завантажте документ, виконайте retrieval і знову відкрийте розмову після перезапуску. Це зберігає практичність one-click experience, не приховуючи деталей, від яких залежать recoverability і безпека Open WebUI.

Поширені запитання

Що потрібно Open WebUI для production deployment?

Спрямуйте Open WebUI container через один HTTPS origin, використовуючи порт 8080. Вимога до supporting network — OpenAI-compatible API або доступний сервіс Ollama. Не вважайте Open WebUI готовим, доки не зможете підключити один віддалений endpoint моделі, отримати потокову відповідь чату, завантажити документ, виконати retrieval і знову відкрити розмову після перезапуску.

Які дані Open WebUI потрібно включити до backup?

Забезпечте persistence для /app/backend/data і включіть users, chats, files, vector data та application configuration до того самого recovery manifest. Відновлення Open WebUI можна вважати успішним лише тоді, коли accounts, chats, files і retrieval collections повернулися, а відновлений instance може підключитися до того самого endpoint моделі.

Чи потрібен Open WebUI HTTPS за reverse proxy?

Використовуйте HTTPS для public Open WebUI origin і залиште порт 8080 у внутрішньому route. Правильно застосуйте налаштування Open WebUI: зробіть endpoint моделі доступним із container network. Для Open WebUI HTTPS захищає credentials або user content під час передавання та забезпечує узгоджену поведінку клієнта, чутливу до origin.

Як тестувати оновлення Open WebUI?

Відновіть поточний state Open WebUI в ізольованому deployment, застосуйте candidate version і повторіть його acceptance transaction. Будьте особливо уважні, оскільки database migrations, retrieval backends і налаштування endpoints моделей можуть змінюватися незалежно від chat frontend. Зберігайте попередній Open WebUI image, доки не зрозумієте межі data migration і rollback.