n8n Kurulumu: Self-Hosted İş Akışı Otomasyonu
n8n Docker kurulumu, webhook entegrasyonları, iş akışı oluşturma, 400+ uygulama bağlantısı, zamanlanmış görevler, credentials yönetimi ve production deployment.
İçindekiler
n8n Kurulumu: Self-Hosted İş Akışı Otomasyonu
n8n, 400'den fazla uygulama ve servisi birbirine bağlayabilen, görsel arayüzlü açık kaynaklı bir iş akışı otomasyon platformudur. Zapier ve Make (Integromat) gibi servislere self-hosted alternatif olarak kendi sunucunuzda çalıştırabilirsiniz. Kod yazmadan karmaşık otomasyonlar oluşturabilir, ya da JavaScript/Python ile özel mantık ekleyebilirsiniz.
n8n Nedir?
n8n ("nodemation" kısaltması), node tabanlı görsel programlama ile iş akışları oluşturmanızı sağlar. Öne çıkan özellikleri:
- 400+ Entegrasyon: Slack, GitHub, Google Sheets, Notion, Airtable ve daha fazlası
- Webhook Desteği: HTTP isteklerini tetikleyici olarak kullanma
- Zamanlanmış Görevler: Cron tabanlı zamanlama
- Kod Desteği: JavaScript ve Python node'ları
- Hata Yönetimi: Retry mekanizması ve hata akışları
- Şifreli Credentials: API anahtarları güvenli şekilde saklanır
Sistem Gereksinimleri
- Docker ve Docker Compose kurulu sunucu
- Minimum 1 GB RAM (2 GB önerilir)
- PostgreSQL (production için önerilir) veya SQLite
Docker ile Temel Kurulum
SQLite ile Hızlı Başlangıç
# docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Istanbul
- N8N_ENCRYPTION_KEY=guclu-sifreleme-anahtari
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
# Container'ı başlat
docker compose up -d
# Logları kontrol et
docker logs n8n -f
N8N_ENCRYPTION_KEY credentials'ları şifrelemek için kullanılır. Bu değeri kaybederseniz tüm credentials'larınız erişilemez hale gelir. Güvenli bir yerde saklayın.
PostgreSQL ile Production Kurulum
version: '3.8'
services:
postgres:
image: postgres:15
container_name: n8n-postgres
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: guclu-sifre
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=guclu-sifre
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Istanbul
- N8N_ENCRYPTION_KEY=guclu-sifreleme-anahtari
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=admin-sifresi
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
volumes:
postgres-data:
Nginx Reverse Proxy
server {
listen 80;
server_name n8n.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
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;
# WebSocket desteği (n8n için gerekli)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
}
}
Temel Workflow Oluşturma
İlk Workflow: Webhook → Slack Bildirimi
- New Workflow butonuna tıklayın
- + ile node ekleyin → Webhook seçin
- HTTP Method: POST
- Path:
/slack-notify
- + ile yeni node → Slack seçin
- Operation: Send Message
- Channel: #genel
- Message:
{{ $json.message }}
- Save ve Activate edin
# Webhook'u test et
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "Merhaba n8n!"}'
Trigger Türleri
Webhook Trigger
// Webhook node ayarları
{
"httpMethod": "POST",
"path": "my-webhook",
"responseMode": "onReceived",
"responseData": "allEntries"
}
Cron (Zamanlama) Trigger
# Cron ifadeleri
0 9 * * 1-5 # Hafta içi her sabah 09:00
*/15 * * * * # Her 15 dakikada bir
0 0 * * * # Her gece yarısı
0 8 * * 1 # Her Pazartesi sabah 08:00
Polling Trigger
RSS Feed, Email (IMAP), Database değişiklikleri için
belirli aralıklarla kontrol eder.
Credentials Yönetimi
Settings → Credentials → Add Credential
Örnek: GitHub API
- Credential Type: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- Test bağlantısı yapın
// HTTP Request node ile özel API
{
"url": "https://api.example.com/data",
"method": "GET",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
}
Popüler Workflow Örnekleri
GitHub → Slack Bildirimi
GitHub Trigger (push event)
→ IF (branch == 'main')
→ Slack ("Yeni deploy: {{ $json.commits[0].message }}")
→ Email (ekibe bildirim)
Günlük Rapor
Cron Trigger (her sabah 09:00)
→ PostgreSQL (dünkü satışları çek)
→ Code (verileri formatla)
→ Google Sheets (rapora ekle)
→ Slack (özet gönder)
Form → CRM Entegrasyonu
Webhook (form submit)
→ Validate (zorunlu alanlar)
→ HubSpot (contact oluştur)
→ Email (hoş geldiniz maili)
→ Slack (satış ekibine bildir)
Queue Mode (Yüksek Yük)
Production ortamında yüksek iş yükü için queue mode kullanın:
environment:
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
# Redis servisi ekleyin
redis:
image: redis:7-alpine
container_name: n8n-redis
restart: unless-stopped
Yedekleme
# n8n verilerini yedekle
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/
# PostgreSQL yedekleme
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql
# Otomatik yedekleme
cat > /etc/cron.daily/n8n-backup << 'EOF'
#!/bin/bash
docker exec n8n-postgres pg_dump -U n8n n8n | \
gzip > /backups/n8n-$(date +%Y%m%d).sql.gz
find /backups -name "n8n-*.sql.gz" -mtime +30 -delete
EOF
REXE VPS sunucularında n8n ile tüm iş süreçlerinizi otomatize edebilirsiniz. 2 GB RAM ile yüzlerce workflow çalıştırabilirsiniz.
İlgili Makaleler
Coolify Kurulumu: Self-Hosted PaaS ile Uygulama Deployment
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
Nextcloud Kurulumu: Self-Hosted Bulut Depolama ve İşbirliği
Nextcloud kurulumu Docker ile, Apache/Nginx yapılandırması, veritabanı kurulumu, SSL sertifikası, dosya senkronizasyonu, uygulama mağazası ve performans optimizasyonu.
Portainer ile Docker Yönetimi: Web Arayüzlü Konteyner Kontrolü
Portainer CE kurulumu, Docker ve Kubernetes yönetimi, stack deployment, volume/network yönetimi, kullanıcı yetkilendirme, webhook ve GitOps entegrasyonu.