Tropic Host

n8n: bu nima va uni Docker Compose bilan VPS ga qanday o‘rnatish kerak

8 daqiqa o‘qish
Tropic
n8n: bu nima va uni Docker Compose bilan VPS ga qanday o‘rnatish kerak

Language: uz

VPS da n8n: qo‘lda bajariladigan ortiqcha ishlar uchun o‘z avtomatlashtirish platformangiz

Saytdan so‘rov keladi. n8n ma’lumotlarni tekshiradi, dublikatlarni qidiradi, bitim yaratadi, AI yordamida javob qoralamasini tayyorlaydi va menejerga Telegram orqali xabar yuboradi. Inson faqat qaror kerak bo‘lganda aralashadi — ma’lumotlarni brauzer oynalari orasida ko‘chirish uchun emas.

Quyida n8n qanday ishlashini va uni Docker Compose, PostgreSQL, HTTPS hamda kodni alohida bajarish bilan VPS ga qanday o‘rnatishni ko‘rib chiqamiz.

n8n ni yetti bosqichda ishga tushirish

Minimal ishga tushirish rejasi:

  1. VPS yarating va unga subdomenni yo‘naltiring, masalan n8n.example.com.
  2. Docker va Docker Compose ni o‘rnating.
  3. n8n ni PostgreSQL, tashqi vazifa bajaruvchisi va Caddy bilan ishga tushiring.
  4. Interfeysni HTTPS orqali oching va egasi hisobini yarating.
  5. Telegram, CRM, elektron pochta yoki istalgan tashqi API ni ulang.
  6. Xatolarni boshqarish va bajarilish ma’lumotlarini saqlash muddatini sozlang.
  7. Ma’lumotlar bazasi, ma’lumotlar va shifrlash kalitining zaxira nusxalarini avtomatlashtiring.

Kichik ishlab chiqarish o‘rnatmasi uchun 2 vCPU va 4 GB RAM dan boshlash ma’qul. Sinov uchun ko‘pincha 2 GB yetadi, ammo PostgreSQL, Docker va bir vaqtdagi jarayonlar qolgan resursni tez sarflaydi.

n8n nima va u qanday ishlaydi

n8n — ish jarayonlarini avtomatlashtirish platformasi. Ish jarayoni tugunlardan tuziladi: biri jarayonni boshlaydi, keyingilari ma’lumotni oladi va o‘zgartiradi, oxirgi tugun esa amalni bajaradi.

Oddiy ish jarayoni quyidagicha ko‘rinadi:

Webhook → data validation → CRM → Telegram → website response

Zanjir webhook, jadval, elektron xat, xabar yoki tashqi xizmatdagi hodisa orqali ishga tushishi mumkin. Tugunlar orasida shartlar, sikllar, filtrlar, kutishlar va xatolarni boshqarish mavjud.

n8n ning kuchli tomonlaridan biri — avtomatlashtirish tayyor integratsiyalar bilan cheklanmasligidir. HTTP Request orqali istalgan API xizmatiga murojaat qilish, Code tugunida esa JavaScript yoki Python yordamida maxsus mantiq yozish mumkin. Shu sababli n8n oddiy no-code konstruktor bilan maxsus server tomonidagi kod o‘rtasidagi yechimga o‘xshaydi.

Nega u shunchaki ma’lumot uzatishdan ko‘proq

n8n jarayon bir nechta tizimni qamrab olsa va qaror talab qilsa ayniqsa foydali:

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

Insonni faqat nazorat nuqtasida qoldirish mumkin. Masalan, AI javobni tayyorlaydi, lekin xabar mijozga xodim tasdiqlaganidan keyin yuboriladi.

Odatdagi qo‘llanish holatlari:

  • savdo va qo‘llab-quvvatlash: so‘rovlarni yig‘ish, lidlarni taqsimlash va bitimlar yaratish;
  • kontent va AI: qoralamalar tayyorlash, so‘rovlarni tasniflash va tasdiqlangandan keyin nashr qilish;
  • DevOps: uzilishlar haqidagi bildirishnomalar, Git webhooklari va API tekshiruvlari;
  • ichki operatsiyalar: elektron jadvallar, pochta, kalendarlar va korporativ tizimlarni sinxronlash.

Self-hosted o‘rnatma jarayon va ma’lumotlar bazasi ustidan nazorat beradi, lekin tashqi xizmatlarni lokalga aylantirmaydi. Telegram, CRM yoki bulutli AI modeliga yuborilgan ma’lumot VPS dan tashqariga chiqadi.

n8n Cloud yoki o‘z serveringiz

