Sora Yazılım
Türkçe
Türkiye merkezli özel yazılım çözümleri

n8n Self-Hosting: Docker ile Kurulum Rehberi

Sora Yazılım Ekibi

n8n self-hosting Docker n8n'i kendi altyapınızda barındırmak; veri egemenliği, sınırsız iş akışı ve öngörülebilir maliyet sağlar. Docker Compose ile dakikalar içinde izole, tekrarlanabilir bir ortam kurabilirsiniz.

n8n Self-Hosting Nedir ve Neden Tercih Edilmeli?

n8n self-hosting, iş akışı motoru yazılımını kendi sunucunuzda veya bulut VM'inizde çalıştırmaktır. Verileriniz hiçbir zaman üçüncü taraf sunucudan geçmez; aylık kullanım limiti yoktur ve lisans maliyeti sabittir.

Kurumsal ortamlarda veri egemenliği bir zorunluluktur. Finans, sağlık ve kamu sektörlerindeki regülatif gereksinimler; müşteri verilerinin yurt içi veya özel altyapıda işlenmesini zorunlu kılar. n8n Cloud kullanıldığında tüm iş akışı verileri n8n GmbH sunucularından geçer. Self-hosting modeli bu riski tamamen ortadan kaldırır: veriler yalnızca sizin kontrolündeki sistemlerde işlenir.

Maliyet tarafında ise resim farklıdır. n8n Cloud ve self-hosted fiyatlandırma karşılaştırması incelendiğinde, iş akışı sayısı ve yürütme hacmi arttıkça Cloud planının aylık sabit maliyeti hızla büyüdüğü görülür. Kendi sunucunuzda çalıştırdığınızda yalnızca altyapı maliyetini ödersiniz; n8n Community Edition tamamen ücretsiz ve açık kaynaklıdır. n8n'in kurumsal iş akışı otomasyon yetenekleri hakkında daha fazla bilgi edinebilirsiniz.

Docker'ın devreye girmesinin nedeni basittir: temiz ve izole bir çalışma ortamı sağlar, bağımlılık çakışmalarını önler ve tek bir compose dosyasıyla tüm stack'i versiyonlar. n8n resmi olarak Docker üzerinden dağıtımı önerir ve Docker Hub'daki resmi imaj sürekli güncellenir.

Sistem Gereksinimleri

Küçük-orta ölçekli kurumsal kullanım için 2 vCPU, 4 GB RAM ve 40 GB SSD yeterlidir. Yoğun iş akışı yükü veya çok sayıda eş zamanlı yürütme için bu değerlerin iki katına çıkarılması önerilir.

Aşağıdaki tablo, farklı kullanım senaryoları için önerilen minimum ve üretim donanım gereksinimlerini göstermektedir. Değerler n8n resmi belgelerinden ve saha deneyiminden türetilmiştir; gerçek iş yüküne göre değişebilir.

SenaryovCPURAMSSDAçıklama
Tek kullanıcı / test11 GB10 GBSQLite, düşük hacim
KOBİ / ajans (önerilen)24 GB40 GBPostgreSQL, orta iş yükü
Orta ölçek / queue mode48 GB80 GBRedis + worker, yüksek hacim
Büyük ölçek / HA8+16 GB+200 GB+Çok worker, yük dengeleyici

İşletim sistemi olarak Ubuntu 22.04 LTS veya Debian 12 önerilir. Docker Engine 24+ ve Docker Compose v2.x kurulu olmalıdır. Güvenlik duvarı için UFW ve SSL sertifika yönetimi için Certbot veya Caddy'nin kullanılabileceği göz önünde bulundurulmalıdır. Alan adı kaydının sunucunuza yönlendirilmiş olduğundan emin olun; HTTPS kurulumu için geçerli bir A kaydı zorunludur.

Docker Compose ile Kurulum

n8n, PostgreSQL, Nginx ve isteğe bağlı Redis'i tek bir docker-compose.yml dosyasında tanımlayarak versiyonlu ve tekrarlanabilir bir altyapı kurabilirsiniz. Tüm ortam değişkenleri .env dosyasında yönetilir.

