n8n کیا ہے اور Docker Compose کے ساتھ VPS پر اسے کیسے انسٹال کریں

5 منٹ پڑھا۔
Tropic
n8n کیا ہے اور Docker Compose کے ساتھ VPS پر اسے کیسے انسٹال کریں

Language: ur

VPS پر n8n: دستی محنت کے بغیر اپنا آٹومیشن پلیٹ فارم

ویب سائٹ سے ایک درخواست آتی ہے۔ n8n ڈیٹا کی جانچ کرتا ہے، ڈپلیکیٹس تلاش کرتا ہے، ایک ڈیل بناتا ہے، AI کی مدد سے جواب کا مسودہ تیار کرتا ہے اور Telegram میں مینیجر کو اطلاع دیتا ہے۔ انسان صرف اس وقت شامل ہوتا ہے جب فیصلہ درکار ہو — براؤزر کے ٹیبز کے درمیان ڈیٹا منتقل کرنے کے لیے نہیں۔

ذیل میں ہم دیکھیں گے کہ n8n کیسے کام کرتا ہے اور Docker Compose، PostgreSQL، HTTPS اور الگ تھلگ کوڈ ایگزیکیوشن کے ساتھ اسے VPS پر کیسے انسٹال کیا جائے۔

n8n سات مراحل میں

آغاز کا کم سے کم منصوبہ:

  1. ایک VPS بنائیں اور اس کی طرف ایک سب ڈومین پوائنٹ کریں، مثلاً n8n.example.com۔
  2. Docker اور Docker Compose انسٹال کریں۔
  3. n8n کو PostgreSQL، بیرونی ٹاسک رنر اور Caddy کے ساتھ چلائیں۔
  4. HTTPS کے ذریعے انٹرفیس کھولیں اور مالک کا اکاؤنٹ بنائیں۔
  5. Telegram، CRM، ای میل یا کسی بیرونی API کو مربوط کریں۔
  6. خرابیوں سے نمٹنے اور execution data محفوظ رکھنے کی مدت ترتیب دیں۔
  7. ڈیٹابیس، ڈیٹا اور encryption key کے بیک اپ خودکار بنائیں۔

چھوٹی production تنصیب کے لیے 2 vCPU اور 4 GB RAM سے آغاز مناسب ہے۔ ٹیسٹنگ کے لیے 2 GB اکثر کافی ہوتی ہے، لیکن PostgreSQL، Docker اور بیک وقت چلنے والے عمل باقی وسائل تیزی سے استعمال کر لیتے ہیں۔

n8n کیا ہے اور یہ کیسے کام کرتا ہے؟

n8n ورک فلو آٹومیشن پلیٹ فارم ہے۔ ورک فلو nodes سے بنتا ہے: ایک node عمل شروع کرتا ہے، اگلے nodes ڈیٹا حاصل کر کے تبدیل کرتے ہیں، اور آخری node کوئی action انجام دیتا ہے۔

ایک سادہ ورک فلو کچھ یوں دکھائی دیتا ہے:

Webhook → data validation → CRM → Telegram → website response

زنجیر کو webhook، شیڈول، ای میل، پیغام یا کسی بیرونی سروس کے event سے شروع کیا جا سکتا ہے۔ nodes کے درمیان conditions، loops، filters، waits اور error handling دستیاب ہیں۔

n8n کی ایک بڑی خوبی یہ ہے کہ آٹومیشن صرف تیار شدہ integrations تک محدود نہیں۔ HTTP Request کے ذریعے آپ کسی بھی API والی سروس کو کال کر سکتے ہیں، جبکہ custom logic کو Code node میں JavaScript یا Python سے لکھا جا سکتا ہے۔ اس طرح n8n سادہ no-code builder اور custom server-side code کے درمیان کی جگہ پر آتا ہے۔

صرف ڈیٹا آگے بھیجنے سے زیادہ کیوں؟

n8n اس وقت مفید ہوتا ہے جب عمل کئی systems سے گزرتا ہو اور کسی فیصلے کی ضرورت ہو:

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

انسان کو صرف control point پر رکھا جا سکتا ہے۔ مثلاً AI جواب تیار کرے، مگر ملازم کی منظوری کے بعد ہی پیغام گاہک کو بھیجا جائے۔

