Tropic Host

n8n: nədir və Docker Compose ilə VPS-ə necə quraşdırılır

11 dəqiqə oxu
Tropic
n8n: nədir və Docker Compose ilə VPS-ə necə quraşdırılır

Language: az

VPS-də n8n: əl əməyini azaltmaq üçün öz avtomatlaşdırma platformanız

Saytdan sorğu daxil olur. n8n məlumatları yoxlayır, dublikatları axtarır, sövdələşmə yaradır, AI ilə cavab layihəsi hazırlayır və Telegram-da menecerə bildiriş göndərir. İnsan yalnız qərar lazım olduqda prosesə qoşulur — məlumatları brauzer vərəqləri arasında köçürmək üçün deyil.

Aşağıda n8n-in necə işlədiyini və onu Docker Compose, PostgreSQL, HTTPS və təcrid olunmuş kod icrası ilə VPS-ə necə quraşdırmağı nəzərdən keçirəcəyik.

n8n-i yeddi addımda işə salmaq

Minimal işə salma planı:

  1. VPS yaradın və subdomeni ona yönəldin, məsələn n8n.example.com.
  2. Docker və Docker Compose quraşdırın.
  3. n8n-i PostgreSQL, xarici tapşırıq icraçısı və Caddy ilə işə salın.
  4. İnterfeysi HTTPS üzərindən açın və sahib hesabı yaradın.
  5. Telegram, CRM, e-poçt və ya istənilən xarici API-ni qoşun.
  6. Səhvlərin idarə edilməsini və icra məlumatlarının saxlanma müddətini tənzimləyin.
  7. Verilənlər bazasının, məlumatların və şifrələmə açarının ehtiyat nüsxəsini avtomatlaşdırın.

Kiçik istehsal quraşdırması üçün 2 vCPU və 4 GB RAM ilə başlamaq məntiqlidir. Testlər üçün çox vaxt 2 GB kifayətdir, lakin PostgreSQL, Docker və paralel proseslər qalan resursu tez istifadə edir.

n8n nədir və necə işləyir

n8n iş axınlarının avtomatlaşdırılması platformasıdır. İş axını qovşaqlardan qurulur: biri prosesi başladır, növbəti qovşaqlar məlumatı alıb dəyişir, sonuncu qovşaq isə əməli yerinə yetirir.

Sadə iş axını belə görünür:

Webhook → data validation → CRM → Telegram → website response

Zəncir webhook, cədvəl, e-poçt, mesaj və ya xarici xidmətdəki hadisə ilə başlana bilər. Qovşaqlar arasında şərtlər, dövrlər, filtrlər, gözləmələr və səhvlərin idarə edilməsi mövcuddur.

n8n-in üstünlüklərindən biri avtomatlaşdırmanın hazır inteqrasiyalarla məhdudlaşmamasıdır. HTTP Request vasitəsilə API-si olan istənilən xidmətə müraciət edə, Code qovşağında JavaScript və ya Python ilə xüsusi məntiq yaza bilərsiniz. Buna görə n8n sadə no-code konstruktorla xüsusi server tərəfi kodu arasında bir yerdə dayanır.

Niyə bu, yalnız məlumat ötürməkdən daha çoxdur

n8n proses bir neçə sistemi əhatə etdikdə və qərar tələb etdikdə faydalıdır:

form → validation → duplicate search → AI assessment → manager approval → CRM

İnsanı yalnız nəzarət nöqtəsində saxlamaq olar. Məsələn, AI cavab hazırlayır, lakin mesaj müştəriyə yalnız əməkdaş onu təsdiqlədikdən sonra göndərilir.

Tipik istifadə ssenariləri:

  • satış və dəstək: sorğuların toplanması, potensial müştərilərin bölüşdürülməsi və sövdələşmələrin yaradılması;
  • kontent və AI: qaralamaların hazırlanması, müraciətlərin təsnif edilməsi və təsdiqdən sonra dərc;
  • DevOps: kəsinti bildirişləri, Git webhook-ları və API yoxlamaları;
  • daxili əməliyyatlar: cədvəllərin, e-poçtun, təqvimlərin və korporativ sistemlərin sinxronlaşdırılması.

