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.
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) | Zapier | Make | |
|---|---|---|---|
| License | Apache 2.0 | Proprietary | Proprietary |
| Monthly cost (5K ops) | ₹500 (VPS only) | ₹5,800+ | ₹1,600+ |
| Data residency | Your VPS, India | US/EU | US/EU |
| Custom code nodes | Yes (JS/Python) | Limited | Limited |
| On-premise DB connect | Yes | No | No |
| WhatsApp Business API | Via HTTP node | Native | Native |
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.
The VPS: What ₹500/Month Gets You
Two realistic options for Indian teams:
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
Indian-Specific Workflows Worth Automating
- WhatsApp order confirmations — Webhook from your order system → n8n HTTP request to WhatsApp Business API → customer gets order update. No monthly per-message tax.
- 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.
- 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.
- 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
More on workflow automation
- Hyperautomation in 2026: what changed when AI ate the integration layerRPA was screen-scraping. Hyperautomation is intent-routing across systems via AI. The new bottleneck isn't connectivity. It's trust.
- n8n vs Make vs Zapier in 2026, with the honest tradeoffsA working studio's view of all three. Zapier for time-to-value, Make for branching logic, n8n for sovereignty and 10x cost compression. The fit is the answer.
- Self-hosting n8n on a VPS: a pragmatic guide for SMBsWhy you'd self-host, what it costs (₹500 a month and an hour), the five things that go wrong, and when you should stay on cloud n8n instead.