Open WebUI: Instalace a produkční nasazení v Docker Compose
Otevřít prohlížeč, přihlásit se na vlastní doméně, napsat prompt a dostat odpověď, která nikdy neopustí firemní server. Scénář, který dřív patřil specialistům, dnes stojí na jednom open-source projektu, čtyřech Docker kontejnerech a jednom večeru. Jmenuje se Open WebUI, má přes 128 000 hvězd na GitHubu (stav duben 2026) a podporuje OpenAI API, Anthropic, Azure, Ollamu i libovolný OpenAI-kompatibilní endpoint. Tento díl vede od prvního docker run k produkčnímu nasazení s Postgresem, Qdrantem, TLS a firemním OAuth. Licenční past, TCO v korunách a 14denní rollout řeší druhý díl.
Stručně — co si z článku odnést
- Open WebUI je platforma, ne jen rozhraní. 300–500 MB RAM kontejner nad FastAPI a SvelteKitem, napojení na 9 vektorových databází, OAuth, LDAP, SCIM 2.0 i nativní MCP. Jeden UI pro Ollamu, GPT-5 i Claude Opus 4.7.
- Produkční setup v jednom docker-compose. Postgres, Redis, Qdrant, Open WebUI a Caddy s automatickým Let's Encrypt TLS. První studený start do tří minut, celkem 2–4 GB RAM bez modelů.
- Pokud firma přesáhne 49 uživatelů, nasazení se licenčně komplikuje. Důvody, ceny a kalkulace jsou ve druhé části. Návazně využívá návod na Ollamu ve firmě.
1. Co je Open WebUI a komu se vyplatí
Open WebUI vznikl v roce 2023 jako nadstavba nad Ollamou a po přejmenování v roce 2024 se proměnil v plnohodnotnou platformu s vlastním RAG enginem, plugin architekturou a napojením na všechna větší AI API. Backend běží na FastAPI, frontend na SvelteKitu. Data standardně v SQLite, pro produkci přepínatelné na PostgreSQL.
Stručně: Open WebUI je samohostovatelná webová aplikace s UX blízkým ChatGPT. Jako backend umí Ollamu, OpenAI API, Anthropic, Azure OpenAI a libovolný OpenAI-kompatibilní endpoint. Přidává RAG nad vlastními dokumenty, web search, role-based access control, napojení na firemní identitu přes OAuth nebo LDAP a plugin systém v Pythonu. Celé nasazení lze udržet v jednom VPS za několik set korun měsíčně.
Rozhodovací test: 6 otázek
Open WebUI nedává smysl pro každého. Následující test za dvě minuty vrátí jednoznačný verdikt. Součet bodů rozhoduje.
2. Open WebUI vs LibreChat, AnythingLLM, Onyx
Nejčastější chyba při rozhodování je porovnávat tyto čtyři projekty, jako by dělaly totéž. Každý má jinou filozofii. Volba by neměla začínat počtem hvězd, ale otázkou, co bude uživatel dělat devadesát procent času.
Stručně: Open WebUI cílí na chat jako primární akci s plugin rozšiřitelností. LibreChat staví na přepínání modelů ve stejné konverzaci. AnythingLLM drží filozofii workspace nad dokumenty a jediný z kategorie nabízí desktop aplikaci bez Dockeru. Onyx řeší enterprise RAG se čtyřiceti konektory do firemních systémů.
| Kritérium | Open WebUI | LibreChat | AnythingLLM | Onyx |
|---|---|---|---|---|
| Primární scénář | Univerzální AI chat platforma | Přepínání modelů v konverzaci | Workspace nad dokumenty | Enterprise RAG |
| MCP podpora | Nativní (od v0.6.31) | Přes plugin | Ne (k dubnu 2026) | Interní tool systém |
| RAG | 9 vektorových DB, multi-OCR | Meilisearch + vektor | Per workspace, izolované | 40+ konektorů do firemních zdrojů |
| Netechnický uživatel | Vyžaduje Docker | Vyžaduje Docker | Nativní desktop (bez Dockeru) | Docker/Kubernetes |
| Enterprise auth | OAuth, LDAP, OIDC, SCIM 2.0 | OAuth, LDAP | OAuth (omezeně) | OIDC, SAML, SCIM |
| GitHub hvězd (04/2026) | 128 000+ | 22 000+ | 34 000+ | 13 000+ |
Pro jedno rozhraní v celé firmě s plugin systémem volíte Open WebUI. Pro plynulé přepnutí mezi GPT-5 a Claude ve stejné konverzaci LibreChat. Pro netechnický tým pracující primárně s dokumenty AnythingLLM. Pro desítky firemních konektorů s důrazem na RAG Onyx.
3. Hardware: co potřebujete skutečně
Samotné Open WebUI je extrémně skromné. Rozhodující nároky přicházejí z jazykového modelu (pokud běží lokálně) a z vektorové databáze při tisících dokumentů. Požadavky Ollamy jsou řešené v samostatném návodu na Ollamu.
Stručně: Open WebUI potřebuje 300 až 500 MB RAM a jedno CPU jádro bez ohledu na počet uživatelů. S Postgresem a Qdrantem vyroste celková paměťová stopa na 2 až 4 GB RAM. Padesát uživatelů se solidním RAG korpusem si žádá 8 až 16 GB RAM, rychlý SSD a 4 CPU jádra. GPU není pro Open WebUI nutné — inference se řeší samostatně v backendu.
| Profil | RAM | CPU | Disk | Databáze | Vektor DB | Měsíční hosting |
|---|---|---|---|---|---|---|
| Pilot (1–3) | 1 GB | 1 jádro | 20 GB SSD | SQLite | ChromaDB in-container | 100–250 Kč (Contabo, Hetzner CX11) |
| Malý tým (4–15) | 4 GB | 2 jádra | 80 GB SSD | PostgreSQL | Qdrant | 600–1 500 Kč (Hetzner CX32, Active24 VPS) |
| Střední firma (16–49) | 8–16 GB | 4 jádra | 200 GB SSD | PostgreSQL + Redis | Qdrant / PGVector | 2 500–5 500 Kč (Hetzner CCX23) |
| Enterprise (50+) | 32 GB+ | 8 jader+ | 500 GB+ SSD | PostgreSQL HA | Qdrant cluster | 15 000 Kč+ (Hetzner AX102, on-prem) |
Pro české firmy jsou typické tři cesty. Active24, Wedos a Forpsi nabízejí KVM VPS vhodné pro pilot a malé týmy, SLA i síťová propustnost jsou ale o řád horší než u Hetzneru. Hetzner (CX, CCX, AX řady) je preferovaná volba pro produkci — datová centra v Německu a Finsku, GDPR v pořádku, ceny pod AWS. On-prem server dává smysl od 50 uživatelů nebo při striktních požadavcích na datovou lokalitu (bankovnictví, zdravotnictví).
Pozor na Synology NAS. Open WebUI na ARM NAS technicky poběží, ale embedding pro běžný PDF trvá desítky sekund místo milisekund. Pro jakékoliv RAG nasazení nad stovku dokumentů je NAS slepá ulička. Pro samotný chat bez RAG postačí.
4. Instalace: od docker run k produkční šabloně
Pro první seznámení stačí jeden řádek v terminálu a dvě minuty. Setup běží na Linuxu, macOS i Windows s Docker Desktopem. Pro produkci je pak připravená docker-compose šablona s Postgresem, Qdrantem, Redisem a Caddym.
Pilotní one-liner
Předpoklady: Docker 25.0+, 4 GB volného místa, port 3000 volný. Pokud plánujete Ollamu, nainstalujte ji zvlášť podle návodu.
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
Po minutě se Open WebUI zpřístupní na http://localhost:3000. První obrazovka vyzve k vytvoření administrátorského účtu. Další účty v defaultu čekají na schválení admina. Pokud Ollama běží na stejném stroji, Open WebUI ji detekuje přes host.docker.internal:11434. OpenAI API klíč se přidá v Connections → OpenAI Compatible APIs.
Produkční docker-compose
Pro produkci je docker run nedostatečný. SQLite neunese souběžné zápisy od deseti uživatelů. ChromaDB v kontejneru ztrácí embeddings při každém restartu bez persistent volume. Web bez TLS selže u první zákaznické kontroly. Následující docker-compose.yml řeší pět potřeb najednou — Postgres pro data, Redis pro session store, Qdrant pro vektory, Open WebUI jako aplikaci a Caddy jako reverse proxy s automatickým Let's Encrypt.
services:
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_DB: openwebui
POSTGRES_USER: openwebui
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U openwebui"]
interval: 10s
retries: 5
redis:
image: redis:7-alpine
restart: always
volumes:
- redis-data:/data
qdrant:
image: qdrant/qdrant:latest
restart: always
volumes:
- qdrant-data:/qdrant/storage
open-webui:
image: ghcr.io/open-webui/open-webui:main
restart: always
depends_on:
postgres: { condition: service_healthy }
qdrant: { condition: service_started }
redis: { condition: service_started }
environment:
DATABASE_URL: postgresql://openwebui:${DB_PASSWORD}@postgres:5432/openwebui
VECTOR_DB: qdrant
QDRANT_URI: http://qdrant:6333
REDIS_URL: redis://redis:6379/0
WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY}
WEBUI_AUTH: "True"
ENABLE_SIGNUP: "False"
OLLAMA_BASE_URL: http://host.docker.internal:11434
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- openwebui-data:/app/backend/data
caddy:
image: caddy:2-alpine
restart: always
ports: ["80:80", "443:443"]
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
- caddy-config:/config
depends_on: [open-webui]
volumes:
postgres-data: {}
redis-data: {}
qdrant-data: {}
openwebui-data: {}
caddy-data: {}
caddy-config: {}
Doprovodný Caddyfile:
ai.vasedomena.cz {
reverse_proxy open-webui:8080
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
X-Frame-Options "DENY"
Referrer-Policy "strict-origin-when-cross-origin"
}
@auth path /api/v1/auths/*
rate_limit @auth 10r/m
}
Ve stejném adresáři se vytvoří .env s DB_PASSWORD (nejméně 32 znaků) a WEBUI_SECRET_KEY (výstup z openssl rand -hex 32). V Caddyfile se ai.vasedomena.cz nahradí skutečnou doménou směřovanou na IP serveru. První studený start trvá tři minuty. Před ostrým spuštěním do provozu musí být nastavený zálohovací runbook: Postgres dump každou noc, volume snapshot týdně, Qdrant snapshot přes API. Konfigurační soubory do Gitu nebo šifrovaného správce hesel. Incident bez zálohy znamená ztrátu celé historie konverzací.
5. Autentizace a RBAC
Jakmile Open WebUI přejde z pilotu na produkci, začne tlak na napojení firemní identity. Uživatelé nechtějí další heslo, bezpečnostní tým nechce další úložiště hesel a compliance chce centrální provisioning. Open WebUI nabízí pět cest — od OAuth po SCIM 2.0.
Stručně: Pro firmy do 20 uživatelů stačí OAuth napojení na Google Workspace nebo Microsoft 365, setup trvá patnáct minut. Pro firmy s Active Directory je správná cesta LDAP nebo OIDC přes Authentik/Keycloak. SCIM 2.0 automatizované provisioning (vytváření a mazání účtů při nástupu a odchodu zaměstnance) je enterprise funkce a vyžaduje placenou licenci.
| Metoda | Ideální pro | Setup | Automatizace | Licence |
|---|---|---|---|---|
| Local accounts | Pilot, do 5 lidí | 0 min | Žádná, admin přidává ručně | Free |
| OAuth (Google, Microsoft, GitHub) | Firmy s Google Workspace nebo M365 | 15–30 min | Přihlášení ano, mazání účtu ručně | Free |
| OIDC (Authentik, Keycloak) | On-prem s vlastním identity providerem | 1–2 h | Plná přihlašovací, částečná provisioning | Free |
| LDAP / Active Directory | Firmy s AD nad 20 lidí | 2–4 h | Přihlášení, mapování skupin na role | Free |
| SCIM 2.0 | Enterprise s Okta/Entra ID | 1 den | Plná — automatické vytváření i mazání | Enterprise |
Role a oprávnění
Open WebUI má tři vestavěné role: pending (registrovaný, čeká na schválení), user a admin. Od verze 0.5 jdou přidat custom role s granulárními oprávněními — kdo smí vytvářet modely, nahrávat dokumenty do RAG, měnit systémové prompty. Role se automaticky mapují na LDAP skupiny nebo OIDC claims.
Typické mapování v české firmě pracuje s pěti rolemi: admin (IT oddělení), power user (business analytici, produkt), kreativní (marketing — přístup k image gen), standardní uživatel (ostatní) a host (externí spolupracovníci s denním limitem zpráv). Plánování týden dopředu eliminuje pozdější konflikty typu „obchoďák generuje obrázky za firemní peníze".
Varování pro veřejně vystavené instance: default ENABLE_SIGNUP=True znamená, že se kdokoliv může zaregistrovat. Botnety si všimnou otevřené instance do několika hodin a začnou zahlcovat adminovi notifikace. Nastavte ENABLE_SIGNUP=False a uživatele přidávejte ručně nebo přes OAuth whitelist domény.
6. RAG: firemní ChatGPT nad dokumentací
Retrieval-Augmented Generation je hlavní důvod, proč české firmy přecházejí z obyčejného ChatGPT na vlastní Open WebUI. Model dostává otázku spolu s relevantními úryvky z firemní dokumentace a odpovídá na základě konkrétních materiálů, ne obecně.
Stručně: Pro RAG stačí nahrát dokumenty do Knowledge báze, přiřadit ji k modelu nebo uživateli a Open WebUI je při každé otázce prohledá. Default setup používá ChromaDB a jednoduchý chunking. Pro produkci je vhodné přepnout na Qdrant a ladit velikost chunků podle typu dokumentace. Hranice kvality leží kolem pěti tisíc dokumentů na jednu bázi.
| Vector DB | Ideální objem | Výhody | Nevýhody |
|---|---|---|---|
| ChromaDB (default) | Do 1 000 dokumentů | Nulová konfigurace, jeden soubor | Nad 5 tis. dokumentů se zadrhává |
| Qdrant | 1 000 – 100 000 dok. | Rust výkon, clustering, payload filtering | Samostatný kontejner, víc paměti |
| PGVector | Firmy už s PostgreSQL | Jedna DB pro data i vektory | Pomalejší nad 50 tis. dokumentů |
| Milvus | 100 000+ dok., GPU | Škála pro velká data, GPU indexing | Složitá architektura, dedikovaný provozní tým |
Pro parsování se v základu používá Apache Tika (rychlé, běžné PDF stačí). Pro složité dokumenty s tabulkami Docling (pomalejší, přesnější). Pro účetní a právní dokumenty Azure Document Intelligence (placené, nejvyšší přesnost). Web search doplňuje odpovědi o aktuální obsah — pro privátní firemní nasazení je doporučený SearXNG, pro kvalitu výsledků Brave Search API nebo Tavily s GDPR-kompatibilní smlouvou v Evropě.
Nejčastější chyba v RAG pipeline
Uživatel nahraje velké PDF a diví se, že odpovědi jsou nepřesné. Problém bývá ve velikosti chunků — výchozích 500 tokenů s 50 tokeny překryvu sedí na články, ale ne na tabulky, smlouvy nebo manuály. V administraci jde velikost chunku upravit na 1 000–2 000 tokenů pro smlouvy a 200–300 pro FAQ dokumenty. Kvalita odpovědí pak vyskočí skokově.
7. Nejčastější otázky
Potřebuje Open WebUI Ollamu?
Ne, Ollama je volitelný backend. Open WebUI umí jako primární endpoint používat kterýkoliv OpenAI-kompatibilní API — OpenAI přímo, Anthropic, Azure OpenAI, Groq, Together AI, Langdock nebo vlastní inference server (vLLM, TGI). Kombinace Open WebUI + OpenAI API je nejčastější setup v SMB firmách, které nechtějí spravovat GPU.
Kolik lidí zvládne jedno nasazení?
Na Hetzner CCX23 (4 vCPU, 16 GB RAM) běží pohodlně 20–30 souběžných uživatelů, pokud se inference řeší přes cloud API. S lokální Ollamou na stejném stroji bez GPU kapacita klesá na 2–3 souběžné uživatele kvůli pomalé CPU inference. S GPU (RTX 4090) zvládne stejný setup 5–8 souběžných uživatelů. Pro 50+ souběžných je potřeba Kubernetes nebo oddělené GPU servery.
Jde provozovat bez Dockeru?
Ano, přes pip install open-webui na Linuxu, macOS i Windows. Vyžaduje Python 3.11 a vytváří vlastní virtuální prostředí. Pro produkci není pip instalace doporučená — správa aktualizací, logování a service manager je složitější než s Dockerem. Pro OSVČ a jednoho uživatele je pip rozumná alternativa.
Funguje Open WebUI česky v UI?
Ano, lokalizace pokrývá přes čtyřicet jazyků. Překlad je komunitní a některé pokročilé admin sekce zůstávají v angličtině. Pro běžného uživatele je UI plně česky. Jazyk se přepíná v Settings → General → Language.
Co zbývá dořešit
První polovina návodu končí v okamžiku, kdy Open WebUI produkčně běží, uživatelé se přihlašují přes firemní OAuth a RAG hledá v dokumentaci. Chybí ale odpovědět na čtyři otázky, na kterých se nasazení nejčastěji rozbíjí: zda licence dovolí růst nad 49 uživatelů, jaké reálné měsíční náklady to bude mít v Kč, jak zabezpečit instanci před vystavením do internetu a v jakém sledu postupovat, aby to za čtrnáct dní stálo ve firmě. Odpovědi má druhá polovina návodu — 12bodový bezpečnostní checklist, TCO porovnání s ChatGPT Enterprise a rozhodnutí, kdy je Open WebUI špatná volba a co sáhnout místo něj.
Navazující zdroje: lokální inference přes Ollamu, autonomní AI agent OpenClaw, rozklad nákladů na AI API a tokeny.