Proje klasörünüzü oluşturun ve aşağıdaki yapıyı hazırlayın. Şifreler ve hassas değerler için .env dosyası kullanın; bu dosyayı asla Git deposuna eklemeyin.

  1. mkdir -p ~/n8n-stack && cd ~/n8n-stack — proje klasörünü oluşturun.
  2. .env dosyasına N8N_ENCRYPTION_KEY, POSTGRES_PASSWORD ve N8N_HOST gibi değişkenleri ekleyin.
  3. docker-compose.yml dosyasını oluşturun: n8n servisi (image: n8nio/n8n), postgres servisi, nginx servisi (reverse proxy için) ve isteğe bağlı redis servisini tanımlayın.
  4. Kalıcı veri için named volume'lar kullanın: n8n_data, postgres_data.
  5. docker compose up -d komutuyla stack'i arka planda başlatın.
  6. docker compose logs -f n8n komutuyla başlangıç loglarını izleyin ve ilk kullanıcı kurulumunu tamamlayın.

docker-compose.yml içinde n8n servisinin kritik ortam değişkenleri şunlardır: DB_TYPE=postgresdb, DB_POSTGRESDB_HOST=postgres, N8N_ENCRYPTION_KEY (rastgele 32+ karakter), WEBHOOK_URL (tam alan adı), ve N8N_BASIC_AUTH_ACTIVE=false (yerleşik auth kullanılacaksa). PostgreSQL servisinde POSTGRES_DB, POSTGRES_USER ve POSTGRES_PASSWORD değişkenlerini mutlaka ayarlayın. Tüm servisler aynı custom Docker network üzerinde iletişim kurmalıdır; bu sayede port'lar dışarıya açılmadan servisler birbirini isim üzerinden çözümleyebilir.

Kurulum tamamlandıktan sonra tarayıcınızdan https://n8n.sirketiniz.com adresine gidin. İlk açılışta yönetici hesabı oluşturma sihirbazı sizi karşılayacaktır. Hesap oluşturduktan hemen sonra Ayarlar bölümünden İki Faktörlü Kimlik Doğrulama'yı etkinleştirin.

Veritabanı: SQLite mi, PostgreSQL mi?

SQLite yalnızca tek kullanıcılı test ortamları için uygundur. Üretim ortamında PostgreSQL kullanılmalıdır: yeniden başlatmalarda veri korunur, yedekleme araçları güçlüdür ve queue mode yalnızca PostgreSQL ile çalışır.

n8n varsayılan olarak SQLite kullanır. Kurulum kolaylığı açısından cazip görünse de SQLite, eş zamanlı yazma işlemlerinde kilitlenme sorunları yaratabilir ve büyük iş akışı geçmişlerinde performans düşer. Ayrıca Docker container yeniden başlatıldığında volume bağlantısı doğru yapılmazsa SQLite verisi kaybolabilir.

ÖzellikSQLitePostgreSQL
Kurulum kolaylığıYüksek (yerleşik)Orta (ayrı servis)
Üretim stabilitesiDüşükYüksek
Eş zamanlı erişimSınırlıTam destek
Yedekleme araçlarıTemelpg_dump, WAL, Barman
Queue mode uyumluluğuHayırEvet
ÖlçeklenebilirlikTek sunucuYatay ölçekleme

PostgreSQL'e geçiş için mevcut n8n kurulumunda Ayarlar > Dışa Aktar menüsünden iş akışlarınızı JSON formatında dışa aktarın. Yeni PostgreSQL destekli kurulumda bu JSON dosyalarını içe aktarın. Geçmiş yürütme verileri taşınamaz; yalnızca iş akışı tanımları aktarılır. Bu nedenle PostgreSQL'i baştan seçmek en doğru yaklaşımdır.

Reverse Proxy, HTTPS ve Domain Yapılandırması

n8n'i internete açmak için Nginx veya Caddy ile reverse proxy kurmanız ve geçerli SSL sertifikası edinmeniz gerekir. Caddy otomatik sertifika yönetimi sağlarken Nginx daha yaygın ve esnek bir seçenektir.

Nginx ile reverse proxy yapılandırmasında temel blok şudur: upstream olarak n8n container'ının port 5678'ini dinleyin, gelen 80 trafiğini 443'e yönlendirin, 443 üzerinde SSL sertifika yollarını tanımlayın ve WebSocket bağlantıları için proxy_http_version 1.1, Upgrade ve Connection başlıklarını ekleyin. WebSocket desteği, n8n'in gerçek zamanlı iş akışı editörü için zorunludur.

