How to Self-Host n8n with Docker: Complete Setup Guide
Looking to take control of your workflow automation while keeping your data secure and private? Setting up n8n self hosted is the perfect solution for developers and businesses who need powerful automation without relying on third-party cloud services. With Docker, the process becomes straightforward and manageable, even if you're not a DevOps expert.
In this comprehensive guide, I'll walk you through everything you need to know about self-hosting n8n using Docker, from initial setup to configuration best practices and troubleshooting common issues.

Table of Contents
- What is n8n?
- Benefits of Self-Hosting n8n
- Prerequisites
- Step-by-Step Installation Guide
- Configuration Options
- Security Best Practices
- Troubleshooting Common Issues
- FAQ
What is n8n?
n8n (pronounced "n-eight-n") is a workflow automation tool that connects apps, services, and APIs. Unlike many automation platforms, n8n self hosted gives you complete control over your data and workflows. It features a visual, node-based approach to creating automation flows that's both powerful and intuitive.
The platform supports hundreds of integrations out of the box, and you can extend it with custom nodes when needed. Whether you're automating business processes, creating data pipelines, or connecting various services, n8n provides the flexibility and control that cloud-based alternatives often lack.
Benefits of Self-Hosting n8n
Running n8n self hosted offers several advantages over cloud-based workflow automation tools:
- Data Privacy: Keep sensitive data within your infrastructure
- Customization: Full control over version, updates, and configuration
- Cost Efficiency: No per-user or per-workflow fees
- Performance: Optimize hardware allocation based on your specific needs
- Security: Implement your own security measures and compliance requirements
- No Internet Dependency: Run workflows even in air-gapped environments
These benefits make n8n self hosted particularly attractive for companies with strict data security requirements or those operating in regulated industries.
Prerequisites
Before proceeding with the n8n docker install, ensure you have:
- A server or computer running Linux, macOS, or Windows
- Docker installed and running
- Docker Compose (recommended for easier management)
- Basic command line knowledge
- At least 1GB of RAM available
- Open ports (default: 5678)
If you're planning to run n8n in a production environment, I recommend using a dedicated server with at least 2GB RAM and appropriate backup solutions in place.
Step-by-Step Installation Guide
Let's dive into the n8n docker install process:
1. Create a Docker Compose File
First, create a new directory for your n8n installation:
mkdir n8n
cd n8n
Create a docker-compose.yml file:
version: "3"
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_HOST=${N8N_HOST:-localhost}
- NODE_ENV=production
- N8N_ENCRYPTION_KEY=your-secret-key
volumes:
- ~/.n8n:/home/node/.n8n
2. Start n8n
Launch n8n with Docker Compose:
docker-compose up -d
That's it! Your n8n self hosted instance should now be running. Access it by opening http://localhost:5678 in your browser (or your server's IP/domain if running remotely).
Configuration Options
After the basic n8n self hosted setup, you can customize it further with these configuration options:
Database Setup
By default, n8n uses SQLite. For production, consider using PostgreSQL:
services:
n8n:
# Previous configuration...
environment:
# Previous environment variables...
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=postgres
- DB_POSTGRESDB_PASSWORD=your-password
depends_on:
- postgres
postgres:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=your-password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Enabling HTTPS
For production environments, secure your instance with HTTPS:
environment:
- N8N_PROTOCOL=https
- N8N_SSL_KEY=/data/certs/key.pem
- N8N_SSL_CERT=/data/certs/cert.pem
volumes:
- ./certs:/data/certs
Security Best Practices
When running n8n self hosted, implement these security measures:
- Enable authentication: Set
N8N_BASIC_AUTH_ACTIVE=truewith username and password - Use a strong encryption key: Change the default
N8N_ENCRYPTION_KEY - Run behind a reverse proxy: Consider using Nginx or Traefik with HTTPS
- Implement network isolation: Use Docker networks to limit access
- Regular updates: Keep your n8n instance updated with security patches
Remember that automation workflows often handle sensitive data, so proper security is essential for any n8n self hosted setup.
Troubleshooting Common Issues
Container Fails to Start
Check the logs with:
docker-compose logs n8n
Common issues include:
- Insufficient memory
- Port conflicts
- Permission problems with mounted volumes
Database Connection Errors
If using PostgreSQL and encountering database issues:
- Verify PostgreSQL is running:
docker-compose ps - Check connection settings in your docker-compose.yml
- Ensure database exists and user has proper permissions
Workflow Execution Problems
If workflows fail to execute properly:
- Check credentials for each node
- Verify network connectivity to external services
- Examine execution logs for specific errors
FAQ
What are the system requirements for self-hosting n8n?
For light usage, 1GB RAM and 1 CPU core are sufficient. For production environments with multiple workflows, I recommend at least 2GB RAM and 2 CPU cores. Storage needs depend on your workflow volume.
Is n8n free to self-host?
Yes, n8n is available under a fair-code distribution model. Self-hosting for personal and internal company use is free, while commercial use may require a license depending on your setup.
Can I migrate from cloud n8n to self-hosted?
Absolutely! You can export workflows from n8n cloud and import them into your n8n self hosted instance. Be sure to recreate any credentials securely.
How do I update my self-hosted n8n instance?
Pull the latest image and restart your container:
docker-compose pull
docker-compose up -d
Can I run n8n behind a reverse proxy?
Yes, n8n works well behind Nginx, Apache, or Traefik. This is recommended for production environments to handle SSL termination and additional security layers.
How do I back up my n8n data?
Back up the volume mapped to /home/node/.n8n and your database if using an external one. For PostgreSQL, use pg_dump to create database backups regularly.
Conclusion
Setting up n8n self hosted with Docker provides a powerful, flexible automation platform while maintaining complete control over your data and infrastructure. Whether you're a small team looking to automate workflows or an enterprise with strict data sovereignty requirements, self-hosting n8n offers the perfect balance of capability and control.
Ready to take your workflow automation to the next level? Start with the n8n self hosted setup outlined above, and you'll be building sophisticated automation workflows in no time. If you encounter any challenges during your setup, drop a comment below or check out the official n8n documentation for additional guidance.
Have you already implemented n8n self hosted in your organization? Share your experience and tips in the comments!





