mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 20:42:58 +00:00
small fix, don't worry about it
This commit is contained in:
@@ -0,0 +1,262 @@
|
||||
# n8n Workflow Automation Template
|
||||
|
||||
## Overview
|
||||
n8n is a fair-code licensed tool that helps you automate tasks, workflows, and processes without the need for writing code.
|
||||
|
||||
## Quick Start
|
||||
```bash
|
||||
# Create docker-compose.yml with the content below
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Docker Compose
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
volumes:
|
||||
db_storage:
|
||||
n8n_storage:
|
||||
redis_storage:
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16
|
||||
container_name: n8n-postgres
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=n8n
|
||||
- POSTGRES_USER=n8n
|
||||
- POSTGRES_PASSWORD=n8n
|
||||
- POSTGRES_NON_ROOT_USER=n8n
|
||||
- POSTGRES_NON_ROOT_PASSWORD=n8n
|
||||
volumes:
|
||||
- db_storage:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- n8n-network
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: n8n-redis
|
||||
restart: always
|
||||
volumes:
|
||||
- redis_storage:/data
|
||||
healthcheck:
|
||||
test: ['CMD', 'redis-cli', 'ping']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- n8n-network
|
||||
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n:latest
|
||||
container_name: n8n
|
||||
restart: always
|
||||
ports:
|
||||
- "5678:5678"
|
||||
environment:
|
||||
- DB_TYPE=postgresdb
|
||||
- DB_POSTGRESDB_HOST=postgres
|
||||
- DB_POSTGRESDB_PORT=5432
|
||||
- DB_POSTGRESDB_DATABASE=n8n
|
||||
- DB_POSTGRESDB_USER=n8n
|
||||
- DB_POSTGRESDB_PASSWORD=n8n
|
||||
- EXECUTIONS_MODE=queue
|
||||
- QUEUE_BULL_REDIS_HOST=redis
|
||||
- QUEUE_HEALTH_CHECK_ACTIVE=true
|
||||
- N8N_ENCRYPTION_KEY=your-encryption-key-here
|
||||
- N8N_BASIC_AUTH_ACTIVE=true
|
||||
- N8N_BASIC_AUTH_USER=admin
|
||||
- N8N_BASIC_AUTH_PASSWORD=your-secure-password
|
||||
- WEBHOOK_URL=http://your-domain.com:5678/
|
||||
volumes:
|
||||
- n8n_storage:/home/node/.n8n
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- n8n-network
|
||||
|
||||
n8n-worker:
|
||||
image: docker.n8n.io/n8nio/n8n:latest
|
||||
container_name: n8n-worker
|
||||
restart: always
|
||||
environment:
|
||||
- DB_TYPE=postgresdb
|
||||
- DB_POSTGRESDB_HOST=postgres
|
||||
- DB_POSTGRESDB_PORT=5432
|
||||
- DB_POSTGRESDB_DATABASE=n8n
|
||||
- DB_POSTGRESDB_USER=n8n
|
||||
- DB_POSTGRESDB_PASSWORD=n8n
|
||||
- EXECUTIONS_MODE=queue
|
||||
- QUEUE_BULL_REDIS_HOST=redis
|
||||
- QUEUE_HEALTH_CHECK_ACTIVE=true
|
||||
- N8N_ENCRYPTION_KEY=your-encryption-key-here
|
||||
volumes:
|
||||
- n8n_storage:/home/node/.n8n
|
||||
command: worker
|
||||
depends_on:
|
||||
- n8n
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- n8n-network
|
||||
|
||||
networks:
|
||||
n8n-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
- `DB_TYPE=postgresdb`: Use PostgreSQL database
|
||||
- `DB_POSTGRESDB_*`: PostgreSQL connection settings
|
||||
- `EXECUTIONS_MODE=queue`: Use queue mode for better performance
|
||||
- `QUEUE_BULL_REDIS_HOST=redis`: Redis host for queue
|
||||
- `N8N_ENCRYPTION_KEY`: Encryption key for sensitive data
|
||||
- `N8N_BASIC_AUTH_*`: Basic authentication settings
|
||||
- `WEBHOOK_URL`: URL for webhook workflows
|
||||
|
||||
## Setup Guide
|
||||
1. **Generate Encryption Key**:
|
||||
```bash
|
||||
openssl rand -base64 32
|
||||
```
|
||||
|
||||
2. **Generate Secure Password**:
|
||||
```bash
|
||||
openssl rand -base64 16
|
||||
```
|
||||
|
||||
3. **Deploy**:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. **Access**: Open http://localhost:5678
|
||||
|
||||
5. **Initial Setup**:
|
||||
- Login with basic auth credentials
|
||||
- Create first workflow
|
||||
- Configure integrations
|
||||
|
||||
## Workflow Examples
|
||||
```yaml
|
||||
# Example: Email Notification Workflow
|
||||
# Trigger: Webhook
|
||||
# Action: Send Email
|
||||
# Schedule: Every hour
|
||||
|
||||
# Example: Data Sync
|
||||
# Trigger: Schedule (daily)
|
||||
# Action: Google Sheets → Database
|
||||
# Error Handling: Retry on failure
|
||||
|
||||
# Example: Social Media Post
|
||||
# Trigger: Manual
|
||||
# Action: Create content → Post to Twitter
|
||||
# Conditions: Business hours only
|
||||
```
|
||||
|
||||
## Popular Integrations
|
||||
- **Communication**: Slack, Discord, Telegram
|
||||
- **Storage**: Google Drive, Dropbox, OneDrive
|
||||
- **Databases**: PostgreSQL, MySQL, MongoDB
|
||||
- **CRM**: Salesforce, HubSpot
|
||||
- **Social**: Twitter, LinkedIn, Facebook
|
||||
- **Productivity**: Notion, Trello, Asana
|
||||
|
||||
## Reverse Proxy (Traefik)
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
|
||||
- "traefik.http.routers.n8n.tls=true"
|
||||
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
|
||||
```
|
||||
|
||||
## Custom Nodes
|
||||
```yaml
|
||||
# Mount custom nodes directory
|
||||
volumes:
|
||||
- ./n8n-custom:/home/node/.n8n/custom
|
||||
|
||||
# Install custom nodes
|
||||
docker exec n8n npm install n8n-nodes-your-custom-node
|
||||
```
|
||||
|
||||
## Backup Strategy
|
||||
```bash
|
||||
# Backup n8n data
|
||||
docker run --rm -v n8n-data:/data -v $(pwd):/backup alpine tar czf /backup/n8n-data.tar.gz -C /data .
|
||||
|
||||
# Backup database
|
||||
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-backup.sql
|
||||
|
||||
# Restore database
|
||||
docker exec -i n8n-postgres psql -U n8n n8n < n8n-db-backup.sql
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
```yaml
|
||||
# For high-volume workflows
|
||||
environment:
|
||||
- N8N_EXECUTIONS_DATA_PRUNE=true
|
||||
- N8N_EXECUTIONS_DATA_MAX_AGE=168 # 7 days
|
||||
- N8N_QUEUE_BULL_REDIS_HOST=redis
|
||||
- N8N_QUEUE_BULL_REDIS_PORT=6379
|
||||
|
||||
# Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
cpus: '1.5'
|
||||
```
|
||||
|
||||
## Security
|
||||
- Use strong passwords
|
||||
- Enable HTTPS
|
||||
- Regular updates
|
||||
- Network access control
|
||||
- Audit workflow executions
|
||||
|
||||
## Monitoring
|
||||
```bash
|
||||
# Check execution logs
|
||||
docker-compose logs -f n8n
|
||||
|
||||
# Monitor Redis queue
|
||||
docker exec n8n-redis redis-cli info
|
||||
|
||||
# Database status
|
||||
docker exec n8n-postgres psql -U n8n -c "SELECT count(*) FROM workflow_entity;"
|
||||
```
|
||||
|
||||
## Scaling
|
||||
```yaml
|
||||
# Worker nodes for execution
|
||||
n8n-worker:
|
||||
image: docker.n8n.io/n8nio/n8n:latest
|
||||
environment:
|
||||
- N8N_QUEUE_BULL_REDIS_HOST=redis
|
||||
depends_on:
|
||||
- redis
|
||||
networks:
|
||||
- n8n-network
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
- **Workflow failures**: Check execution logs
|
||||
- **Memory issues**: Increase memory limits
|
||||
- **Database errors**: Verify PostgreSQL connection
|
||||
- **SMTP problems**: Test email configuration
|
||||
Reference in New Issue
Block a user