n8n Self-Hosted: Complete Guide to Install on VPS (2026)
n8n self-hosted gives you total freedom: unlimited workflows, your data at home, zero cloud subscription. This guide covers the complete installation on Ubuntu VPS, from initial setup to production.

William Aklamavo
April 8, 2026
n8n Self-Hosted: Complete Guide to Install on VPS (2026)
n8n self-hosted is the option chosen by teams who refuse to depend on a SaaS for their critical automations. Zero execution limits, 100% private data, controlled fixed costs.
Why Self-Host n8n?
Economic advantage
| Monthly volume | n8n Cloud | n8n Self-hosted |
|---|---|---|
| 2,500 executions | $20/month | ~$6/month (VPS) |
| 10,000 executions | $50/month | ~$6/month |
| 100,000 executions | $400+/month | ~$10/month |
Over 3 years, the savings reach several thousand dollars for a team that automates seriously.
Other advantages
- No execution limits — process thousands of operations per hour at no extra cost
- Reduced latency if your VPS is in the same region as your APIs
- Local system connections: internal databases, file servers, private APIs not exposed on the internet
Choosing Your VPS for n8n
Minimum configuration
- CPU: 1 vCPU (2 vCPU for AI agents)
- RAM: 1 GB (2 GB recommended)
- Storage: 20 GB SSD
- OS: Ubuntu 22.04 LTS
Recommended providers
| Provider | Plan | Price/month |
|---|---|---|
| Hetzner | CX21 (2 vCPU, 4 GB) | ~$7 |
| DigitalOcean | Basic 2 GB Droplet | ~$12 |
| Vultr | Cloud Compute | ~$10 |
Our recommendation: Hetzner CX21. Excellent performance/price ratio, GDPR-compliant datacenter, 99.9% SLA.
Step-by-Step Installation
1. VPS hardening
apt update && apt upgrade -y
adduser n8nadmin
usermod -aG sudo n8nadmin
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
ufw allow OpenSSH && ufw allow 80 && ufw allow 443 && ufw enable
2. Install Docker
curl -fsSL https://get.docker.com | sh
usermod -aG docker n8nadmin
systemctl enable docker
3. Deploy n8n
Follow our n8n Docker guide for the docker-compose.yml file and full HTTPS configuration.
4. Automatic monitoring
#!/bin/bash
STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://n8n.your-domain.com/healthz)
if [ "$STATUS" != "200" ]; then
cd ~/n8n && docker compose restart n8n
curl -X POST "https://hooks.slack.com/..." -d '{"text":"⚠️ n8n restarted"}'
fi
Cron: */5 * * * * /bin/bash ~/healthcheck-n8n.sh
n8n Self-Hosted vs Cloud: 2026 Verdict
Choose self-hosted if: >2,500 executions/month, sensitive data, technical team, controlled costs.
Choose cloud if: beginner, low volume, no infrastructure to manage.
Our BOVO Digital team can deploy and configure your n8n self-hosted instance with training included.
