Zum Inhalt

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

  1. Navigieren Sie zur n8n Schnittstelle (Standard: n8n.example.com_)
  2. Klicken Sie auf "Workflows" in der Seitenleiste
  3. Klicken Sie auf "Neuer Workflow erstellen"
  4. Geben Sie einen Namen für Ihren Workflow ein
  5. Klicken Sie auf "Save"

Hinzufügen und Verbinden von Nodes

  1. Klicken Sie auf die Schaltfläche "+" um einen Knoten hinzuzufügen
  2. Suche nach dem gewünschten Knotentyp
  3. Konfigurieren der Einstellungen des Knotens
  4. Verbindungsknoten durch Ziehen von dem Ausgangspunkt eines Knotens zum Eingangspunkt eines anderen Knotens
  5. 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. *