EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

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.com ve sunucunun IPv4 adresini işaret eden bir A kaydı.

Info

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.

Warning

.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 ollama ve qdrant adları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.yml dosyasında tanımlandığı gibi kalır, override dosyası bunları değiştirmez.

Info

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.

Info

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 pull ve 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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA