n8n: यह क्या है और Docker Compose के साथ VPS पर इसे कैसे इंस्टॉल करें

4 मिनट पढ़ा
Tropic
n8n: यह क्या है और Docker Compose के साथ VPS पर इसे कैसे इंस्टॉल करें

Language: hi

VPS पर n8n: बिना दोहराए जाने वाले काम के आपका अपना ऑटोमेशन प्लेटफ़ॉर्म

वेबसाइट से एक अनुरोध आता है। n8n डेटा को सत्यापित करता है, डुप्लिकेट जाँचता है, डील बनाता है, AI की मदद से उत्तर का ड्राफ्ट तैयार करता है और Telegram में मैनेजर को सूचित करता है। व्यक्ति केवल उस समय हस्तक्षेप करता है जब निर्णय आवश्यक हो—ब्राउज़र टैब के बीच डेटा ले जाने के लिए नहीं।

नीचे हम देखेंगे कि n8n कैसे काम करता है और PostgreSQL, HTTPS व अलग code execution के साथ Docker Compose द्वारा VPS पर इसे कैसे इंस्टॉल करें।

सात चरणों में n8n

न्यूनतम लॉन्च योजना:

  1. VPS बनाएँ और एक सबडोमेन को उसकी ओर पॉइंट करें, जैसे n8n.example.com
  2. Docker और Docker Compose इंस्टॉल करें।
  3. n8n को PostgreSQL, बाहरी task runner और Caddy के साथ चलाएँ।
  4. HTTPS पर इंटरफ़ेस खोलें और owner अकाउंट बनाएँ।
  5. Telegram, CRM, ईमेल या किसी बाहरी API को कनेक्ट करें।
  6. त्रुटि प्रबंधन और execution data retention कॉन्फ़िगर करें।
  7. डेटाबेस, डेटा और encryption key के बैकअप स्वचालित करें।

छोटे production इंस्टॉलेशन के लिए 2 vCPU और 4 GB RAM से शुरुआत करना उचित है। परीक्षण के लिए 2 GB अक्सर पर्याप्त है, लेकिन PostgreSQL, Docker और समानांतर प्रक्रियाएँ जल्दी ही बची हुई क्षमता का उपयोग कर लेती हैं।

n8n क्या है और कैसे काम करता है

n8n एक workflow automation प्लेटफ़ॉर्म है। Workflow nodes से बनाया जाता है: एक node प्रक्रिया शुरू करता है, अगले nodes डेटा प्राप्त और परिवर्तित करते हैं, और अंतिम node कोई कार्रवाई करता है।

एक सरल workflow ऐसा दिखता है:

Webhook → data validation → CRM → Telegram → website response

Chain को webhook, schedule, ईमेल, संदेश या बाहरी सेवा की किसी घटना से शुरू किया जा सकता है। Nodes के बीच conditions, loops, filters, waits और error handling उपलब्ध हैं।

n8n की एक ताकत यह है कि automation केवल तैयार integrations तक सीमित नहीं है। HTTP Request के माध्यम से API वाली किसी भी सेवा को कॉल किया जा सकता है, जबकि custom logic Code node में JavaScript या Python से लिखी जा सकती है। इससे n8n सरल no-code builder और custom server-side code के बीच का समाधान बन जाता है।

यह केवल डेटा आगे भेजने से अधिक क्यों है

n8n तब उपयोगी है जब प्रक्रिया कई प्रणालियों में फैली हो और किसी निर्णय की आवश्यकता हो:

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

व्यक्ति को केवल control point पर रखा जा सकता है। उदाहरण के लिए, AI उत्तर तैयार करता है, लेकिन कर्मचारी के अनुमोदन के बाद ही संदेश ग्राहक को भेजा जाता है।

सामान्य उपयोग:

  • sales और support: अनुरोध एकत्र करना, leads बाँटना और deals बनाना;
  • content और AI: ड्राफ्ट तैयार करना, पूछताछ को वर्गीकृत करना और अनुमोदन के बाद प्रकाशित करना;
  • DevOps: outage notifications, Git webhooks और API checks;
  • internal operations: spreadsheets, ईमेल, calendars और corporate systems को सिंक्रोनाइज़ करना।

Self-hosted इंस्टॉलेशन आपको प्रक्रिया और डेटाबेस पर नियंत्रण देता है, लेकिन बाहरी सेवाओं को स्थानीय नहीं बनाता। Telegram, CRM या cloud AI model को भेजा गया डेटा VPS से बाहर चला जाता है।

n8n Cloud या अपना सर्वर

