Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
Ubuntu 24.04 Self-Hosted AI Stack: Docker, Portainer, Ollama, Open WebUI ve n8n Kurulumu
Self-Hosted AI, Ubuntu, Docker ve n8n

Ubuntu 24.04 VPS Üzerinde Komple Self-Hosted AI Stack: Docker + Portainer + Ollama + Open WebUI + n8n A’dan Z’ye Resimli Rehber

Bu büyük rehberde Ubuntu 22.04’ten 24.04 LTS’e yükselttiğimiz gerçek VPS üzerinde Docker + Portainer, Ollama qwen3:4b, Open WebUI ve n8n AI Agent katmanlarını tek bir güvenli mimaride birleştiriyoruz. Kurulum yalnız başarı ekranlarını değil; exit code 141, Portainer timeout, Cloudflare 521, Certbot timeout, Open WebUI health bekleme, Ollama credential ve eski HTTP Tool hatalarını da gerçek çözümleriyle içerir.

Ubuntu 24.04Self Hosted AIDockerDocker ComposePortainerOllamaqwen3:4bOpen WebUIn8nAI AgentNginxLet’s EncryptLocal LLMQwen3RAGQdrantEKA Sunucu
Ubuntu / Docker / Portainer / Ollama / Open WebUI / n8n
Ubuntu 24.04.4 LTS
  ↓
Docker + eka-ai
  ├─ Portainer CE LTS
  ├─ Ollama 0.32.6 → qwen3:4b
  ├─ Open WebUI 0.11.0
  └─ n8n 2.33.7 → AI Agent + Memory + Tools
  ↓
Nginx + Let’s Encrypt + EKA Sunucu domainleri
StackSelf-Hosted AIModelqwen3:4b
24gerçek WebP ekranı
3TR · EN · DE içerik
443public HTTPS
127.0.0.1AI service loopback
01Ubuntu 24.04 + Docker temeli
02Portainer + Nginx + SSL
03Ollama + Qwen3 + Open WebUI
04n8n AI Agent + Tool + sonraki RAG
00
İçindekiler

Komple self-hosted AI stack kurulum adımları

  1. 01Ubuntu VPS üzerinde kurduğumuz self-hosted AI stack tam olarak nedir?
  2. 02CPU, RAM, disk ve GPU durumunu kurulumdan önce planlayın
  3. 03Ubuntu 22.04 LTS sistemini güvenli biçimde Ubuntu 24.04 LTS’e yükseltin
  4. 04Docker Engine ve Docker Compose’u resmî APT deposundan kurun
  5. 05Portainer CE LTS’i kalıcı volume ile kurun ve 9443 portunu localhost’a alın
  6. 06Nginx reverse proxy, Cloudflare ve Let’s Encrypt katmanını kurun
  7. 07Ollama, Open WebUI ve n8n için ortak eka-ai Docker ağını oluşturun
  8. 08Ollama’yı Docker ile kurun ve API’yi yalnız localhost 11434 üzerinde yayınlayın
  9. 09qwen3:4b modelini indirin ve gerçek inference testi yapın
  10. 10Ollama 11434 portunu doğrudan public internete açmayın
  11. 11Open WebUI’ı Ollama’ya bağlayın ve ilk health süresini doğru yorumlayın
  12. 12openwebui.ekasunucu.com alan adını Nginx ve SSL ile yayınlayın
  13. 13n8n’i Docker ile kurun, kalıcı veriyi ve encryption key’i hazırlayın
  14. 14n8n.ekasunucu.com için reverse proxy, WebSocket ve SSL ayarlarını tamamlayın
  15. 15n8n AI Agent için Ollama credential Base URL’sini http://ollama:11434 yapın
  16. 16Chat Trigger + AI Agent + qwen3:4b + Simple Memory zincirini kurun
  17. 17Calculator ve HTTP Request Tool ile agentın yalnız sohbet etmediğini doğrulayın
  18. 18Tüm stack’i reboot, health, port, volume ve SSL kontrolleriyle doğrulayın
  19. 19Sonraki aşama: Qdrant + embedding + RAG ile kendi belgelerinizi AI Agent’a bağlayın
01
Komple mimari

Ubuntu VPS üzerinde kurduğumuz self-hosted AI stack tam olarak nedir?