Parametrn8n CloudVPS dagi n8n
Ishga tushirishServerni sozlash talab qilinmaydiDomen, Docker va HTTPS kerak
Yangilanishlarn8n tomonidan boshqariladiEgasi boshqaradi
Ma’lumotlar bazasi va fayllarXizmat infratuzilmasidaTanlangan serverda
MasshtablashBulut tarifiga muvofiqMustaqil sozlanadi
Mas’uliyatMa’muriy ish kamroqZaxira, xavfsizlik va monitoring egasining zimmasida
Kimga mosDevOps siz tez boshlash uchunNazorat, moslashtirish va doimiy jarayonlar uchun

Community Edition ni o‘z serveringizda bepul self-hosted qilish va shaxsiy hamda ichki biznes jarayonlarida ishlatish mumkin. Biroq n8n an’anaviy ochiq kodli litsenziya bilan emas, fair-code Sustainable Use License bilan tarqatiladi. U ichki foydalanish va o‘zgartirishga ruxsat beradi, ammo n8n ni shunchaki joylashtirib, o‘z logotipingizni qo‘shib, mustaqil SaaS sifatida kirish huquqini sotishga ruxsat bermaydi. Bunday mahsulot uchun litsenziya shartlarini alohida ko‘rib chiqing.

n8n serveriga qo‘yiladigan talablar

Yuklama ma’lumotlar hajmi, bir vaqtdagi jarayonlar soni va amallar turiga bog‘liq. Fayllar, uzun ro‘yxatlar, Code tugunlari va AI ish jarayonlari API lar o‘rtasida kichik JSON paketlarini uzatishdan ko‘ra ko‘proq xotira talab qiladi.

SsenariyBoshlang‘ich konfiguratsiya
Sinovlar va shaxsiy matnli ish jarayonlari1 vCPU, 2 GB RAM, 20 GB NVMe
Kichik ishlab chiqarish o‘rnatmasi2 vCPU, 4 GB RAM, 25–40 GB NVMe
Bir vaqtdagi jarayonlar, AI yoki fayllar4 vCPU, 8 GB RAM yoki ko‘proq
Queue mode dagi bir nechta worker jarayonlariBajarilish hajmiga qarab tanlanadi

SQLite o‘rganish va kichik bitta nusxali o‘rnatma uchun mos. PostgreSQL ishlab chiqarishda qulayroq: zaxira olish osonroq va keyinchalik queue mode ga o‘tish soddaroq.

VPS ga n8n ni qanday o‘rnatish kerak

Bu misolda Ubuntu 24.04, PostgreSQL, Caddy va tashqi vazifa bajaruvchisi ishlatiladi. n8n.example.com hamda vaqt mintaqasini o‘z qiymatlaringizga almashtiring.

1. DNS ni sozlash va serverni tayyorlash

VPS ning IPv4 manziliga yo‘naltirilgan A DNS yozuvini yarating, so‘ng SSH orqali ulaning:

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

Docker Engine va Compose plaginini rasmiy repozitoriydan o‘rnating:

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

Faqat SSH, HTTP va HTTPS ga ruxsat bering:

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

Yangi ulanish ishlashini tasdiqlamaguningizcha joriy SSH seansini yopmang.

2. Muhit o‘zgaruvchilarini yaratish

Katalogni tayyorlang:

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

.env faylini yarating. Quyidagi buyruqlar PostgreSQL, n8n shifrlashi va vazifa bajaruvchisi uchun alohida tasodifiy maxfiy kalitlarni darhol yaratadi:

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 tegi birinchi ishga tushirish uchun qulay. O‘rnatmani tekshirgandan keyin aniq n8n versiyasini biriktirgan ma’qul, shunda keyingi image yangilanishi kutilmaganda sodir bo‘lmaydi.

N8N_ENCRYPTION_KEY ni yo‘qotmaslik kerak. n8n saqlangan parollar, tokenlar va boshqa hisob ma’lumotlarini shifrlash uchun shu kalitdan foydalanadi. Agar faqat PostgreSQL ni kalitsiz tiklasangiz, yozuvlar ma’lumotlar bazasida qoladi, ammo n8n ularni o‘qiy olmaydi.

3. Docker Compose faylini yaratish

compose.yaml faylini yarating:

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

Tashqi vazifa bajaruvchisi kodni asosiy n8n jarayonidan alohida ishga tushiradi. Bu ichki rejimga qaraganda xavfsizroq va Code tugunidagi xato editor hamda webhooklarni qayta ishlashga ta’sir qilish ehtimolini kamaytiradi.

4. HTTPS ni yoqish

Caddyfile faylini yarating:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

