If you have been looking for a way to automate your workflows without paying high monthly fees, n8n is one of the best tools available right now. You can connect your apps, build automations, and run AI-powered workflows — all from a single dashboard.
The cloud version of n8n can cost anywhere from $20 to $500 per month depending on how many workflows you run. But when you host n8n on your own VPS, you pay only for the server — usually around $5 to $10 per month — and you get unlimited workflows with no usage limits.
In this guide, we will walk you through the complete process of setting up n8n on a VPS, step by step.
What is n8n?
n8n is an open-source workflow automation tool. Think of it as a self-hostable version of Zapier or Make. It connects over 400 apps and services and lets you build automation pipelines through a visual drag-and-drop editor — no coding required for most tasks.
Some of the most common things people use n8n for:
- Automating lead capture and CRM updates
- Sending automated emails and notifications
- Connecting AI models like ChatGPT to trigger actions
- Processing form submissions and webhook data
- Scheduling regular reports and data syncs
Why Host n8n on a VPS?
- Cost: A VPS costs $5–10/month. n8n Cloud starts at $20/month and goes up fast
- No execution limits: Run as many workflows as your server can handle
- Data privacy: Your workflow data stays on your own server
- Full control: Install custom nodes and configure everything your way
- Internal access: Connect to services not available on the public internet
What You Need Before Starting
- A VPS with at least 2 GB RAM — Lvato VPS plans are a great option for this
- Ubuntu 22.04 or 24.04 LTS installed on your server
- A domain name pointed to your VPS IP address
- SSH access to your server
- Basic comfort with running Linux terminal commands
Step 1: Update Your Server
Log in to your VPS via SSH and run the following command to make sure everything is up to date:
| sudo apt update && sudo apt upgrade -y |
Step 2: Install Docker
n8n runs inside a Docker container, which makes it simple to install, update, and manage. Install Docker using the official script:
| curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker |
Verify Docker is working by running: docker –version
Step 3: Create the Docker Compose File
Create a folder for n8n and add the Docker Compose configuration:
| mkdir ~/n8n && cd ~/n8n nano docker-compose.yml |
Paste the following into the file. Replace yourdomain.com with your actual domain name:
| version: ‘3.8’ services: n8n: image: n8nio/n8n restart: always ports: – “5678:5678” environment: – N8N_HOST=n8n.yourdomain.com – N8N_PORT=5678 – WEBHOOK_URL=https://n8n.yourdomain.com/ – N8N_PROTOCOL=https volumes: – n8n_data:/home/node/.n8n volumes: n8n_data: |
Step 4: Install and Configure Nginx
Nginx acts as a reverse proxy, forwarding traffic from port 80 and 443 to your n8n instance on port 5678.
| sudo apt install nginx -y sudo nano /etc/nginx/sites-available/n8n |
Paste this configuration block (replace yourdomain.com with your domain):
| server { listen 80; server_name n8n.yourdomain.com; location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘upgrade’; proxy_set_header Host $host; } } |
| sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx |
Step 5: Enable SSL with Let’s Encrypt
Secure your n8n instance with a free SSL certificate. Run the following commands:
| sudo apt install certbot python3-certbot-nginx -y sudo certbot –nginx -d n8n.yourdomain.com |
Follow the on-screen prompts. Certbot will automatically configure HTTPS and set up auto-renewal for your certificate.
Step 6: Start n8n
Now you are ready to launch your n8n instance:
| cd ~/n8n docker compose up -d |
Open your browser and go to https://n8n.yourdomain.com. You will be asked to create an admin account on your first visit. That is it — your n8n instance is live.
Troubleshooting
n8n is not accessible
Make sure your firewall allows traffic on ports 80 and 443:
| sudo ufw allow 80 && sudo ufw allow 443 |
Container keeps restarting
Check the logs to find the error: docker compose logs -f n8n — this is usually caused by low RAM or a misconfigured environment variable.
SSL certificate fails
Make sure your domain’s DNS A record is pointing to your VPS IP and has had time to propagate (usually 5–15 minutes).
| 💡 Pro Tip: Back up your n8n data regularly. Your workflows are stored in the n8n_data Docker volume. Losing this without a backup means losing all your workflows. Set up a daily cron job to export a copy to a safe location. |
Ready to Get Started?
At Lvato, our VPS plans are perfectly suited for self-hosting n8n. You get full root access, SSD storage, and the performance you need — starting at an affordable monthly price.
👉 Check out Lvato VPS Hosting: https://lvato.com/vps-hosting