عام استعمال:

  • فروخت اور سپورٹ: درخواستیں جمع کرنا، leads تقسیم کرنا اور deals بنانا؛
  • content اور AI: مسودے تیار کرنا، سوالات کی درجہ بندی اور منظوری کے بعد publishing؛
  • DevOps: outage notifications، Git webhooks اور API checks؛
  • اندرونی operations: spreadsheets، ای میل، calendars اور corporate systems کو synchronise کرنا۔

خود میزبانی شدہ تنصیب آپ کو process اور database پر کنٹرول دیتی ہے، مگر بیرونی services کو local نہیں بناتی۔ Telegram، CRM یا cloud AI model کو بھیجا گیا data VPS سے باہر چلا جاتا ہے۔

n8n Cloud یا اپنا server

Parametern8n CloudVPS پر n8n
آغازserver setup کی ضرورت نہیںdomain، Docker اور HTTPS درکار ہیں
Updatesn8n سنبھالتا ہےمالک سنبھالتا ہے
Database اور filesservice کی infrastructure میںمنتخب server پر
Scalingcloud plan کے مطابقخود configure کرنا ہوتا ہے
ذمہ داریکم administrationbackups، security اور monitoring مالک کی ذمہ داری
کس کے لیے بہترDevOps کے بغیر فوری آغازcontrol، customization اور always-on processes

Community Edition کو مفت self-host کیا جا سکتا ہے اور ذاتی و اندرونی business processes کے لیے استعمال کیا جا سکتا ہے۔ تاہم n8n روایتی open-source license کے تحت نہیں بلکہ fair-code Sustainable Use License کے تحت تقسیم ہوتا ہے۔ یہ اندرونی استعمال اور modification کی اجازت دیتا ہے، مگر آپ صرف n8n deploy کر کے، اپنا logo لگا کر، اسے standalone SaaS کے طور پر access فروخت نہیں کر سکتے۔ ایسی product کے لیے license terms الگ سے دیکھنا ضروری ہے۔

n8n کے لیے server requirements

لوڈ data volume، concurrency اور operations کی نوعیت پر منحصر ہے۔ Files، طویل lists، Code nodes اور AI workflows کو APIs کے درمیان چھوٹے JSON payloads منتقل کرنے سے زیادہ memory درکار ہوتی ہے۔

ScenarioStarting configuration
Tests and personal text-based workflows1 vCPU, 2 GB RAM, 20 GB NVMe
Small production installation2 vCPU, 4 GB RAM, 25–40 GB NVMe
Concurrent processes, AI, or files4 vCPU, 8 GB RAM or more
Multiple worker processes in queue modeSize according to execution volume

SQLite سیکھنے اور چھوٹی single-instance setup کے لیے مناسب ہے۔ production میں PostgreSQL زیادہ آسان ہے: backups آسان ہوتے ہیں اور بعد میں queue mode پر migration بھی سہل رہتی ہے۔

VPS پر n8n کیسے انسٹال کریں؟

اس مثال میں Ubuntu 24.04، PostgreSQL، Caddy اور بیرونی task runner استعمال ہوتے ہیں۔ n8n.example.com اور time zone کو اپنی values سے تبدیل کریں۔

1. DNS configure کریں اور server تیار کریں

ایک A DNS record بنائیں جو VPS کے IPv4 address کی طرف اشارہ کرے، پھر SSH کے ذریعے connect کریں:

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

Official repository سے Docker Engine اور Compose plugin انسٹال کریں:

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

صرف SSH، HTTP اور HTTPS کی اجازت دیں:

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

جب تک نئی connection کام کرنے کی تصدیق نہ ہو جائے، موجودہ SSH session بند نہ کریں۔

2. Environment variables بنائیں

Directory تیار کریں:

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

.env بنائیں۔ ذیل کی commands PostgreSQL، n8n encryption اور task runner کے لیے الگ الگ random secrets فوراً generate کرتی ہیں:

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

پہلی launch کے لیے stable tag آسان ہے۔ تنصیب کی جانچ کے بعد n8n کی مخصوص version pin کرنا بہتر ہے تاکہ اگلی image update غیر متوقع طور پر نہ ہو۔

N8N_ENCRYPTION_KEY ضائع نہیں ہونی چاہیے۔ n8n اس key سے محفوظ passwords، tokens اور دیگر credentials encrypt کرتا ہے۔ اگر آپ key کے بغیر صرف PostgreSQL restore کریں تو records database میں رہیں گے، مگر n8n انہیں پڑھ نہیں سکے گا۔

3. Docker Compose file بنائیں

compose.yaml بنائیں:

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