Bu pillar rehber, tek bir gerçek Ubuntu VPS üzerinde baştan sona kurduğumuz altyapının tamamını bir araya getirir: Ubuntu 24.04 LTS, Docker Engine + Compose, Portainer, Ollama, qwen3:4b, Open WebUI, n8n, Nginx ve Let’s Encrypt. Uygulama servisleri ayrı Docker containerlarında çalışır ve eka-ai isimli private bridge ağında birbirleriyle konuşur.

Public internete doğrudan yalnız Nginx üzerinden 80/443 açılır. Portainer 9443, Ollama 11434, Open WebUI 3000 ve n8n 5678 host tarafında 127.0.0.1 ile sınırlandırılır. Böylece yönetim ve AI servisleri doğrudan internete açık olmaz; domain bazlı erişim reverse proxy ve TLS üzerinden sağlanır.

Komut 1
Internet :443
  ↓
Nginx + Let's Encrypt
  ├─ portainer.ekasunucu.com → 127.0.0.1:9443
  ├─ openwebui.ekasunucu.com → 127.0.0.1:3000
  └─ n8n.ekasunucu.com → 127.0.0.1:5678

Docker eka-ai
  ├─ Portainer
  ├─ Ollama → qwen3:4b
  ├─ Open WebUI → ollama:11434
  └─ n8n AI Agent → ollama:11434
02
VPS kaynakları

CPU, RAM, disk ve GPU durumunu kurulumdan önce planlayın

Gerçek test VPS’imiz 8 vCPU, yaklaşık 31 GiB RAM ve 99 GB root disk ile çalıştı. CPU AMD Ryzen 9 7950X olarak görünüyordu; dedicated NVIDIA veya ROCm GPU passthrough bulunmadığı için Ollama CPU modunda kullanıldı. qwen3:4b modeli bu ortamda işlevsel şekilde çalıştı fakat cevap süresi GPU’lu bir sisteme göre daha uzundu.

Kullanacağınız model boyutu büyüdükçe RAM, disk ve gerekirse VRAM ihtiyacı artar. Open WebUI ilk açılışta embedding/cache dosyaları da indirebildiği için yalnız LLM model boyutunu değil Docker image, volume, execution ve cache alanlarını da hesaba katın.

Komut 1
lscpu | grep -E 'Model name|CPU\(s\)'
free -h
df -h /
nvidia-smi || true
ls -la /dev/dri 2>/dev/null || true
03
İşletim sistemi

Ubuntu 22.04 LTS sistemini güvenli biçimde Ubuntu 24.04 LTS’e yükseltin

Mevcut VPS Ubuntu 22.04 kullanıyorsa önce normal paket güncellemelerini tamamlayıp yedek/snapshot alın. Ubuntu Server için ana sürüm yükseltme aracı do-release-upgrade komutudur ve süreç interaktiftir. Gerçek yükseltmemizde bağlantı kopmasına karşı recovery SSH 1022 portu, paket planı, openssh-server yapılandırma sorusu, obsolete paket temizliği ve final reboot adımlarını gördük.

Yükseltme tamamlanmış sayılmadan önce yeniden başlatın ve /etc/os-release, kernel, apt durumu ve systemd failed servislerini kontrol edin. Bizim final testimiz Ubuntu 24.04.4 LTS, Noble ve 6.8.0-137-generic kernel ile tamamlandı.

Komut 1
apt update
apt full-upgrade -y
reboot
Komut 2
do-release-upgrade
Komut 3
cat /etc/os-release
uname -r
apt update
systemctl --failed
04
Container altyapısı

Docker Engine ve Docker Compose’u resmî APT deposundan kurun

Docker’ı Ubuntu’nun rastgele üçüncü taraf paketlerinden veya eski scriptlerden değil resmî Docker APT deposundan kurmak sürüm ve Compose plugin yönetimini daha öngörülebilir hale getirir. Gerçek testte Docker Engine 29.7.2 ve Docker Compose v5.4.0 kullanıldı; bu değerler yalnız test anındaki sürümlerdir.

İlk otomasyon scriptimiz set -o pipefail ile apt-cache policy çıktısını head komutuna bağladığı için SIGPIPE ve exit code 141 ile sonlandı. Kurulum bozuk değildi; pipeline davranışı scripti durdurmuştu. head yerine sed ile sınırlandırınca akış sorunsuz devam etti. Son kontrol için hello-world containerını çalıştırdık.

