No-code automation tools like Make and Zapier have enabled solopreneurs to connect services and build operational pipelines without writing code. However, as your business grows, the cost of automated operations scales rapidly. Make’s free tier is limited to 1,000 operations per month, and active leads or synchronization pipelines can exhaust that limit in a matter of days.
Enter n8n, a powerful fair-code workflow automation tool. By deploying n8n on your own hardware or a cheap Virtual Private Server (VPS), you can bypass operation limits entirely and run millions of automations for the price of hosting.
Architecture Breakdown: Make vs. n8n
| Feature | Make | n8n (Self-Hosted) |
|---|---|---|
| Pricing Model | Proprietary SaaS (Per Operation) | Fair-code (Free for personal/solopreneur use) |
| Execution Limit | Hard limits based on plan | Unlimited (Limited only by hardware specs) |
| Data Privacy | Data processed on Make servers | Data stays 100% on your own server |
| Hosting | Cloud managed | Self-hosted (Docker, Node.js, Cloud VM) |
| Version Control | Basic revision history | Full Git integration support |
| Community Nodes | Requires developer portal approval | Instantly installable NPM packages |
Deploying n8n Locally via Docker Compose
Self-hosting n8n is straightforward using Docker. This ensures all databases, Node.js configurations, and background workers are isolated.
Create a file named docker-compose.yml in your project folder:
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n_app
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://localhost:5678/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Launch the service by running the following command in your terminal:
docker compose up -d
Open your browser and navigate to http://localhost:5678. You will be greeted by the n8n setup wizard. You can now build workflows connecting databases, webhooks, OpenAI, and email nodes with zero operational limits.
How to Handle Webhooks on Self-Hosted n8n
When running n8n locally on your computer, external services (like Google Sheets or Stripe) cannot send webhooks directly to your local IP address.
To bridge this gap during development, you can use a lightweight tunneling service:
- Localtunnel or Ngrok: Open a secondary terminal window and run:
npx localtunnel --port 5678 - Tabby/Localtunnel will return a public URL (e.g.,
https://cold-pandas-sing.loca.lt). - Update the
WEBHOOK_URLenvironment variable in yourdocker-compose.ymlfile to this public URL and restart the container. - External webhooks will now route directly into your local n8n editor.

