
n8n'in en büyük avantajlarından biri kendi sunucunuzda ücretsiz çalıştırabilmeniz. n8n Cloud'da execution limitleri ve aylık ücretler varken, self-hosted kurulumda sınırsız workflow ve sınırsız execution hakkına sahip olursunuz. Bu rehberde n8n self-hosting kurulumunu Docker Compose ile adım adım yapacağız.
Eğer n8n hakkında temel bilgilere ihtiyacınız varsa önce n8n Nedir? Başlangıç Rehberi yazımıza göz atın.
İçindekiler
- Self-Hosting Neden Önemli?
- Gereksinimler
- Adım 1: Sunucu Hazırlığı
- Adım 2: Proje Dizini ve Ortam Değişkenleri
- Adım 3: Docker Compose Dosyası
- Adım 4: n8n'i Başlatma
- Adım 5: SSL ve Reverse Proxy (Nginx)
- Güvenlik Ayarları
- Yedekleme Stratejisi
- Güncelleme ve Bakım
- Performans Optimizasyonu
- Sonuç
- Sıkça Sorulan Sorular (FAQ)
Self-Hosting Neden Önemli?
n8n self-hosting tercih etmenin dört temel nedeni vardır:
- Maliyet: Sınırsız workflow, sınırsız execution - tamamen ücretsiz. Sadece sunucu maliyeti ödersiniz (aylık ~$5'tan başlar)
- Veri Güvenliği: Tüm verileriniz kendi sunucunuzda kalır. KVKK ve GDPR uyumlu çalışabilirsiniz
- Tam Kontrol: Güncelleme zamanlamasını, kaynak tahsisini ve yapılandırmayı siz belirlersiniz
- Performans: Sunucu kaynaklarını ihtiyacınıza göre ölçeklendirebilirsiniz
n8n Cloud ile self-hosting arasında kararsız kalıyorsanız: küçük projeler ve hızlı başlangıç için Cloud, ciddi iş yükleri ve veri kontrolü için self-hosting önerilir. Uygun fiyatlı sunucu seçenekleri için Hostinger VPS ile aylık $5'a sınırsız otomasyon rehberimize bakabilirsiniz.
Gereksinimler
n8n self-hosting için ihtiyacınız olanlar:
- Linux sunucu (Ubuntu 22.04 veya 24.04 önerilir)
- Minimum 2 GB RAM, en az 2 CPU core
- Docker ve Docker Compose (v2)
- Domain adı (SSL sertifikası için gerekli)
Adım 1: Sunucu Hazırlığı
Sunucunuza SSH ile bağlanın, sistemi güncelleyin ve Docker'ı kurun:
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose-v2 -y
sudo systemctl enable docker
sudo systemctl start docker
Her iki komutun da hatasız çalıştığından emin olun. Docker'ın düzgün kurulduğunu doğrulamak için sürüm bilgilerini kontrol edin:
docker --version
docker compose version
Adım 2: Proje Dizini ve Ortam Değişkenleri
n8n için bir çalışma dizini oluşturun ve hassas bilgileri .env dosyasında saklayın:
mkdir -p ~/n8n-docker
cd ~/n8n-docker
Aşağıdaki içerikle .env dosyası oluşturun. Şifreleri kendi güçlü şifrelerinizle değiştirin:
# PostgreSQL
POSTGRES_USER=n8n
POSTGRES_PASSWORD=guclu-db-sifresi-degistirin
POSTGRES_DB=n8n
# n8n
N8N_HOST=n8n.sizindomain.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.sizindomain.com/
N8N_ENCRYPTION_KEY=rastgele-uzun-bir-anahtar-olusturun
.env dosyasındaki şifreleri mutlaka değiştirin. N8N_ENCRYPTION_KEY özellikle önemlidir - credential'larınızı şifreleyen anahtardır ve kaybederseniz tüm kayıtlı kimlik bilgilerinize erişimi yitirirsiniz.
Adım 3: Docker Compose Dosyası
Aşağıdaki içerikle docker-compose.yml dosyası oluşturun. Bu yapılandırma n8n'in resmi önerdiği PostgreSQL kurulumunu içerir:
services:
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- N8N_HOST=${N8N_HOST}
- N8N_PORT=${N8N_PORT}
- N8N_PROTOCOL=${N8N_PROTOCOL}
- WEBHOOK_URL=${WEBHOOK_URL}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- GENERIC_TIMEZONE=Europe/Istanbul
- TZ=Europe/Istanbul
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
n8n_data:
Bu yapılandırmada dikkat edilmesi gereken noktalar:
docker.n8n.io/n8nio/n8n: n8n'in resmi Docker registry'sinden çekilen güncel image- PostgreSQL 16: Production için önerilen veritabanı (SQLite yerine)
- Health check: n8n, PostgreSQL hazır olmadan başlamaz
.envreferansları: Şifreler docker-compose dosyasında açık metin olarak yer almaz
Adım 4: n8n'i Başlatma
Her şey hazır, n8n'i başlatın:
docker compose up -d
İlk çalıştırmada n8n veritabanı tablolarını oluşturacak ve hazır hale gelecektir. Tarayıcınızda http://sunucu-ip:5678 adresine gidin.
İlk girişte n8n sizden bir owner hesabı oluşturmanızı isteyecektir. E-posta adresinizi ve şifrenizi belirleyin. Bu hesap, n8n'in yönetici hesabıdır ve kullanıcı yönetimi, credential'lar ve tüm workflow'lar üzerinde tam yetkiye sahiptir.
Container'ların durumunu kontrol etmek için:
docker compose ps
docker compose logs -f n8n
Adım 5: SSL ve Reverse Proxy (Nginx)
Production ortamında SSL şarttır. Nginx ve Certbot ile ücretsiz SSL sertifikası alın:
sudo apt install nginx certbot python3-certbot-nginx -y
Nginx konfigürasyonu oluşturun (/etc/nginx/sites-available/n8n):
server {
server_name n8n.sizindomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
chunked_transfer_encoding off;
proxy_buffering off;
}
}
Konfigürasyonu aktifleştirin ve SSL sertifikası alın:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d n8n.sizindomain.com
Artık n8n'e https://n8n.sizindomain.com adresinden güvenli şekilde erişebilirsiniz. Certbot otomatik olarak sertifika yenileme işlemini de ayarlar, bu nedenle SSL sertifikanız süresi dolmadan kendini yenileyecektir.
Güvenlik Ayarları
n8n self-hosting kurulumunuzun güvenliğini sağlamak için şu adımları uygulayın:
- Güçlü şifreler: Owner hesabı ve veritabanı için karmaşık, benzersiz şifreler kullanın
- Firewall: Sadece 80 (HTTP), 443 (HTTPS) ve SSH portlarını açık tutun. 5678 portunu dışarıya kapatın
- SSH güvenliği: Root login'i devre dışı bırakın, SSH key authentication kullanın
- Güncellemeler: Docker image'larını düzenli olarak güncelleyin (
docker compose pull && docker compose up -d) - Encryption key:
N8N_ENCRYPTION_KEYdeğerini güvenli bir yerde yedekleyin. Bu anahtar olmadan credential'larınız kurtarılamaz - Yedekleme: Veritabanını ve n8n_data volume'unu düzenli olarak yedekleyin
Yeni başlayanların kurulumda sık düştüğü tuzaklardan kaçınmak için n8n'de Yeni Başlayanların Yaptığı 7 Kritik Hata yazımızı da okuyun.
Yedekleme Stratejisi
Otomatik yedekleme scripti oluşturun ve cron ile zamanlayın:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR=~/n8n-backups
mkdir -p $BACKUP_DIR
# PostgreSQL yedeği
docker compose exec -T postgres pg_dump -U n8n n8n > $BACKUP_DIR/n8n_db_$DATE.sql
# 30 günden eski yedekleri sil
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
Bu scripti /etc/cron.d/ altına ekleyerek günlük otomatik yedekleme kurabilirsiniz.
Güncelleme ve Bakım
n8n'i güncellemek için:
cd ~/n8n-docker
docker compose pull
docker compose up -d
Güncelleme öncesinde mutlaka yedek alın. Büyük sürüm geçişlerinde (örneğin 1.x'den 2.x'e) n8n changelog sayfasını kontrol edin.
Eski execution verilerini temizlemek de performans açısından önemlidir. n8n ayarlarında execution data retention süresini sınırlayabilirsiniz. Production ortamında son 30-90 günlük veriyi saklamak genellikle yeterlidir.
Performans Optimizasyonu
n8n self-hosting kurulumunuzdan maksimum performans almak için birkaç ek ayar yapabilirsiniz:
- Execution data retention: n8n ortam değişkenlerinde
EXECUTIONS_DATA_MAX_AGEile eski execution verilerini otomatik temizleyin - Worker mode: Yüksek hacimli otomasyonlarda ana n8n instance'ı ile worker'ları ayırarak iş yükünü dağıtabilirsiniz. Bu kurulum Redis gerektirir
- PostgreSQL tuning:
shared_buffers,work_memveeffective_cache_sizedeğerlerini sunucu RAM'inize göre optimize edin - Container limitleri: Docker Compose'da
deploy.resources.limitsile CPU ve bellek sınırları tanımlayarak kaynak kullanımını kontrol altında tutun
n8n self-hosting ile otomasyon projelerini gelir kaynağına dönüştürmek veya otomasyon hizmeti olarak satmak da mümkündür.
Sonuç
n8n self-hosting, Docker Compose ile 30 dakikada kurulabilir ve tamamen ücretsiz çalışır. PostgreSQL veritabanı, SSL sertifikası ve düzenli yedekleme ile production-ready bir otomasyon platformuna sahip olursunuz. Kurulumunuz tamamlandığında sınırsız workflow oluşturabilir, 1.100'den fazla entegrasyonu kullanabilir ve tüm verilerinizi kendi kontrolünüzde tutabilirsiniz.
n8n'in yapay zeka yeteneklerini self-hosted kurulumunuzda kullanmak istiyorsanız n8n ile Yapay Zeka Otomasyonu rehberimize göz atın. Tüm bu konuları detaylı olarak öğrenmek için n8nkursu.com adresinden kapsamlı Türkçe eğitimlere ulaşabilirsiniz.
Sıkça Sorulan Sorular (FAQ)
n8n self-hosting ücretsiz mi?
Evet. n8n açık kaynaklı bir projedir ve self-hosted kurulumda yazılım tamamen ücretsizdir. Sadece sunucu maliyeti ödersiniz ki bu da aylık yaklaşık $5'tan başlar. Sınırsız workflow ve execution hakkına sahip olursunuz.
n8n self-hosting için ne kadar RAM gerekir?
Minimum 2 GB RAM önerilir. Orta düzey kullanım için 4 GB, yoğun AI workflow'ları çalıştıracaksanız 8 GB RAM idealdir. CPU olarak 2 core yeterlidir ancak yoğun iş yükleri için 4 core tercih edilebilir.
n8n Docker güncelleme nasıl yapılır?
docker compose pull komutuyla en son image'ı çekin, ardından docker compose up -d ile container'ları yeniden başlatın. Güncelleme öncesi mutlaka veritabanı yedeği alın.
n8n self-hosting KVKK'ya uygun mu?
Evet. Self-hosted kurulumda tüm veriler kendi sunucunuzda kalır. Türkiye'deki bir VPS sağlayıcı kullanarak verilerin yurt içinde kalmasını garanti edebilirsiniz. Bu da KVKK gerekliliklerini karşılamanızı kolaylaştırır.
n8n Cloud mu self-hosting mi tercih etmeliyim?
Küçük projeler, hızlı prototipleme ve teknik bilgisi sınırlı ekipler için n8n Cloud uygundur. Ciddi iş yükleri, veri güvenliği gereksinimleri, maliyet optimizasyonu veya KVKK uyumu gerektiren senaryolar için self-hosting önerilir.
SQLite yerine neden PostgreSQL kullanmalıyım?
SQLite tek dosyalı bir veritabanıdır ve eşzamanlı yazma işlemlerinde sorun çıkarabilir. PostgreSQL, yüksek hacimli otomasyonlarda daha güvenilir performans sunar, düzgün yedekleme yapmanıza olanak tanır ve n8n'in resmi olarak production için önerdiği veritabanıdır.
İlgili Yazılar

13 n8n Projesi: Yeni Başlayanlar İçin Otomasyon Fikirleri
Otomasyon dünyasına adım atmak istiyorsunuz ama nereden başlayacağınızı bilmiyor musunuz? n8n, 1.000'den fazla entegrasyonu ve görsel workflow editörü ile hem...
Oku
2026'da Neden Hala n8n Kullanmalıyız?
Otomasyon dünyası hızla değişiyor. Yapay zeka, no-code araçlar ve bulut teknolojileri her geçen gün gelişirken, 2026 n8n platformu rakiplerinden bir adım önde...
Oku