Komut 1
docker --version
docker compose version
systemctl is-active docker
Komut 2
docker run --rm hello-world
05
Container yönetimi

Portainer CE LTS’i kalıcı volume ile kurun ve 9443 portunu localhost’a alın

Portainer için portainer_data named volume oluşturup Docker socket’i container içine bağladık. Portainer yönetim ekranı container içinde HTTPS 9443 kullanır. İlk kurulum sırasında güvenlik zaman aşımı ve setup token akışıyla karşılaştık; container yeniden başlatılıp admin hesabı tamamlandı.

Üretim yapısında 9443 portunu doğrudan 0.0.0.0 üzerinden yayınlamak yerine host tarafında 127.0.0.1:9443 olarak sınırlandırdık. Dış kullanıcı yalnız portainer.ekasunucu.com üzerinden Nginx + HTTPS ile ulaşır.

Komut 1
docker volume create portainer_data
Komut 2
docker run -d --name portainer --restart=always -p 127.0.0.1:9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts
Komut 3
docker ps --filter name='^/portainer$'
06
Domain ve TLS

Nginx reverse proxy, Cloudflare ve Let’s Encrypt katmanını kurun

Portainer domainini ilk açtığımızda reverse proxy henüz hazır olmadığı için Cloudflare 521 hatası aldık. Nginx site tanımı oluşturulup upstream 127.0.0.1:9443’e bağlandıktan sonra origin erişimi düzeldi. Sertifika aşamasında Certbot snap kurulumu core24 indirme timeoutu verdi; ağ erişimi düzeldikten sonra yeniden denemede sertifika başarıyla oluşturuldu.

Aynı yaklaşımı Open WebUI ve n8n için de kullandık. WebSocket kullanan uygulamalarda Upgrade ve Connection başlıklarını proxy konfigürasyonunda koruyun. Sertifikaları kurduktan sonra certbot renew --dry-run ile otomatik yenileme akışını test edin.

Komut 1
nginx -t
systemctl reload nginx
Komut 2
certbot --nginx -d portainer.ekasunucu.com
Komut 3
certbot renew --dry-run
07
Docker servis ağı

Ollama, Open WebUI ve n8n için ortak eka-ai Docker ağını oluşturun

Containerlar birbirlerine host localhost adresiyle değil Docker DNS isimleriyle ulaşmalıdır. Bu nedenle eka-ai adında user-defined bridge network oluşturduk. Ollama container adı ollama olduğu için Open WebUI ve n8n içinden http://ollama:11434 adresi kullanılabilir.

Aynı zamanda ollama_data, openwebui_data ve n8n_data gibi named volume’lar container yaşam döngüsünden bağımsız kalıcı veri sağlar. Image güncellemesi veya container yeniden oluşturma öncesinde bu volume’ların yedeğini planlayın.

Komut 1
docker network create eka-ai 2>/dev/null || true
Komut 2
docker volume create ollama_data
docker volume create openwebui_data
docker volume create n8n_data
Komut 3
docker network inspect eka-ai
08
Yerel LLM runtime

Ollama’yı Docker ile kurun ve API’yi yalnız localhost 11434 üzerinde yayınlayın

Ollama image’ını Docker üzerinden çalıştırdık ve /root/.ollama verisini ollama_data volume’ına bağladık. Test VPS’inde GPU passthrough algılanmadığı için Ollama CPU backend ile başladı. Container içindeki servis 0.0.0.0:11434 dinlese de host mapping 127.0.0.1:11434:11434 olduğu için public internete açılmadı.

İlk health doğrulamasında /api/tags HTTP 200 döndürdü. Model listesi başta boştu; bu servis problemleri ile model indirme problemlerini birbirinden ayırmak için önemli bir kontrol noktasıdır.

Komut 1
docker pull ollama/ollama:latest
Komut 2
docker run -d --name ollama --restart=always --network eka-ai -p 127.0.0.1:11434:11434 -v ollama_data:/root/.ollama ollama/ollama:latest
Komut 3
curl -sS http://127.0.0.1:11434/api/tags
09
Model kurulumu

qwen3:4b modelini indirin ve gerçek inference testi yapın

