n8n VPS Deployment Checklist
n8n can run well on a VPS, but it needs a stable foundation: Docker, persistent data, domain, SSL, environment variables, backup, logs and basic access protection. This checklist helps you deploy n8n in a way that is easier to maintain.
What this checklist covers
- Docker deployment
- Persistent volume
- Domain and SSL
- Environment variables
- Reverse proxy
- Backup
- Monitoring
Checklist
- Choose a VPS with enough RAM and CPU for your workflows.
- Install Docker and Docker Compose.
- Create a docker-compose.yml file.
- Use a persistent volume for n8n data.
- Set environment variables clearly.
- Put n8n behind Nginx or another reverse proxy.
- Use HTTPS for the n8n domain.
- Protect the dashboard with strong credentials.
- Back up n8n data and compose files.
- Check logs after deployment.
- Monitor disk, RAM and workflow errors.
Final check
n8n is ready for serious automation only when data persists after restart, HTTPS works, credentials are protected and you have a restore path.
When to Use This Checklist
Use this checklist when deploying n8n on a VPS for AI Automation, marketing automation, webhook workflows or internal operations.
Required Tools
SSH access, Docker, Docker Compose, domain or subdomain, Nginx, SSL, backup storage, n8n credentials
Before You Start
Prepare the subdomain, environment variables and backup location before starting the deployment.
Structured Checklist Steps
- Choose VPS resources.
- Install Docker.
- Install Docker Compose.
- Create compose file.
- Configure persistent volume.
- Set environment variables.
- Configure reverse proxy.
- Install SSL.
- Protect dashboard login.
- Back up n8n data.
- Check logs and monitoring.
Verification Steps
- n8n opens through HTTPS.
- Login works.
- Container restarts successfully.
- Workflow data persists.
- Backup files exist.
Rollback Plan
If deployment fails, stop the n8n container, restore the previous compose file and check logs before changing environment variables again.
Common Mistakes
- Running n8n without persistent volume.
- Using HTTP for webhooks.
- Exposing internal ports unnecessarily.
- No backup of workflows.
- Forgetting to check container logs.
Related Commands
docker compose up -d
docker ps
docker logs n8n
docker compose down
sudo nginx -t
sudo systemctl reload nginx