• Teknoloji

Linux VPS'de n8n'i Kendi Sunucunuzda Nasıl Barındırabilirsiniz (Adım Adım)

  • Felix Rose-Collins
  • ••
  • 13 min read

Giriş

n8n, günümüzde mevcut olan en güçlü açık kaynaklı iş akışı otomasyon araçlarından biridir. Zapier veya Make gibi SaaS alternatiflerinden farklı olarak, n8n size verileriniz ve otomasyonlarınız üzerinde tam kontrol sağlar — ancak bunu yalnızca kendi sunucunuzda barındırdığınızda. Linux VPS, bunun için ideal ortamdır: her zaman çalışır durumda, uygun fiyatlı ve tamamen sizin kontrolünüz altındadır.

Bu kılavuz, Linux VPS üzerinde üretim ortamına hazır, kendi sunucunuzda barındırılan bir n8n örneğini kurma sürecinin tamamını adım adım anlatır. Boş bir sunucudan başlayarak, Docker, Nginx, PostgreSQL, otomatik yedeklemeler ve güçlendirilmiş güvenlik yapılandırması ile tamamen güvenli, SSL destekli bir n8n kurulumuna ulaşacaksınız.

Önemli Noktalar

  • VPS üzerinde çalışan n8n, size sınırsız iş akışı, kullanım sınırlaması ve tam veri sahipliği sunar
  • Docker, daha kolay güncellemeler ve izolasyon için önerilen kurulum yöntemidir
  • Üretim iş yükleri için önerilen veritabanı PostgreSQL'dir (SQLite değil)
  • Üretim ortamında kullanım için Let’s Encrypt SSL’ye sahip bir ters proxy (Nginx) gereklidir
  • PostgreSQL ile sorunsuz bir n8n deneyimi için VPS'nizin en az 1 vCPU ve 2 GB RAM'e sahip olması gerekir
  • Düzenli otomatik yedeklemeler, iş akışı verilerinizi ve kimlik bilgilerinizi korur

n8n nedir?

n8n (telaffuzu “n-eight-n”), görsel düğüm tabanlı bir düzenleyici kullanarak uygulamaları, API’leri ve hizmetleri birbirine bağlamanıza olanak tanıyan, kaynak kodu açık bir iş akışı otomasyon platformudur. Kullanıma hazır olarak 400’den fazla entegrasyonu destekler ve iş akışları içinde özel JavaScript veya Python kodları çalıştırmanıza izin verir.

n8n ile rakipleri arasındaki temel fark üç şeye indirgenebilir: sahiplik, maliyet ve esneklik.

**Sahiplik: **n8n’i kendi sunucunuzda barındırdığınızda, iş akışı verileriniz, kimlik bilgileriniz ve yürütme günlükleriniz asla sunucunuzdan dışarı çıkmaz. Hassas müşteri verilerini, finansal kayıtları veya özel iş mantığını işleyen ekipler için bu son derece önemlidir. Bulut platformları ise otomasyon mantığınızı kendi altyapılarında depolar ve bu, onların veri saklama politikalarına ve güvenlik duruşlarına tabidir.

**Maliyet: **n8n bulut planı, iş akışı yürütme başına ücretlendirilir; bu da yüksek hacimli otomasyonlarda maliyetin hızla artmasına neden olur. Günde binlerce yürütme gerçekleştiren orta ölçekli bir ekip, aylık olarak yüzlerce dolar harcayabilir. Kendi VPS’nizde ise, sunucu ücretini ödediğinizde, yürütmeler ekstra bir maliyet olmaksızın sınırsızdır.

