Neden Kurumsal n8n Dağıtımlarında SQLite Yerine PostgreSQL Seçilmeli?
n8n varsayılan olarak SQLite veritabanı ile ayağa kalkar. Ancak ERP entegrasyonları, otomatik fatura senkronizasyonları ve yüksek hacimli webhook tetiklemeleri devreye girdiğinde SQLite kilitlenme hataları (database is locked) üretir. Kurumsal ortamlarda veri bütünlüğü, yüksek işlem hızı ve düzenli yedeklenebilirlik için n8n uygulamasının arkasında bağımsız bir PostgreSQL konteyneri çalıştırılmalıdır.
Adım Adım Docker Compose ile Dağıtım
1. Sunucu Gereksinimleri ve Dizin Yapısı
Ubuntu 22.04 / 24.04 LTS sunucunuzda Docker ve Docker Compose paketlerinin kurulu olduğunu doğrulayın. Çalışma alanını hazırlayın:
mkdir -p /opt/n8n-docker && cd /opt/n8n-docker
mkdir n8n_data postgres_data
2. docker-compose.yml Dosyasının Hazırlanması
Terminal üzerinden nano docker-compose.yml komutuyla yapılandırma dosyasını oluşturun:
version: '3.8'
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: n8n_user
POSTGRES_PASSWORD: GucluParolaniz2026!
POSTGRES_DB: n8n_database
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
- n8n_network
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n_database
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=GucluParolaniz2026!
- N8N_HOST=otomasyon.alanadiniz.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://otomasyon.alanadiniz.com/
- GENERIC_TIMEZONE=Europe/Istanbul
ports:
- "127.0.0.1:5678:5678"
volumes:
- ./n8n_data:/home/node/.n8n
networks:
- n8n_network
depends_on:
- postgres
networks:
n8n_network:
driver: bridge
3. Nginx Reverse Proxy ve SSL Sertifikasyonu
Port 5678’i dış dünyaya doğrudan açmak yerine Nginx üzerinden proxy_pass verilmeli ve Let’s Encrypt SSL tanımlanmalıdır:
-
Nginx sunucu bloğunda WebSocket desteği için
Upgrade $http_upgradeveConnection "Upgrade"başlıklarını ekleyin. -
Certbot ile SSL sertifikasını üretip aktif edin:
certbot --nginx -d otomasyon.alanadiniz.com
4. Servisi Başlatma ve Sağlık Kontrolü
Aşağıdaki komutla servisleri arka planda başlatın:
docker compose up -d
docker compose logs -f n8n
Log ekranında Editor is now accessible via: [https://otomasyon.alanadiniz.com/](https://otomasyon.alanadiniz.com/) ibaresi görüldüğünde kurulum tamamlanmıştır.
Veri Yedekleme Stratejisi
PostgreSQL veritabanını düzenli yedeklemek için bir cron işi tanımlanmalı ve docker exec -t [postgres_konteyner_id] pg_dumpall -c -U n8n_user > yedek.sql komutu günlük olarak izole bir depolama alanına aktarılmalıdır. Karmaşık API köprüleri ve muhasebe entegrasyon süreçleriniz için BaykalSoft otomasyon danışmanlığından faydalanabilirsiniz.