Ollama ile n8n AI Starter Kit Kurulumu
n8n ekibinden gelen Self-hosted AI Starter Kit Docker Compose şablonu, tamamen kendi sunucunuzda çalışan AI iş akışları oluşturmak için kullanılır. İstemler (prompts) ve belgeler yerel bir dil modeli tarafından işlenir ve harici AI hizmetlerine gönderilmez.
Kit dört bileşen içerir:
- AI düğümleri içeren iş akışı otomasyon platformu n8n;
- Açık kaynaklı dil modellerini yerel olarak çalıştıran Ollama;
- Belge gömülmelerini (embeddings) depolamak ve aramak için bir vektör veritabanı olan Qdrant;
- n8n için veritabanı olan PostgreSQL.
Resmi kit, yazarları tarafından test amaçlı olarak işaretlenmiştir. Yazım sırasında, README dosyasında açıklandığı gibi çalıştırıldığında, genel bir IP adresine sahip bir sunucuda birkaç sorun vardır: n8n, Ollama ve Qdrant internete açıktır, Ollama ve Qdrant'ta kimlik doğrulama yoktur, yapılandırmadaki gizli anahtarlar her kurulum için aynıdır ve demo iş akışı içe aktarılmaz. Bu kılavuz, kiti olduğu gibi kurar ve tüm bunları ayrı bir geçersiz kılma (override) dosyasıyla düzeltir, böylece kiti deposundan güncellemeye devam edebilirsiniz.
Bu kılavuz Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 ve Docker Compose v5 için yazılmıştır.
Başlamadan önce
Şunlara ihtiyacınız olacak:
- SSH üzerinden root erişimi olan Ubuntu 24.04 LTS çalıştıran bir sunucu;
- En az 15 GB boş disk alanı: Docker görüntüleri yaklaşık 11 GB ve varsayılan Llama 3.2 modeli yaklaşık 2 GB yer kaplar;
- n8n için bir alan adı veya alt alan adı, örneğin
n8n.example.comve sunucunun IPv4 adresini işaret eden bir A kaydı.
GPU olmadan model CPU üzerinde çalışır ve yavaş yanıt verir. Düzenli kullanım için NVIDIA GPU'lu bir sunucu seçin.
Aşağıdaki tüm komutlar root olarak çalıştırılır. Sudo haklarına sahip normal bir kullanıcı olarak çalışıyorsanız, her komutun başına sudo ekleyin.
Docker'ı Yükleyin
Docker Engine ve Compose eklentisini resmi Docker deposundan yükleyin:
apt update && apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc
Depoyu ekleyin:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
Paketleri yükleyin ve sürümleri kontrol edin:
apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version
Kiti İndirin
Depoyu /opt dizinine klonlayın ve örnekten yapılandırma dosyasını oluşturun:
cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env
Varsayılan Gizli Anahtarları Değiştirin
Örnek dosya, PostgreSQL için password ve n8n şifreleme anahtarı için super-secret-key gibi sabit değerler içerir. Bunlar kitin her kopyasında aynıdır, bu nedenle bunları rastgele olanlarla değiştirin:
sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env
N8N_ENCRYPTION_KEY, n8n'e kaydettiğiniz kimlik bilgilerini şifreler. N8N_USER_MANAGEMENT_JWT_SECRET, kullanıcı oturumlarını imzalar.
.env dosyasını sunucu dışında güvenli bir yere, örneğin bir parola yöneticisine kopyalayın. N8N_ENCRYPTION_KEY olmadan, n8n'e kaydedilen kimlik bilgileri geri yükleme sonrası şifresi çözülemez.
Bağlantı Noktalarını Kapatın ve HTTPS Ekleyin
Kitin docker-compose.yml dosyasında, n8n (5678 bağlantı noktası), Ollama (11434) ve Qdrant (6333) tüm ağ arayüzlerinde yayınlanır. Docker, yayınlanan bağlantı noktaları için kendi güvenlik duvarı kurallarını ekler ve bunlar UFW'yi atlar. Genel bir IP adresine sahip bir sunucuda bu, herkesin düz HTTP üzerinden n8n düzenleyicisini açabileceği ve kimlik doğrulaması olmayan Ollama ve Qdrant API'lerini kullanabileceği anlamına gelir.
docker-compose.yml dosyasını düzenlemek yerine, yanına bir docker-compose.override.yml dosyası oluşturun. Docker Compose bu dosyayı otomatik olarak okur ve ana dosyanın üzerine uygular. Kitin kendi dosyaları değişmeden kalır, böylece bunları depodan güncellemek ayarlarınızı üzerine yazmaz.
/opt/self-hosted-ai-starter-kit/docker-compose.override.yml dosyasını oluşturun ve n8n.example.com ifadesini kendi alan adınızla değiştirin:
services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:
Bu dosyanın değiştirdiği şeyler şunlardır:
- n8n yalnızca
127.0.0.1üzerinde dinler ve kullanıcılar buna Caddy üzerinden HTTPS ile ulaşır; - Ollama ve Qdrant hiç yayınlanmaz, n8n bunlara dahili Docker ağı üzerinden
ollamaveqdrantadlarıyla ulaşır; - Caddy, alan adı sunucuyu işaret ettiği ve 80 ile 443 bağlantı noktaları açık olduğu sürece bir Let's Encrypt sertifikası alan ve yenileyen bir ters proxy (reverse proxy) olarak eklenir;
- n8n, PostgreSQL, Qdrant ve Ollama için veri birimleri, kitin
docker-compose.ymldosyasında tanımlandığı gibi kalır, override dosyası bunları değiştirmez.
networks: ['demo'] satırı gereklidir. Kitin tüm hizmetleri demo adlı ağda çalışır ve bu satır olmadan Caddy n8n'e ulaşamaz ve 502 hatası döndürür.
N8N_WEBHOOK_URL, n8n'in webhook'lar için kullandığı, düzenleyicideki sohbet penceresi de dahil olmak üzere adresi ayarlar. Alan adı, n8n'i açtığınız bilgisayardan sunucunuza çözümlenmelidir. Eğer çözülmezse, sohbet sadece "Failed to receive response" mesajını gösterir ve DNS'i neden olarak belirtmez.
Alan adınızla /opt/self-hosted-ai-starter-kit/Caddyfile dosyasını oluşturun:
n8n.example.com { reverse_proxy n8n:5678 }
Birleştirilmiş yapılandırmayı kontrol edin:
docker compose --profile cpu config | grep -A4 "ports:"
Sadece 127.0.0.1:5678 üzerindeki n8n ve 80 ile 443 bağlantı noktalarındaki Caddy listelenmelidir.
Güvenlik Duvarını Yapılandırın
Override dosyası, kitin dahili hizmetlerini ağdan uzak tutar. UFW, SSH, HTTP ve HTTPS dışındaki tüm diğer gelen trafiği sunucuya engeller. Bunlara izin verin ve UFW'yi etkinleştirin:
ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable
Kiti Başlatın
Yığını CPU modunda başlatın:
docker compose --profile cpu up -d
İlk başlatmada Docker yaklaşık 11 GB görüntü indirir ve ayrı bir konteyner Llama 3.2 modelini indirir. Bu, bağlantı hızına bağlı olarak biraz zaman alır. Modelin yerinde olup olmadığını kontrol edin:
docker exec ollama ollama list
Listede llama3.2:latest bulunmalıdır.
Sunucuda yalnızca beklenen bağlantı noktalarının açık olduğunu kontrol edin:
ss -tlnp
80 ve 443 bağlantı noktaları tüm arayüzlerde, 5678 bağlantı noktası yalnızca 127.0.0.1 üzerinde açık olmalıdır. 11434 ve 6333 bağlantı noktaları listede olmamalıdır.
Kit PostgreSQL 16 kullanır. n8n günlüğü, bu sürümün desteklenen aralığın dışında olduğuna dair bir uyarı gösterebilir. Bu uyarı, n8n'in çalışma şeklini etkilemez.
Demo İş Akışını İçe Aktarın
Kit, bir demo iş akışı ve iki demo kimlik bilgisi içerir. Bunların ilk başlatmada içe aktarılması gerekir, ancak yazım sırasında kitin docker-compose.yml dosyasındaki içe aktarma kontrolü asla geçmez, bu nedenle hiçbir şey içe aktarılmaz. İçe aktarmayı manuel olarak çalıştırın:
docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
-c seçeneği gereklidir: n8n-import hizmeti bir kabuk başlatır ve -c olmadan komut "can't open 'n8n'" hatasıyla başarısız olur.
Sahip Hesabını Oluşturun
Tarayıcınızda https://n8n.example.com adresini açın ve sahip hesabını oluşturun: e-posta adresinizi, adınızı ve soyadınızı ve en az bir rakam ve bir büyük harf içeren en az 8 karakterli bir şifre girin. İlk girişten sonra n8n, kısa bir anket ve bazı Community Edition özellikleri için ücretsiz bir lisans anahtarı teklifi gösterebilir. Her ikisi de isteğe bağlıdır.
Genel bakış sayfası, içe aktarılan Demo workflow öğesini listeler.