**Esneklik: **Kendi sunucunuzda barındırılan n8n, topluluk düğümlerini kurmanıza, iş akışları içinde istediğiniz kodu çalıştırmanıza, genel internetten erişilemeyen dahili hizmetlere bağlanmanıza ve dağıtımın her yönünü istediğiniz gibi yapılandırmanıza olanak tanır. Bulut planları ise bu özelliklerin çoğunu kısıtlar.

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Ubuntu 22.04 veya 24.04 (önerilir) çalıştıran bir Linux VPS. Bazı giriş seviyesi planlar yalnızca diğer dağıtımları sunduğundan, sağlayıcınızın seçtiğiniz plan boyutunda Ubuntu sunup sunmadığını kontrol edin
  • Sudo ayrıcalıklarına sahip, root olmayan bir kullanıcı
  • VPS IP adresinize yönlendirilmiş bir alan adı (örn. n8n.yourdomain.com)
  • Sunucunuza SSH erişimi
  • Linux komut satırına ilişkin temel bilgi

Doğru VPS'yi Seçme

Seçtiğiniz sunucu, n8n’in performansını doğrudan etkiler. En az 1 vCPU, 2 GB RAM ve 20 GB SSD depolama alanına ihtiyacınız vardır. PostgreSQL, Nginx ve n8n’in hepsi aynı anda çalıştığı için, minimal SQLite tabanlı bir kurulumla karşılaştırıldığında ekstra RAM gereklidir.

Ranktracker ile tanışın

Etkili SEO için Hepsi Bir Arada Platform

Her başarılı işletmenin arkasında güçlü bir SEO kampanyası vardır. Ancak sayısız optimizasyon aracı ve tekniği arasından seçim yapmak, nereden başlayacağınızı bilmek zor olabilir. Artık korkmayın, çünkü size yardımcı olacak bir şeyim var. Etkili SEO için Ranktracker hepsi bir arada platformunu sunuyoruz

Sonunda Ranktracker'a kaydı tamamen ücretsiz olarak açtık!

Ücretsiz bir hesap oluşturun

Veya kimlik bilgilerinizi kullanarak oturum açın

Birden fazla kullanıcısı olan, karmaşık çok adımlı iş akışları olan veya yüksek webhook işleme kapasitesine sahip ekipler için 2 vCPU ve 4 GB RAM’e yükseltin. Uzun yürütme günlüklerini saklamayı planlıyorsanız depolama alanı en az 40 GB olmalıdır.

PetroSky, Paris ve Montreal’de NVMe VPS planları sunar; ödeme sırasında n8n, tek tıklamayla kurulabilen bir uygulama olarak sunulur: açık kaynaklı bir kurulum komut dosyası, n8n’i Docker Compose ile dağıtır ve Caddy ile Let’s Encrypt aracılığıyla HTTPS’yi otomatik olarak kurar. Bu kılavuz, herhangi bir sağlayıcıda çalışan manuel yöntemi ele almaktadır.

Bir VPS sağlayıcısı seçerken coğrafi konumu da göz önünde bulundurun. n8n örneğinizi, en sık bağlanacağı hizmetlere en yakın bölgede barındırın; bu, iş akışı yürütmelerinizdeki API gecikmesini azaltır.

Adım 1: Sunucunuzu Güncelleyin

VPS’nize SSH ile bağlanın ve herhangi bir şey yüklemeden önce tam bir sistem güncellemesi yapın:

    sudo apt update && sudo apt upgrade -y

Bu işlem, Docker ve diğer yazılımları yüklemeden önce en son güvenlik yamalarına sahip olduğunuzdan ve tüm sistem kütüphanelerinin güncel olduğundan emin olmanızı sağlar.

Çekirdek güncellemesi uygulandıysa sistemi yeniden başlatın:

    sudo reboot

SSH üzerinden yeniden bağlandıktan sonra, n8n'i çalıştırmak için özel bir sistem kullanıcısı oluşturun. Hizmetleri root olarak çalıştırmak bir güvenlik riski oluşturur:

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

Adım 2: Docker ve Docker Compose'u yükleyin

n8n’in resmi olarak önerilen kurulum yöntemi Docker’dır. Docker, n8n’i ve bağımlılıklarını sisteminizin geri kalanından izole eder, böylece güncelleme ve geri alma işlemleri kolaylaşır.

Resmi kolaylık komut dosyasını kullanarak Docker’ı kurun:

    curl -fsSL https://get.docker.com | sudo sh