Caddy tercih edildiğinde yapılandırma dramatik biçimde basitleşir. Caddyfile'a yalnızca alan adınızı ve arka uç adresini yazmanız yeterlidir; Caddy, Let's Encrypt üzerinden SSL sertifikasını otomatik alır ve yeniler. Caddy v2 JSON API üzerinden dinamik yapılandırmayı da destekler.

  • Nginx: certbot --nginx -d n8n.sirketiniz.com komutuyla Let's Encrypt sertifikasını alın ve otomatik yenileme için cron job kurun.
  • Caddy: reverse_proxy n8n:5678 yönergesiyle reverse proxy'yi etkinleştirin; sertifika yönetimi otomatiktir.
  • Her iki seçenekte de n8n'in WEBHOOK_URL ortam değişkenini tam HTTPS adresiyle ayarlayın.
  • Nginx buffer ayarları: proxy_read_timeout 300s; büyük iş akışı yürütmeleri için zaman aşımı değerini artırın.

Queue Mode ve Yatay Ölçekleme

n8n queue mode, Redis kuyrukları aracılığıyla iş akışı yürütmelerini birden fazla worker process'e dağıtır. Bu yapıda ana n8n instance webhook ve UI'ı yönetirken worker'lar arka planda yürütmeleri işler.

Varsayılan kurulumda tüm işler tek n8n process'inde sıralı yürütülür. Eş zamanlı iş akışı sayısı arttığında veya uzun süren işler diğer yürütmeleri engellediğinde queue mode devreye alınmalıdır. Zapier ve Make ile karşılaştırıldığında n8n'in queue mode ile sağladığı esneklik öne çıkan farklardan biridir.

Queue mode etkinleştirmek için docker-compose.yml dosyasına Redis servisini ekleyin ve n8n servisinin ortam değişkenlerine EXECUTIONS_MODE=queue, QUEUE_BULL_REDIS_HOST=redis ve QUEUE_BULL_REDIS_PORT=6379 ekleyin. Ardından ayrı bir worker servisi tanımlayın: aynı n8n imajını kullanın ancak komut olarak n8n worker --concurrency=5 belirtin. Worker servisi ana n8n servisiyle aynı volume'lara ve network'e bağlı olmalıdır.

  • docker compose up -d --scale n8n-worker=3 komutuyla worker sayısını dinamik artırın.
  • Her worker'ın --concurrency değerini sunucu CPU sayısına göre ayarlayın.
  • Redis için maxmemory-policy noeviction ayarlayın; kuyruk verisi kaybolmamalıdır.
  • Monitoring için Bull Dashboard veya n8n yerleşik yürütme kuyruğu görünümünü kullanın.

Güvenlik, Yedekleme ve Güncelleme

Üretim n8n kurulumunda UFW güvenlik duvarı, SSH anahtar kimlik doğrulaması, fail2ban, yerleşik 2FA ve şifreli N8N_ENCRYPTION_KEY zorunludur. Yedekleme için PostgreSQL pg_dump ve n8n veri dizini otomasyonu önerilir.

n8n güvenliği ve kurumsal yönetişim konusunda kapsamlı bir rehber mevcuttur. Temel güvenlik adımları şöyle sıralanabilir: UFW güvenlik duvarını etkinleştirin ve yalnızca 22 (SSH, varsayılan dışı port), 80 (HTTP) ve 443 (HTTPS) portlarına izin verin. SSH kimlik doğrulamasını yalnızca anahtar tabanlı yapın; parola girişini devre dışı bırakın. fail2ban kurarak brute-force saldırılarına karşı koruma sağlayın.

n8n özelinde güvenlik: N8N_ENCRYPTION_KEY ortam değişkenini rastgele ve güçlü bir değerle ayarlayın; bu anahtar kaybolursa şifreli kimlik bilgileri kurtarılamaz. İlk girişten hemen sonra n8n yerleşik 2FA'yı etkinleştirin. N8N_BASIC_AUTH_ACTIVE kullanmak yerine n8n'in kendi kullanıcı yönetim sistemine güvenin.

  • Yedekleme: pg_dump ile günlük PostgreSQL yedeği alın ve S3 uyumlu nesne deposuna (MinIO, AWS S3) gönderin.
  • n8n veri dizini yedeği: ~/.n8n veya compose volume'undaki n8n_data dizinini rsync veya tar ile yedekleyin.
  • Güncelleme: docker compose pull && docker compose up -d --force-recreate komutuyla yeni n8n imajını çekin. Güncellemeden önce mutlaka yedek alın.
  • Sürüm sabitleme: docker-compose.yml içinde n8nio/n8n:latest yerine n8nio/n8n:1.x.x gibi belirli bir sürüm etiketi kullanın; beklenmedik kırıcı değişiklikleri önler.
  • Günlük (log) yönetimi: Docker log driver olarak json-file kullanın ve max-size/max-file sınırları belirleyin.

