Zum Hauptinhalt springen
Praxis6. Mai 2025·6 min Lesezeit

n8n Setup-Guide: Von Light bis Pro (SQLite, PostgreSQL, Supabase)

Ein umfassender Guide für n8n-Installationen – von SQLite-Einstieg bis zur PostgreSQL-Konfiguration mit Supabase.

Sascha Seniuk
Sascha Seniuk
Gründer & KI-Berater
n8n Setup-Guide: Von Light bis Pro (SQLite, PostgreSQL, Supabase)
KI-generiert

n8n ist ein leistungsstarkes Werkzeug für Workflow-Automation, aber die Installation kann komplex erscheinen. Deshalb haben wir bei AIscream den Setup-Prozess in drei Varianten aufbereitet.

Vom einfachen SQLite-Setup für erste Schritte bis zur PostgreSQL-Installation für produktive Umgebungen. Welche Variante für Sie passt, hängt von Ihrem aktuellen Bedarf und Ihren Wachstumsplänen ab.

Voraussetzungen

Für alle Varianten benötigen Sie:

  • Einen Hetzner Cloud Server (Mindestens CPX11, für produktive Umgebungen besser CPX21)
  • Ubuntu 20.04 LTS oder neuer
  • Docker und Docker Compose
  • Eine Domain mit DNS-Konfiguration

Der Einrichtungsaufwand ist überschaubar und der Nutzen erheblich.

Variante 1: Die SQLite-Edition (Für Einsteiger)

Diese Variante ist die einfachste Option: Zuverlässig, wartungsarm, aber nicht für hohe Lasten ausgelegt.

Komponenten

  • n8n: Das Workflow-Werkzeug (im Container)
  • Caddy: Sorgt für HTTPS-Verschlüsselung (im Container)
  • SQLite: Datenbank direkt im n8n-Container

Verzeichnisstruktur

Text
/opt/n8n/
├── data/                 # Datenspeicher
│   ├── caddy_config/     # Caddy-Konfiguration
│   │   └── Caddyfile     # Reverse-Proxy-Konfiguration
│   └── local_files/      # Dateien für n8n-Workflows
└── docker-compose.yml    # Container-Konfiguration
└── .env                  # Umgebungsvariablen

Installation

1. Verzeichnisse anlegen:

Bash
mkdir -p /opt/n8n/data/caddy_config
mkdir -p /opt/n8n/data/local_files

2. Docker Volumes erstellen:

Bash
docker volume create caddy_data
docker volume create n8n_data

3. Konfigurationsdateien erstellen:

Erstellen Sie zunächst die Docker-Compose-Datei:

YAML
services:
  caddy:
    container_name: caddy
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile
    networks:
      - n8n-network

  n8n:
    container_name: n8n
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files
    networks:
      - n8n-network

volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true

networks:
  n8n-network:
    driver: bridge

Die .env-Datei für die Konfiguration:

ENV
DOMAIN_NAME=aiscream.de           # Ihre Domain
SUBDOMAIN=demo                    # Ihre Subdomain für n8n
DATA_FOLDER=/opt/n8n/data         # Speicherort der Daten
GENERIC_TIMEZONE=Europe/Berlin    # Zeitzone
N8N_BASIC_AUTH_ACTIVE=true        # Zugriffskontrolle aktivieren
N8N_BASIC_AUTH_USER=admin         # Benutzername
N8N_BASIC_AUTH_PASSWORD=****      # Sicheres Passwort wählen
N8N_ENCRYPTION_KEY=****           # Verschlüsselungsschlüssel (mindestens 32 Zeichen)

Die Caddyfile:

Nginx
demo.aiscream.de {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

4. Container starten:

Bash
cd /opt/n8n
docker compose up -d

Nach dem Start erreichen Sie n8n unter https://demo.aiscream.de (bzw. Ihrer konfigurierten Domain).

Limitierungen der SQLite-Version

Diese Version eignet sich für den Einstieg und kleinere Workloads:

  • Bis zu 5.000-10.000 tägliche Workflow-Ausführungen
  • 10-15 gleichzeitige Workflows
  • Datenbank sollte unter 5 GB bleiben
  • SQLite ist nicht für viele gleichzeitige Schreibvorgänge optimiert

Variante 2: Die PostgreSQL-Edition (Für wachsende Unternehmen)

Wenn Ihr Bedarf wächst, bietet PostgreSQL mehr Leistung und Zuverlässigkeit.

Was ist neu?

Statt SQLite kommt PostgreSQL zum Einsatz – eine vollwertige Datenbank, die mit Ihrem Unternehmen skaliert.

Installation:

1. Verzeichnisse und Volumes anlegen:

Bash
mkdir -p /opt/n8n/data/caddy_config
mkdir -p /opt/n8n/data/local_files
cd /opt/n8n

docker volume create caddy_data
docker volume create n8n_data
docker volume create postgres_data

2. Die Docker-Compose-Datei:

YAML
services:
  caddy:
    container_name: caddy
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile
    networks:
      - n8n-network

  n8n:
    container_name: n8n
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      # PostgreSQL-Konfiguration
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE}
      - DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER}
      - DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD}
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files
    depends_on:
      - postgres
    networks:
      - n8n-network

  postgres:
    container_name: postgres
    image: postgres:13
    restart: always
    environment:
      - POSTGRES_USER=${DB_POSTGRESDB_USER}
      - POSTGRES_PASSWORD=${DB_POSTGRESDB_PASSWORD}
      - POSTGRES_DB=${DB_POSTGRESDB_DATABASE}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n-network

volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true
  postgres_data:
    external: true

networks:
  n8n-network:
    driver: bridge

3. .env-Datei erweitern:

ENV
DOMAIN_NAME=aiscream.de
SUBDOMAIN=demo
DATA_FOLDER=/opt/n8n/data
GENERIC_TIMEZONE=Europe/Berlin

# Authentifizierung
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=****    # Sicheres Passwort wählen
N8N_ENCRYPTION_KEY=****         # Mindestens 32 Zeichen, komplex und einzigartig

# PostgreSQL-Konfiguration
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=****     # Separates DB-Passwort, ebenfalls sicher wählen
DB_POSTGRESDB_DATABASE=n8n

Vorteile der PostgreSQL-Edition:

  • Bessere Unterstützung für gleichzeitige Zugriffe
  • Höhere Zuverlässigkeit bei umfangreichen Datenmengen
  • Bessere Performance bei hohen Workloads
  • Unterstützung für Team-Funktionen (mehrere Nutzer)
  • Verarbeitet bis zu 50.000 tägliche Workflows

Variante 3: Die Supabase-Edition (Managed Database)

Wenn Sie sich nicht um die Datenbankverwaltung kümmern möchten, übernimmt Supabase dies als Managed Service.

Wichtig: Aktivieren Sie die automatischen Backups im Supabase-Dashboard unter „Project Settings" → „Database" → „Backups".

Welche Version passt zu Ihrem Unternehmen?

VarianteFür wen?WorkloadVorteileNachteile
SQLiteEinsteiger, KleinunternehmenBis 10k Workflows/TagEinfach, schnell eingerichtetBegrenzte Skalierbarkeit
PostgreSQLWachsende UnternehmenBis 50k Workflows/TagZuverlässiger bei hoher Last, teamfähigHöherer Ressourcenbedarf
SupabaseUnternehmen ohne DB-ExpertiseBis 50k Workflows/TagKeine DB-Wartung nötig, managed ServiceExterne Abhängigkeit, Kosten

Wartung: Updates und Pflege

Container aktualisieren (für alle Varianten):

Bash
cd /opt/n8n
docker compose pull
docker compose down
docker compose up -d

Logs überwachen:

Bash
# Alle Container-Logs
docker compose logs

# Nur n8n-Logs
docker compose logs n8n

# Nur Caddy-Logs
docker compose logs caddy

Fazit: Skalierbare Automatisierung

Welche Variante Sie heute wählen, hängt von Ihrem aktuellen Bedarf ab – dieser wird sich voraussichtlich ändern. Mit diesen Anleitungen können Sie jederzeit upgraden. n8n wächst mit Ihrem Unternehmen.

Der SQLite-Start ist die einfachste Variante zum Ausprobieren. Sobald Ihre Automatisierungen produktiv werden, empfehlen wir PostgreSQL. Wenn Sie keine Datenbank-Administration übernehmen möchten, ist Supabase eine Alternative – mit den entsprechenden externen Abhängigkeiten und Kosten.

Häufig gestellte Fragen

Für erste Schritte empfiehlt sich die SQLite-Edition. Sie ist am einfachsten einzurichten, zuverlässig und wartungsarm, aber nicht für hohe Lasten ausgelegt. Als Richtwert gelten 5.000 bis 10.000 tägliche Workflow-Ausführungen.

Sie benötigen Unterstützung bei der n8n-Einrichtung oder möchten Ihre Automatisierungsstrategie besprechen? Sprechen Sie mit uns über Ihre Anforderungen.

Über den Autor

Sascha Seniuk

Sascha Seniuk

Mitgründer & Technical Lead

Mit über 20 Jahren IT-Erfahrung – vom Systemadministrator bis zum KI-Experten – navigiert Sascha mittelständische Unternehmen durch LLM-Ops, RAG-Pipelines und Workflow-Automatisierung. Als externer KI-Manager macht er künstliche Intelligenz für den Mittelstand greifbar und nutzbar.