Was läuft am Ende dieser Anleitung? n8n skalierbar im Queue Mode mit PostgreSQL, Redis, separaten Workern und Task Runnern inklusive Webhooks, Verschlüsselung, TLS, Backup und Monitoring betreiben. Beispiel-Domains, Passwörter und Secrets müssen vor der Ausführung durch eigene Werte ersetzt werden.
Praktische Installationsschritte 1. Docker kurulumu Kopieren 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=3364. Compose yapısı Kopieren services:
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:5. Başlatma ve sağlık Kopieren 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/healthz6. PostgreSQL yedeği Kopieren sudo 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 -d8. Nginx reverse proxy Kopieren sudo 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 nginx9. Let’s Encrypt SSL ve yenileme testi Kopieren sudo 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 -datesHäufig gestellte Fragen Ist die Installation produktionsgeeignet? Ja, nachdem Secrets ersetzt, Zugriffe begrenzt und ein vollständiger Restore erfolgreich getestet wurde.
Reichen Mindestressourcen? Mindestwerte zeigen nur, dass Software startet. CPU, RAM, IOPS und Speicher anhand echter Last dimensionieren.
Kann Cloudflare verwendet werden? Ja. Full (strict) TLS sowie Origin-Zertifikat, WebSockets und echte Client-IP korrekt konfigurieren.
Updates automatisch installieren? Major Releases nicht automatisch installieren. Migrationen prüfen, Backup erstellen und altes Image bereithalten.
Was muss gesichert werden? Datenbank, Uploads, Volumes, Konfiguration, Schlüssel und genaue Version gemeinsam sichern.
VPS oder GPU-Server? NVMe-VPS passt für Web-Workloads; Inferenz, OCR-Beschleunigung und Transcoding können eine GPU benötigen.