Düzenli güvenlik denetimi için CIS Benchmark'larını referans alın ve sunucu işletim sistemi güncellemelerini (unattended-upgrades) otomatikleştirin. n8n Community sürüm notlarını takip ederek kritik güvenlik yamalarını en kısa sürede uygulayın. Sora DevOps ekibimiz olarak müşterilerimizin n8n self-hosting altyapısını baştan doğru kurmalarına destek veriyoruz; Sora DevOps ekibimizle ücretsiz keşif görüşmesi yaparak projenizi planlayabilirsiniz.

Sık Sorulan Sorular

n8n self-hosting için Docker şart mı?

Docker zorunlu değildir; n8n Node.js ortamında doğrudan kurulabilir. Ancak n8n resmi olarak Docker kullanımını önerir; izole ortam, kolay güncelleme ve bağımlılık yönetimi açısından Docker Compose en pratik seçenektir.

SQLite mi, PostgreSQL mi seçmeliyim?

Test ve tek kullanıcılı senaryolar için SQLite yeterlidir. Üretim ortamında kesinlikle PostgreSQL kullanın: yeniden başlatma sonrası veri güvenliği, güçlü yedekleme araçları ve queue mode desteği sağlar.

n8n self-hosting için ne kadar sunucu kaynağı yeterli?

KOBİ ve ajans kullanımı için 2 vCPU, 4 GB RAM ve 40 GB SSD uygundur. Yoğun iş akışı veya çok sayıda eş zamanlı yürütme gerekiyorsa 4 vCPU ve 8 GB RAM önerilir; queue mode ile yatay ölçekleme yapılabilir.

HTTPS nasıl kurulur?

Nginx veya Caddy ile reverse proxy kurun. Nginx için Certbot ile Let's Encrypt sertifikası alın ve otomatik yenileme kurun. Caddy tercih edildiğinde sertifika yönetimi otomatiktir; Caddyfile'a alan adı ve arka uç adresi yazmak yeterlidir.

n8n yatay olarak nasıl ölçeklenir?

Queue mode etkinleştirin: docker-compose.yml'e Redis ekleyin, EXECUTIONS_MODE=queue ayarlayın ve worker servisi tanımlayın. docker compose up --scale n8n-worker=N komutuyla worker sayısını artırabilirsiniz.

n8n Docker güncellemesi nasıl yapılır?

Güncellemeden önce PostgreSQL yedeği alın. Ardından docker compose pull ile yeni imajı indirin ve docker compose up -d --force-recreate ile servisleri yeniden başlatın. Sürüm etiketini sabitlemek kırıcı değişikliklere karşı korur.

n8n yedeklemesi nasıl yapılır?

PostgreSQL için pg_dump ile günlük otomatik yedek alın ve S3 uyumlu bir nesne deposuna gönderin. n8n veri dizinini (volume: n8n_data) da aynı şekilde yedekleyin. Şifreli N8N_ENCRYPTION_KEY değerini güvenli bir kasada saklayın.

Sonuç

n8n self-hosting; Docker Compose, PostgreSQL ve Nginx üçlüsüyle kurumsal seviyede bir otomasyon altyapısı oluşturmanızı sağlar. Veri egemenliği, öngörülebilir maliyet ve sınırsız iş akışı kapasitesi, self-hosting modelini Cloud alternatifine göre belirgin biçimde öne çıkarmaktadır. Queue mode ile Redis desteği eklendiğinde sistem yatay olarak ölçeklenebilir hale gelir; tek nokta hatası riski azalır.

Güvenlik ve yedekleme adımlarını baştan doğru yapılandırmak, uzun vadeli operasyonel sağlığın temelidir. UFW, fail2ban, SSH anahtar kimlik doğrulaması ve n8n yerleşik 2FA kombinasyonu saldırı yüzeyini önemli ölçüde küçültür. Sora DevOps ekibimizle n8n self-hosting altyapınızı planlayın, kurun ve optimize edin; ücretsiz keşif görüşmesi için bizimle iletişime geçin.

Bu yazıdaki konulara ihtiyacınız mı var?

Sora Yazılım uzmanlarıyla ücretsiz keşif görüşmesi planlayın; somut bir yol haritası önerelim.