Kurulum öncesi mimari ve gereksinimler
- Ubuntu 24.04 LTS ve Docker Compose v2
- Başlangıç için 4 vCPU, 8 GB RAM, NVMe disk
- n8n.example.com DNS A kaydı
- PostgreSQL, Redis, main, worker, webhook ve runner servisleri için kalıcı plan
n8n’i PostgreSQL, Redis, ayrı worker ve task runner servisleriyle ölçeklenebilir Queue Mode mimarisinde kurun; webhook, şifreleme anahtarı, SSL, yedekleme ve izlemeyi tamamlayın.

n8n’i PostgreSQL, Redis, ayrı worker ve task runner servisleriyle ölçeklenebilir Queue Mode mimarisinde kurun; webhook, şifreleme anahtarı, SSL, yedekleme ve izlemeyi tamamlayın. Komutlar kopyalanabilir biçimde verilmiştir; örnek alan adları ve parolalar çalıştırılmadan önce kendi değerlerinizle değiştirilmelidir.
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginopenssl rand -hex 32
openssl rand -base64 48
openssl rand -base64 36.env
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
GENERIC_TIMEZONE=Europe/Istanbul
N8N_ENCRYPTION_KEY=BURAYA_64_KARAKTER_RASTGELE_DEGER
POSTGRES_USER=n8n
POSTGRES_PASSWORD=GUCLU_POSTGRES_PAROLASI
POSTGRES_DB=n8n
QUEUE_BULL_REDIS_HOST=redis
EXECUTIONS_MODE=queue
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=336services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_veri:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_veri:/data
n8n:
image: docker.n8n.io/n8nio/n8n:2
restart: unless-stopped
env_file: .env
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
N8N_RUNNERS_ENABLED: "true"
ports:
- 127.0.0.1:5678:5678
volumes:
- n8n_veri:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
worker:
image: docker.n8n.io/n8nio/n8n:2
restart: unless-stopped
command: worker --concurrency=5
env_file: .env
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
N8N_RUNNERS_ENABLED: "true"
depends_on:
- redis
- postgres
volumes:
postgres_veri:
redis_veri:
n8n_veri:sudo docker compose config
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --since 10m n8n worker
curl -I http://127.0.0.1:5678/healthzsudo docker compose exec -T postgres pg_dump -U n8n -d n8n -Fc > n8n-$(date +%F).dump
sha256sum n8n-$(date +%F).dumpsudo docker compose stop n8n worker
sudo docker compose exec -T postgres dropdb -U n8n --if-exists n8n
sudo docker compose exec -T postgres createdb -U n8n n8n
sudo docker compose exec -T postgres pg_restore -U n8n -d n8n --clean --if-exists < n8n-YEDEK.dump
sudo docker compose up -dsudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
sudo tee /etc/nginx/sites-available/n8n.example.com > /dev/null <<'NGINX'
server {
listen 80;
listen [::]:80;
server_name n8n.example.com;
client_max_body_size 10G;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
NGINX
sudo ln -s /etc/nginx/sites-available/n8n.example.com /etc/nginx/sites-enabled/n8n.example.com
sudo nginx -t
sudo systemctl reload nginxsudo certbot --nginx -d n8n.example.com --redirect --agree-tos --no-eff-email -m [email protected]
sudo certbot renew --dry-run
curl -I https://n8n.example.com
openssl s_client -connect n8n.example.com:443 -servername n8n.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates| Belirti / Symptom | Kök neden ve çözüm / Root cause and fix |
|---|---|
| Worker işi almıyor | EXECUTIONS_MODE, Redis host, encryption key ve n8n sürümlerinin main ile aynı olduğu doğrulanır. |
| Webhook yanlış URL üretiyor | WEBHOOK_URL ve N8N_EDITOR_BASE_URL dışarıdan erişilen HTTPS adresi olarak tanımlanır. |
| Credentials could not be decrypted | Eski kurulumdaki N8N_ENCRYPTION_KEY geri getirilir; yeni anahtarla mevcut credential açılamaz. |
| PostgreSQL bağlantısı tükeniyor | Worker/concurrency sayısı düşürülür, bağlantı sayısı ölçülür ve gerekirse PgBouncer eklenir. |
Evet; fakat örnek değerler değiştirilmeden, erişim sınırları uygulanmadan ve geri yükleme testi yapılmadan üretime alınmamalıdır.
Minimum değer yalnız kurulumun açılması içindir. Eş zamanlı kullanıcı, veri büyümesi ve arka plan işleri ölçülerek kaynak payı bırakılmalıdır.
Evet. SSL modu Full (strict), doğru origin sertifikası ve WebSocket/gerçek IP başlıkları uygulamanın gereksinimine göre ayarlanmalıdır.
Major sürümler otomatik güncellenmemelidir. Sürüm notu, veritabanı migration bilgisi, yedek ve geri dönüş imajı kontrol edilmelidir.
Veritabanı, yüklenen dosyalar, volume verileri, yapılandırma, şifreleme anahtarları ve kullanılan sürüm etiketi aynı geri dönüş setinde tutulmalıdır.
Web paneli ve standart iş yükleri için NVMe VPS yeterli olabilir. Model inference, OCR hızlandırma veya video transcoding varsa uygun GPU gerekir.
n8n’i PostgreSQL, Redis, ayrı worker ve task runner servisleriyle ölçeklenebilir Queue Mode mimarisinde kurun; webhook, şifreleme anahtarı, SSL, yedekleme ve izlemeyi tamamlayın.