n8n Cloud aylık 24 dolardan başlar. Kendi sunucunuza kurulum ise pratik olarak ücretsizdir — zaten bir VPS'iniz varsa. Bir müşteride bu geçişi yaptım: n8n Cloud'dan self-hosted'a taşıdık, aylık 800 dolar (enterprise plan) sıfıra indi. Bu yazı o kurulumun adım adım rehberidir.
Gereksinimler
- Ubuntu 22.04 LTS VPS (minimum 2 CPU, 4 GB RAM önerilir)
- Bir domain/subdomain:
n8n.siteniz.com - Docker ve Docker Compose kurulu
1. Docker Kurulumu
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
docker --version
2. n8n Docker Compose Konfigürasyonu
# /opt/n8n/docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.siteniz.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.siteniz.com/
- GENERIC_TIMEZONE=Europe/Istanbul
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=336 # 14 gün
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:15-alpine
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
# /opt/n8n/.env
N8N_ENCRYPTION_KEY=$(openssl rand -base64 32)
POSTGRES_PASSWORD=$(openssl rand -base64 24)
3. Nginx + SSL Kurulumu
sudo apt install nginx certbot python3-certbot-nginx -y
# /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.siteniz.com;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
chunked_transfer_encoding on;
proxy_buffering off;
}
}
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo certbot --nginx -d n8n.siteniz.com
sudo systemctl reload nginx
4. Başlatma ve Test
cd /opt/n8n
docker compose up -d
docker compose logs -f n8n # logları izle
5. Otomatik Yedekleme
#!/bin/bash — /opt/n8n/backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
docker exec n8n-postgres-1 pg_dump -U n8n n8n | \
gzip > /opt/backups/n8n_${DATE}.sql.gz
# 30 günden eski yedekleri sil
find /opt/backups -name "n8n_*.sql.gz" -mtime +30 -delete
# Cron (her gece 03:00)
# 0 3 * * * /opt/n8n/backup.sh
Güvenlik Kontrol Listesi
- Port 5678'i firewall ile dışarıya kapatın:
ufw deny 5678 - n8n'in yalnızca localhost'tan erişilebilir olduğunu doğrulayın
- Güçlü bir admin şifresi ve 2FA kullanın
- Düzenli Docker image güncellemesi yapın:
docker compose pull && docker compose up -d - Encryption key'i güvenli yerde saklayın — kaybedilirse tüm credential'lar ulaşılamaz olur