Immer mehr Onlinedienste bieten APIs und sind über diese aus der Ferne steuerbar. Wer in die eigene Webapplikation Schnittstellen für sämtliche genutzten Dienste einbauen will, sieht sich aber einer Mammutaufgabe gegenüber. Die Plattform n8n will dieses Problem lösen. Dazu integriert sie verschiedene Schnittstellen des Web 2.0 ineinander und hilft beim Erstellen von Workflows. Wie das in der Praxis funktioniert, zeigt unser Workshop.
Sinnvolle Innovation ist vor allem an einem Punkt zu erkennen: Sobald sie zur Verfügung steht, übernehmen Menschen sie, nutzen sie aktiv und treiben ihre Entwicklung voran. Das Web 2.0 ist dafür ein hervorragendes Beispiel. Heute ist es völlig selbstverständlich, Dienste im digitalen Universum aktiv zu nutzen, statt nur statische Websites aufzurufen. Die Cloud hat diesen Trend beschleunigt und teilweise geprägt. Weil immer häufiger Daten in beide Richtungen fließen, hat die Architektur von Onlinediensten sich grundlegend verändert. Fast jede moderne Webapplikation kommt mit einer eigenen API daher, über die sie aus der Ferne zu steuern ist. Hier spielt auch die Tatsache eine Rolle, dass Firmen ihre Services immer häufiger in den großen Clouds betreiben statt mit lokaler Anbindung und lokalen Assets.
Der Boom der steuerbaren Onlinedienste hat gerade für Anwender viele praktische Vorteile. Denn über die definierten APIs lassen sich verschiedene Dienste relativ unkompliziert miteinander verbinden. Wenn Sie etwa bei einem Onlineshop etwas bestellen, und in dessen Versandabteilung geht Ihr Paket auf Reisen, kann die Lagerverwaltung des Händlers mit den Onlinediensten von DHL & Co. sprechen und Sie über den Versand samt Tracking-Link informieren. Aus Sicht von Entwicklern ergibt sich hinsichtlich dieser Art von Workflow allerdings ein Problem. Denn wer viele verschiedene Workflows definieren möchte, die verschiedene Dienste wie die genannten nutzen, müsste in seiner eigenen Webapplikation theoretisch für jede zu nutzende Schnittstelle die entsprechende Integration selbst entwickeln. Das ist praktisch kaum zu meistern.
Hier kommen die so genannten iPaaS-Angebote ins Spiel. Die Abkürzung steht für "Integration-Platform-as-a-Service" und beschreibt Plattformen, die den nötigen Code für die Einbindung etlicher externer Onlinedienste bereits mitbringen. Ein gutes Beispiel für Software dieser Art ist n8n. Das aus Berlin stammende Produkt brüstet sich damit, über 200 externe Dienste ansprechen zu können und fertige Templates für ebenso viele Einsatzzwecke zu haben. Und nicht nur das: Von besonderer Relevanz ist bei n8n auch dessen grafische Oberfläche. Die ist ein Flow-Editor, in dem der Entwickler sich seine gewünschten Abläufe per Drag-and-Drop in Windeseile zusammenklickt. Für die meisten Nodes im Flow, die auf externe Dienste zugreifen, sind damit praktisch nur noch die Benutzerdaten anzugeben. Um den Rest der gesamten Integration kümmert n8n sich dann komplett automatisch.
Sinnvolle Innovation ist vor allem an einem Punkt zu erkennen: Sobald sie zur Verfügung steht, übernehmen Menschen sie, nutzen sie aktiv und treiben ihre Entwicklung voran. Das Web 2.0 ist dafür ein hervorragendes Beispiel. Heute ist es völlig selbstverständlich, Dienste im digitalen Universum aktiv zu nutzen, statt nur statische Websites aufzurufen. Die Cloud hat diesen Trend beschleunigt und teilweise geprägt. Weil immer häufiger Daten in beide Richtungen fließen, hat die Architektur von Onlinediensten sich grundlegend verändert. Fast jede moderne Webapplikation kommt mit einer eigenen API daher, über die sie aus der Ferne zu steuern ist. Hier spielt auch die Tatsache eine Rolle, dass Firmen ihre Services immer häufiger in den großen Clouds betreiben statt mit lokaler Anbindung und lokalen Assets.
Der Boom der steuerbaren Onlinedienste hat gerade für Anwender viele praktische Vorteile. Denn über die definierten APIs lassen sich verschiedene Dienste relativ unkompliziert miteinander verbinden. Wenn Sie etwa bei einem Onlineshop etwas bestellen, und in dessen Versandabteilung geht Ihr Paket auf Reisen, kann die Lagerverwaltung des Händlers mit den Onlinediensten von DHL & Co. sprechen und Sie über den Versand samt Tracking-Link informieren. Aus Sicht von Entwicklern ergibt sich hinsichtlich dieser Art von Workflow allerdings ein Problem. Denn wer viele verschiedene Workflows definieren möchte, die verschiedene Dienste wie die genannten nutzen, müsste in seiner eigenen Webapplikation theoretisch für jede zu nutzende Schnittstelle die entsprechende Integration selbst entwickeln. Das ist praktisch kaum zu meistern.
Hier kommen die so genannten iPaaS-Angebote ins Spiel. Die Abkürzung steht für "Integration-Platform-as-a-Service" und beschreibt Plattformen, die den nötigen Code für die Einbindung etlicher externer Onlinedienste bereits mitbringen. Ein gutes Beispiel für Software dieser Art ist n8n. Das aus Berlin stammende Produkt brüstet sich damit, über 200 externe Dienste ansprechen zu können und fertige Templates für ebenso viele Einsatzzwecke zu haben. Und nicht nur das: Von besonderer Relevanz ist bei n8n auch dessen grafische Oberfläche. Die ist ein Flow-Editor, in dem der Entwickler sich seine gewünschten Abläufe per Drag-and-Drop in Windeseile zusammenklickt. Für die meisten Nodes im Flow, die auf externe Dienste zugreifen, sind damit praktisch nur noch die Benutzerdaten anzugeben. Um den Rest der gesamten Integration kümmert n8n sich dann komplett automatisch.
Lokal oder in der Cloud
Wer n8n in der Praxis nutzen möchte, muss zunächst verstehen, wie das Programm funktioniert und was es tatsächlich leistet. Grundsätzlich gilt: n8n ist eine Art Service-Bus, der Eingaben aus verschiedenen Quellen empfängt und abhängig vom Inhalt dieser Eingaben Ereignisse in Gang setzt. Die Ereignisse heißen "Flow" oder "Workflow". Das zentrale Element jedes Setups mit n8n ist insofern die Software namens n8n selbst. Diese muss laufen, um aus Webanwendungen heraus nutzbar zu sein. Aus Entwicklersicht ergeben sich zwei Optionen. Variante 1 geht vom Betrieb einer eigenen n8n-Instanz aus, Variante 2 nutzt den gehosteten Clouddienst des Anbieters.
Beide Optionen haben Vor- wie Nachteile. Die Cloudvariante produziert permanente Kosten, dafür aber wenig bis gar keinen Aufwand. Genau umgekehrt ist es bei der selbst gehosteten Option. Hier ist einiger Aufwand für das Setup ebenso notwendig wie für den laufenden Betrieb. Im Gegenzug entfallen externe Kosten – und der Admin behält die Souveränität über n8n. Welche Option für ein Unternehmen jeweils geeignet ist, ist eine Frage, die nur individuell zu klären ist. Unser Beispiel zieht die Option, n8n selbst zu betreiben, aber in Betracht. Es beschreibt deshalb auch das Setup jener lokalen n8n-Instanz.
Voraussetzung Docker Compose
Im Zeitalter der Container gehen die n8n-Entwickler nicht mehr davon aus, dass Admins ihre Anwendungen noch selbst zusammenzimmern. n8n setzt deshalb das Deployment in Container-Form voraus, bevorzugt mit Docker Compose. Im folgenden Beispiel kommt die Laufzeitumgebung auf Basis von Ubuntu 22.04 zum Einsatz, um das n8n-Setup zu realisieren. Der Workshop lässt sich in einer virtuellen Instanz insofern gut nachstellen, falls zunächst Trockenschwimmen gewünscht ist.
Damit dem Administrator Docker Compose überhaupt zur Verfügung steht, gilt es zunächst, die Community-Edition der Docker-Laufzeitumgebung auf das System zu bringen. Das Beispiel geht davon aus, dass zuvor keine Docker-Komponenten vorhanden waren; andernfalls wären diese mittels apt remove zunächst zu entfernen.
Auch ist darauf zu achten, dass sich im Verzeichnis "/var/lib/docker" keine Überbleibsel früherer Docker-Installationen befinden. Dann fügen Sie zunächst den GPG-Schlüssel hinzu, mit dem Docker die Paketlisten seines Repositories signiert:
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Der etwas sperrige Kommandozeilenbefehl sorgt dafür, dass Sie die richtigen Paketquellen für Ihre Architektur und auch für das von Ihnen genutzte Ubuntu-Release erhalten. Schließlich holen Sie sich die Docker-Compose-Pakete samt Docker auf Ihr System:
Achten Sie zudem darauf, dass Docker zusammen mit dem System anläuft, damit eventuell in Docker eingerichtete Container automatisch gestartet werden:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
n8n installieren
Wenn Docker auf dem System läuft, steht im nächsten Schritt das Ausrollen von n8n selbst auf dem Plan. Hierzu empfiehlt es sich zunächst, einen DNS-Eintrag per A-Record zu definieren, den die Software im weiteren Verlauf nutzen soll. Dann benötigen Sie eine Datei, mittels derer sich n8n per Docker Compose starten lässt. Eine solche bieten die Entwickler ab Werk fertig an, Sie finden sie unter [1].
Wer bereits mit Docker gearbeitet hat, sieht schnell, wo die Reise hingeht. Die n8n-Entwickler nutzen Trafik als Proxy-Server für ihren Dienst und rollen diesen praktischerweise gleich mit aus. Trafik kümmert sich um eine Reihe von Aufgaben: Es beschafft sich auf Grundlage des festgelegten Domänennamens der n8n-Installation ein Zertifikat bei "Let's Encrypt", so dass die Verbindungen zu n8n komplett verschlüsselt sind. Eine Anpassung ist allerdings nötig: Weil unser Beispiel davon ausgeht, dass Sie die Container mit den Rechten des Systemverwalters "root" betreiben, fügen Sie im Abschnitt "volumes" des "n8n"-Abschnittes der Datei den Eintrag "- /local-files:/files" hinzu. Stellen Sie zudem sicher, dass der Ordner "/local-files" im Dateisystem des Hosts existiert.
Darüber hinaus benötigen Sie noch eine Datei, die die Umgebungsvariablen für Ihre persönliche n8n-Instanz definiert, etwa den zu nutzenden Domänennamen sowie den Benutzernamen und das Passwort des Standardanwenders, als der Sie sich einloggen. Eine entsprechend vorbereitete Datei finden Sie unter [2]. Ersetzen Sie in dieser die Einträge bei "DOMAIN_NAME", "N8N_BASIC_AUTH_ USER" und "N8N_BASIC_AUTH_PASSWORD" sowie bei "SSL_EMAIL" durch die jeweils für Sie gültigen Werte. Legen Sie zudem den Ordner "/root/n8n" auf dem Host-System an. In diesem landet die SQLite-Datenbank der Lösung ebenso wie die über Let's Encrypt besorgten Schlüssel der SSL-Zertifikate.
Die ENV-Datei legen Sie im selben Ordner ab, in dem auch die Datei "docker-compose.yml" liegt. Danach steht der Nutzung von n8n nichts mehr im Wege: Der Befehl sudo docker compose up -d startet den Dienst. Unter der Adresse "https://<Domäne>" erreichen Sie ihn danach, wobei Sie "Domäne" durch den Eintrag ersetzen, den Sie in der ENV-Datei hinter "DOMAIN_NAME" geschrieben haben. Beim ersten Start begrüßt das Programm Sie mit einem Dialog zum Anlegen eines Benutzeraccounts. Dieser ist nicht mit dem zuvor konfigurierten Account in der ENV-Datei zu verwechseln – jener ist nur für Notfälle konzipiert.
Das bietet die GUI
Die laufende n8n-Instanz bringt Ihnen per se bis hierhin wenige Vorteile. Es ist also nötig, das Programm mit Leben zu füllen. Das aber gestaltet sich auf den ersten Blick komplizierter als es zu erwarten wäre. Denn n8n bietet zahlreiche Features und Funktionen, und vermutlich fällt es Ihnen nicht ganz leicht, sich innerhalb des Programms unmittelbar zurechtzufinden. Zunächst empfiehlt es sich, die einzelnen Teile des Flow-Editors unter die Lupe zu nehmen und ihre jeweilige Funktionalität zu verstehen.
Im linken Teilbereich des Fensters erhalten Sie über die einzelnen Menüpunkte schnellen Zugriff auf die wichtigsten n8n-Funktionen. Der "Workflows"-Tabulator ist der entscheidende. Hier erreichen Sie den Workflow-Editor, über den Sie später sämtliche Ablaufe per Mausklick erstellen. Der "Templates"-Tabulator gehört indirekt zu diesem. Die n8n-Entwickler pflegen eine Bibliothek von fertigen Workflows, die Sie per Mausklick in Ihren Workflow-Editor übernehmen und dort nach Belieben verändern können. Naturgemäß war diese Sektion des Programms bei Redaktionsschluss mit etlichen Beispielen rund um ChatGPT gesäumt, doch lassen Sie sich davon nicht abschrecken. Denn weit über 200 Templates für eine Vielzahl von Onlinediensten im Netz stehen hier zur Verfügung und helfen Entwicklern dabei, n8n schnell an den eigenen Service anzubinden.
Hinter dem Menüpunkt "Credentials" versteckt sich der Passworttresor von n8n. Passwörter legt das Programm verschlüsselt auf der eigenen Platte ab. Die Entwickler haben sich zudem dazu entschieden, Passwörter als eine Art Variable in n8n zu etablieren. Sie definieren also einen Satz Zugangsdaten pro Dienst und haben hinterher aus sämtlichen Workflows heraus die Möglichkeit, auf diese Zugangsdaten an zentraler Stelle zuzugreifen. Weder müssen Sie für jeden Flow die Daten angeben noch müssen Sie sämtliche Flows ändern, sollten sich die Zugangsdaten für einen Dienst ändern. Natürlich unterstützt n8n auch die Funktion, für einen Dienst mehrere Sätze an Zugangsdaten zu hinterlegen, falls das aus Sicherheits- oder Compliance-Gründen nötig sein sollte.
Darüber hinaus finden Sie am linken Bildschirmrand noch eine Übersicht über alle ausgeführten Workflows sowie den Zugang zum Administratorpanel, das Sie allerdings in den wenigsten Fällen benötigen dürften.
Die Arbeit mit n8n
Viele n8n-Neulinge stellen sich das Werkzeug im ersten Moment als eines vor, das die eigene Website oder den eigenen Onlineshop mit anderen Diensten verbindet. Das ist natürlich möglich, aber nicht die einfachste Art, den Einstieg in das Werkzeug zu finden. Die simpelste Art und Weise, dessen Funktionen zu ergründen, besteht stattdessen darin, zwei etablierte Dienste in Relation zueinander zu setzen. Die meisten Firmen dürften in ihrem Fuhrpark zumindest zwei Standarddienste haben, die n8n auf Wunsch miteinander ins Gespräch bringt. Das folgende Beispiel macht das gut deutlich: Die Software soll einen Workflow bekommen, der bei jedem Check-In in ein Verzeichnis auf GitHub eine entsprechende Benachrichtigung in einen Slack-Channel schickt. Sowohl für GitHub wie auch für Slack existiert eine native Anbindung, Sie müssen diese also "nur" noch mittels Workflow verbinden.
Klicken Sie dazu im Workflow-Editor (das Icon ganz oben) auf "Add first step" und wählen Sie dann "On app event" aus. Entscheiden Sie sich im aufklappenden Auswahlmenü für den Dienst "GitHub". Wählen Sie dann das Ereignis "On Push" (Bild 1) aus. Die Aktion wird im weiteren Verlauf jedes Mal ausgeführt, wenn es in das jeweilige Git-Verzeichnis einen Push durch einen Benutzer gibt, wenn also ein Benutzer einen Satz Änderungen aus seinem lokalen Git-Verzeichnis auf GitHub hochlädt.
Damit n8n die Einrichtung abschließen kann, benötigt es im nächsten Schritt noch Zugangsdaten zu GitHub. Hier zeigt sich, wie die Software hinter den Kulissen funktioniert: Dienste wie GitHub bieten API-Schnittstellen einerseits und "Webhooks" andererseits, um externe Ereignisse auszulösen oder auf solche zu reagieren. n8n übernimmt für den Entwickler die Arbeit, eben jene Einstellungen in GitHub vorzunehmen. Das geht aber nur mit Zugangsdaten. Noch sind keine angelegt – klicken Sie im Drop-Down-Menü der Credentials also auf "Create new Credential". Dann erscheint ein Assistent, der Sie durch die Einrichtung der Zugangsdaten je nach Fähigkeiten des Zieldienstes geleitet. GitHub beispielsweise beherrscht den Zugang sowohl per OAuth2 als auch mittels Access Token (Bild 2). Wählen Sie die gewünschte Option aus, klicken Sie auf "Connect my account" und geben Sie im sich öffnenden Fenster die benötigten Zugangsdaten ein.
GitHub fragt Sie im nächsten Schritt, ob Sie n8n Zugriff auf den Account gewähren möchten. Wenn Sie das bejahen, ist die Verbindung zu GitHub hergestellt. Im unteren Teil des Fensters wählen Sie dann noch den GitHub-Account aus, zu dem das zu überwachende Verzeichnis gehört, so wie das Verzeichnis selbst. Im Suchfeld geben Sie idealerweise direkt den Namen des Accounts ein; das Projekt können Sie im Anschluss aus einer Liste auswählen. Damit ist der erste Schritt erledigt: n8n wartet nun aktiv auf ein "Push"-Event im genannten GitHub-Repo. Im Workflow-Editor sehen Sie entsprechend einen neuen Workflow mit augenblicklich einem "Node", nämlich dem gerade angelegten GitHub-Trigger (Bild 3).
Damit n8n eine entsprechende Nachricht an einen Slack-Channel schickt, falls der GitHub-Trigger ausgelöst wird, fehlt ein zweiter Node für Slack. Klicken Sie auf das kleine "+"-Symbol rechts neben dem GitHub-Trigger. Was nun folgt, können Sie sich vermutlich bereits denken: Sie spielen den gesamten Vorgang noch einmal durch, wählen wieder "Action in App" aus, klicken dann jedoch auf Slack und hangeln sich durch das Einrichten des Node. Prinzipiell funktioniert das ganz genau so wie bei GitHub zuvor, lediglich die Beschreibungen und die verfügbaren Aktionen sind zwischen den Vorgängen naturgemäß unterschiedlich.
Komplexere Workflows anlegen
Das Beispiel von GitHub und einer Nachricht in Slack ist zugegebenermaßen ein sehr simples. Schon leicht komplexere Beispiele benötigen mehr Nodes. Wollten Sie beispielsweise dafür sorgen, dass jedes Mal eine Slack-Nachricht generiert wird, wenn ein Benutzer einen Stern für eines Ihrer GitHub-Verzeichnisse vergibt, wäre das schon deutlich komplexer. Dann nämlich müssten die beiden Nodes für GitHub und Slack zusätzlich mit einem "if" als Verbindung zu sehen sein, das den Inhalt der JSON-Ausgabe der GitHub-API interpretiert und dort herausfindet, ob der Stern gesetzt (oder entfernt) worden ist. Es geht also um den Unterschied zwischen "created" und "deleted" als Wert für das entsprechende Flag in der JSON-Ausgabe der API.
Die gute Nachricht ist, dass die n8n-Entwickler ja wie beschrieben noch ein Ass im Ärmel für viele Anwendungen haben, nämlich die Template-Bibliothek (Bild 4). Deren Nutzung ist beinahe trivial: Sie klicken links auf das passende Icon und wählen einen entsprechenden Workflow aus. Damit das etwas leichter vonstattengeht, sind die Workflows in Kategorien geordnet. Hinter "DevOps & IT" beispielsweise verstecken sich etliche Workflows mit IT-Bezug. Darunter durchaus interessante Einträge – unter "Productivity" beispielsweise findet sich ein Workflow, der Nutzern via Slack ein Formular für GDPR-Löschanfragen zur Verfügung stellt. Das Template ist eine Blaupause, um Benutzerzugänge aus verschiedenen Onlinediensten wie Paddle, Customer.io oder Zendesk zu löschen. Andere Templates sind etwas handfester. Eines ermöglicht es beispielsweise, Erwähnungen auf Twitter ebenfalls als Benachrichtigung in Slack zu posten, was einem Social-Media-Team im Regelfall die Arbeit erleichtern dürfte.
Wichtig ist, sich neben den mannigfaltigen Einträgen im "Action in App"-Menü unbedingt auch mit den "Flow"-Nodes in n8n zu beschäftigen. Denn die sind unerlässlich, um logische Verbindungen zwischen den einzelnen Arbeitsschritten einzufügen. Die Eingabe auf einer Website lässt sich im Backend beispielsweise problemlos in eine n8n-Operation umwandeln. Im Regelfall kommen hier verschiedene If-Knoten zum Einsatz, um die Eingabe auszuwerten und davon abhängig Aktionen zu starten. Das könnte beispielsweise bedeuten, per "if"-Anweisung in n8n die Inhalte der Eingabe zu untersuchen und je nach Herkunftsland einen anderen Pfad im Workflow einzuschlagen.
Wenn Sie nun Sorge haben, dass n8n einen Onlinedienst nicht unterstützt, den Sie selbst in einen Workflow einbinden möchten: Die gesamte Google Workplace Suite gehört ebenfalls zu den angebundenen Diensten wie praktisch alle Instant-Messaging-Systeme oder Angebote wie Dropbox oder Jira. Auch Shoppingsysteme wie Shopify sind ebenso abgedeckt wie Trello oder Instagram. In der Doku von n8n findet sich die gesamte, sehr lange Liste [3].
n8n und eigene Dienste
Schließlich stellt sich noch die Frage, wie n8n sich mit solchen Diensten verbinden lässt, die nicht aus dem Internet bekannt sind – also beispielsweise mit denen Ihrer eigenen Umgebung. Hier gilt im Grunde ein ganz einfaches Prinzip: Ihre Anwendung muss lediglich in der Lage sein, in n8n einen Trigger auszulösen. Viele CMS-Systeme haben eine solche Funktion in Form der schon genannten Webhooks. Für Wordpress gibt es sogar eine spezifische Anbindung.
Weniger fortschrittliche Methoden bietet n8n aber auch an. So besteht die Option, Workflows per E-Mail auszulösen. Ebenso unterstützt das Tool periodische Ereignisse problemlos. Falls keine eigene Anbindung von n8n an den lokal genutzten Dienst besteht, ist die Verknüpfung per Webhook wohl das Standardmittel der Wahl. Vorbildlich dabei: n8n zeigt sämtliche Details an, die Sie kennen müssen, um den Webhook in Ihrer Web-Anwendung zu implementieren. Rätselraten oder langes Wälzen der Doku ist nicht nötig. Die einzige Voraussetzung dafür ist, dass n8n direkt von jenem Dienst aus erreichbar ist, der die Ereignisse auslösen soll.
Fazit
n8n präsentiert sich als ausgesprochen mächtiges Bindeglied zwischen verschiedenen Onlinediensten. Der Flow-Editor macht das Erstellen von Handlungsabläufen zumindest leichter, als es ohne ihn wäre – im Detail und abhängig vom Zieldienst ist das Anlegen von Workflows aber noch immer recht kompliziert. Wer n8n nicht in der Cloud nutzen möchte, kann die Software auch auf eigener Infrastruktur betreiben, was in vielen Unternehmen Probleme in Sachen Compliance von vornherein ausschließt. Ob Sie den Clouddienst oder eine selbst gehostete Version nutzen, wirkt sich natürlich auf die Preise aus. Denn grundsätzlich erscheint n8n unter einer Lizenz, die den kommerziellen Einsatz ohne Lizenzzahlungen an n8n verbietet. Wer auf die Collaboration-Features der Software verzichten kann, greift auf die Community-Variante zurück. Die ist für einzelne Anwender gedacht und bietet unlimitierte Workflows bei effektiven Kosten von 0 Euro pro Monat. Wer professionellen Support oder Sonderfeatures wie SSO oder unlimitierte Nutzer benötigt, muss allerdings zur Enterprise-Version greifen, deren Preis n8n auf seiner Website nicht herausrückt.