पैरामीटरn8n CloudVPS पर n8n
लॉन्चसर्वर सेटअप नहींडोमेन, Docker और HTTPS आवश्यक
अपडेटn8n संभालता हैमालिक संभालता है
डेटाबेस और फ़ाइलेंसेवा के इंफ्रास्ट्रक्चर मेंचुने हुए सर्वर पर
स्केलिंगcloud plan के अनुसारस्वतंत्र रूप से कॉन्फ़िगर
ज़िम्मेदारीकम administrationबैकअप, सुरक्षा और monitoring मालिक की ज़िम्मेदारी
किसके लिए बेहतरDevOps के बिना तेज़ शुरुआतनियंत्रण, customization और हमेशा चलने वाली प्रक्रियाएँ

Community Edition को self-host करके व्यक्तिगत और आंतरिक business processes के लिए मुफ़्त में इस्तेमाल किया जा सकता है। हालाँकि n8n पारंपरिक open-source license के तहत नहीं, बल्कि fair-code Sustainable Use License के तहत वितरित होता है। यह आंतरिक उपयोग और modification की अनुमति देता है, लेकिन आपको केवल n8n deploy करके, अपना logo जोड़कर, standalone SaaS के रूप में access बेचने की अनुमति नहीं देता। ऐसे उत्पाद के लिए license terms की अलग से समीक्षा करनी होगी।

n8n की सर्वर आवश्यकताएँ

लोड data volume, concurrency और operations के प्रकार पर निर्भर करता है। Files, लंबी lists, Code nodes और AI workflows को APIs के बीच छोटे JSON payloads भेजने की तुलना में अधिक memory चाहिए।

Scenarioशुरुआती कॉन्फ़िगरेशन
Tests और 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 या files4 vCPU, 8 GB RAM या अधिक
Queue mode में कई worker processesExecution volume के अनुसार आकार

SQLite सीखने और छोटे single-instance सेटअप के लिए उपयुक्त है। Production में PostgreSQL अधिक सुविधाजनक है: बैकअप आसान होते हैं और बाद में queue mode पर migrate करना सरल होता है।

VPS पर n8n कैसे इंस्टॉल करें

इस उदाहरण में Ubuntu 24.04, PostgreSQL, Caddy और external task runner का उपयोग है। n8n.example.com और time zone को अपनी values से बदलें।

1. DNS कॉन्फ़िगर करें और सर्वर तैयार करें

VPS के IPv4 पते की ओर इशारा करने वाला A DNS record बनाएँ, फिर SSH से कनेक्ट करें:

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 बनाएँ

डायरेक्टरी तैयार करें:

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

पहली शुरुआत के लिए stable tag सुविधाजनक है। इंस्टॉलेशन की पुष्टि के बाद किसी विशिष्ट n8n version को pin करना बेहतर है, ताकि अगला image update अनपेक्षित रूप से न हो।

N8N_ENCRYPTION_KEY को खोना नहीं चाहिए। n8n stored passwords, tokens और अन्य credentials को encrypt करने के लिए इस key का उपयोग करता है। यदि आप key के बिना केवल PostgreSQL restore करते हैं, तो records डेटाबेस में रहेंगे, लेकिन n8n उन्हें पढ़ नहीं पाएगा।

3. Docker Compose फ़ाइल बनाएँ

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 process से अलग चलाता है। यह internal mode से अधिक सुरक्षित है और Code node में होने वाली किसी त्रुटि के editor और webhook processing को प्रभावित करने की संभावना कम करता है।

4. HTTPS सक्षम करें

Caddyfile बनाएँ:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

यदि DNS पहले से VPS की ओर पॉइंट करता है और 80 व 443 पोर्ट पहुँच योग्य हैं, तो Caddy अपने-आप TLS certificate प्राप्त करेगा। Internal port 5678 internet पर expose नहीं है: बाहर से केवल 80 और 443 पोर्ट उपलब्ध हैं, जबकि 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 न करें: teamwork के लिए अलग accounts बनाएँ और हर व्यक्ति को केवल आवश्यक access दें।

आपका पहला उपयोगी workflow

एक अच्छा test वेबसाइट से आए request को process करना है:

  1. Webhook node को POST method के साथ जोड़ें।
  2. केवल name, email address और source रखने के लिए Edit Fields का उपयोग करें।
  3. आवश्यक data के बिना आए request को reject करने के लिए If node का उपयोग करें।
  4. CRM में deal बनाएँ या HTTP Request के माध्यम से request भेजें।
  5. Telegram notification जोड़ें।
  6. Chain को Respond to Webhook node के साथ समाप्त करें।
  7. Test के बाद workflow activate करें और test webhook को production URL से बदलें।