Self-hosted quraşdırma prosesə və verilənlər bazasına nəzarət imkanı verir, lakin xarici xidmətləri lokal etmir. Telegram-a, CRM-ə və ya bulud AI modelinə göndərilən məlumat VPS-dən kənara çıxır.

n8n Cloud, yoxsa öz serveriniz

Parametrn8n CloudVPS-də n8n
İşə salmaServer quraşdırması tələb olunmurDomen, Docker və HTTPS tələb olunur
Yeniləmələrn8n tərəfindən idarə edilirSahib tərəfindən idarə edilir
Verilənlər bazası və fayllarXidmətin infrastrukturundaSeçilmiş serverdə
MiqyaslamaBulud planına uyğunMüstəqil şəkildə tənzimlənir
MəsuliyyətDaha az administrasiyaEhtiyat nüsxələr, təhlükəsizlik və monitorinq sahibin məsuliyyətidir
Kimlər üçünDevOps olmadan sürətli başlanğıcNəzarət, fərdiləşdirmə və daim işləyən proseslər

Community Edition şəxsi və daxili biznes prosesləri üçün öz serverinizdə pulsuz self-hosted edilə bilər. Lakin n8n ənənəvi açıq mənbə lisenziyası ilə deyil, fair-code Sustainable Use License ilə yayılır. Bu lisenziya daxili istifadəyə və dəyişikliklərə icazə verir, amma n8n-i sadəcə yerləşdirib öz loqonuzu əlavə edərək müstəqil SaaS kimi giriş satmağa imkan vermir. Belə məhsul üçün lisenziya şərtlərini ayrıca araşdırmaq lazımdır.

n8n server tələbləri

Yük məlumatın həcmi, paralellik və əməliyyatların növündən asılıdır. Fayllar, uzun siyahılar, Code qovşaqları və AI iş axınları API-lər arasında kiçik JSON paketlərinin ötürülməsindən daha çox yaddaş tələb edir.

SsenariBaşlanğıc konfiqurasiyası
Testlər və şəxsi mətn əsaslı iş axınları1 vCPU, 2 GB RAM, 20 GB NVMe
Kiçik istehsal quraşdırması2 vCPU, 4 GB RAM, 25–40 GB NVMe
Paralel proseslər, AI və ya fayllar4 vCPU, 8 GB RAM və ya daha çox
Queue mode-da bir neçə worker prosesiİcra həcminə uyğun ölçü

SQLite öyrənmək və kiçik tək instansiyalı quraşdırma üçün uyğundur. PostgreSQL istehsal mühiti üçün daha rahatdır: ehtiyat nüsxə almaq asandır və sonradan queue mode-a keçid sadələşir.

n8n-i VPS-ə necə quraşdırmalı

Bu nümunədə Ubuntu 24.04, PostgreSQL, Caddy və xarici tapşırıq icraçısından istifadə edilir. n8n.example.com və saat qurşağını öz dəyərlərinizlə əvəz edin.

1. DNS-i tənzimləyin və serveri hazırlayın

VPS-in IPv4 ünvanına göstərən A DNS yazısı yaradın, sonra SSH ilə qoşulun:

ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw openssl

Docker Engine-i və Compose plaginini rəsmi repozitoridən quraşdırın:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

Yalnız SSH, HTTP və HTTPS-ə icazə verin:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Yeni bağlantının işlədiyini təsdiqləməyənə qədər cari SSH sessiyasını bağlamayın.

2. Mühit dəyişənlərini yaradın

Kataloqu hazırlayın:

mkdir -p /opt/n8n
cd /opt/n8n

.env faylı yaradın. Aşağıdakı əmrlər PostgreSQL, n8n şifrələməsi və tapşırıq icraçısı üçün dərhal ayrıca təsadüfi gizli açarlar yaradır:

cat > .env <<EOF
N8N_VERSION=stable
N8N_HOST=n8n.example.com
GENERIC_TIMEZONE=Europe/Berlin

POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=$(openssl rand -hex 32)

N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
RUNNERS_AUTH_TOKEN=$(openssl rand -hex 32)
EOF

chmod 600 .env

stable teqi ilk işə salma üçün rahatdır. Quraşdırmanı yoxladıqdan sonra konkret n8n versiyasını sabitləmək daha yaxşıdır; beləliklə növbəti image yeniləməsi gözlənilmədən baş verməz.

N8N_ENCRYPTION_KEY itirilməməlidir. n8n saxlanılan parolları, tokenləri və digər giriş məlumatlarını şifrələmək üçün bu açardan istifadə edir. Yalnız PostgreSQL-i açar olmadan bərpa etsəniz, qeydlər verilənlər bazasında qalacaq, lakin n8n onları oxuya bilməyəcək.

3. Docker Compose faylını yaradın

compose.yaml yaradın:

services:
  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      PGDATA: /var/lib/postgresql/data
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
    restart: unless-stopped
    environment:
      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_HOST: ${N8N_HOST}
      N8N_PORT: "5678"
      N8N_PROTOCOL: https
      N8N_EDITOR_BASE_URL: https://${N8N_HOST}
      N8N_WEBHOOK_URL: https://${N8N_HOST}/
      N8N_PROXY_HOPS: "1"
      GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
      TZ: ${GENERIC_TIMEZONE}

      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
      N8N_BLOCK_ENV_ACCESS_IN_NODE: "true"

      N8N_RUNNERS_MODE: external
      N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0

      EXECUTIONS_DATA_PRUNE: "true"
      EXECUTIONS_DATA_MAX_AGE: "168"
      EXECUTIONS_DATA_PRUNE_MAX_COUNT: "10000"
    volumes:
      - n8n_data:/home/node/.n8n
    expose:
      - "5678"
    depends_on:
      postgres:
        condition: service_healthy

  n8n-runner:
    image: n8nio/runners:${N8N_VERSION}
    restart: unless-stopped
    environment:
      N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
    depends_on:
      - n8n

  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    environment:
      N8N_HOST: ${N8N_HOST}
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - n8n

volumes:
  postgres_data:
    name: n8n_postgres_data
  n8n_data:
    name: n8n_data
  caddy_data:
    name: n8n_caddy_data
  caddy_config:
    name: n8n_caddy_config

Xarici tapşırıq icraçısı kodu əsas n8n prosesindən ayrı işlədir. Bu, daxili rejimdən daha təhlükəsizdir və Code qovşağındakı xətanın editor və webhook emalına təsir etməsi ehtimalını azaldır.

4. HTTPS-i aktivləşdirin

Caddyfile yaradın:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

DNS artıq VPS-i göstərirsə və 80 və 443 portlarına giriş mümkündürsə, Caddy TLS sertifikatını avtomatik əldə edəcək. Daxili 5678 portu internetə açılmır: xaricdən yalnız 80 və 443 portları əlçatandır, Caddy isə n8n-ə Docker şəbəkəsi üzərindən çıxır.

N8N_WEBHOOK_URLN8N_PROXY_HOPS dəyişənləri editorun düzgün açıq webhook ünvanları yaratması və bir reverse proxy-dən gələn başlıqlara etibar etməsi üçün lazımdır.

5. n8n-i işə salın

Son konfiqurasiyanı yoxlayın və konteynerləri işə salın:

docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n caddy

Aşağıdakı ünvanı açın:

https://n8n.example.com

Sahib hesabı yaradın. Onun parolunu həmkarlarınızla paylaşmayın: komanda işi üçün ayrıca hesablar yaradın və hər kəsə yalnız ehtiyacı olan icazələri verin.

İlk faydalı iş axınınız