External task runner code کو n8n کے main process سے الگ چلاتا ہے۔ یہ internal mode سے زیادہ محفوظ ہے اور Code node کی error سے editor اور webhook processing متاثر ہونے کا امکان کم کرتا ہے۔

4. HTTPS فعال کریں

Caddyfile بنائیں:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

اگر DNS پہلے ہی VPS کی طرف point کر رہا ہو اور ports 80 اور 443 reachable ہوں تو Caddy خودکار طور پر TLS certificate حاصل کر لے گا۔ Internal port 5678 internet پر expose نہیں ہوتا: باہر سے صرف ports 80 اور 443 available ہیں، جبکہ Caddy Docker network کے ذریعے n8n تک پہنچتا ہے۔

N8N_WEBHOOK_URL اور N8N_PROXY_HOPS variables اس لیے ضروری ہیں کہ editor درست public webhook addresses بنائے اور ایک reverse proxy سے آنے والے headers پر اعتماد کرے۔

5. n8n شروع کریں

Final configuration validate کر کے containers شروع کریں:

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

کھولیں:

https://n8n.example.com

Owner account بنائیں۔ اس کا password ساتھیوں کے ساتھ share نہ کریں: team work کے لیے الگ accounts استعمال کریں اور ہر شخص کو صرف ضروری access دیں۔

آپ کا پہلا مفید ورک فلو

اچھی آزمائش ویب سائٹ سے آنے والی request کو process کرنا ہے:

  1. Webhook node کو POST method کے ساتھ شامل کریں۔
  2. صرف نام، email address اور source رکھنے کے لیے Edit Fields استعمال کریں۔
  3. لازمی data کے بغیر request رد کرنے کے لیے If node استعمال کریں۔
  4. CRM میں deal بنائیں یا HTTP Request کے ذریعے request بھیجیں۔
  5. Telegram notification شامل کریں۔
  6. Respond to Webhook node کے ساتھ chain ختم کریں۔
  7. test کے بعد workflow activate کریں اور test webhook کو production URL سے بدل دیں۔

یہ مثال فوراً domain، HTTPS، incoming requests، credentials اور external integration کو check کرتی ہے۔ اس کے بعد الگ Error Workflow شامل کریں جو main chain fail ہونے پر آپ کو اطلاع دے۔

تنصیب کے بعد n8n کو محفوظ بنائیں

انسٹال شدہ n8n instance خود بخود reliable نہیں ہوتی۔ Launch کے بعد یقینی بنائیں کہ:

  • editor صرف HTTPS پر accessible ہو؛
  • .env کے permissions 600 ہوں اور اسے Git میں commit نہ کیا گیا ہو؛
  • external API keys کے پاس صرف کم سے کم ضروری permissions ہوں؛
  • ہر webhook source کے signature یا secret کی verification کرے؛
  • execution history خودکار طور پر delete ہو؛
  • critical workflows کی errors administrator کو بھیجی جائیں۔

Community nodes packages کے طور پر install ہوتے ہیں اور workflow data اور server تک access حاصل کر سکتے ہیں۔ جائزہ لیے بغیر نامعلوم nodes شامل نہ کریں۔ اگر ان کی ضرورت نہیں تو N8N_COMMUNITY_PACKAGES_ENABLED=false کے ساتھ disable کریں۔

Built-in audit چلائیں:

docker compose exec n8n n8n audit

یہ unprotected webhooks، risky nodes اور credentials کے مسائل کی نشاندہی کرنے میں مدد دیتا ہے، مگر manual review کا متبادل نہیں۔

Execution history اور ذاتی data

n8n debugging کے لیے input اور output data محفوظ کرتا ہے۔ اس کے ساتھ email messages، phone numbers، documents اور API responses بھی database میں رہ سکتے ہیں۔

اوپر کی configuration میں executions سات دن بعد delete ہوتے ہیں اور تعداد 10,000 تک محدود ہے۔ حساس processes کے لیے اپنی data-retention policy کے مطابق مدت منتخب کریں اور workflow ختم ہونے سے پہلے غیر ضروری fields ہٹا دیں۔

Backups اور updates

Recovery کے لیے PostgreSQL dump، n8n_data volume، configuration files اور .env جس میں N8N_ENCRYPTION_KEY موجود ہو، درکار ہے۔ Copy کرنے سے پہلے processors روکیں مگر PostgreSQL کو چلتا رہنے دیں۔ اس سے workflow execution میں مختصر interruption آئے گی:

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 والا archive secrets رکھتا ہے: اسے encrypt کریں اور VPS سے باہر محفوظ کریں۔ وقفے وقفے سے test restore کر کے backup کی جانچ کریں۔

