Lokal n8n Kurulumu: Docker ile Gerçek Hayat Otomasyonları (Dosya Sistemi, Volume, Retention)
- Alper AKBAS
- 24 saat önce
- 4 dakikada okunur
Güncelleme tarihi: 58 dakika önce
KORKMANIZA GEREK YOK, HEMEN HEMEN HER ŞEYİ DESKTOP UYGULAMASI ÜZERİNDEN GİDECEĞİZ. DOCKER ASLINDA KORKUNÇ DEĞİL, BÜYÜK KOLAYLIK!Bu yazıda, n8n’i lokal bilgisayarımızda Docker kullanarak nasıl kurduğumuzu, neden bu yolu seçtiğimizi ve gerçek hayatta karşılaşılan kritik noktaları ele alıyorum.
Bu arada önemli not: mümkün mertebe docker desktop kullanacağız. Yani terminal komutlarına sadece bir kaç yer (ileri seviye - muhtemelen ihtiyacınız olmayacak) dışında girmeyeceğim.
Önce bazı konuları okuyalım devamında da kurulum yaptığımız videoyu izleyebilirsiniz.
Video iki ana bölümden oluşuyor. İlk kısım N8N öğrenmeniz için yeterli bir kurulum. Son bölüme doğru biraz daha derinlemesine giriyoruz, oluşan lokal dosya ve dizinler, retention vb. En sonda da kurulumumuzun çalışıp çalışmadığın kontrol etmek için ufak bir deneme flow'u yapıyoruz.
Bu bir “hello world” kurulumu değil.
Amaç:
n8n’i gerçekten anlamak
Lokal kurulumun güçlü ve zayıf yönlerini görmek
Dosya sistemi, volume, binary data, retention gibi konularda kontrolü ele almak
Videoyu izleyenler için: Bu yazı, videoda adım adım yaptıklarımızın tam yazılı karşılığıdır.
Neden Docker? Neden Node.js Değil?
n8n Node.js tabanlı bir uygulama. İsterseniz doğrudan Node ile kurabilirsiniz.
Ama ben bilinçli olarak Docker’ı tercih ediyorum.
Bunun 3 net sebebi var:
Aynı kurulum, her işletim sistemi
Mac
Windows
Linux
Docker Desktop UI ile her yerde aynı adımlar.
Ortam karmaşası yok
Node sürümü
npm / pnpm farkları
sistem bağımlılıkları
→ Hepsi image içinde sabit.
Eğitim ve onboarding için ideal
Terminal korkusu yok
Görsel, anlaşılır
“Bende çalıştı sende çalışmadı” problemi yok
Docker kullanmamın sebebi Node’dan kaçmak değil, herkes için aynı deneyimi üretmek.
Lokal n8n Neden Kurulur?
Bence kişisel bir kullanıcının lokal n8n kurmasının iki ana nedeni var:
1️⃣ Ücretsiz
Cloud sürüm ücretli
Lokal sınırsız workflow
Deneme, öğrenme, kişisel otomasyon için ideal
2️⃣ Lokal dosya sistemine erişim
Cloud’da bilinçli olarak kısıtlanan bir şey bu.
Böylelikle ek özellikler ve kabiliyetler ekleme
Lokal n8n ile:
Bilgisayardaki dosyaları okuyabilirsiniz
JSON / CSV / HTML dosyaları yazabilirsiniz
Script’ler, Python servisleri, klasörler ile çalışabilirsiniz
En önemlisi diğer docker containerları ile konuşturabilirsiniz (ileri seviye ama bir yerden başlamak lazım
Eksileri (Yeni başlayanlar için):
Webhook'lar (yani internet üzerinden gelen istekler diyebiliriz) dışarıdan erişime kapalı (bu ileri seviyede ayarlanabilir tabii ki)
Cron joblar yani zamanlanmış görevler, ayarlanan zamanda bilgisayarınız ya da docker kurulumunuz açık değilse es geçilecek (bunun da çözümleri var tabii ki).
Bu, n8n’i gerçek bir otomasyon aracı yapıyor
KURULUM
Aksiyon burada başlıyor
İlgili Linkler:
Bize lazım olan linkler:
Opsiyonel linkler:
Örnekte kullanacağımız (çekeceğimiz sayfa): https://books.toscrape.com/
Timezonelar için tablo: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Youtube N8N resmi videosu (docker ile kurulum için): https://www.youtube.com/watch?v=6ET3G7GiqZA
Önemli not: benim videoda kullandığım docker versiyonu 4.55.00. Videoyu izlediğiniz sırada muhtemelen yeni versiyonlar yayınlanmış ve dolayısıyla ara yüzde değişiklikler olmuş olabilir. Ama olmamış da olabilir. Hiçbir şey olmasa bile bir şeyler yine de olmuş olabilir.
Volumeler (Depolama Ayarları)
Bu kısım ciddi arkadaşlar. 3 Klasör tanımlayacağız. Bu tanımladığımız 3 klasörü de docker tarafına bağlayacağız. Burada named ve bind terimleri devreye giriyor. Bu konuyu zaten videoda detaylandırıyoruz.
İlk yaptığımız şey, bilgisayarımızda istediğimiz bir alanda n8n klasörü ve altında iki adet "backup" ve "shared" klasörlerini yaratıyoruz.
Ayrıca docker desktop'ta volumes sekmesi altında n8nStorage isimli bir named volume yaratıyoruz. Bunun sebebi bu bizim aslında n8n kurulumumuzda veri tabanımızın, workflowlar ile ilgili işlem ve dosyaların saklandğı yer. Buna bizim lokal ortamımızda erişim sağlamamız riskli. O yüzden bu işi biz docker desktop'a bıraktık. Böylelikle dosya sistemine yazım izin hataları, veri tabanının kitlenmesi gibi hataların önüne geçmiş olduk.
Buraları anlamak için videoyu mutlaka baştan sona izleyin derim.
n8nStorage = /home/node/.n8n
/bilgisayarımızdaki_tam_yol/n8n/shared = /home/node/.n8n-files/shared“Her bind mount için host’ta ayrı klasör oluşturuyoruz. buradaki /home/node/.n8n-files/shared yolu bizim için çok önemli.
Write File node’larda mutlaka absolute path kullanıyoruz yani:
.n8n-files/shared/{{$binary.data.fileName}}ileride yukarıdaki satırı çok iyi anlayacaksınız. Normalde çok can sıkabilir ama artık bakabileceğiniz bir yer var =D.
Neden named volume yaptık ilk seçeneği (n8nStorage):
SQLite sıkıntıları
credentials sıkıntıları
execution metadata (bunları sadece gerektiğinde zaten Docker Desktop üzerinden görebileceğiz.)
permission sorunları minimum
Bunu named volume yapmak retention + stabilite açısından en doğru tercih.
Çevresel (Environmental) Değişkenler
Kurulum videosunda kullanacağımız environmental (çevresel) değişkinler (resmi dokümantasyondan aldıklarımız):
GENERIC_TIMEZONE="Europe/Istanbul"
TZ="Europe/Istanbul"
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false (çok önemli aşağıda yazdım nedenini)
N8N_RUNNERS_ENABLED=true (bu opsiyonel)Biz desktop üzerinde çalıştığımız için tırnak işaretlerini almıyoruz!!! Bunu netleştireyim, çünkü bu konu çok kişiyi yakıyor.
Timezonelarla alakalı farklı bölgeler isterseniz, makelenin başında bir wikipedia linki bıraktım.
Çok önemli: "TZ" docker ile ilgili saat dilimi ayarı "GENERIC_TIMEZONE" ise bizim n8n kurulumumuzun saat dilimi ayarı ki bunu arayüzden de değiştirebiliriz. Ama best practice bu ikisini de vermek.
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS adından da anlaşılacağı üzere dosya yazma izinlerini N8N'in getirdiği politikalarla sınırlıyor, o yüzden bunu false olarak atayalım ki, belirttiğimiz klasörlere yazım yapalım ya da dosya okuyalım. Önemli konu, ileride çok uğraşırsınız. Bunu da herkes söylemez. Bunu farketmek saatlerimi aldı.
Ayrıca biz şu env değişkenleri de ekleyeceğiz:
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168
EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000Bu ikinci kısımdakileri eklememizin sebebi data retention, ya da diğer bir ifadeyle kullandığımız disk alanının şişmemesi için eski dosyaları otomatik silmek istememiz. Mevcut değerler 7 günden eski execution’ları siler. Videoda detaylı anlatıyorum. Bence dinleyin ileride canınız sıkılmasın :)
Container ayarlarımızın son hali aşağıdakine benzer olmalı:

-- Küçük hatırlatma volume altındaki ikinci ve üçüncü seçenekler (soldakiler) tam dosya yolumuz (bilgisayarımızda yarattığımız ilgili klasörler).
Youtube Videosu:
Çok yakında eklenecek.....
Ufak bir ek not:
Bilgisiyarımız her açıldığında bu n8n kurulumumuzun otomatik olarak başlamasını nasıl sağlayacağız peki?
Cevap iki basamaklı:
Docker desktop'ta -aşağıdaki görselde de görüldüğü gibi- Genel (General) sekmesi altında "Start Docker Desktop when you sign in to your computer" seçeneğini aktifleştirip "Apply" ya da "Uygula" düğmesine basacağız ki önce docker açılsın.

Burada üzgünüm ama mevcut desktop uygulaması desteklemediği için küçük bir terminal / bash komutu gireceğiz (videoda anlatıyorum). Öncelikle docker desktop sağ altında bulunan "Terminal" düğmesini tıklayıp, dahili terminali açacağız ve burada şu komutu gireceğiz:
docker update --restart unless-stopped <container_ismi>Booomm, artık bilgisayarınız açıkken çalışan bir lokal n8n kurulumunuz var. Güç sizde artık.
Sonuç
Lokal n8n:
Ücretsiz olduğu için değil
Kontrol sende olduğu için güçlü
Docker ile:
Ortam sabit
Davranış öngörülebilir
Öğrenme derinleşir
Bu yazı ve video:
“Nasıl kurulur?” değil
“Nasıl düşünülür?” anlatımıdır.
Adettendir, en sona da bir anket koyalım:
Anlatım ve video hakkında ne düşünüyorsunuz.
Mükemmel bir anlatım olmuş.
Fena değil.
Aradığım bazı şeyleri bulamadım.
Hiçbir şey anlamadım. Bu neydi!
Yorumlar