Deploying self-hosted n8n on a VPS allows you to run an unlimited number of automation scenarios without paying for each step (task), saving from $500 per month compared to Zapier or Make under comparable loads on a server costing from $10. This solution provides full control over your data and removes limits on the number of active workflows, making it an ideal tool for developers and system administrators.
Why is self-hosted n8n more cost-effective than Zapier and Make.com?
The main difference between n8n and commercial SaaS platforms lies in the licensing model. While Zapier and Make (formerly Integromat) charge for every operation or every "step" within a scenario,
self-hosted n8n operates on a "fair-code" principle. You only pay for the resources of the server where the system is deployed.
Cloud Platform Limitations
Cloud services impose strict limits. For example, Zapier's basic plan for $20-30 includes only 750 tasks. If your scenario checks email every 5 minutes and forwards data to a CRM, the limit will be exhausted in a few days. When using n8n as a
make.com alternative, you can run thousands of cycles per minute, limited only by the CPU power and RAM of your VPS.
Advantages of Self-Hosting for Automation
- Privacy: Data never leaves your server. This is critical when working with banking APIs, personal customer data, or internal company documents.
- No Node Limits: You can build massive logic trees with hundreds of branches.
- File System Access: n8n docker allows you to work directly with local files on the server, which is impossible in the cloud.
- Custom JS Functions: In the self-hosted version, there are no limits on script execution time within the "Code" node.
For those accustomed to management convenience but looking to save money, Cloudways → Valebyte: managed hosting alternative 3 times cheaper is an excellent example of how moving to your own VPS reduces costs without losing administration quality.
Choosing a VPS for n8n: System Requirements and Performance
For stable operation, an
n8n vps must have a sufficient amount of RAM. n8n is written in Node.js, and each running workflow process consumes resources. If you plan to use heavy scenarios with image processing or large JSON arrays, the requirements increase.
Minimum and Recommended Specifications
| Feature |
Minimum (1-5 workflows) |
Recommended (50+ workflows) |
Enterprise (High Load) |
| vCPU |
1 Core (2.5+ GHz) |
2-4 Cores |
8+ Cores |
| RAM |
2 GB |
4-8 GB |
16+ GB |
| Disk |
20 GB SSD/NVMe |
50 GB NVMe |
100+ GB NVMe |
| OS |
Ubuntu 22.04 LTS |
Ubuntu 22.04 LTS |
Debian/RHEL |
Why is an NVMe Drive Mandatory?
n8n actively uses a database to store execution history. With high request intensity, standard SSDs can become a bottleneck. Using NVMe drives on Valebyte servers ensures that log writing won't slow down the execution of the main scenario nodes.
If you plan to use n8n for deployment automation or working with frontend frameworks, check out the experience of colleagues in the article
migration from Vercel/Netlify to your own VPS: NextJS standalone.
Looking for a reliable server for your projects?
VPS from $10/mo and dedicated servers from $9/mo with NVMe, DDoS protection, and 24/7 support.
View Offers →
Installing n8n docker: A Step-by-Step Deployment Guide
The most reliable and fastest way to launch the system is to use
n8n docker. This isolates the application from the operating system and allows for easy updates.
Step 1: Environment Preparation
Install Docker and Docker Compose on your VPS:
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
Step 2: Creating the Configuration File
Create a directory for the project and a
docker-compose.yml file. We will use an n8n + PostgreSQL combination for stable data storage, as standard SQLite can lock up during parallel writes.
version: '3.8'
services:
db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=n8n_user
- POSTGRES_PASSWORD=strong_password
- POSTGRES_DB=n8n_db
volumes:
- ./postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_DATABASE=n8n_db
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=strong_password
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password
- WEBHOOK_URL=https://n8n.yourdomain.com/
volumes:
- ./n8n_data:/home/node/.n8n
depends_on:
- db
Step 3: Launch and Verification
Start the containers with the command:
docker-compose up -d
Now n8n is available at
http://your_server_IP:5678.
Configuring Security and Basic Authentication in n8n
When deploying a
zapier alternative on your own server, security is your responsibility. Leaving port 5678 open without SSL is a bad idea, as access tokens for your services pass through n8n.
Using a Reverse Proxy
It is recommended to use Nginx or Caddy to set up HTTPS. This will ensure traffic encryption and allow the use of webhooks that require a secure connection (e.g., Telegram API).
- SSL Certificates: Use Let's Encrypt via Certbot.
- IP Restriction: If you only work with n8n from the office, close access for all other IPs via
iptables or ufw.
- Basic Authentication: In the example above, we already included the
N8N_BASIC_AUTH_ACTIVE variables. This is the first line of defense.
For projects requiring maximum anonymity and bypassing network restrictions when scraping data via n8n, it is useful to set up a proxy server. Read more about this in the article
3proxy and Squid: HTTP/SOCKS5 proxy on VPS with authentication.
Creating Your First Workflow: Webhook → Telegram → Notion
Let's look at a classic automation example: collecting leads from a website via Webhook, sending a notification to Telegram, and saving the data to a Notion database.
Configuring the Webhook Node
1. Add a **Webhook** node.
2. Select the `POST` method.
3. n8n will generate a unique URL. This is where your website form will send JSON data.
4. In "Test" mode, send a test request so n8n can "see" the data structure.
Telegram Integration
1. Create a bot via `@BotFather` and get the API Token.
2. In n8n, add a **Telegram** node.
3. Select the `SendMessage` action.
4. In the text field, use Expressions to insert data from the webhook: `New lead: {{ $json.body.name }} ({{ $json.body.email }})`.
Saving to Notion
1. Create an internal integration in Notion and get the Internal Integration Token.
2. Share the required Database with this bot.
3. In n8n, add a **Notion** node, select `Database Page -> Create`.
4. Map the fields from the webhook JSON to the columns in Notion.
This simple scenario in Zapier would cost you about $20/mo for 1,000 leads. On
self-hosted n8n, it runs for free within your VPS resources.
Using n8n as a Core for AI Automations
Modern workflows increasingly include artificial intelligence elements. n8n features powerful nodes for working with OpenAI, Anthropic, and local models.
Integration with Local LLMs
You can link n8n with Ollama deployed on the same or a neighboring VPS. This allows you to automatically analyze incoming emails, classify support tickets, or generate content without paying for GPT-4 tokens.
To implement such a scheme, check out the guide
Self-hosted ChatGPT alternative: OpenWebUI + Ollama + RAG in 30 minutes. n8n can act as the "hands" for your LLM, performing real-world actions based on the neural network's conclusions.
Working with Vector Databases
If your automations need "memory" (e.g., for a smart chatbot), n8n supports integration with vector databases. This allows you to implement RAG (Retrieval-Augmented Generation) inside a workflow. A comparison of suitable databases is available here:
Vector DB on VPS: pgvector vs Qdrant vs Weaviate — which to choose.
Scaling and Optimizing the n8n Database
When the number of daily runs exceeds 100,000, a standard installation might start to slow down.
Queue Mode
For high-load systems,
self-hosted n8n supports Queue Mode. In this case, tasks are distributed among several worker nodes (Workers) via Redis.
- Main Instance: responsible for the UI and scheduling.
- Workers: perform the actual work.
- Redis: serves as the message broker.
Pruning Execution History
By default, n8n stores data for every run. Over time, the database can bloat to hundreds of gigabytes. Set up automatic pruning via environment variables:
EXECUTIONS_DATA_MAX_AGE=168
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
This will keep history only for the last 7 days (168 hours) or the last 50,000 records.
Economic Comparison: n8n VPS vs. Cloud Platforms
Let's calculate the real benefit when using automation for a medium-sized business (about 50,000 operations per month).
| Parameter |
Zapier (Professional) |
Make.com (Pro) |
n8n on Valebyte VPS |
| Monthly Cost |
~$600+ (for 50k tasks) |
~$120 (for 50k operations) |
$10 - $20 |
| Task Limit |
Hard limit |
Hard limit |
Unlimited (CPU limited) |
| Complex Scenarios |
More expensive per step |
More expensive per operation |
Price doesn't change |
| Data Control |
Cloud (USA) |
Cloud (EU) |
Your personal server |
The difference is obvious. Even considering VPS administration costs, an
n8n make.com alternative pays for itself in the very first month of commercial use.
Conclusions
Using self-hosted n8n on a dedicated VPS is the most effective way to build corporate automation without overpaying for licenses and task limits. For stable system operation, a server with 4 GB of RAM and an NVMe drive is sufficient, providing lightning-fast webhook response and real-time data processing.
Ready to choose a server?
VPS and dedicated servers in 72+ countries with instant activation and full root access.
Start Now →