Workflow Automation

Self-Hosting n8n on a ₹500/Month Indian VPS — No Docker Desktop, No Cloud Credits

n8n is the best open-source workflow automation tool for teams that don't want to pay Zapier's per-task tax. Here's how to run it on a Hostinger or Hetzner VPS for under ₹500/month — with PostgreSQL, HTTPS, and PM2 process management.

03 Jun 20269 min readAnkur

A Zapier "Professional" plan costs $69/month (₹5,800) for 2,000 tasks. Make's "Teams" plan starts at $19/month. Both cap you on operations, charge per "task," and lock multi-step workflows behind higher tiers. n8n is Apache 2.0-licensed, self-hosted, and has no per-task billing. For an Indian SMB processing 5,000+ automated steps a month — invoice generation, WhatsApp notifications, CRM sync, GST filing triggers — the math isn't close.

Here's the production-ready setup on a ₹500/month VPS. No Docker Desktop, no cloud credits required.

Why n8n Over Make/Zapier for Indian Teams

n8n (Self-Hosted)ZapierMake
LicenseApache 2.0ProprietaryProprietary
Monthly cost (5K ops)₹500 (VPS only)₹5,800+₹1,600+
Data residencyYour VPS, IndiaUS/EUUS/EU
Custom code nodesYes (JS/Python)LimitedLimited
On-premise DB connectYesNoNo
WhatsApp Business APIVia HTTP nodeNativeNative

The data residency point matters. If you're processing customer phone numbers through a WhatsApp notification workflow, those numbers staying on an Indian VPS is both a regulatory preference and a client trust signal.

💡 Key Insight n8n isn't just cheaper — it's the only option that lets you connect directly to on-premise databases, internal APIs, and local services without punching holes in a firewall for a third-party SaaS.

The VPS: What ₹500/Month Gets You

Two realistic options for Indian teams:

₹499Hostinger KVM 2 — 2 vCPU, 8 GB RAM, 100 GB NVMe, India DC
₹450Hetzner CX22 — 2 vCPU, 4 GB RAM, 40 GB NVMe, Nuremberg (120ms)

Hostinger's Mumbai/Bangalore data centers give sub-30ms latency for Indian users. Hetzner gives slightly better specs per rupee but routes through Europe. For n8n — an admin tool, not a user-facing app — the latency difference is irrelevant. Pick based on data residency preference.

We'll use Ubuntu 24.04 LTS. Everything below works on both providers.

Step 1: System Dependencies

ssh root@your-vps-ip

# Update and install basics
apt update && apt upgrade -y
apt install -y curl git nginx certbot python3-certbot-nginx ufw

# Firewall — allow only what's needed
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Step 2: PostgreSQL (Don't Skip This)

n8n defaults to SQLite. That's fine for a laptop demo. For anything that processes real business workflows, use PostgreSQL. SQLite will choke on concurrent workflow executions and the n8n webhook queue.

apt install -y postgresql postgresql-contrib

sudo -u postgres psql <<EOF
CREATE DATABASE n8n;
CREATE USER n8n WITH PASSWORD '$(openssl rand -base64 32)';
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n;
\c n8n
GRANT ALL ON SCHEMA public TO n8n;
EOF

Save that password. You'll need it in the environment config.

Step 3: Install n8n via npm (Not Docker)

Docker adds overhead you don't need on a 2-vCPU VPS. Install n8n globally with Node.js:

# Node.js 22 LTS
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs

# n8n global install
npm install -g n8n@latest

# Verify
n8n --version  # Should show 1.90+ as of June 2026

Step 4: Environment Configuration

Create /etc/n8n.env:

# Database
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=your_generated_password

# Security
N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
N8N_USER_MANAGEMENT_DISABLED=false
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=$(openssl rand -base64 16)

# Webhook URL (set after domain is configured)
N8N_HOST=automation.yourdomain.in
N8N_PROTOCOL=https
N8N_PORT=5678

# Editor
N8N_EDITOR_BASE_URL=https://automation.yourdomain.in
WEBHOOK_URL=https://automation.yourdomain.in

# Performance
EXECUTIONS_PROCESS=main
N8N_EXECUTIONS_DATA_PRUNE=true
N8N_EXECUTIONS_DATA_MAX_AGE=168

Step 5: PM2 Process Management

npm install -g pm2

pm2 start n8n --name n8n -- start --env-file /etc/n8n.env
pm2 save
pm2 startup systemd

Confirm it's running:

pm2 status n8n
curl -s http://localhost:5678/healthz

Step 6: nginx Reverse Proxy + SSL

# /etc/nginx/sites-available/n8n
cat > /etc/nginx/sites-available/n8n <<'NGINX'
server {
    server_name automation.yourdomain.in;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}
NGINX

ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d automation.yourdomain.in --non-interactive --agree-tos -m you@yourdomain.in

What This Setup Handles

With 2 vCPU and 4-8 GB RAM, your n8n instance comfortably processes:

  • 500-1,000 workflow executions per hour
  • 10-15 concurrent webhook triggers
  • 50+ active workflows (scheduled + webhook)
  • PostgreSQL managing the execution queue without SQLite's lock contention
A ₹500/month VPS running n8n replaces ₹5,000-15,000/month in SaaS automation subscriptions. The break-even is one month. Everything after that is margin.

Indian-Specific Workflows Worth Automating

  1. WhatsApp order confirmations — Webhook from your order system → n8n HTTP request to WhatsApp Business API → customer gets order update. No monthly per-message tax.
  2. GST invoice generation — New row in PostgreSQL → n8n triggers invoice PDF generation (via HTML-to-PDF node or Puppeteer) → email to customer. Runs on your VPS, data never leaves.
  3. Tally sync — Watch a shared folder for new XML/Tally exports → transform and push to your web app's API. Tally doesn't have APIs. n8n bridges the gap.
  4. Lead-to-CRM pipeline — Facebook Lead Ads / Google Sheets → n8n transforms → Zoho CRM or custom API. All Indian tools, all supported via HTTP nodes.

Maintenance

# Update n8n monthly
npm update -g n8n && pm2 restart n8n

# Backup PostgreSQL
pg_dump n8n | gzip > /backups/n8n-$(date +%Y%m%d).sql.gz

# Monitor disk — execution data can grow
du -sh /root/.n8n/database.sqlite  # legacy
du -sh /var/lib/postgresql/*/main

n8n's built-in execution pruning (configured in the env file) keeps the database size manageable. Set a cron job to vacuum PostgreSQL weekly:

# /etc/cron.weekly/n8n-vacuum
#!/bin/bash
sudo -u postgres psql -d n8n -c "VACUUM ANALYZE;"

When n8n Isn't Enough

If you hit 5,000+ executions per hour, switch from EXECUTIONS_PROCESS=main to EXECUTIONS_PROCESS=own and add a Redis queue. If you need UI-level multi-tenancy (separate workspaces for different clients), n8n's community edition doesn't do that — you'd need n8n Enterprise or spawn separate containers. But for a single team automating its own operations, this setup works until you're processing serious volume.

The total monthly cost: ₹499 (VPS) + ₹0 (n8n) + ₹0 (PostgreSQL) + ₹0 (nginx) = ₹499. Your first automated workflow pays for the year.

Tags

  • n8n
  • self-hosting
  • workflow
  • automation
  • vps
  • india-smb