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.
n8n Docker kurulumu, webhook entegrasyonları, iş akışı oluşturma, 400+ uygulama bağlantısı, zamanlanmış görevler, credentials yönetimi ve production deployment.
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 ("nodemation" kısaltması), node tabanlı görsel programlama ile iş akışları oluşturmanızı sağlar. Öne çıkan özellikleri:
# 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.
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:
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;
}
}
/slack-notify{{ $json.message }}# Webhook'u test et
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "Merhaba n8n!"}'
// Webhook node ayarları
{
"httpMethod": "POST",
"path": "my-webhook",
"responseMode": "onReceived",
"responseData": "allEntries"
}
# 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
RSS Feed, Email (IMAP), Database değişiklikleri için
belirli aralıklarla kontrol eder.
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"
}
GitHub Trigger (push event)
→ IF (branch == 'main')
→ Slack ("Yeni deploy: {{ $json.commits[0].message }}")
→ Email (ekibe bildirim)
Cron Trigger (her sabah 09:00)
→ PostgreSQL (dünkü satışları çek)
→ Code (verileri formatla)
→ Google Sheets (rapora ekle)
→ Slack (özet gönder)
Webhook (form submit)
→ Validate (zorunlu alanlar)
→ HubSpot (contact oluştur)
→ Email (hoş geldiniz maili)
→ Slack (satış ekibine bildir)
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
# 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.
n8n self-hosted ve açık kaynaklıdır; Zapier ise bulut tabanlı ve ücretlidir. n8n'de verileriniz kendi sunucunuzda kalır, sınırsız workflow ve execution oluşturabilirsiniz. Zapier daha kullanıcı dostu olabilir ancak aylık execution limitleri ve yüksek maliyetleri vardır. n8n ayrıca JavaScript/Python ile özel kod yazmanıza izin verir.
WEBHOOK_URL ortam değişkeninin doğru ayarlandığından emin olun (https://n8n.example.com/). Nginx proxy'nin WebSocket bağlantılarını desteklediğini kontrol edin (Upgrade ve Connection başlıkları). Firewall'da 443 portunun açık olduğunu doğrulayın. n8n'de workflow'un 'Active' durumda olduğundan emin olun.
N8N_ENCRYPTION_KEY değiştirilirse mevcut credentials şifresi çözülemez. Bu durumda tüm credentials'ları yeniden oluşturmanız gerekir. Bu nedenle şifreleme anahtarını güvenli bir yerde (şifre yöneticisi, vault) saklamak kritik önem taşır. Yedekleme yaparken bu anahtarı da yedekleyin.
Execution history'yi sınırlayın: EXECUTIONS_DATA_MAX_AGE=168 (7 gün). Büyük veri setleri için binary data'yı dosya sistemine kaydedin: N8N_DEFAULT_BINARY_DATA_MODE=filesystem. Queue mode kullanarak worker sayısını kontrol edin. Gereksiz workflow'ları devre dışı bırakın.
Workflow editöründe her node'un çıktısını görebilirsiniz. 'Execute Node' ile tek node test edebilirsiniz. Execution listesinden geçmiş çalışmaları inceleyebilirsiniz. Hata node'u ekleyerek hataları yakalayıp Slack/email ile bildirim alabilirsiniz. docker logs n8n komutuyla sistem loglarını kontrol edin.
PostgreSQL kullanıyorsanız güncelleme güvenlidir. Güncelleme öncesi veritabanı yedeği alın: docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql. Ardından docker compose pull && docker compose up -d ile güncelleyin. n8n otomatik migration yapar. SQLite kullanıyorsanız ./n8n-data/ dizinini yedekleyin.
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
Nextcloud kurulumu Docker ile, Apache/Nginx yapılandırması, veritabanı kurulumu, SSL sertifikası, dosya senkronizasyonu, uygulama mağazası ve performans optimizasyonu.
Portainer CE kurulumu, Docker ve Kubernetes yönetimi, stack deployment, volume/network yönetimi, kullanıcı yetkilendirme, webhook ve GitOps entegrasyonu.