Yaxşı test saytdan gələn sorğunun emal edilməsidir:

  1. Webhook qovşağını POST metodu ilə əlavə edin.
  2. Yalnız ad, e-poçt ünvanı və mənbə sahələrini saxlamaq üçün Edit Fields istifadə edin.
  3. Lazımi məlumatları olmayan sorğunu rədd etmək üçün If qovşağından istifadə edin.
  4. CRM-də sövdələşmə yaradın və ya HTTP Request vasitəsilə sorğu göndərin.
  5. Telegram bildirişi əlavə edin.
  6. Zənciri Respond to Webhook qovşağı ilə tamamlayın.
  7. Testdən sonra iş axınını aktivləşdirin və test webhook-unu istehsal URL-i ilə əvəz edin.

Bu nümunə domeni, HTTPS-i, daxil olan sorğuları, giriş məlumatlarını və xarici inteqrasiyanı dərhal yoxlayır. Növbəti addımda əsas zəncir uğursuz olduqda sizə xəbər verəcək ayrıca Error Workflow əlavə edin.

Quraşdırmadan sonra n8n-in qorunması

Quraşdırılmış n8n avtomatik olaraq etibarlı sistem demək deyil. İşə saldıqdan sonra əmin olun ki:

  • editor yalnız HTTPS üzərindən əlçatandır;
  • .env faylının icazələri 600-dür və Git-ə göndərilmir;
  • xarici API açarlarının yalnız lazım olan icazələri var;
  • hər webhook mənbənin imzasını və ya gizli açarını yoxlayır;
  • icra tarixçəsi avtomatik silinir;
  • kritik iş axınlarındakı səhvlər administratora göndərilir.

Community qovşaqları paket kimi quraşdırılır və iş axını məlumatlarına, eləcə də serverə giriş əldə edə bilər. Naməlum qovşaqları yoxlamadan əlavə etməyin. Onlara ehtiyacınız yoxdursa, N8N_COMMUNITY_PACKAGES_ENABLED=false ilə deaktiv edin.

Daxili auditi işə salın:

docker compose exec n8n n8n audit

Bu alət qorunmayan webhook-ları, riskli qovşaqları və giriş məlumatı problemlərini müəyyən etməyə kömək edir, lakin əl ilə yoxlamanı əvəz etmir.

İcra tarixçəsi və şəxsi məlumatlar

n8n sazlama üçün giriş və çıxış məlumatlarını saxlayır. Bununla yanaşı e-poçt mesajları, telefon nömrələri, sənədlər və API cavabları da verilənlər bazasında qala bilər.

Yuxarıdakı konfiqurasiyada icralar yeddi gündən sonra silinir və sayı 10 000 ilə məhdudlaşdırılır. Həssas proseslər üçün saxlama müddətini məlumatların saxlanması siyasətinizə uyğun seçin və iş axını bitməzdən əvvəl lazımsız sahələri silin.

Ehtiyat nüsxələri və yeniləmələr

Bərpa üçün PostgreSQL dump-ı, n8n_data volume-u, konfiqurasiya faylları və .env faylında saxlanan N8N_ENCRYPTION_KEY lazımdır. Köçürmədən əvvəl PostgreSQL işlək qalmaqla prosessorları dayandırın. Bu, iş axınlarının icrasında qısa fasilə yaradır:

cd /opt/n8n
mkdir -p backup
docker compose stop n8n n8n-runner

docker compose exec -T postgres sh -c \
  'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' \
  | gzip > "backup/n8n-db-$(date +%F).sql.gz"

docker run --rm \
  -v n8n_data:/source:ro \
  -v "$PWD/backup":/backup \
  alpine sh -c \
  'tar -czf /backup/n8n-data-$(date +%F).tar.gz -C /source .'

tar -czf "backup/n8n-config-$(date +%F).tar.gz" \
  .env compose.yaml Caddyfile

docker compose start n8n n8n-runner

.env olan arxiv gizli məlumatları ehtiva edir: onu şifrələyin və VPS-dən kənarda saxlayın. Ehtiyat nüsxəsini vaxtaşırı sınaq bərpası ilə yoxlayın.

Yeniləmədən əvvəl ehtiyat nüsxə yaradın və buraxılış qeydlərini nəzərdən keçirin:

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose ps

Tapşırıq icraçısı və əsas konteyner eyni versiya teqindən istifadə etməlidir.