यह उदाहरण तुरंत domain, HTTPS, incoming requests, credentials और external integration की जाँच करता है। इसके बाद एक अलग Error Workflow जोड़ें, जो मुख्य chain विफल होने पर आपको सूचित करेगा।

इंस्टॉलेशन के बाद n8n को सुरक्षित करना

इंस्टॉल किया गया n8n अपने-आप reliable नहीं बन जाता। लॉन्च के बाद सुनिश्चित करें कि:

  • editor केवल HTTPS पर accessible हो;
  • .env की permissions 600 हों और वह Git में commit न हो;
  • external API keys के पास न्यूनतम आवश्यक permissions हों;
  • हर webhook source के signature या secret को verify करे;
  • execution history अपने-आप delete हो;
  • critical workflows की errors administrator को भेजी जाएँ।

Community nodes packages के रूप में install होते हैं और workflow data व server तक पहुँच पा सकते हैं। बिना review किए unknown nodes न जोड़ें। यदि उनकी आवश्यकता नहीं है, तो उन्हें N8N_COMMUNITY_PACKAGES_ENABLED=false से disable करें।

Built-in audit चलाएँ:

docker compose exec n8n n8n audit

यह unprotected webhooks, risky nodes और credential issues पहचानने में मदद करता है, लेकिन manual review का स्थान नहीं लेता।

Execution history और personal data

n8n debugging के लिए input और output data store करता है। इसके साथ email messages, phone numbers, documents और API responses भी database में रह सकते हैं।

ऊपर की configuration में executions सात दिनों बाद delete होते हैं और उनकी संख्या 10,000 तक सीमित है। Sensitive processes के लिए अपनी data-retention policy के अनुसार अवधि चुनें और workflow पूरा होने से पहले अनावश्यक fields हटा दें।

Backups और updates

Recovery के लिए PostgreSQL dump, n8n_data volume, configuration files और N8N_ENCRYPTION_KEY वाला .env आवश्यक है। 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 करके बैकअप की पुष्टि करें।

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 संभालना आसान है और आमतौर पर छोटे internal processes के लिए पर्याप्त होता है।

Queue mode तब आवश्यक होता है जब लंबे tasks webhooks में देरी करें, कई workflows एक साथ शुरू हों या file processing नियमित रूप से उपलब्ध memory का पूरा उपयोग करे। इस व्यवस्था में main instance events प्राप्त करता है, Redis jobs बाँटता है और workers उन्हें parallel में चलाते हैं। सभी 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 बेहतर विकल्प है। Stable network भी महत्वपूर्ण है: webhooks, OAuth callbacks और scheduled jobs लगातार उपलब्ध रहने चाहिए।

निष्कर्ष

n8n दोहराए जाने वाले operations को स्पष्ट visual flows में बदल देता है: तैयार nodes शुरुआत तेज़ करते हैं, HTTP Request लगभग किसी भी API को जोड़ता है और Code node अपना logic जोड़ने देता है।

Self-hosted version आपको server और database पर नियंत्रण देता है, लेकिन इसके लिए HTTPS, restricted keys, history cleanup और verified backups आवश्यक हैं। N8N_ENCRYPTION_KEY को PostgreSQL के साथ रखें: इसके बिना restored credentials decrypt नहीं किए जा सकते।

FAQ

क्या n8n का उपयोग मुफ़्त में किया जा सकता है?

हाँ। Community Edition को personal और internal processes के लिए अपने server पर मुफ़्त में host किया जा सकता है। Hosted n8n को standalone SaaS के रूप में resell करना fair-code license द्वारा restricted है।

क्या n8n को domain के बिना इंस्टॉल किया जा सकता है?

Local testing के लिए हाँ। Public webhooks और OAuth के लिए domain और HTTPS का उपयोग बेहतर है।

n8n को कितनी RAM चाहिए?

Simple personal workflows अक्सर 2 GB RAM पर चल जाते हैं। PostgreSQL, Caddy और task runner वाले n8n के लिए 4 GB अधिक उचित है; files और concurrent executions के लिए 8 GB या अधिक चाहिए हो सकता है।

क्या सारा data VPS के अंदर रहता है?

केवल वही data जो workflow कहीं और नहीं भेजता। Database और execution history VPS पर store होते हैं, लेकिन Telegram, CRM या external AI-model nodes चुना हुआ data संबंधित service को भेजते हैं।

n8n backup में क्या शामिल होना चाहिए?

PostgreSQL dump, n8n_data volume, compose.yaml, Caddyfile और N8N_ENCRYPTION_KEY वाला .env। Backup को VPS के बाहर encrypted रूप में रखें और restore करके इसकी पुष्टि करें।