Open WebUI'ı Ollama ile Docker Compose ve HTTPS kullanarak çalıştırma
Open WebUI'ı Ollama ile Docker Compose'da çalıştırın, Ollama'ya 127.0.0.1 üzerinden güvenle ulaşın, Caddy ile HTTPS ekleyin, kaydı kapatıp verileri yedekleyin.
- Orta
- 35 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — Open WebUI'ın Ollama'ya nasıl ulaşacağını seçin
- Adım 2 — Proje klasörünü ve gizli anahtarları oluşturun
- Adım 3 — Compose dosyasını yazın
- Adım 4 — Yığını başlatın ve bir model yükleyin
- Adım 5 — Yönetici hesabını gizlice oluşturun
- Adım 6 — Open WebUI'ı Caddy ile HTTPS üzerinden yayınlayın
- Yedekleme ve geri yükleme
- Open WebUI'ı güncelleme
- Sorun giderme
- Model seçicisinde hiç model görünmüyor
- Loglarda kabul edilmeyen bir origin görünüyor
- Bir ortam değişkenini değiştirmek etki etmiyor
- Konteyneri yeniden oluşturduktan sonra herkesin oturumu kapandı
- Caddy 502 Bad Gateway döndürüyor
- Sonraki adımlar
Open WebUI, büyük dil modelleri için self-hosted bir web arayüzüdür. Kullanıcı hesapları, sohbet geçmişi, belge yükleme ve model yönetimi içeren ChatGPT benzeri bir sohbet ekranı sunar; Ollama'nın yanı sıra OpenAI uyumlu API'lerle de çalışır. Bu rehber Open WebUI'ı Docker Compose ile çalıştırır, Ollama'nın API'sini dışarı açmadan ona bağlar, arayüzü yalnızca 127.0.0.1 üzerinde yayınlar, HTTPS için önüne Caddy koyar, yönetici hesabını gizlice oluşturur ve kurulumu nasıl yedekleyeceğinizi, güncelleyeceğinizi ve sorunlarını nasıl gidereceğinizi gösterir.
Ön koşullar
- Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12 veya Debian 13 çalıştıran bir sunucu.
sudoyetkisi olan, root olmayan bir kullanıcı; Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.- Compose eklentisiyle Docker Engine: Ubuntu'ya Docker kurulumu veya Debian'a Docker kurulumu rehberini izleyin.
- Sunucuyu gösteren bir A (isteğe bağlı olarak AAAA) kaydı olan bir alan adı veya alt alan adı, örneğin
chat.example.com, ve Caddy ile reverse proxy rehberindeki gibi kurulmuş Caddy. - İsteğe bağlı: Ollama kurulumu rehberiyle sunucuya kurulmuş Ollama. Henüz yoksa bu rehber Ollama'yı sizin için Docker'da çalıştırabilir.
| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Yayınlanmamış | Open WebUI için 2 vCPU, artı modellerinizin ihtiyacı |
| RAM | Yayınlanmamış | Open WebUI için 4 GB, artı Ollama'da çalıştırdığınız modellerin belleği |
| Disk | Yayınlanmamış (standart imaj yaklaşık 1,66 GB) | 20 GB boş alan, artı modeller için yer |
Open WebUI hızlı başlangıç belgesi en düşük CPU veya bellek değeri yayınlamaz; önerilen değerler ölçüm sonucu değil, temkinli bir başlangıç noktasıdır. Model çıkarımı Ollama'da yapılır; bu yüzden sunucuyu esas olarak modellerinize göre boyutlandırın. Model belleği Ollama kurulumu rehberinde anlatılır.
Adım 1 — Open WebUI'ın Ollama'ya nasıl ulaşacağını seçin
Open WebUI örnekleri, konteynerin sunucudaki servislere ulaşabilmesi için --add-host=host.docker.internal:host-gateway kullanır. Bu ad sunucunun loopback arayüzüne değil, Docker köprü ağındaki adresine çözülür. Ollama ise varsayılan olarak 127.0.0.1:11434 adresinde dinler ve bu nedenle köprü adresinden gelen bağlantıları reddeder. Open WebUI'ın sorun giderme sayfası OLLAMA_HOST=0.0.0.0 ayarını önerir; ancak bu, kimlik doğrulaması olmayan bir API'yi sunucunun tüm adreslerinde açar. Bunun yerine şu iki güvenli kurulumdan birini kullanın:
| Kurulum | Ne zaman kullanılır | Bağlantı nasıl çalışır |
|---|---|---|
| A: Aynı Compose projesinde Ollama | Yeni bir sunucu ya da Ollama'yı Docker'da çalıştırmak size uygunsa | Open WebUI özel bir Docker ağı üzerinden http://ollama:11434 ile konuşur; Ollama'nın portu hiç yayınlanmaz |
| B: Sunucuda kurulu Ollama | Ollama zaten bir systemd servisi olarak kuruluysa | Open WebUI host ağını kullanır, 127.0.0.1:3000 üzerinde dinler ve Ollama'ya http://127.0.0.1:11434 ile ulaşır |
İki kurulum da Ollama'nın API'sini gizli tutar ve Open WebUI'ı yalnızca loopback adresinde yayınlar; böylece dışarıya açık tek giriş noktası Caddy olur.
Adım 2 — Proje klasörünü ve gizli anahtarları oluşturun
Proje için bir klasör ve sabit bir gizli anahtar içeren bir .env dosyası oluşturun. Open WebUI giriş oturumlarını WEBUI_SECRET_KEY ile imzalar; sabit bir değer, konteyner yeniden oluşturulduğunda kullanıcıların oturumunun açık kalmasını sağlar.
sudo mkdir -p /opt/open-webui && sudo chown $USER:$USER /opt/open-webui
cd /opt/open-webui
echo "WEBUI_SECRET_KEY=$(openssl rand -hex 32)" > .env
echo "WEBUI_URL=https://chat.example.com" >> .env
chmod 600 .envchat.example.com yerine kendi alan adınızı yazın. WEBUI_URL, Open WebUI'a herkese açık adresini bildirir; belgeler bunun ilk başlatmadan önce ayarlanmasını ister.
Adım 3 — Compose dosyasını yazın
Seçtiğiniz kurulum için /opt/open-webui/compose.yaml dosyasını oluşturun. İki seçenek de standart ghcr.io/open-webui/open-webui:main imajını kullanır ve tüm sohbetleri, kullanıcıları ve ayarları open-webui adlı bir volume'da saklar.
A: Compose içinde Ollama
services:
ollama:
image: ollama/ollama
volumes:
- ollama:/root/.ollama
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
depends_on:
- ollama
ports:
- "127.0.0.1:3000:8080"
environment:
OLLAMA_BASE_URL: "http://ollama:11434"
WEBUI_SECRET_KEY: "${WEBUI_SECRET_KEY}"
WEBUI_URL: "${WEBUI_URL}"
CORS_ALLOW_ORIGIN: "${WEBUI_URL};http://localhost:3000"
volumes:
- open-webui:/app/backend/data
restart: unless-stopped
volumes:
ollama:
name: ollama
open-webui:
name: open-webuiB: Sunucudaki Ollama
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
network_mode: host
environment:
HOST: "127.0.0.1"
PORT: "3000"
OLLAMA_BASE_URL: "http://127.0.0.1:11434"
WEBUI_SECRET_KEY: "${WEBUI_SECRET_KEY}"
WEBUI_URL: "${WEBUI_URL}"
CORS_ALLOW_ORIGIN: "${WEBUI_URL};http://localhost:3000"
volumes:
- open-webui:/app/backend/data
restart: unless-stopped
volumes:
open-webui:
name: open-webuiA seçeneğinde Ollama'nın ports girdisi yoktur; bu yüzden yalnızca bu projedeki konteynerler ona ulaşabilir. B seçeneğinde network_mode: host, sunucunun ağını konteynerle paylaşır. Open WebUI'ın başlatma betiği HOST ve PORT değişkenlerini okur (varsayılanlar 0.0.0.0 ve 8080); bu iki satır onu tüm adresler yerine 127.0.0.1:3000 adresine bağlar. Host ağında ports bölümü yok sayılır; B seçeneğinde bu bölümün olmamasının nedeni budur. CORS_ALLOW_ORIGIN, kullanıcıların arayüzü açtığı tüm adresleri listeler: HTTPS alan adınız ve 5. adımda kullanılan SSH tüneli.
Sunucuda NVIDIA GPU varsa ve A seçeneğini kullanıyorsanız NVIDIA sürücüsünü ve NVIDIA Container Toolkit'i kurun (vLLM kurulumu rehberinin 1. ve 2. adımları), ardından şu bloğu ollama: altına, image: ile aynı girinti düzeyinde ekleyerek ollama servisine GPU erişimi verin:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]Adım 4 — Yığını başlatın ve bir model yükleyin
Konteynerleri başlatın ve ilk açılışı izleyin; Open WebUI ilk çalıştırmada veritabanını ve imajla gelen modelleri hazırlar, bu birkaç dakika sürebilir:
cd /opt/open-webui
docker compose up -d
docker compose ps
docker compose logs -f open-webuiLog izlemeyi bırakmak için Ctrl+C tuşlarına basın. Arayüzün loopback üzerinde yanıt verdiğini kontrol edin:
curl -I http://127.0.0.1:3000HTTP/1.1 200 OK görmelisiniz. Şimdi Ollama'da en az bir model olduğundan emin olun. A seçeneğinde modeli Ollama konteyneri içinde indirin; B seçeneğinde sunucudaki ollama komutunu kullanın:
docker compose exec ollama ollama pull llama3.2B seçeneğinde bunun yerine ollama pull llama3.2 çalıştırın ve curl http://127.0.0.1:11434/api/tags çıktısında modelin listelendiğini kontrol edin.
Adım 5 — Yönetici hesabını gizlice oluşturun
Yeni bir kurulumda kayıt olan ilk hesap yönetici olur. Open WebUI güvenlik belgeleri bu kurulumun, örnek internetten erişilebilir hale gelmeden önce özel bir ağ, VPN veya yerel bir port üzerinden tamamlanmasını önerir. Open WebUI yalnızca 127.0.0.1 üzerinde dinlediği için kendi bilgisayarınızdan bir SSH tüneli kullanın:
ssh -L 3000:127.0.0.1:3000 user@203.0.113.10Oturumu açık tutun, tarayıcıda http://localhost:3000 adresine gidin ve güçlü bir parolayla hesabınızı oluşturun. Bu hesap yöneticidir. İlk kayıttan sonra kayıt otomatik olarak kapanır; yönetici panelinin ayarlarını açın ve Enable New Sign Ups seçeneğinin kapalı olduğunu doğrulayın. Kaydı daha sonra açarsanız yeni hesaplar varsayılan olarak pending rolünü alır ve bir şey kullanabilmeleri için sizin onayınızı bekler.
Tünel açıkken model seçicisinden bir model seçin ve bir deneme mesajı gönderin. Liste boşsa Admin Panel bölümünü, ardından Settings ve Connections sekmelerini açın ve Ollama API adresinin http://ollama:11434 (A seçeneği) veya http://127.0.0.1:11434 (B seçeneği) olduğunu kontrol edin.
Adım 6 — Open WebUI'ı Caddy ile HTTPS üzerinden yayınlayın
/etc/caddy/Caddyfile dosyasına alan adınız için bir site bloğu ekleyin. Caddy sertifikayı kendiliğinden alır ve Open WebUI'ın canlı güncellemeler için kullandığı WebSocket bağlantılarını ek ayar gerektirmeden iletir:
chat.example.com {
reverse_proxy 127.0.0.1:3000
}Caddy'yi yeniden yükleyin ve güvenlik duvarının yalnızca SSH ve web trafiğine izin verdiğinden emin olun:
sudo systemctl reload caddy
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbosehttps://chat.example.com adresini açın, yönetici hesabınızla giriş yapın ve bir mesaj gönderin. Caddy yerine Nginx veya Traefik kullanıyorsanız Nginx ve Certbot veya Traefik rehberini izleyin ve WebSocket için Upgrade ve Connection başlıklarının iletildiğinden emin olun.
Yedekleme ve geri yükleme
open-webui volume'u veritabanını (sohbetler, kullanıcılar, ayarlar), yüklenen dosyaları ve üretilen içeriği tutar. Bunu compose.yaml ve .env ile birlikte yedekleyin; aynı WEBUI_SECRET_KEY olmadan geri yüklenen oturumlar geçersiz olur. Veritabanının tutarlı olması için önce konteyneri durdurun:
sudo mkdir -p /opt/backups && sudo chown $USER:$USER /opt/backups
cd /opt/open-webui
docker compose stop open-webui
docker run --rm -v open-webui:/data -v /opt/backups:/backup alpine tar czf /backup/openwebui-$(date +%F).tar.gz /data
docker compose start open-webui
cp compose.yaml .env /opt/backups/ollama volume'undaki modeller (A seçeneği) yeniden indirilebilir; bu yüzden yedeklenmeleri gerekmez. Geri yüklemek için konteyneri durdurun, volume'u boşaltın ve arşivi açın. Komut volume'un mevcut içeriğini siler; önce dosya adını kontrol edin:
cd /opt/open-webui
docker compose stop open-webui
docker run --rm -v open-webui:/data -v /opt/backups:/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/openwebui-YYYY-MM-DD.tar.gz -C /"
docker compose start open-webuiYedekleri sunucunun dışına da kopyalayın, örneğin rsync ile veya bir nesne depolama alanına.
Open WebUI'ı güncelleme
Open WebUI sürümler sayfasındaki sürüm notlarını okuyun ve önce yedek alın: veritabanı geçişleri (migration) açılışta otomatik çalışır ve tek yönlüdür; eski bir sürüm geçiş yapılmış bir veritabanıyla çalışmayabilir. Ardından yeni imajları çekin ve konteynerleri yeniden oluşturun:
cd /opt/open-webui
docker compose pull
docker compose up -d
docker image pruneBir sürüm etiketi sabitlediyseniz docker compose pull öncesinde onu compose.yaml içinde değiştirin. Şema değişikliğinden sonra geri dönmek için güncellemeden önce alınan yedeği geri yükleyin ve eski etiketi sabitleyin. Güncellemeden sonra arayüz bozuk görünürse tarayıcı önbelleğini temizleyin.
Sorun giderme
Model seçicisinde hiç model görünmüyor
Open WebUI Ollama'ya ulaşamıyor ya da Ollama'da model yok. A seçeneğinde docker compose exec ollama ollama list, B seçeneğinde sunucuda systemctl status ollama ve curl http://127.0.0.1:11434/api/tags çalıştırın. Admin Panel, Settings, Connections altındaki Ollama adresini kontrol edin. Ollama 127.0.0.1 üzerinde dinlerken host.docker.internal içeren bir adres çalışmaz; 1. adımdaki kurulumlardan birini kullanın.
Loglarda kabul edilmeyen bir origin görünüyor
Tarayıcı Open WebUI'ı CORS_ALLOW_ORIGIN içinde bulunmayan bir adresten açtı ve WebSocket bağlantıları reddediliyor. Kullanıcıların kullandığı tüm adresleri noktalı virgülle ayırarak ekleyin, ardından docker compose up -d çalıştırın.
Bir ortam değişkenini değiştirmek etki etmiyor
ENABLE_SIGNUP, DEFAULT_USER_ROLE ve WEBUI_URL dahil pek çok ayar kalıcıdır: ilk başlatmadan sonra veritabanında saklanan değer ortam değişkenine üstün gelir. Bunları yönetici panelinden değiştirin ya da ortam değişkenlerinin öncelik kazanması için bir kez ENABLE_PERSISTENT_CONFIG=false ile başlatın.
Konteyneri yeniden oluşturduktan sonra herkesin oturumu kapandı
WEBUI_SECRET_KEY eksikti veya değişti. .env dosyasının anahtarı içerdiğinden ve compose.yaml dosyasının onu konteynere ilettiğinden emin olun, ardından yeniden giriş yapın.
Caddy 502 Bad Gateway döndürüyor
Open WebUI henüz 127.0.0.1:3000 üzerinde dinlemiyor. docker compose ps ve docker compose logs open-webui çalıştırın; ilk açılış birkaç dakika sürebilir. B seçeneğinde HOST ve PORT değerlerinin ayarlı olduğunu ve 3000 portunu başka bir şeyin kullanmadığını (sudo ss -ltnp | grep 3000) kontrol edin.
Sonraki adımlar
- Modeller ve bellek hakkında daha fazlasını Ollama kurulumu rehberinde öğrenin.
- llama.cpp sunucusu veya vLLM gibi OpenAI uyumlu bir arka ucu ek bağlantı olarak ekleyin.
- AnythingLLM ile belge sohbeti ve ajanlar oluşturun.
- Özel bir sohbet arayüzü için sunucuları Open WebUI hosting sayfasında karşılaştırın.
- Tüm ayarlar için https://docs.openwebui.com adresindeki resmi belgeleri okuyun.
Sık sorulan sorular
Docker'daki Open WebUI neden sunucudaki Ollama'ya ulaşamıyor?
Ollama varsayılan olarak 127.0.0.1 adresinde dinler; host.docker.internal ise sunucunun loopback arayüzünü değil, Docker köprü ağındaki adresini gösterir. Ollama'yı tüm adreslerde açmak yerine bu rehberdeki gibi Ollama'yı aynı Compose projesinde çalıştırın ya da Open WebUI'ı host ağıyla çalıştırın.
Kim yönetici olur?
Yeni bir kurulumda oluşturulan ilk hesap yönetici yapılır ve ardından kayıt otomatik olarak kapanır. Bu hesabı siteyi yayınlamadan önce bir SSH tüneli üzerinden oluşturun ya da ilk başlatmadan önce WEBUI_ADMIN_EMAIL ve WEBUI_ADMIN_PASSWORD değişkenlerini ayarlayın.
Güncellemeden sonra neden herkesin oturumu kapanıyor?
Open WebUI oturumları WEBUI_SECRET_KEY ile imzalar. Anahtar ayarlı değilse konteyner yeniden oluşturulduğunda yeni bir anahtar üretilebilir ve tüm oturumlar sona erer. Bu rehberdeki gibi .env içinde sabit bir anahtar belirleyin ve saklayın.
Open WebUI, Ollama dışında OpenAI uyumlu API'leri de kullanabilir mi?
Evet. Ollama'ya ek olarak vLLM, llama.cpp sunucusu veya LocalAI gibi OpenAI uyumlu uç noktaları yönetici ayarlarındaki Connections bölümünden ekleyebilirsiniz.
Hangi imaj etiketini kullanmalıyım?
Belgeler standart imaj olarak ghcr.io/open-webui/open-webui:main kullanır ve üretim için vX.Y.Z gibi sabitlenmiş sürüm etiketlerini önerir. Sabit etiketler hiç değişmez; güncelleme yalnızca etiketi siz değiştirdiğinizde olur.
Kaynaklar
- docs.openwebui.com/getting-started/quick-start
- docs.openwebui.com/getting-started/updating
- docs.openwebui.com/getting-started/advanced-topics/hardening
- docs.openwebui.com/reference/env-configuration
- docs.openwebui.com/troubleshooting/connection-error
- docs.openwebui.com/security/accepted-risks/first-run-bootstrap-window
- docs.openwebui.com/license
- raw.githubusercontent.com/open-webui/open-webui/main/backend/start.sh
- raw.githubusercontent.com/open-webui/open-webui/main/docker-compose…
- docs.ollama.com/faq
- docs.ollama.com/docker
- docs.docker.com/compose/how-tos/gpu-support