Update سے پہلے backup بنائیں اور release notes دیکھیں:

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

Task runner اور main container کو ایک ہی version tag استعمال کرنا چاہیے۔

Scaling کب ضروری ہوتا ہے؟

حقیقی load آنے سے پہلے Redis اور کئی workers کے ساتھ آغاز نہ کریں۔ PostgreSQL کے ساتھ single instance maintain کرنا آسان ہے اور یہ عموماً چھوٹے اندرونی processes کے لیے کافی ہوتی ہے۔

Queue mode اس وقت ضروری ہوتا ہے جب long-running tasks webhooks کو delay کریں، بہت سے workflows ایک ساتھ شروع ہوں یا file processing باقاعدگی سے تمام memory استعمال کر لے۔ اس setup میں main instance events وصول کرتی ہے، Redis jobs تقسیم کرتا ہے اور workers انہیں parallel execute کرتے ہیں۔ تمام components کو اسی PostgreSQL database سے connect ہونا اور ایک ہی N8N_ENCRYPTION_KEY استعمال کرنا چاہیے۔

n8n کے لیے کون سا VPS منتخب کریں؟

n8n، PostgreSQL، Caddy اور task runner کو ایک ساتھ چلانے کے لیے 2 vCPU، 4 GB RAM اور NVMe drive سے آغاز مناسب ہے۔ tropic.host کا Light plan اس configuration سے مطابقت رکھتا ہے: 2 vCPU، 4 GB RAM اور 25 GB NVMe۔ بھاری file processing کے بغیر ابتدائی production workflows کے لیے یہ کافی ہے۔

Documents، بڑے datasets اور بہت سے concurrent AI workflows کے لیے 8 GB RAM بہتر انتخاب ہے۔ مستحکم network بھی اہم ہے: webhooks، OAuth callbacks اور scheduled jobs مسلسل available رہنے چاہییں۔

نتیجہ

n8n دہرائے جانے والے operations کو واضح visual flows میں بدل دیتا ہے: ready-made nodes آغاز تیز کرتے ہیں، HTTP Request تقریباً ہر API سے connect کرتا ہے اور Code node اپنی logic شامل کرنے دیتا ہے۔

Self-hosted version server اور database پر control دیتی ہے، مگر HTTPS، محدود permissions والی keys، history cleanup اور verified backups ضروری ہیں۔ N8N_ENCRYPTION_KEY کو PostgreSQL کے ساتھ محفوظ رکھیں: اس کے بغیر restore کیے گئے credentials decrypt نہیں ہو سکتے۔

FAQ

کیا n8n مفت استعمال کیا جا سکتا ہے؟

ہاں۔ Community Edition کو ذاتی اور اندرونی processes کے لیے اپنے server پر مفت host کیا جا سکتا ہے۔ Hosted n8n کو standalone SaaS کے طور پر دوبارہ فروخت کرنا fair-code license کے تحت محدود ہے۔

کیا n8n کو domain کے بغیر install کیا جا سکتا ہے؟

Local testing کے لیے ہاں۔ Public webhooks اور OAuth کے لیے domain اور HTTPS استعمال کرنا بہتر ہے۔

n8n کو کتنی RAM چاہیے؟

سادہ ذاتی workflows اکثر 2 GB RAM پر چل جاتے ہیں۔ PostgreSQL، Caddy اور task runner کے ساتھ n8n کے لیے 4 GB زیادہ مناسب ہے؛ files اور concurrent executions کو 8 GB یا اس سے زیادہ درکار ہو سکتی ہے۔

کیا تمام data VPS کے اندر رہتا ہے؟

صرف وہ data جو workflow کہیں اور نہیں بھیجتا۔ Database اور execution history VPS پر رہتی ہے، مگر Telegram، CRM یا external AI-model nodes منتخب data متعلقہ service کو بھیجتے ہیں۔

n8n backup میں کیا شامل ہونا چاہیے؟

PostgreSQL dump، n8n_data volume، compose.yaml، Caddyfile اور .env جس میں N8N_ENCRYPTION_KEY شامل ہو، اسے شامل کریں۔ Backup کو VPS سے باہر encrypted شکل میں رکھیں اور restore کر کے اس کی تصدیق کریں۔