n8n Workflow Automation Cheat Sheet
Überblick
n8n ist eine leistungsstarke, Open-Source-Workflow-Automatisierungsplattform, die es Nutzern ermöglicht, verschiedene Systeme, Services und APIs zu verbinden, um automatisierte Workflows mit minimaler Codierung zu erstellen. Was n8n von anderen Automatisierungswerkzeugen unterscheidet, ist seine einzigartige Kombination aus Flexibilität, Erweiterbarkeit und KI-Fähigkeiten, die es sowohl für einfache Automatisierungen als auch für komplexe Unternehmensabläufe geeignet macht.
Als selbst-hostable Lösung gibt n8n den Nutzern vollständige Kontrolle über ihre Daten und Workflows, indem er sich mit Datenschutz- und Sicherheitsfragen befasst, die mit Cloud-only Lösungen kommen. Seine knotenbasierte visuelle Schnittstelle ermöglicht eine intuitive Workflow-Erstellung und bietet weiterhin die Tiefen- und Anpassungsmöglichkeiten, die technische Benutzer benötigen. Mit Unterstützung von JavaScript-Transformationen, bedingter Logik, Fehlerbehandlung und einer wachsenden Integrationsbibliothek hat sich n8n als Favorit bei Entwicklern und technischen Teams entwickelt, die Prozesse automatisieren wollen, ohne die Kontrolle oder Fähigkeiten zu gefährden.
In der KI-Ära hat sich n8n als Schlüsselinstrument für die Orchestrierung von KI-Workflows positioniert, mit integrierten Knoten für populäre KI-Dienste und der Fähigkeit, kundenspezifische Integrationen mit jedem API-accessible KI-Modell oder Service zu erstellen. Dies macht es zu einem unverzichtbaren Werkzeug für Organisationen, die KI in ihre Geschäftsprozesse integrieren möchten, während sie die Governance und Kontrolle beibehalten.
Installation und Inbetriebnahme
Selbstgepflegte Installation
```bash
Using npm
npm install n8n -g n8n start
Using Docker
docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n
Using Docker Compose
Create docker-compose.yml with:
version: '3'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
volumes:
- ~/.n8n:/home/node/.n8n
environment:
- N8N_ENCRYPTION_KEY=your-secret-key
- N8N_PROTOCOL=https
- N8N_HOST=n8n.example.com
docker-compose up -d ```_
Cloud Installation
n8n bietet eine Cloud-Version unter n8n.cloud mit verschiedenen Preisträgern, von frei nach Unternehmen.
Umweltkonfiguration
```bash
Basic configuration
export N8N_ENCRYPTION_KEY=your-secret-key export N8N_PROTOCOL=https export N8N_HOST=n8n.example.com export N8N_PORT=5678
Database configuration (PostgreSQL)
export DB_TYPE=postgresdb export DB_POSTGRESDB_HOST=postgres export DB_POSTGRESDB_PORT=5432 export DB_POSTGRESDB_DATABASE=n8n export DB_POSTGRESDB_USER=n8n export DB_POSTGRESDB_PASSWORD=password
Queue configuration (Redis)
export QUEUE_BULL_REDIS_HOST=redis export QUEUE_BULL_REDIS_PORT=6379
Authentication
export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_PASSWORD=password ```_
Kernkonzepte
Arbeitsabläufe
Workflows sind die wichtigsten Bausteine in n8n. Sie bestehen aus Knoten, die miteinander verbunden sind, um einen Prozessfluss zu definieren.
Nodes
Nodes repräsentieren Aktionen, Trigger oder Operationen in einem Workflow. Jeder Knoten hat spezifische Funktionalitäten, wie das Senden einer E-Mail, das Abfragen einer Datenbank oder die Verarbeitung von Daten.
Verbindungen
Verbindungen verbinden Knoten miteinander und definieren den Datenfluss von einem Knoten zu einem anderen.
Auslöser
Trigger sind spezielle Knoten, die eine Workflow-Ausführung, wie Webhooks, Zeitplan oder Ereignisse von externen Systemen starten.
Durchführung
Ausführungsbeispiele eines Arbeitsablaufs werden manuell oder automatisch ausgelöst.
Grundlagen der Workflow-Erstellung
Einen neuen Workflow erstellen
- Navigieren Sie zur n8n Schnittstelle (Standard:
n8n.example.com
_) - Klicken Sie auf "Workflows" in der Seitenleiste
- Klicken Sie auf "Neuer Workflow erstellen"
- Geben Sie einen Namen für Ihren Workflow ein
- Klicken Sie auf "Save"
Hinzufügen und Verbinden von Nodes
- Klicken Sie auf die Schaltfläche "+" um einen Knoten hinzuzufügen
- Suche nach dem gewünschten Knotentyp
- Konfigurieren der Einstellungen des Knotens
- Verbindungsknoten durch Ziehen von dem Ausgangspunkt eines Knotens zum Eingangspunkt eines anderen Knotens
- Klicken Sie auf "Execute Workflow" um zu testen
Basic Workflow Beispiel
```javascript // HTTP Request Node Configuration \\{ "url": "https://api.example.com/data", "method": "GET", "authentication": "Basic Auth", "username": "user", "password": "pass" \\}
// Function Node to Transform Data function transform(items) \\{ return items.map(item => \\{ return \\{ id: item.json.id, name: item.json.name.toUpperCase(), created: new Date(item.json.created_at).toISOString() \\}; \\}); \\}
// Send Email Node Configuration \\{ "to": "recipient@example.com", "subject": "Data Report", "text": "=== Please find the data report attached ===", "attachments": "=\\{\\{ $json.report \\}\\}" \\} ```_
Trigger und Scheduling
Webhook Trigger
```javascript // Webhook Node Configuration \\{ "path": "incoming-data", "responseMode": "onReceived", "responseData": "firstEntryJson" \\}
// Access in browser or via curl // https://n8n.example.com/webhook/incoming-data // curl -X POST -H "Content-Type: application/json" -d '\\{"data":"test"\\}' https://n8n.example.com/webhook/incoming-data ```_
Auslöser für den Auslöser
```javascript // Cron Node Configuration \\{ "triggerTimes": \\{ "item": [ \\{ "mode": "everyWeek", "hour": 9, "minute": 0, "dayOfWeek": 1 // Monday \\} ] \\} \\}
// Every 5 minutes \\{ "triggerTimes": \\{ "item": [ \\{ "mode": "everyX", "unit": "minutes", "value": 5 \\} ] \\} \\} ```_
Trigger auf Dateiänderungen
javascript
// Watch Files Node Configuration
\\\\{
"folder": "/data/incoming",
"includeSubfolders": true,
"fileExtensions": [
"csv",
"xlsx"
]
\\\\}
_
Datenverarbeitung
Funktion Node
``javascript
// Basic transformation
function transform(items) \\\\{
return items.map(item => \\\\{
return \\\\{
...item.json,
fullName:
$\{item.json.firstName\} $\{item.json.lastName\}`,
age: calculateAge(item.json.birthDate)
\\};
\\});
\\}
function calculateAge(birthDate) \\{ const today = new Date(); const birth = new Date(birthDate); let age = today.getFullYear() - birth.getFullYear(); const monthDiff = today.getMonth() - birth.getMonth();
| if (monthDiff < 0 | | (monthDiff === 0 && today.getDate() < birth.getDate())) \\{ | age--; \\}
return age; \\}
// Filtering data function filter(items) \\{ return items.filter(item => \\{ return item.json.status === 'active' && item.json.age > 18; \\}); \\}
// Aggregating data function aggregate(items) \\{ const result = \\{ count: items.length, sum: 0, average: 0, min: Infinity, max: -Infinity \\};
items.forEach(item => \\{ const value = item.json.amount; result.sum += value; result.min = Math.min(result.min, value); result.max = Math.max(result.max, value); \\});
result.average = result.sum / result.count;
return [\\{ json: result \\}]; \\} ```_
Split in Batches Node
javascript
// Split In Batches Node Configuration
\\\\{
"batchSize": 10,
"options": \\\\{
"includeBatchIndex": true
\\\\}
\\\\}
_
Merge Node
```javascript // Merge Node Configuration \\{ "mode": "merge", "mergeByFields": \\{ "values": [ \\{ "field1": "id", "field2": "userId" \\} ] \\} \\}
// Concatenate mode \\{ "mode": "concatenate" \\}
// Multiplex mode (combine all items from all inputs) \\{ "mode": "multiplex" \\} ```_
Fehlerbehandlung und Durchflusskontrolle
Fehlerbehebung
```javascript // Error Trigger Node // This node triggers when another workflow fails
// Error Workflow Example // 1. Error Trigger Node // 2. Send Email Node with error details \\{ "to": "admin@example.com", "subject": "Workflow Error: \\{\\{ $workflow.name \\}\\}", "text": "Error in workflow: \\{\\{ $workflow.name \\}\\}\n\nError: \\{\\{ $json.error \\}\\}\n\nExecution ID: \\{\\{ $execution.id \\}\\}" \\} ```_
IF Node
```javascript // IF Node Configuration \\{ "conditions": \\{ "string": [ \\{ "value1": "=\\{\\{ $json.status \\}\\}", "operation": "equal", "value2": "success" \\} ] \\} \\}
// Multiple conditions with AND/OR \\{ "conditions": \\{ "string": [ \\{ "value1": "=\\{\\{ $json.status \\}\\}", "operation": "equal", "value2": "pending" \\} ], "number": [ \\{ "value1": "=\\{\\{ $json.amount \\}\\}", "operation": "larger", "value2": 1000 \\} ], "boolean": [ \\{ "value1": "=\\{\\{ $json.isVIP \\}\\}", "operation": "equal", "value2": true \\} ], "combinationMode": "any" // "all" for AND, "any" for OR \\} \\} ```_
Schalter-Node
javascript
// Switch Node Configuration
\\\\{
"rules": \\\\{
"values": [
\\\\{
"conditions": \\\\{
"string": [
\\\\{
"value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}",
"operation": "equal",
"value2": "new"
\\\\}
]
\\\\},
"outputIndex": 0
\\\\},
\\\\{
"conditions": \\\\{
"string": [
\\\\{
"value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}",
"operation": "equal",
"value2": "processing"
\\\\}
]
\\\\},
"outputIndex": 1
\\\\},
\\\\{
"conditions": \\\\{
"string": [
\\\\{
"value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}",
"operation": "equal",
"value2": "completed"
\\\\}
]
\\\\},
"outputIndex": 2
\\\\}
]
\\\\},
"fallbackOutput": 3
\\\\}
_
Warten Sie.
```javascript // Wait Node Configuration \\{ "amount": 5, "unit": "minutes" \\}
// Wait until specific date \\{ "dateTime": "=\\{\\{ new Date($json.scheduledTime).toISOString() \\}\\}" \\} ```_
Arbeiten mit APIs
HTTP Request Node
```javascript // Basic GET request \\{ "url": "https://api.example.com/users", "method": "GET", "authentication": "None", "options": \\{\\} \\}
// POST request with JSON body \\{ "url": "https://api.example.com/users", "method": "POST", "authentication": "Bearer Token", "token": "\\{\\{ $node['Get Token'].json.access_token \\}\\}", "bodyContentType": "json", "body": \\{ "name": "\\{\\{ $json.name \\}\\}", "email": "\\{\\{ $json.email \\}\\}", "role": "user" \\}, "options": \\{ "redirect": \\{ "follow": true, "maxRedirects": 5 \\}, "timeout": 10000 \\} \\}
// Handling pagination \\{ "url": "https://api.example.com/users", "method": "GET", "authentication": "None", "options": \\{ "qs": \\{ | "page": "=\\{\\{ $parameter.page | | 1 \\}\\}", | "limit": 100 \\} \\} \\} ```_
OAuthentication
javascript
// OAuth2 Configuration
\\\\{
"authentication": "OAuth2",
"oAuth2Api": "custom",
"authUrl": "https://auth.example.com/oauth/authorize",
"accessTokenUrl": "https://auth.example.com/oauth/token",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"scope": "read write",
"authQueryParameters": "",
"authentication": "body"
\\\\}
_
Webhook Antwort Node
javascript
// Webhook Response Node Configuration
\\\\{
"respondWith": "json",
"responseBody": "=\\\\{\\\\{ \\\\{ success: true, data: $json.processedData \\\\} \\\\}\\\\}",
"options": \\\\{
"responseCode": 200,
"responseHeaders": \\\\{
"X-Powered-By": "n8n"
\\\\}
\\\\}
\\\\}
_
Datenbanken
Postgres Node
```javascript // Query execution \\{ "operation": "executeQuery", "query": "SELECT * FROM users WHERE status = $1 AND created_at > $2", "values": [ "=\\{\\{ $json.status \\}\\}", "=\\{\\{ $json.date \\}\\}" ] \\}
// Insert operation \\{ "operation": "insert", "table": "users", "columns": "firstName,lastName,email,createdAt", "values": [ "=\\{\\{ $json.first_name \\}\\}", "=\\{\\{ $json.last_name \\}\\}", "=\\{\\{ $json.email \\}\\}", "=\\{\\{ new Date().toISOString() \\}\\}" ] \\}
// Update operation \\{ "operation": "update", "table": "users", "updateKey": "id", "columns": "status,updatedAt", "values": [ "active", "=\\{\\{ new Date().toISOString() \\}\\}" ] \\} ```_
MongoDB Node
```javascript // Find documents \\{ "operation": "find", "collection": "users", "options": \\{ "limit": 100, "sort": \\{ "createdAt": -1 \\} \\}, "query": "=\\{\\{ \\{ status: $json.status \\} \\}\\}" \\}
// Insert document \\{ "operation": "insertOne", "collection": "logs", "document": "=\\{\\{ \\{ action: $json.action, userId: $json.userId, timestamp: new Date(), details: $json.details \\} \\}\\}" \\}
// Update document \\{ "operation": "updateOne", "collection": "users", "filter": "=\\{\\{ \\{ id: $json.userId \\} \\}\\}", "update": "=\\{\\{ \\{ $set: \\{ status: $json.newStatus, updatedAt: new Date() \\} \\} \\}\\}", "options": \\{ "upsert": false \\} \\} ```
Dateioperationen
Binary Files Node lesen
```javascript // Read Binary Files Node Configuration \\{ "filePath": "/data/reports/latest.pdf" \\}
// Read multiple files with pattern \\{ "filePath": "/data/reports/*.csv" \\} ```_
Binary File Node schreiben
javascript
// Write Binary File Node Configuration
\\\\{
"filePath": "=\\\\{\\\\{ '/data/processed/' + $json.filename \\\\}\\\\}",
"fileName": "=\\\\{\\\\{ $json.filename \\\\}\\\\}",
"binaryPropertyName": "data",
"options": \\\\{
"encoding": "utf8",
"createParentPath": true
\\\\}
\\\\}
_
CSV Node
```javascript // Parse CSV \\{ "operation": "parse", "options": \\{ "headerRow": true, "delimiter": ",", "includeEmptyLines": false, "skipLines": 0 \\} \\}
// Create CSV \\{ "operation": "create", "options": \\{ "headerRow": true, "delimiter": ",", "includeEmptyLines": false \\} \\} ```_
Integration in die Praxis
OpenAI Node
```javascript // Text completion \\{ "authentication": "apiKey", "apiKey": "\\{\\{ $node['Credentials'].json.openai_api_key \\}\\}", "operation": "completion", "model": "gpt-4", "options": \\{ "prompt": "=\\{\\{ 'Summarize the following text in 3 bullet points:\n\n' + $json.text \\}\\}", "maxTokens": 500, "temperature": 0.7, "topP": 1, "presencePenalty": 0, "frequencyPenalty": 0, "stop": [] \\} \\}
// Chat completion \\{ "authentication": "apiKey", "apiKey": "\\{\\{ $node['Credentials'].json.openai_api_key \\}\\}", "operation": "chatCompletion", "messages": "=\\{\\{ [ \\{ role: 'system', content: 'You are a helpful assistant.' \\}, \\{ role: 'user', content: $json.userMessage \\} ] \\}\\}", "model": "gpt-4", "options": \\{ "temperature": 0.7, "maxTokens": 1000 \\} \\} ```_
Anthropische Node
javascript
// Claude message
\\\\{
"authentication": "apiKey",
"apiKey": "\\\\{\\\\{ $node['Credentials'].json.anthropic_api_key \\\\}\\\\}",
"operation": "message",
"model": "claude-3-opus-20240229",
"messages": "=\\\\{\\\\{ [
\\\\{ role: 'user', content: $json.userMessage \\\\}
] \\\\}\\\\}",
"options": \\\\{
"temperature": 0.7,
"maxTokens": 1000
\\\\}
\\\\}
_
KI Dokumentenverarbeitung
javascript
// Document processing workflow
// 1. Read Binary Files Node (PDF)
// 2. PDF Extract Node
\\\\{
"operation": "extractText"
\\\\}
// 3. Text Splitter Node
\\\\{
"operation": "splitByCharacter",
"options": \\\\{
"chunkSize": 1000,
"chunkOverlap": 200
\\\\}
\\\\}
// 4. OpenAI Node (for each chunk)
\\\\{
"operation": "chatCompletion",
"messages": "=\\\\{\\\\{ [
\\\\{ role: 'system', content: 'Extract key information from this document chunk.' \\\\},
\\\\{ role: 'user', content: $json.text \\\\}
] \\\\}\\\\}",
"model": "gpt-4",
"options": \\\\{
"temperature": 0.3
\\\\}
\\\\}
// 5. Merge Node (combine all extracted information)
// 6. OpenAI Node (final summary)
\\\\{
"operation": "chatCompletion",
"messages": "=\\\\{\\\\{ [
\\\\{ role: 'system', content: 'Create a comprehensive summary of this document based on the extracted information.' \\\\},
\\\\{ role: 'user', content: $json.extractedInfo \\\\}
] \\\\}\\\\}",
"model": "gpt-4",
"options": \\\\{
"temperature": 0.5
\\\\}
\\\\}
_
Erweiterte Funktionen
Unterarbeiten
```javascript // Execute Workflow Node Configuration \\{ "workflowId": 123, "options": \\{ "waitForResponse": true \\} \\}
// Passing data to subworkflow \\{ "workflowId": 123, "options": \\{ "waitForResponse": true \\}, "parameters": "=\\{\\{ \\{ userId: $json.id, action: 'process', data: $json.payload \\} \\}\\}" \\} ```_
Erstellungsmanagement
javascript
// Access credentials in HTTP Request Node
\\\\{
"url": "https://api.example.com/data",
"method": "GET",
"authentication": "Basic Auth",
"username": "=\\\\{\\\\{ $credentials.username \\\\}\\\\}",
"password": "=\\\\{\\\\{ $credentials.password \\\\}\\\\}"
\\\\}
_
Webhook Authentication
```javascript // Webhook Node with Basic Auth \\{ "path": "secure-endpoint", "authentication": \\{ "basicAuth": \\{ "user": "admin", "password": "secret" \\} \\}, "responseMode": "onReceived", "responseData": "firstEntryJson" \\}
// Webhook Node with Custom Auth (Header) \\{ "path": "api-endpoint", "httpMethod": "POST", "authentication": \\{ "customAuth": \\{ "checkOn": "header", "name": "X-API-KEY", "value": "your-secret-api-key" \\} \\}, "responseMode": "lastNode", "responseData": "firstEntryJson" \\} ```_
Grenzwerte
javascript
// Limit Node Configuration
\\\\{
"maxConcurrency": 5,
"options": \\\\{
"batchSize": 10,
"batchInterval": 1000
\\\\}
\\\\}
_
Workflow Variablen
```javascript // Set Variable Node \\{ "variableName": "totalAmount", "value": "=\\{\\{ $json.amount \\}\\}" \\}
// Get Variable Node \\{ "variableName": "totalAmount" \\}
// Using variables in expressions "=\\{\\{ $vars.totalAmount * 1.1 \\}\\}" // Add 10% tax ```_
Bereitstellung und Produktion
Umweltvariablen
```bash
Set environment variables for production
export N8N_ENCRYPTION_KEY=your-production-key export N8N_PROTOCOL=https export N8N_HOST=n8n.yourdomain.com export N8N_PORT=5678 export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_PASSWORD=secure-password
Database configuration
export DB_TYPE=postgresdb export DB_POSTGRESDB_HOST=production-db.yourdomain.com export DB_POSTGRESDB_PORT=5432 export DB_POSTGRESDB_DATABASE=n8n_prod export DB_POSTGRESDB_USER=n8n_user export DB_POSTGRESDB_PASSWORD=db-password
Queue configuration
export QUEUE_BULL_REDIS_HOST=redis.yourdomain.com export QUEUE_BULL_REDIS_PORT=6379 ```_
Docker komponiert für Produktion
```yaml version: '3.8'
services: n8n: image: n8nio/n8n:latest restart: always ports: - "5678:5678" environment: - N8N_ENCRYPTION_KEY=$\\{N8N_ENCRYPTION_KEY\\} - N8N_PROTOCOL=https - N8N_HOST=$\\{N8N_HOST\\} - N8N_PORT=5678 - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=$\\{N8N_BASIC_AUTH_USER\\} - N8N_BASIC_AUTH_PASSWORD=$\\{N8N_BASIC_AUTH_PASSWORD\\} - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=$\\{DB_USER\\} - DB_POSTGRESDB_PASSWORD=$\\{DB_PASSWORD\\} - QUEUE_BULL_REDIS_HOST=redis - QUEUE_BULL_REDIS_PORT=6379 - EXECUTIONS_PROCESS=main - EXECUTIONS_MODE=queue - GENERIC_TIMEZONE=UTC volumes: - n8n_data:/home/node/.n8n depends_on: - postgres - redis
postgres: image: postgres:14 restart: always environment: - POSTGRES_DB=n8n - POSTGRES_USER=$\\{DB_USER\\} - POSTGRES_PASSWORD=$\\{DB_PASSWORD\\} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $\\{DB_USER\\} -d n8n"] interval: 10s timeout: 5s retries: 5
redis: image: redis:7-alpine restart: always volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5
volumes: n8n_data: postgres_data: redis_data: ```_
Skalierung mit mehreren Arbeitern
```bash
Main process (API, UI, Webhook)
export EXECUTIONS_PROCESS=main export EXECUTIONS_MODE=queue
Worker processes (execute workflows)
export EXECUTIONS_PROCESS=worker export EXECUTIONS_MODE=queue ```_
Backup und Wiederherstellung
```bash
Export workflows
n8n export:workflow --all --output=workflows-backup.json
Import workflows
n8n import:workflow --input=workflows-backup.json
Backup credentials (encrypted)
n8n export:credentials --all --output=credentials-backup.json
Import credentials
n8n import:credentials --input=credentials-backup.json --separate ```_
Best Practices
Workflow Organisation
- Vereinbarung: Verwenden Sie klare, beschreibende Namen für Workflows und Nodes
- ** Aussprache**: Beschreibungen zu Workflows und komplexen Knoten hinzufügen
- ** Modularisierung**: Komplexe Prozesse in Subworkflows brechen
- *Tags: Verwenden Sie Tags, um Workflows zu kategorisieren und zu organisieren
- Version Control: Wichtige Workflows regelmäßig exportieren
Leistungsoptimierung
- *Batch Processing: Verwenden Sie Split In Batches für große Datensätze
- Pagination: Implementieren Sie richtige Pagination für API-Anrufe
- Caching: Verwenden Sie Set/Get Variable Nodes, um wiederholte Daten zu speichern
- *Limit Concurrency: Verwenden Sie Limit-Knoten, um überwältigende externe Dienste zu verhindern
- Datenbankeffizienz: Schreibe effiziente Abfragen und nutze Indizes
Fehlerbehebung
- *Error Workflows: Dedizierte Fehlerbehandlungs-Workflows erstellen
- *Retry Mechanisms: Implementierung von Retry-Logik für transiente Fehler
- Validation: Validierung der Daten vor der Verarbeitung
- Logging: Wichtige Ereignisse und Fehler melden
- *Anmerkungen: Alarme für kritische Fehler einrichten
Sicherheit
- ** Angaben*: Verwenden Sie das eingebaute Anmeldesystem anstelle der Hardcoding
- ** Umgebungsvariablen*: Speichern Sie sensible Informationen in Umgebungsvariablen
- *Authentication: Secure Webhook Endpunkte mit Authentifizierung
- Access Control: Implementieren von richtigen Benutzerberechtigungen
- *Audit Logs: Workflow-Ausführungen und Änderungen überwachen
Fehlerbehebung
Gemeinsame Themen
Workflow nicht auslösen
- Cause: Falsche Trigger-Konfiguration, Webhook-URL nicht zugänglich oder Terminierungsprobleme
- Solution: Triggereinstellungen überprüfen, Webhook-Zugangsmöglichkeit überprüfen und Zeitzoneneinstellungen bestätigen
Keine Ausführunfälle
- ** Ursache**: Invalides Datenformat, fehlende benötigte Felder oder API-Ratengrenzen
- Solution: Verwenden Sie Funktionsknoten, um Daten zu validieren und zu transformieren, die Fehlerbehandlung durchzuführen und die Geschwindigkeitsbegrenzung hinzuzufügen
Leistungsfragen
- ** Ursache**: Verarbeitung großer Datensätze, ineffiziente Abfragen oder Ressourcenzwänge
- Lösung: Implementieren Sie die Batch-Verarbeitung, optimieren Sie die Datenbankabfragen und skalieren Sie n8n-Bereitstellung
Authentifizierungsfehler
- Cause: Befristete Anmeldeinformationen, falsche API-Schlüssel oder OAuth-Token-Probleme
- Lösung: Aktualisieren Sie Anmeldeinformationen, überprüfen Sie API-Schlüsselrechte und aktualisieren Sie OAuth-Tokens
--
*Diese umfassende n8n-Cheatsheet bietet alles, was nötig ist, um anspruchsvolle Workflow-Automatisierungen aufzubauen. Von grundlegender Einrichtung bis hin zu fortschrittlichen Produktions-Bereitstellungsmustern, verwenden Sie diese Beispiele und Best Practices, um leistungsstarke, flexible Automatisierungs-Workflows mit n8n vielseitiger Plattform zu erstellen. *