Language: ur
VPS پر n8n: دستی محنت کے بغیر اپنا آٹومیشن پلیٹ فارم
ویب سائٹ سے ایک درخواست آتی ہے۔ n8n ڈیٹا کی جانچ کرتا ہے، ڈپلیکیٹس تلاش کرتا ہے، ایک ڈیل بناتا ہے، AI کی مدد سے جواب کا مسودہ تیار کرتا ہے اور Telegram میں مینیجر کو اطلاع دیتا ہے۔ انسان صرف اس وقت شامل ہوتا ہے جب فیصلہ درکار ہو — براؤزر کے ٹیبز کے درمیان ڈیٹا منتقل کرنے کے لیے نہیں۔
ذیل میں ہم دیکھیں گے کہ n8n کیسے کام کرتا ہے اور Docker Compose، PostgreSQL، HTTPS اور الگ تھلگ کوڈ ایگزیکیوشن کے ساتھ اسے VPS پر کیسے انسٹال کیا جائے۔
n8n سات مراحل میں
آغاز کا کم سے کم منصوبہ:
- ایک VPS بنائیں اور اس کی طرف ایک سب ڈومین پوائنٹ کریں، مثلاً
n8n.example.com۔ - Docker اور Docker Compose انسٹال کریں۔
- n8n کو PostgreSQL، بیرونی ٹاسک رنر اور Caddy کے ساتھ چلائیں۔
- HTTPS کے ذریعے انٹرفیس کھولیں اور مالک کا اکاؤنٹ بنائیں۔
- Telegram، CRM، ای میل یا کسی بیرونی API کو مربوط کریں۔
- خرابیوں سے نمٹنے اور execution data محفوظ رکھنے کی مدت ترتیب دیں۔
- ڈیٹابیس، ڈیٹا اور 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
| Parameter | n8n Cloud | VPS پر n8n |
|---|---|---|
| آغاز | server setup کی ضرورت نہیں | domain، Docker اور HTTPS درکار ہیں |
| Updates | n8n سنبھالتا ہے | مالک سنبھالتا ہے |
| Database اور files | service کی infrastructure میں | منتخب server پر |
| Scaling | cloud plan کے مطابق | خود configure کرنا ہوتا ہے |
| ذمہ داری | کم administration | backups، 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 درکار ہوتی ہے۔
| Scenario | Starting configuration |
|---|---|
| Tests and personal text-based workflows | 1 vCPU, 2 GB RAM, 20 GB NVMe |
| Small production installation | 2 vCPU, 4 GB RAM, 25–40 GB NVMe |
| Concurrent processes, AI, or files | 4 vCPU, 8 GB RAM or more |
| Multiple worker processes in queue mode | Size 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 opensslOfficial 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_configExternal 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.comOwner account بنائیں۔ اس کا password ساتھیوں کے ساتھ share نہ کریں: team work کے لیے الگ accounts استعمال کریں اور ہر شخص کو صرف ضروری access دیں۔
آپ کا پہلا مفید ورک فلو
اچھی آزمائش ویب سائٹ سے آنے والی request کو process کرنا ہے:
Webhooknode کوPOSTmethod کے ساتھ شامل کریں۔- صرف نام، email address اور source رکھنے کے لیے
Edit Fieldsاستعمال کریں۔ - لازمی data کے بغیر request رد کرنے کے لیے
Ifnode استعمال کریں۔ - CRM میں deal بنائیں یا
HTTP Requestکے ذریعے request بھیجیں۔ - Telegram notification شامل کریں۔
Respond to Webhooknode کے ساتھ chain ختم کریں۔- 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کے permissions600ہوں اور اسے 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 psTask 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 کر کے اس کی تصدیق کریں۔