DNS VPS ga yo‘naltirilgan va 80 hamda 443 portlariga kirish mumkin bo‘lsa, Caddy TLS sertifikatini avtomatik oladi. Ichki 5678 porti internetga ochilmaydi: tashqaridan faqat 80 va 443 portlari mavjud, Caddy esa n8n ga Docker tarmog‘i orqali murojaat qiladi.

N8N_WEBHOOK_URL va N8N_PROXY_HOPS o‘zgaruvchilari editor to‘g‘ri ochiq webhook manzillarini yaratishi va bitta reverse proxy dan kelgan sarlavhalarga ishonishi uchun kerak.

5. n8n ni ishga tushirish

Yakuniy konfiguratsiyani tekshiring va konteynerlarni ishga tushiring:

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

Quyidagi manzilni oching:

https://n8n.example.com

Egasi hisobini yarating. Uning parolini hamkasblaringiz bilan ulashmang: jamoaviy ishlash uchun alohida hisoblar yarating va har bir kishiga faqat kerakli huquqlarni bering.

Birinchi foydali ish jarayoningiz

Yaxshi sinov — saytdan kelgan so‘rovni qayta ishlash:

  1. Webhook tugunini POST usuli bilan qo‘shing.
  2. Faqat ism, elektron pochta manzili va manba maydonlarini qoldirish uchun Edit Fields dan foydalaning.
  3. Kerakli ma’lumotlar yetishmasa, so‘rovni rad etish uchun If tugunidan foydalaning.
  4. CRM da bitim yarating yoki HTTP Request orqali so‘rov yuboring.
  5. Telegram bildirishnomasini qo‘shing.
  6. Zanjirni Respond to Webhook tuguni bilan yakunlang.
  7. Sinovdan keyin ish jarayonini faollashtiring va test webhookini ishlab chiqarish URL manziliga almashtiring.

Bu misol domen, HTTPS, kiruvchi so‘rovlar, hisob ma’lumotlari va tashqi integratsiyani darhol tekshiradi. Keyingi qadamda asosiy zanjir ishlamay qolganda sizga xabar beradigan alohida Error Workflow qo‘shing.

O‘rnatilgandan keyin n8n ni himoyalash

O‘rnatilgan n8n avtomatik ravishda ishonchli bo‘lib qolmaydi. Ishga tushirgandan keyin quyidagilarni ta’minlang:

  • editor faqat HTTPS orqali ochilsin;
  • .env fayli 600 huquqlariga ega bo‘lsin va Git ga yuborilmasin;
  • tashqi API kalitlari faqat zarur huquqlarga ega bo‘lsin;
  • har bir webhook manba imzosi yoki maxfiy kalitini tekshirsin;
  • bajarilish tarixi avtomatik o‘chirilsin;
  • muhim ish jarayonlaridagi xatolar administratorga yuborilsin.

Community tugunlari paket sifatida o‘rnatiladi va ish jarayoni ma’lumotlari hamda serverga kirish huquqiga ega bo‘lishi mumkin. Noma’lum tugunlarni tekshirmasdan qo‘shmang. Ular kerak bo‘lmasa, N8N_COMMUNITY_PACKAGES_ENABLED=false bilan o‘chirib qo‘ying.

Ichki auditni ishga tushiring:

docker compose exec n8n n8n audit

U himoyalanmagan webhooklar, xavfli tugunlar va hisob ma’lumotlari bilan bog‘liq muammolarni aniqlashga yordam beradi, ammo qo‘lda tekshirish o‘rnini bosmaydi.

Bajarilish tarixi va shaxsiy ma’lumotlar

n8n nosozliklarni aniqlash uchun kirish va chiqish ma’lumotlarini saqlaydi. Ular bilan birga elektron xatlar, telefon raqamlari, hujjatlar va API javoblari ham ma’lumotlar bazasida qolishi mumkin.

Yuqoridagi konfiguratsiyada bajarilishlar yetti kundan keyin o‘chiriladi va ularning soni 10 000 ta bilan cheklanadi. Maxfiy jarayonlar uchun saqlash muddatini ma’lumotlarni saqlash siyosatingizga mos tanlang va ish jarayoni tugashidan oldin keraksiz maydonlarni olib tashlang.

Zaxira nusxalari va yangilanishlar

Tiklash uchun PostgreSQL dump i, n8n_data volume i, konfiguratsiya fayllari va .env faylida saqlangan N8N_ENCRYPTION_KEY kerak bo‘ladi. Nusxa olishdan oldin PostgreSQL ishlashda qolgan holda protsessorlarni to‘xtating. Bu ish jarayonlari bajarilishida qisqa uzilishga olib keladi:

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 bor arxiv maxfiy ma’lumotlarni o‘z ichiga oladi: uni shifrlang va VPS dan tashqarida saqlang. Zaxira nusxasini vaqti-vaqti bilan sinov tariqasida tiklab ko‘ring.