Gerçek kurulumda qwen3:4b modeli yaklaşık 2.5 GB olarak indirildi. Ollama model metadata çıktısında 4.0B parametre sınıfı, Q4_K_M quantization ve tools/thinking yetenekleri görüldü. CPU ortamında modelin yüklenmiş belleği yaklaşık 3 GiB seviyesine çıktı.

Sadece ollama list görmek yeterli değildir. /api/chat ile gerçek bir prompt göndererek inference zincirini test ettik ve EKA-OLLAMA-TEST-BASARILI yanıtını aldık. Bu test daha sonra Open WebUI ve n8n sorunlarını model runtime probleminden ayırmamızı sağladı.

Komut 1
docker exec ollama ollama pull qwen3:4b
Komut 2
docker exec ollama ollama list
Komut 3
curl -sS http://127.0.0.1:11434/api/chat -H 'Content-Type: application/json' -d '{"model":"qwen3:4b","messages":[{"role":"user","content":"Sadece EKA-OLLAMA-TEST-BASARILI yaz"}],"stream":false}'
10
API güvenliği

Ollama 11434 portunu doğrudan public internete açmayın

Ollama’nın varsayılan yerel API’si tek başına public internet erişimi için tasarlanmış bir kullanıcı kimlik doğrulama katmanı değildir. Bu yüzden test mimarisinde 11434 host portu yalnız 127.0.0.1 üzerinde dinledi. Open WebUI ve n8n ise aynı Docker ağı üzerinden container DNS’iyle Ollama’ya ulaştı.

Harici makinelere Ollama API vermeniz gerekiyorsa doğrudan 11434 açmak yerine kimlik doğrulama, TLS, reverse proxy, VPN veya private network tasarlayın. ss çıktısında 11434’ün 0.0.0.0 yerine 127.0.0.1 üzerinde olduğunu doğrulayın.

Komut 1
ss -lntp | grep 11434
Komut 2
docker network inspect eka-ai --format '{{range .Containers}}{{.Name}} {{.IPv4Address}}{{println}}{{end}}'
11
Chat arayüzü

Open WebUI’ı Ollama’ya bağlayın ve ilk health süresini doğru yorumlayın

Open WebUI containerını openwebui_data kalıcı volume, sabit WEBUI_SECRET_KEY ve eka-ai ağıyla başlattık. Host portu 127.0.0.1:3000 olarak sınırlandırıldı ve Ollama bağlantısı container içinden http://ollama:11434 adresine yönlendirildi.

İlk açılışta /health hemen 200 dönmedi; container veritabanı migrationları yapıyor ve sentence-transformers/all-MiniLM-L6-v2 dosyalarını Hugging Face üzerinden indiriyordu. Yaklaşık birkaç dakikalık ilk hazırlık sonunda health 200 ve container healthy oldu. Bu nedenle ilk startup sırasında kısa health timeoutlarını doğrudan başarısız kurulum saymayın.

Komut 1
docker run -d --name open-webui --restart=always --network eka-ai -p 127.0.0.1:3000:8080 -e OLLAMA_BASE_URL=http://ollama:11434 -v openwebui_data:/app/backend/data ghcr.io/open-webui/open-webui:main
Komut 2
curl -sS http://127.0.0.1:3000/health
12
Open WebUI HTTPS

openwebui.ekasunucu.com alan adını Nginx ve SSL ile yayınlayın

Open WebUI hazır olduktan sonra Nginx reverse proxy ile openwebui.ekasunucu.com alan adını localhost 3000 upstream’ine bağladık. WebSocket başlıkları korundu ve Let’s Encrypt sertifikası başarıyla deploy edildi. Origin HTTPS ve domain HTTPS testleri 200 döndürdü.

İlk oluşturulan Open WebUI hesabı administrator yetkisi aldı ve qwen3:4b modelinin panelde görünmesiyle Ollama bağlantısı görsel olarak da doğrulandı. Bu noktada tarayıcı tabanlı tamamen yerel model arayüzü hazırdır.

Komut 1
nginx -t
systemctl reload nginx
Komut 2
certbot --nginx -d openwebui.ekasunucu.com
Komut 3
curl -I https://openwebui.ekasunucu.com
13
Otomasyon katmanı

n8n’i Docker ile kurun, kalıcı veriyi ve encryption key’i hazırlayın