Demo Kimlik Bilgilerini Düzeltin
Demo kimlik bilgileri, .env.example dosyasındaki varsayılan anahtarla şifrelenmiştir. N8N_ENCRYPTION_KEY öğesini değiştirdikten sonra, n8n bunların şifresini çözemez, bu nedenle her ikisinin de yeniden doldurulması gerekir. Ayarlar kendi anahtarınızla şifrelenerek kaydedilir.
Overview öğesini açın, Credentials sekmesine gidin ve Local Ollama service öğesini açın. Bağlantı başarısız olur ve Base URL alanı http://localhost:11434 gösterir. n8n konteynerinin içinde, localhost Ollama değil, n8n'in kendisidir.

Base URL öğesini http://ollama:11434 olarak ayarlayın, API Key alanını boş bırakın ve Save düğmesine tıklayın. n8n bağlantıyı test eder ve Connection tested successfully mesajını gösterir.

Local QdrantApi database öğesini açın. Qdrant URL öğesini http://qdrant:6333 olarak ayarlayın, API Key alanını boş bırakın ve Save düğmesine tıklayın.

Demo İş Akışını Test Edin
Demo workflow öğesini açın. Üç düğüm içerir: Chat Trigger bir mesaj alır, Basic LLM Chain bunu modele iletir ve Ollama Chat Model bunu Ollama'daki Llama 3.2'ye gönderir.