Docker belgelerinde, bu kolaylık komut dosyasının üretim ortamları için önerilmediği belirtilmektedir; çünkü bu komut dosyası, sürüm seçmenize izin vermeden en son sürümü yükler. Docker sürümlerini sabitlemek istiyorsanız, bunun yerine Docker’ın Ubuntu kurulum kılavuzundaki (docs.docker.com/engine/install/ubuntu/) apt deposu yöntemini kullanın.

Docker komutlarını sudo olmadan çalıştırabilmek için kullanıcınızı Docker grubuna ekleyin:

    sudo usermod -aG docker $USER
    newgrp docker

Docker'ın doğru şekilde çalıştığını doğrulayın:

    docker --version
    docker compose version

Her iki komut da hata vermeden sürüm dizelerini döndürmelidir. Docker Compose bulunmazsa, manuel olarak yükleyin:

    sudo apt install docker-compose-plugin -y

3. Adım: PostgreSQL'i Üretim Ortamı için Kurun

Varsayılan olarak, n8n veritabanı olarak SQLite'ı kullanır. SQLite, kişisel kullanım ve hafif iş akışları için uygundur, ancak eşzamanlı yazma işlemlerini iyi yönetemez; bu da, birçok iş akışı aynı anda çalıştığında yavaşlamalara ve "veritabanı kilitli" hatalarına neden olur. Üretim ortamı dağıtımı için doğru seçim PostgreSQL'dir.

Ranktracker ile tanışın

Etkili SEO için Hepsi Bir Arada Platform

Her başarılı işletmenin arkasında güçlü bir SEO kampanyası vardır. Ancak sayısız optimizasyon aracı ve tekniği arasından seçim yapmak, nereden başlayacağınızı bilmek zor olabilir. Artık korkmayın, çünkü size yardımcı olacak bir şeyim var. Etkili SEO için Ranktracker hepsi bir arada platformunu sunuyoruz

Sonunda Ranktracker'a kaydı tamamen ücretsiz olarak açtık!

Ücretsiz bir hesap oluşturun

Veya kimlik bilgilerinizi kullanarak oturum açın

PostgreSQL'i Docker içinde n8n ile birlikte çalıştırın:

    mkdir ~/n8n && cd ~/n8n

Gizli bilgilerinizi güvenli bir şekilde saklamak için bir ortam dosyası oluşturun. Asla compose dosyanıza şifreleri sabit olarak yazmayın:

    nano ~/n8n/.env

Aşağıdakileri ekleyin ve yer tutucu değerleri güçlü ve benzersiz şifrelerle değiştirin:

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=buraya_güçlü_veritabanı_şifrenizi_yazın
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=buraya_rastgele_32_karakterlik_dizenizi_yazın

Aşağıdaki komutla güvenli bir şifreleme anahtarı oluşturun:

    openssl rand -hex 16

Çıktıyı N8N_ENCRYPTION_KEY olarak kullanın. Bu anahtar, n8n'de depolanan kimlik bilgilerini şifreler — anahtarı kaybederseniz, kaydedilmiş tüm kimlik bilgileri kurtarılamaz hale gelir.

4. Adım: n8n Docker Compose Dosyasını Oluşturun

n8n dizininde docker-compose.yml dosyasını oluşturun:

    nano ~/n8n/docker-compose.yml

Aşağıdaki yapılandırmayı yapıştırın:


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      yeniden deneme sayısı: 10


  n8n:
    görüntü: docker.n8n.io/n8nio/n8n
    yeniden başlatma: her zaman
    bağlantı noktaları:
      - "127.0.0.1:5678:5678"
    ortam:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy


volumes:
  postgres_data:
  n8n_data:

Yapılandırma notları:

  • 127.0.0.1:5678:5678 bağlantı noktası bağlaması, n8n'e yalnızca yerel olarak erişilebilmesini sağlar. Nginx tüm harici trafiği yönetecektir — 5678 numaralı bağlantı noktasını asla doğrudan internete açmayın.
  • service_healthy koşulu ile birlikte kullanılan depends_on, n8n'in başlamadan önce PostgreSQL'in tamamen hazır olmasını beklemesini sağlar. Bu ayar olmadan, veritabanı henüz bağlantı kabul etmiyorsa n8n ilk başlatmada hata verecektir.
  • N8N_LOG_LEVEL=info, debug seçeneğinin yaptığı gibi disk depolama alanını doldurmadan size faydalı operasyonel günlükler sağlar.