n8n için n8n_data volume ve sabit N8N_ENCRYPTION_KEY kullandık. Container eka-ai ağına bağlandı ve hostta yalnız 127.0.0.1:5678 üzerinden yayınlandı. Reverse proxy için host, protocol, editor base URL, webhook/proxy ve timezone ayarlarını environment dosyasında tuttuk.

Gerçek testte n8n 2.33.7 çalıştı ve /healthz endpointi status ok döndürdü. Başlangıç loglarında Python task runner ve gelecekteki bazı environment varsayılanlarıyla ilgili uyarılar vardı; kullandığımız Chat Trigger + AI Agent akışını engellemedi.

Komut 1
docker volume create n8n_data
Komut 2
openssl rand -hex 32
Komut 3
docker run -d --name n8n --restart=always --network eka-ai --env-file /root/n8n.env -p 127.0.0.1:5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n:latest
Komut 4
curl -sS http://127.0.0.1:5678/healthz
14
n8n HTTPS

n8n.ekasunucu.com için reverse proxy, WebSocket ve SSL ayarlarını tamamlayın

n8n editörü doğrudan 5678 üzerinden public açılmadı. Nginx n8n.ekasunucu.com domainini localhost:5678 upstream’ine proxy etti ve WebSocket/forwarded başlıkları eklendi. Let’s Encrypt sertifikası kurulduktan sonra domain HTTPS 200 ile doğrulandı.

5678, 11434, 3000 ve 9443 gibi servis portlarının yalnız loopback üzerinde kaldığını ss ile kontrol etmek mimariyi gerçekten güvenli yapan adımdır. Public olarak yalnız Nginx 80/443 dinlemelidir.

Komut 1
certbot --nginx -d n8n.ekasunucu.com
Komut 2
ss -lntp | grep -E ':80 |:443 |:9443 |:11434 |:3000 |:5678 '
15
Container DNS

n8n AI Agent için Ollama credential Base URL’sini http://ollama:11434 yapın

n8n ve Ollama ayrı containerlarda olduğundan n8n içindeki localhost:11434 Ollama’yı göstermez. Her iki container eka-ai ağına bağlı olduğu için credential Base URL olarak http://ollama:11434 kullandık. n8n containerından /api/tags çağrısı HTTP 200 döndü ve qwen3:4b modeli bulundu.

İlk import edilen workflow JSON’unda Ollama credential referansı olmadığı için Ollama Qwen3 4B sub-node hata verdi. Credential oluşturulup doğru Docker DNS adresi kaydedildiğinde aynı workflow başarılı çalıştı.

Komut 1
docker exec n8n node -e "fetch('http://ollama:11434/api/tags').then(r=>r.text()).then(console.log)"
16
Yerel AI Agent

Chat Trigger + AI Agent + qwen3:4b + Simple Memory zincirini kurun

Workflow’un ana akışı Chat Trigger’dan AI Agent’a gider. AI Agent Chat Model girişinde Ollama qwen3:4b, Memory girişinde Simple Memory kullanıldı. System message içinde kullanılan gerçek model adı qwen3:4b olarak açıkça belirtildi; böylece modelin kendine uydurma bir runtime/model adı vermesi önlendi.

Final testte Chat Trigger, AI Agent, Ollama Chat Model ve Memory node’larının tamamı yeşil tamamlandı. Agent altyapısının Ollama olduğunu ve qwen3:4b üzerinde çalıştığını doğru şekilde yanıtladı.

Komut 1
Prompt: {{ $json.chatInput }}
Komut 2
Ollama Base URL: http://ollama:11434
Model: qwen3:4b
17
Agent araçları

Calculator ve HTTP Request Tool ile agentın yalnız sohbet etmediğini doğrulayın

AI Agent Tool girişine Calculator bağlandı. 3478 × 129 sorusunda model aracı çağırdı ve Calculator node’u 448662 sonucunu döndürdü. Bu, modelin sonucu kafadan üretmesi yerine gerektiğinde deterministik aracı kullanabildiğini gösterdi.

HTTP API denemesinde ilk olarak eski @n8n/n8n-nodes-langchain.toolHttpRequest node tipi kullanıldığı için “supplyData method but no execute method” hatası aldık. Güncel n8n HTTP Request Tool node’una geçildiğinde JSONPlaceholder API çağrısı başarılı oldu ve agent gerçek TODO JSON verisini Türkçe özetledi.