Tuvalin altındaki Open chat düğmesine tıklayın ve kısa bir soru gönderin. İş akışı çalışırken düğümler yeşile döner ve modelin yanıtı sohbette görünür. Ollama modeli belleğe yüklediği için ilk yanıt daha uzun sürer.

Sohbet "Failed to receive response" gösteriyorsa ve iş akışı başlamıyorsa, N8N_WEBHOOK_URL içindeki alan adının bilgisayarınızdan sunucunuza çözümlenip çözümlenmediğini kontrol edin.
NVIDIA GPU Kullanın
Sunucuda bir NVIDIA GPU varsa, kit Ollama'yı üzerinde çalıştırabilir. Docker bunun için NVIDIA Container Toolkit'e ihtiyaç duyar. Daha önce bu sunucuda Docker ile GPU kullanmadıysanız, önce Ollama Docker talimatlarını izleyerek onu yükleyin.
Ardından kiti cpu yerine gpu-nvidia profiliyle başlatın:
docker compose --profile gpu-nvidia up -d
Yukarıdaki override dosyası bu profil için Ollama bağlantı noktasını zaten kapatır. Diğer tüm komutlarda aynı profili kullanın. Örneğin, GPU profiliyle demo içe aktarma:
docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
Ve güncelleme:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d
Kiti Güncelleyin
Kitin dosyalarını ve görüntülerini güncellemek için kullandığınız profille komutları çalıştırın:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d
docker-compose.override.yml, Caddyfile ve .env dosyalarınız deponun bir parçası değildir, bu nedenle git pull bunları değiştirmez.
Sırada Ne Var
Kit, kendi AI iş akışlarınız için hazırdır. Buradan şunları yapabilirsiniz:
docker exec ollama ollama pullve ardından model adını kullanarak diğer modelleri indirin ve bunları Ollama Chat Model düğümünde seçin;- n8n'deki vektör deposu düğümlerini kullanarak kendi belgelerinizi aramak için Qdrant'ı kullanın;
- Hizmetlerinizi bağlayın ve bunları yerel modelle birleştiren iş akışları oluşturun.
AI bileşenleri olmadan genel bir n8n kurulumu için Docker ve PostgreSQL ile n8n Kurulumu kılavuzuna bakın. Bu kılavuz, bir n8n veritabanının nasıl yedekleneceğini ve geri yükleneceğini de açıklar.