Adım 5: Nginx'i Kurun ve Yapılandırın

Nginx, ters proxy görevi görerek 443 numaralı bağlantı noktasından gelen HTTPS trafiğini 5678 numaralı bağlantı noktasındaki n8n konteynerinize yönlendirecektir. Ayrıca SSL sonlandırmasını da yönetir; bu sayede n8n'in kendisi sertifikaları yönetmesine gerek kalmaz.

    sudo apt install nginx -y

Varsayılan siteyi kaldırın ve n8n için yeni bir sunucu bloğu oluşturun:

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

Aşağıdakileri yapıştırın:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.yourdomain.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 $connection_upgrade;
        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;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 90s;
        client_max_body_size 50m;
    }
}

En üstteki map bloğu, WebSocket yükseltme başlıklarını doğru şekilde işler. n8n, düzenleyicide gerçek zamanlı güncellemeler için WebSocket'leri kullanır; bu nedenle bu yapılandırma önemlidir — bu yapılandırma olmadan görsel düzenleyici düzgün çalışmayacaktır.

client_max_body_size 50m yönergesi, iş akışlarının büyük webhook yüklerini almasına olanak tanır. Varsayılan Nginx sınırı 1 MB'dir; bu, dosya yüklemelerini veya büyük JSON yanıtlarını işleyen iş akışları için çok küçüktür.

Yapılandırmayı etkinleştirin ve test edin:

    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

6. Adım: Let’s Encrypt ile bir SSL Sertifikası Alın

Certbot ve Nginx eklentisini yükleyin:

    sudo apt install certbot python3-certbot-nginx -y

Etki alanınız için sertifika talep edin:

    sudo certbot --nginx -d n8n.yourdomain.com

Ekrandaki talimatları izleyin. HTTP trafiğini HTTPS'ye yönlendirip yönlendirmeyeceğiniz sorulduğunda, Evet (seçenek 2) seçeneğini seçin. Certbot, bu yönlendirmeyi gerçekleştirmek için Nginx yapılandırmanızı otomatik olarak güncelleyecek ve tam sertifika zincirini yükleyecektir.

Otomatik yenilemenin doğru şekilde yapılandırıldığını doğrulayın:

    sudo certbot renew --dry-run

Certbot, sertifikaları her 12 saatte bir otomatik olarak yenileyen bir systemd zamanlayıcısı yükler. Sertifikalar, son kullanma tarihine 30 gün kala yenilenir. Asla manuel olarak yenilemeniz gerekmez.

7. Adım: n8n'i başlatın

n8n dizinine geri dönün ve tüm hizmetleri başlatın:

    cd ~/n8n
    docker compose up -d

Docker, PostgreSQL ve n8n görüntülerini indirecek, birimleri oluşturacak, önce PostgreSQL’i başlatacak, durum kontrolünün başarılı olmasını bekleyecek ve ardından n8n’i başlatacaktır. Bu işlem ilk çalıştırmada 1–3 dakika sürer.

Her iki konteynerin de çalıştığını kontrol edin:

    docker compose ps

Hem postgres hem de n8n'in durumu Up olarak listelendiğini görmelisiniz. n8n'in durumu Restarting olarak görünüyorsa, günlükleri kontrol edin:

    docker compose logs n8n --tail=50

Her iki konteyner de çalışır duruma geldiğinde, tarayıcınızı açın ve https://n8n.yourdomain.com adresine gidin. Bir e-posta adresi ve şifre ile bir sahip hesabı oluşturmanız istenecektir. Bu hesap, n8n örneğiniz üzerinde tam yönetici erişimine sahiptir.

8. Adım: n8n'i Önyükleme Sırasında Başlatılacak Şekilde Yapılandırma