Nə vaxt miqyaslamaq lazımdır

Real yük yaranmadan Redis-i və bir neçə worker-i işə salmayın. PostgreSQL ilə bir instansiyanı saxlamaq daha asandır və adətən kiçik daxili prosesləri əhatə edir.

Queue mode uzunmüddətli tapşırıqlar webhook-ları gecikdirdikdə, çoxlu iş axını eyni vaxtda başladıqda və ya fayl emalı mövcud yaddaşı mütəmadi olaraq tükətdikdə lazım olur. Bu quruluşda əsas instansiya hadisələri qəbul edir, Redis işləri paylayır, worker-lər isə onları paralel icra edir. Bütün komponentlər eyni PostgreSQL verilənlər bazasına qoşulmalı və eyni N8N_ENCRYPTION_KEY-dən istifadə etməlidir.

n8n üçün hansı VPS-i seçmək lazımdır

n8n, PostgreSQL, Caddy və tapşırıq icraçısını birlikdə işlətmək üçün 2 vCPU, 4 GB RAM və NVMe disk ilə başlamaq məntiqlidir. tropic.host-da Light planı bu konfiqurasiyaya uyğundur: 2 vCPU, 4 GB RAM və 25 GB NVMe. Bu, ağır fayl emalı olmadan ilk istehsal iş axınları üçün kifayətdir.

Sənədlər, böyük verilənlər dəstləri və çoxsaylı paralel AI iş axınları üçün 8 GB RAM daha yaxşı seçimdir. Sabit şəbəkə də vacibdir: webhook-lar, OAuth callback-ləri və planlaşdırılmış tapşırıqlar daim əlçatan qalmalıdır.

Nəticə

n8n təkrarlanan əməliyyatları aydın vizual axınlara çevirir: hazır qovşaqlar işə salmanı sürətləndirir, HTTP Request demək olar ki, istənilən API-ni qoşur, Code qovşağı isə öz məntiqinizi əlavə etməyə imkan verir.

Self-hosted versiya serverə və verilənlər bazasına nəzarət verir, lakin HTTPS, məhdudlaşdırılmış açarlar, tarixçənin təmizlənməsi və yoxlanılmış ehtiyat nüsxələri tələb edir. N8N_ENCRYPTION_KEY-i PostgreSQL ilə birlikdə saxlayın: onsuz bərpa edilmiş giriş məlumatlarını deşifrə etmək mümkün deyil.

FAQ

n8n-dən pulsuz istifadə etmək olarmı?

Bəli. Community Edition şəxsi və daxili proseslər üçün öz serverinizdə pulsuz yerləşdirilə bilər. Hosted n8n-i müstəqil SaaS kimi yenidən satmaq fair-code lisenziyası ilə məhdudlaşdırılır.

n8n-i domen olmadan quraşdırmaq olarmı?

Lokal test üçün bəli. İctimai webhook-lar və OAuth üçün domen və HTTPS istifadə etmək daha yaxşıdır.

n8n-ə nə qədər RAM lazımdır?

Sadə şəxsi iş axınları çox vaxt 2 GB RAM ilə işləyir. PostgreSQL, Caddy və tapşırıq icraçısı ilə n8n üçün 4 GB daha məqsədəuyğundur; fayllar və paralel icralar 8 GB və ya daha çox tələb edə bilər.

Bütün məlumatlar VPS-də qalırmı?

Yalnız iş axınının başqa yerə göndərmədiyi məlumatlar qalır. Verilənlər bazası və icra tarixçəsi VPS-də saxlanılır, lakin Telegram, CRM və ya xarici AI model qovşaqları seçilmiş məlumatları müvafiq xidmətə göndərir.

n8n ehtiyat nüsxəsinə nələr daxil edilməlidir?

PostgreSQL dump-ı, n8n_data volume-u, compose.yaml, Caddyfile.env faylında saxlanan N8N_ENCRYPTION_KEY. Ehtiyat nüsxəsini VPS-dən kənarda şifrəli şəkildə saxlayın və bərpa etməklə yoxlayın.