Wähle einen Artikel
n8n Docker Installation
n8n Docker Installation

Überblick

VPS Server von METANET

Finden Sie den Server der zu Ihren Anforderungen passt – jetzt einfach vergleichen.

Dunkler Hintergrund mit vielen blauen Leuchtpunkten, verbunden durch blaue Linien; rote Leuchtknoten.

n8n installieren

1.1 Einleitung

In der Welt der Automatisierungstools hat sich n8n schnell von einem Geheimtipp zu einer der leistungsfähigsten Plattformen entwickelt. Im Gegensatz zu geschlossenen Systemen verfolgt n8n einen "Fair-Code"-Ansatz. Das bedeutet: Der Quellcode ist verfügbar, und das Tool kann entweder in der Cloud genutzt oder – was für Datenschutz und Flexibilität entscheidend ist – auf dem eigenen Server selbst gehostet werden. 

1.2 Infos zu yml Dateien

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Ihr könnt den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator

1.3 Vorbereitung

Diese Anleitung basiert auf dem aktuellen Debian 12 Betriebssystem. n8n werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation.

Um n8n neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik. Die Anleitung dazu findet ihr hier: https://www.dogado.de/vps/vserver-anwendungsfaelle/traefik-reverseproxy-auf-vserver-installieren 

1.3.1 Verzeichnis erstellen

Wir erstellen uns ein neues Verzeichnis, in welchem wir später alle Daten von n8n abspeichen. Dazu geben wir folgendes in der Konsole ein:

mkdir -p /opt/containers/n8n

Sie können hier auch ein anderes Verzeichnis verwenden. Müssen dann aber die gesamte Anleitung entsprechend anpassen.

1.3.2 docker-compose.yml erstellen

Nun können wir mit der eigentlichen „Installation“ von n8n beginnen. Dazu öffnen sie folgende Datei:

nano /opt/containers/n8n/docker-compose.yml

Nun kopieren sie folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren n8n Container.

services:
  n8n-postgres:
    image: postgres:16
    restart: unless-stopped
    env_file:
      - ./.env
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_NON_ROOT_USER=${POSTGRES_NON_ROOT_USER}
      - POSTGRES_NON_ROOT_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
    networks:
      - default
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    env_file:
      - ./.env
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=n8n-postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    links:
      - n8n-postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      n8n-postgres:
        condition: service_healthy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.entrypoints=http"
      - "traefik.http.routers.n8n.rule=Host(`n8n.euredomain.de`)"
      - "traefik.http.middlewares.n8n-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.n8n.middlewares=n8n-https-redirect"
      - "traefik.http.routers.n8n-secure.entrypoints=https"
      - "traefik.http.routers.n8n-secure.rule=Host(`n8n.euredomain.de`)"
      - "traefik.http.routers.n8n-secure.tls=true"
      - "traefik.http.routers.n8n-secure.tls.certresolver=http"
      - "traefik.http.routers.n8n-secure.service=n8n"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.n8n-secure.middlewares=secHeaders@file"
    networks:
      - proxy
      - default
networks:
  proxy:
    external: true
 
volumes:
  db_storage:
  n8n_storage:

1.3.3 Hostname anpassen

Nun müssen sie noch den Hostnamen anpassen, über welchen später n8n erreichbar sein soll.

Diese beiden Zeilen müssen sie anpassen.

    - "traefik.http.routers.n8n.rule= Host(`n8n.euredomain.de`)"
    - "traefik.http.routers.n8n-secure.rule= Host(`n8n.euredomain.de`)"

In meinem Fall also:

    - "traefik.http.routers.n8n.rule= Host(`n8n.testbereich.net`)"
    - "traefik.http.routers.n8n-secure.rule= Host(`n8n.testbereich.net`)"

1.3.4 Konfigurationsdatei anlegen

Nun legen wir noch eine Konfigurationsdatei an, welche wichtige Infos zur Datenbank beinhaltet. Dazu geben sie folgendes ein:

nano /opt/containers/n8n/.env

Inhalt:

POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword

Diese Daten könnt ihr nun beliebig anpassen.

1.3.5 Datenbank Initialisierungsskript erstellen

Jetzt benötigen wir noch ein Skript, welches die Datenbank beim ersten Start für uns initialisiert. Dafür geben sie folgendes ein:

nano /opt/containers/n8n/init-data.sh

Inhalt:

#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
        psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
                CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
                GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
                GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
        echo "SETUP INFO: No Environment variables given!"
fi

n8n starten

Geben sie folgendes ein, um den n8n Container zu starten:

docker compose -f /opt/containers/n8n/docker-compose.yml up -d

Beim ersten Start des Containers wird n8n initialisiert. Dies bedeutet, dass die Datenbank eingerichtet, ihre Einstellungen übernommen werden und vieles mehr. Daher dauert es einige Minuten, bis der Container dann über die Webseite (z.B. n8n.testbereich.net) erreichbar ist.

2.1 n8n einrichten

Sie werden nun aufgefordert einen Benutzer zu erstellen. Geben sie hier ihre persönlichen Daten ein.

Weißes Registrierungsformular in Karte; Felder Email, First Name, Last Name, Password; Checkbox; roter Next-Button.

Nun werden sie noch einiges gefragt.

Dies können sie überspringen, indem sie auf „Get started“ klickt. Im letzten Schritt können sie sich nun noch beim Hersteller registrieren, damit sie zusätzliche Features aktivieren können.

Webseite: Get paid features for free (forever); Abschnitte: Adv. debugging, Exec. search, Folders; E-Mail-Feld und Button

Diesen Schritt können Sie mittels „Skip“ überspringen. Nun ist n8n fertig eingerichtet.

Weißes Dashboard mit zentraler Karte Start from scratch, oben die Meldung Welcome Dogado!, unten Vorlagenkarten.

VPS Server von METANET

Finden Sie den Server der zu Ihren Anforderungen passt – jetzt einfach vergleichen.

Dunkler Hintergrund mit vielen blauen Leuchtpunkten, verbunden durch blaue Linien; rote Leuchtknoten.
Weitere passende Themen