# 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.

Zorluk: Orta\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

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.
- `sudo` yetkisi olan, root olmayan bir kullanıcı; [Yeni bir Linux sunucusunu güvenli hale getirin](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) rehberlerine bakın.
- Compose eklentisiyle Docker Engine: [Ubuntu'ya Docker kurulumu](/guides/install-docker-ubuntu) veya [Debian'a Docker kurulumu](/guides/install-docker-debian) 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](/guides/caddy-reverse-proxy) rehberindeki gibi kurulmuş Caddy.
- İsteğe bağlı: [Ollama kurulumu](/guides/install-ollama) 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](/guides/install-ollama) 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.

```bash
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 .env
```

`chat.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**

```yaml
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-webui
```
**B: Sunucudaki Ollama**

```yaml
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-webui
```

A 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](/guides/install-vllm) 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:

```yaml
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
```

> **İpucu**
>
> Üretim ortamında `:main` yerine `ghcr.io/open-webui/open-webui:vX.Y.Z` gibi sabitlenmiş bir sürüm etiketi kullanın. Güncel sürümü GitHub'daki Open WebUI sürümler sayfasından alın. Sabit etiketler hiç değişmez; konteyner yalnızca etiketi siz değiştirdiğinizde güncellenir.

## 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:

```bash
cd /opt/open-webui
docker compose up -d
docker compose ps
docker compose logs -f open-webui
```

Log izlemeyi bırakmak için `Ctrl+C` tuşlarına basın. Arayüzün loopback üzerinde yanıt verdiğini kontrol edin:

```bash
curl -I http://127.0.0.1:3000
```

`HTTP/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:

```bash
docker compose exec ollama ollama pull llama3.2
```

B 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:

```bash
ssh -L 3000:127.0.0.1:3000 user@203.0.113.10
```

Oturumu 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.

> **İpucu**
>
> Otomatik kurulumlarda `WEBUI_ADMIN_EMAIL` ve `WEBUI_ADMIN_PASSWORD` değişkenlerini `.env` içinde tanımlayıp ilk başlatmadan önce konteynere iletebilirsiniz. Open WebUI bu durumda yöneticiyi açılışta oluşturur ve diğer kayıtları reddeder. Bu değişkenler yalnızca veritabanında hiç kullanıcı yokken etkilidir.

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:

```caddyfile
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:

```bash
sudo systemctl reload caddy
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
```

`https://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](/guides/nginx-reverse-proxy-certbot) veya [Traefik](/guides/traefik-reverse-proxy) rehberini izleyin ve WebSocket için `Upgrade` ve `Connection` başlıklarının iletildiğinden emin olun.

> **Uyarı**
>
> Open WebUI'ı `127.0.0.1` olmadan `-p 3000:8080` veya `"3000:8080"` ile yayınlamayın. Docker'ın yayınladığı portlar ufw'yi atlar; örnek, siz yönetici hesabını oluşturmadan önce düz HTTP üzerinden internetten erişilebilir hale gelir.

## 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:

```bash
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:

```bash
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-webui
```

Yedekleri 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:

```bash
cd /opt/open-webui
docker compose pull
docker compose up -d
docker image prune
```

Bir 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](/guides/install-ollama) rehberinde öğrenin.
- [llama.cpp sunucusu](/guides/llama-cpp-server) veya [vLLM](/guides/install-vllm) gibi OpenAI uyumlu bir arka ucu ek bağlantı olarak ekleyin.
- [AnythingLLM](/guides/install-anythingllm) ile belge sohbeti ve ajanlar oluşturun.
- Özel bir sohbet arayüzü için sunucuları [Open WebUI hosting](/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.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/open-webui-ollama>\
Son güncelleme: 2026-10-09