docker-compose.yml dosyanızdaki restart: always yönergesi, tüm konteynerlerin çökme veya sunucu yeniden başlatma durumunda otomatik olarak yeniden başlatılmasını sağlar.

Sunucunuzu yeniden başlatarak bunu doğrulayın:

    sudo reboot

SSH üzerinden yeniden bağlandıktan sonra, n8n'in otomatik olarak yeniden başladığını kontrol edin:

    docker compose -f ~/n8n/docker-compose.yml ps

Her iki konteyner de herhangi bir manuel müdahale olmaksızın çalışıyor olarak görünmelidir.

9. Adım: Otomatik Yedeklemeleri Ayarlama

n8n verileriniz — iş akışları, kimlik bilgileri ve yürütme geçmişi — iki yerde bulunur: PostgreSQL veritabanında ve n8n_data Docker biriminde (şifreleme anahtarlarını ve bazı yapılandırmaları depolar). Her ikisini de düzenli olarak yedekleyin.

Bir yedekleme komut dosyası oluşturun:

    nano ~/n8n/backup.sh

Aşağıdakileri yapıştırın:

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# Her şeyden önce yedekleme dizininin mevcut olduğundan emin olun
mkdir -p "$BACKUP_DIR"


# PostgreSQL verilerini dökün
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# Yedeklemenin başarılı olduğunu ve dosyanın boş olmadığını doğrula
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "HATA: $DATE tarihinde veritabanı yedeklemesi başarısız oldu" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# Şifreleme anahtarını ve ortam değişkenlerini yedekleyin
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# n8n_data birimini yedekleyin (örnek yapılandırması ve kurulu topluluk düğümleri)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# Veritabanı dökümünü sıkıştır
gzip "$DUMP_FILE"


# Yalnızca son 7 günlük yedekleri sakla
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "Yedekleme tamamlandı: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

n8n_n8n_data hacim adı, Docker Compose'un hacmin başına proje klasör adını (n8n) eklemesinden kaynaklanmaktadır. Docker volume ls komutuyla kendi hacminizi doğrulayın.

Komut dosyasını çalıştırılabilir hale getirin ve cron ile zamanlayın:

    chmod +x ~/n8n/backup.sh
    crontab -e

Yedeklemeyi her gün saat 02:00'da çalıştırmak için şu satırı ekleyin:

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

Tesis dışı yedeklilik için, rclone veya aws s3 sync kullanarak yedekleme dizininizi S3 uyumlu bir nesne depolama sağlayıcısına senkronize etmeyi düşünün.

Adım 10: Temel Güvenlik Güçlendirmeyi Etkinleştirin

Güvenlik Duvarı Kurun

UFW'yi kurun ve yalnızca sunucunuzun ihtiyaç duyduğu bağlantı noktalarına izin verin:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

Kuralların etkin olduğunu doğrulayın:

    sudo ufw status verbose

22 (SSH), 80 (HTTP) ve 443 (HTTPS) numaralı bağlantı noktalarının izin verildiğini görmelisiniz. Bir uyarı: Docker kendi güvenlik duvarı kurallarını yazar ve yayınlanan konteyner bağlantı noktaları için UFW'yi atlar. 5678 numaralı bağlantı noktası, UFW nedeniyle değil, compose dosyasının onu 127.0.0.1'e bağlaması nedeniyle özel kalır; bu nedenle bu bağlamayı asla 0.0.0.0 olarak değiştirmeyin.

SSH için Parola Kimlik Doğrulamasını Devre Dışı Bırakın

SSH anahtarları kullanıyorsanız (ki kullanmalısınız), parola tabanlı SSH girişini tamamen devre dışı bırakın. Öncelikle, n8nuser hesabının anahtarınızla giriş yapabildiğinden emin olun. Yerel makinenizden şunu çalıştırın:

    ssh-copy-id n8nuser@sunucunuzun_ip_adresi

Ardından SSH sunucu yapılandırmasını düzenleyin:

    sudo nano /etc/ssh/sshd_config

Aşağıdaki değerleri ayarlayın:

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