Komut 1
3478 × 129 kaç eder? Hesap makinesini kullan.
Komut 2
OrnekAPIVeriGetir aracını kullan ve gelen API verisini Türkçe açıkla.
18
Üretim kontrolü

Tüm stack’i reboot, health, port, volume ve SSL kontrolleriyle doğrulayın

Kurulumun son testi yalnız tarayıcı ekranına bakmak değildir. Docker container durumları, health endpointleri, public domain HTTP kodları, loopback port bindingleri, named volume’lar, systemd failed servisleri ve Certbot renewal testini birlikte kontrol edin. Bir VPS reboot sonrası tüm containerların restart policy ile yeniden geldiğini de doğrulayın.

Yedekleme tarafında portainer_data, ollama_data, openwebui_data ve n8n_data volume’larını; ayrıca Nginx site dosyaları, Let’s Encrypt dizini ve n8n encryption key gibi yapılandırma verilerini planlı şekilde koruyun. Model dosyaları yeniden indirilebilir olsa da n8n credential/workflow ve Open WebUI kullanıcı verileri daha kritiktir.

Komut 1
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
Komut 2
curl -fsS http://127.0.0.1:11434/api/tags >/dev/null && echo OLLAMA_OK
curl -fsS http://127.0.0.1:3000/health >/dev/null && echo WEBUI_OK
curl -fsS http://127.0.0.1:5678/healthz >/dev/null && echo N8N_OK
Komut 3
certbot renew --dry-run
Komut 4
systemctl --failed
19
RAG ve bilgi tabanı

Sonraki aşama: Qdrant + embedding + RAG ile kendi belgelerinizi AI Agent’a bağlayın

Bu pillar rehberin sonunda altyapı katmanı hazırdır: container yönetimi Portainer’da, yerel LLM Ollama’da, kullanıcı chat arayüzü Open WebUI’da ve otomasyon/agent katmanı n8n’dedir. Bir sonraki mantıklı adım, Qdrant gibi bir vector database ve embedding modeli ekleyerek kendi dokümanlarınızdan cevap veren RAG mimarisi kurmaktır.

RAG katmanında doküman yükleme, chunking, embedding, vector store, retrieval ve kaynak gösterme adımlarını ayrı tutacağız. Böylece qwen3:4b yalnız genel model bilgisine değil, sizin eklediğiniz güncel özel veri setine de kontrollü biçimde erişebilir.

Komut 1
Docker / eka-ai
  ├─ Ollama → qwen3:4b
  ├─ Open WebUI
  ├─ n8n AI Agent
  └─ Qdrant + Embeddings + RAG  ← sonraki rehber
Production checklist

Self-hosted AI stack üretim güvenliği kontrol listesi

9443, 11434, 3000 ve 5678 servis portlarını doğrudan public internete açmayın.
Public erişimi Nginx 443 ve geçerli TLS sertifikaları üzerinden yayınlayın.
Portainer, Open WebUI ve n8n yönetici hesaplarında güçlü benzersiz parolalar kullanın.
N8N_ENCRYPTION_KEY ve WEBUI_SECRET_KEY gibi sabit secret değerlerini yedekleyin ve gereksiz paylaşmayın.
Docker named volume’larını düzenli yedekleyin ve image update öncesi snapshot alın.
Ollama model API’sine harici erişim gerekiyorsa VPN, private network veya auth proxy kullanın.
Nginx WebSocket ve forwarded header yapılandırmasını n8n/Open WebUI için test edin.
Certbot renew --dry-run ve sertifika bitiş tarihlerini periyodik kontrol edin.
docker logs, docker stats ve systemctl --failed kontrollerini düzenli çalıştırın.
n8n HTTP Request/Code/community node’larında veri çıkışını ve minimum yetki prensibini uygulayın.
Eski workflow exportlarını yeni n8n sürümünde import ederken node typeVersion uyumluluğunu doğrulayın.
VPS reboot sonrasında tüm container, domain ve AI inference testlerini yeniden çalıştırın.
R
Resmî kaynaklar

Resmî Ubuntu, Docker, Portainer, Ollama, Open WebUI ve n8n kaynakları

+
EKA Sunucu

Bu pillar rehberin ayrıntılı EKA Sunucu alt rehberleri