Yangilashdan oldin zaxira oling va reliz qaydlarini ko‘rib chiqing:

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

Vazifa bajaruvchisi va asosiy konteyner bir xil versiya tegidan foydalanishi kerak.

Qachon masshtablash zarur bo‘ladi

Haqiqiy yuklama paydo bo‘lmasdan oldin Redis va bir nechta worker ni ishga tushirmang. PostgreSQL bilan bitta nusxani saqlash osonroq va odatda kichik ichki jarayonlar uchun yetarli.

Queue mode uzoq davom etadigan vazifalar webhooklarni kechiktirganda, ko‘plab ish jarayonlari bir paytda boshlanganda yoki fayllarni qayta ishlash mavjud xotirani muntazam tugatganda kerak bo‘ladi. Bunday tuzilmada asosiy nusxa hodisalarni qabul qiladi, Redis ishlarni taqsimlaydi, worker lar esa ularni parallel bajaradi. Barcha komponentlar bir xil PostgreSQL ma’lumotlar bazasiga ulanib, bir xil N8N_ENCRYPTION_KEY dan foydalanishi kerak.

n8n uchun qaysi VPS ni tanlash kerak

n8n, PostgreSQL, Caddy va vazifa bajaruvchisini birga ishlatish uchun 2 vCPU, 4 GB RAM va NVMe diskdan boshlash ma’qul. tropic.host saytida Light tarifi shu konfiguratsiyaga mos: 2 vCPU, 4 GB RAM va 25 GB NVMe. Bu og‘ir fayl qayta ishlashsiz dastlabki ishlab chiqarish ish jarayonlari uchun yetarli.

Hujjatlar, katta ma’lumotlar to‘plamlari va ko‘plab bir vaqtdagi AI ish jarayonlari uchun 8 GB RAM yaxshiroq tanlov. Barqaror tarmoq ham muhim: webhooklar, OAuth callbacklari va rejalashtirilgan vazifalar doimo mavjud bo‘lishi kerak.

Xulosa

n8n takroriy operatsiyalarni aniq vizual oqimlarga aylantiradi: tayyor tugunlar ishga tushirishni tezlashtiradi, HTTP Request deyarli istalgan API ni ulaydi, Code tuguni esa o‘z mantiqingizni qo‘shish imkonini beradi.

Self-hosted versiya server va ma’lumotlar bazasi ustidan nazorat beradi, ammo HTTPS, cheklangan kalitlar, tarixni tozalash va tekshirilgan zaxira nusxalarini talab qiladi. N8N_ENCRYPTION_KEY ni PostgreSQL bilan birga saqlang: usiz tiklangan hisob ma’lumotlarini deshifrlab bo‘lmaydi.

FAQ

n8n dan bepul foydalanish mumkinmi?

Ha. Community Edition ni shaxsiy va ichki jarayonlar uchun o‘z serveringizda bepul joylashtirish mumkin. Hosted n8n ni mustaqil SaaS sifatida qayta sotish fair-code litsenziyasi bilan cheklangan.

n8n ni domensiz o‘rnatish mumkinmi?

Mahalliy sinov uchun — ha. Ommaviy webhooklar va OAuth uchun domen hamda HTTPS dan foydalanish ma’qul.

n8n ga qancha RAM kerak?

Oddiy shaxsiy ish jarayonlari ko‘pincha 2 GB RAM bilan ishlaydi. PostgreSQL, Caddy va vazifa bajaruvchisi bilan n8n uchun 4 GB ma’qulroq; fayllar va bir vaqtdagi bajarilishlar 8 GB yoki undan ko‘proq talab qilishi mumkin.

Barcha ma’lumotlar VPS ichida qoladimi?

Faqat ish jarayoni boshqa joyga yubormagan ma’lumotlar qoladi. Ma’lumotlar bazasi va bajarilish tarixi VPS da saqlanadi, ammo Telegram, CRM yoki tashqi AI model tugunlari tanlangan ma’lumotlarni tegishli xizmatga yuboradi.

n8n zaxira nusxasiga nimalar kirishi kerak?

PostgreSQL dump i, n8n_data volume i, compose.yaml, Caddyfile va .env faylida saqlangan N8N_ENCRYPTION_KEY. Zaxirani VPS dan tashqarida shifrlangan holda saqlang va tiklash orqali tekshiring.