Birçok Ubuntu bulut görüntüsünde, /etc/ssh/sshd_config.d/ dizinindeki bir dosya (genellikle 50-cloud-init.conf) PasswordAuthentication değerini yes olarak ayarlar ve sshd okuduğu ilk değeri kullandığı için bu ayar geçerli olur. Hangi ayarın gerçekten geçerli olduğunu kontrol edin:

    sudo sshd -T | grep -i passwordauthentication

Çıktıda passwordauthentication no yazmalıdır. Eğer yazmıyorsa, geçersiz kılma dosyasındaki değeri değiştirin ve SSH'yi yeniden başlatın.

Yeni bir terminal penceresinde anahtar tabanlı oturum açma işleminin çalıştığını doğrulayana kadar mevcut SSH oturumunuzu kapatmayın.

n8n Oturum Açma Sayfasına Hız Sınırı Uygulayın

n8n oturum açma uç noktasına yönelik kaba kuvvet saldırılarını yavaşlatmak için hız sınırlaması ekleyin.

Ranktracker ile tanışın

Etkili SEO için Hepsi Bir Arada Platform

Her başarılı işletmenin arkasında güçlü bir SEO kampanyası vardır. Ancak sayısız optimizasyon aracı ve tekniği arasından seçim yapmak, nereden başlayacağınızı bilmek zor olabilir. Artık korkmayın, çünkü size yardımcı olacak bir şeyim var. Etkili SEO için Ranktracker hepsi bir arada platformunu sunuyoruz

Sonunda Ranktracker'a kaydı tamamen ücretsiz olarak açtık!

Ücretsiz bir hesap oluşturun

Veya kimlik bilgilerinizi kullanarak oturum açın

**Önemli: **limit_req_zone yönergesi, ana Nginx yapılandırmanızdaki http {} bloğunun içine yazılmalıdır — sunucu bloğunun içine değil. Ana yapılandırmayı açın:

    sudo nano /etc/nginx/nginx.conf

Mevcut http {} bloğunun içine şu satırı ekleyin:

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

Ardından, n8n site yapılandırmanızda (/etc/nginx/sites-available/n8n), 443 numaralı bağlantı noktasını dinleyen server bloğunun (Certbot bunu 6. Adımda oluşturmuştur) içindeki mevcut location / bloğunun yanına şu location bloğunu ekleyin. Nginx, location / bloğundaki proxy başlıklarını aktarmaz, bu nedenle bunlar burada tekrarlanır:

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        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;
    }

Değişiklikleri uygulamak için Nginx'i yeniden yükleyin:

    sudo nginx -t && sudo systemctl reload nginx

Bu, her IP adresi için dakikada yaklaşık 5 oturum açma denemesi ile sınırlandırır; küçük bir ani artış payı da vardır.

n8n ve PostgreSQL'i Güncel Tutun

En son görüntüleri düzenli olarak indirin ve yeniden başlatın:

    cd ~/n8n
    docker compose pull
    docker compose up -d

Docker, en son n8nio/n8n ve postgres görüntülerini indirir ve yalnızca daha yeni bir sürümü bulunan kapsayıcıları yeniden başlatır.