?
FAQ

Ubuntu self-hosted AI stack hakkında sık sorulan sorular

Bu stack tamamen kendi VPS’imde mi çalışıyor?

Evet. Bu mimaride Ollama, Open WebUI ve n8n kendi Ubuntu VPS’inizde Docker containerları olarak çalışır. Harici servis kullanan workflow veya model özellikleri eklerseniz onlar ayrıca dış bağlantı oluşturabilir.

GPU olmadan Ollama çalışır mı?

Evet. Gerçek test VPS’inde dedicated GPU passthrough yoktu ve qwen3:4b CPU üzerinde çalıştı. Performans ihtiyacınız yüksekse uygun GPU ciddi hız kazandırır.

Neden Ubuntu 24.04 LTS kullandınız?

Test sistemi Ubuntu 22.04’ten Ubuntu 24.04.4 LTS’e yükseltildi ve tüm container katmanı bu ortamda doğrulandı.

Docker Compose gerekli mi?

Bu kurulumda çoğu servis docker run ile doğrulandı; Compose plugin de kuruldu. Çok servisli üretim yönetiminde Compose dosyası bakım ve tekrar kurulumu kolaylaştırabilir.

Portainer port 9443 public açılmalı mı?

Bu mimaride hayır. 9443 yalnız 127.0.0.1’e bind edilir ve public erişim Nginx HTTPS domaini üzerinden yapılır.

Ollama port 11434 internete açılmalı mı?

Hayır. Varsayılan local Ollama API’sini kimlik doğrulamasız public açmak yerine localhost/private Docker ağı kullanmak daha güvenli başlangıçtır.

Open WebUI ilk açılış neden uzun sürebilir?

İlk startup sırasında migrationlar ve embedding/cache model indirmeleri yapılabilir. Gerçek testte health endpointi birkaç dakika sonra 200 döndü.

Open WebUI Ollama’ya hangi adresle bağlanmalı?

Aynı eka-ai Docker ağında ayrı containerlar kullanıldığında http://ollama:11434 adresi uygundur.

n8n Ollama Base URL neden localhost değil?

n8n containerındaki localhost n8n containerını ifade eder. Ollama ayrı container olduğundan Docker DNS adı olan ollama kullanılmalıdır.

qwen3:4b tool calling destekledi mi?

Gerçek testte n8n AI Agent ile Calculator ve HTTP Request Tool başarıyla kullanıldı. Ollama API metadata çıktısında modelin tools yeteneği de görünüyordu.

Calculator testi sonucu neydi?

3478 × 129 işlemi Calculator Tool üzerinden çalıştı ve 448662 sonucu döndü.

HTTP Tool neden ilk denemede hata verdi?

Eski LangChain HTTP tool node tipi çalışan n8n sürümüyle uyumlu değildi. Güncel HTTP Request Tool node’una geçince API çağrısı başarıyla tamamlandı.

SSL sertifikaları otomatik yenilenir mi?

Certbot scheduled renewal kurar; yine de certbot renew --dry-run ile yenileme akışını düzenli test etmek gerekir.

Hangi verileri yedeklemeliyim?

portainer_data, openwebui_data, n8n_data, n8n encryption key, Nginx/Let’s Encrypt konfigürasyonu ve gerekiyorsa ollama_data öncelikli yedek alanlarıdır.

Bu mimarinin sonraki adımı nedir?

Qdrant, embedding modeli ve n8n/Open WebUI RAG akışı ekleyerek kendi dokümanlarınızdan cevap veren özel bilgi tabanı oluşturmak.

EKA Sunucu VPS üzerinde kurulabilir mi?

Linux VPS üzerinde yeterli CPU, RAM ve disk kaynağı ayrıldığında bu mimari kurulabilir. Model boyutu ve beklenen eşzamanlı kullanım kaynak ihtiyacını belirler.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

Kendi self-hosted AI altyapınız için güçlü Linux VPS mi arıyorsunuz?

Docker, Portainer, Ollama, Open WebUI, n8n, Qdrant ve yerel AI modellerini kendi sunucunuzda çalıştırmak için EKA Sunucu Linux VPS paketlerini inceleyebilirsiniz.

Güncellendi: 10.08.2026
Linux VPS Paketlerini İnceleLinux ve VPS Rehberleri
Top