Üretim ortamında, n8n görüntüsünü belirli bir sürüm etiketine (n8n'in sürüm notlarından alınan docker.n8n.io/n8nio/n8n:<sürüm>) sabitlemeyi ve bilinçli bir şekilde yükseltme yapmayı düşünün; böylece, değişiklik günlüğünü okumadan önce rutin bir indirme işlemi asla bir ana sürüm atlamaz.

Yaygın Sorunların Giderilmesi

n8n Konteyneri Sürekli Yeniden Başlatılıyor

Yeniden başlatma döngüsü başladıktan hemen sonra konteyner günlüklerini kontrol edin:

    docker compose logs n8n --tail=100

Yaygın nedenler:

  • Veritabanı bağlantı hatası: docker compose ps komutuyla PostgreSQL'in sağlıklı çalıştığından emin olun. .env dosyanızdaki POSTGRES_PASSWORD değerinin, veritabanının başlatılırken kullanılan şifreyle eşleşip eşleşmediğini kontrol edin.
  • Şifreleme anahtarı eksik veya değiştirilmiş: N8N_ENCRYPTION_KEY ayarlanmamışsa veya ilk çalıştırmadan sonra değiştirilmişse, n8n depolanan kimlik bilgilerinin şifresini çözemez ve çöker.
  • Yetersiz RAM: PostgreSQL ve n8n birlikte 1–1,5 GB RAM kullanabilir. free -h komutuyla kullanılabilir belleği kontrol edin.

Webhook'lar Çalışmıyor

Webhook'ların çalışması için n8n'in internet üzerinden alan adınızdan erişilebilir olması gerekir. Şunu doğrulayın:

  1. Etki alanınızın DNS A kaydı, VPS IP adresinize yönlendiriliyor mu: dig n8n.yourdomain.com
  2. Nginx çalışıyor: sudo systemctl status nginx
  3. 443 numaralı bağlantı noktası açık: sudo ufw status
  4. WEBHOOK_URL ortam değişkeni, sondaki eğik çizgi dahil olmak üzere, genel alan adınızla tam olarak eşleşiyor

n8n Editörü Düzgün Yüklenmiyor

Görsel düzenleyici yükleniyor ancak boş bir iş akışı tuvali gösteriyorsa veya gerçek zamanlı güncellemeler çalışmıyorsa, WebSocket bağlantısında bir sorun vardır. Nginx yapılandırmanızda $http_upgrade bloğunun mevcut olup olmadığını ve proxy_set_header Connection satırında “upgrade” dizesi yerine $connection_upgrade değişkenini kullandığınızı kontrol edin.

SSL Sertifika Hataları

Certbot, bir etki alanı doğrulama hatası nedeniyle başarısız olursa, 80 numaralı bağlantı noktasına internet üzerinden erişilebildiğini kontrol edin:

    curl -I http://n8n.yourdomain.com

İstek zaman aşımına uğrarsa, VPS sağlayıcınızın güvenlik duvarı 80 numaralı bağlantı noktasını engelliyor olabilir. UFW'nin yanı sıra bulut konsolundaki güvenlik duvarı kurallarını da kontrol edin.

Sonuç

Linux VPS üzerinde n8n'i kendi sunucunuzda barındırmak, size yürütme sınırlaması olmayan, tam veri gizliliği sunan ve ihtiyacınız olan herhangi bir entegrasyonu çalıştırma esnekliğine sahip, üretime hazır bir iş akışı otomasyon platformu sağlar. Bu kılavuzda ele alınan kurulum — Docker, PostgreSQL, Nginx ters proxy, Let’s Encrypt SSL, otomatik yedeklemeler ve güvenlik güçlendirmeleri — üretim ortamlarında kullanılan yığınla aynıdır ve size üzerine inşa edebileceğiniz istikrarlı, güvenli bir temel sunar.

Minimal bir Docker run komutu kurulumunun aksine, bu kurulum sunucu yeniden başlatmalarına dayanacak, eşzamanlı iş akışı yürütmelerini idare edecek ve arızalardan sorunsuz bir şekilde kurtarılabilecek şekilde tasarlanmıştır. Kimlik bilgileriniz şifrelenir, verileriniz her gece yedeklenir ve oturum açma uç noktanız kaba kuvvet saldırılarına karşı hız sınırlamasına tabidir.

Örneğiniz çalışmaya başladığında, iş akışlarınızı hemen otomatikleştirmeye başlamak için n8n’in veritabanları, API’ler, webhook’lar ve yapay zeka entegrasyonları için yerleşik düğümlerini keşfedin. community.n8n.io adresindeki kendi sunucusunda barındırılan topluluk forumu da iş akışı fikirleri, düğüm sorun giderme ve dağıtım ipuçları için mükemmel bir kaynaktır.

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Ranktracker'ı kullanmaya başlayın... Hem de ücretsiz!

Web sitenizin sıralamada yükselmesini engelleyen şeyin ne olduğunu öğrenin.

Ücretsiz bir hesap oluşturun

Veya kimlik bilgilerinizi kullanarak oturum açın

Different views of Ranktracker app