fairlane.systems

N8N · ANLEITUNG

n8n self-host plus Bexio-Integration: vom Docker-Compose zum Mahnstatus-Workflow (Mai 2026)

Anleitung für n8n in EU-Hosting mit Postgres-Backend, Bexio-OAuth-App, Webhook-Empfang und einem fertigen Workflow "Bei neuer Rechnung prüfe Mahnstatus". Production-ready.

Recherche & Faktencheck: · Stand: 2026-05

Worum geht es hier?

Diese Anleitung führt eine Treuhand- oder KMU-IT von null zu einer produktiv lauffähigen n8n-Instanz mit Bexio-Integration. Sie installieren n8n via Docker-Compose mit PostgreSQL als Backend, registrieren eine OAuth-App im Bexio-Developer-Portal, empfangen Webhook-Events und bauen einen ersten Workflow, der bei jeder neuen Bexio-Rechnung den Mahnstatus prüfen und gegebenenfalls eine Erinnerungs-Mail planen.

Der Stack ist bewusst auf EU-Hosting und CH-Datenschutz ausgelegt. n8n läuft auf einem Hetzner-Server in Falkenstein oder Helsinki, Postgres im gleichen Compose-File, Reverse-Proxy mit Caddy oder Traefik für automatisches Let's-Encrypt-SSL. Bexio ist ohnehin Schweizer Cloud – somit hat der ganze Workflow keine US-Touch-Punkte.

Voraussetzung: ein Bexio-Account mit Buchhaltung-Modul (ab CHF 39/Monat), ein Server mit mindestens 2 vCPU und 4 GB RAM (Hetzner CX22 CHF 5/Monat ist genug für den Start), eine Subdomain (z.B. n8n.ihre-domain.ch) mit Cloudflare-DNS. Erwartete Setup-Zeit: 4-6 Stunden für einen erfahrenen Admin, 1-2 Tage für Erstanwender.

Warum n8n und warum self-host?

n8n ist Mai 2026 das führende Open-Source-Workflow-Tool im EU-Raum. Mit über 60.000 GitHub-Sternen, einer Fair-Code-Lizenz (kommerzielle Nutzung erlaubt, SaaS-Konkurrenz-Anbieter nicht), Docker-natürlichem Deployment und mehr als 800 vorgefertigten Integrationen (darunter Bexio) ist es die einzige ernsthafte Alternative zu Make, Zapier und Microsoft Power Automate für Schweizer KMU.

Self-host gegen n8n Cloud entscheidet vor allem der Datenschutz. n8n Cloud läuft in EU-Region, aber das durchgereichte Geschäftsdatum (Bexio-Rechnungen, Mandantendaten, Mail-Inhalte) liegt während der Workflow-Ausführung kurzzeitig bei n8n GmbH in Berlin. Für Treuhand-Büro mit Berufsgeheimnis und Anwalts-Schweigepflicht ist self-host der saubere Pfad. Zusätzlich: Cloud kostet ab Workflow-Anzahl > 5 schnell CHF 50-200/Monat, self-host auf Hetzner CHF 5-15.

Die Bexio-Integration ist der Hebel für das grösste Schweizer KMU-Universum. Bexio hat Stand Mai 2026 über 90.000 Schweizer KMU-Kunden, eine offene REST-API mit OAuth-2.0-Auth, Webhook-Events für alle wichtigen Entitäten (Rechnung, Kontakt, Auftrag, Projekt). Jeder Treuhänder hat Mandanten in Bexio – n8n ist das Werkzeug, das diese Bexio-Daten mit allem anderen verkettet: E-Mail, KI-Klassifikation, CRM, Slack, Telegram, eigene Datenbank.

Wie das Setup zusammenhängt

Die Architektur besteht aus vier Schichten: Server-Basis (Docker + Traefik/Caddy + Postgres), n8n-Container, Bexio-OAuth-App, Workflow-Logik.

Server-Basis: Ein Linux-Server mit Docker-Compose. Reverse-Proxy (Traefik oder Caddy) terminiert TLS via Let's Encrypt, leitet n8n.ihre-domain.ch auf den n8n-Container weiter. Postgres-Container als Backend für n8n (Workflow-Definitionen, Execution-History, Credentials encrypted).

n8n-Container: ghcr.io/n8n-io/n8n in der aktuellen Stable-Version 1.65+ (Mai 2026). Environment-Variablen setzen den Postgres-Connect (DB_TYPE=postgresdb, DB_POSTGRESDB_HOST, etc.), den Encryption-Key für Credentials (N8N_ENCRYPTION_KEY – 32 Zeichen, sicher generiert), Webhook-URL (WEBHOOK_URL=https://n8n.ihre-domain.ch/) und Auth-Mode (N8N_BASIC_AUTH_ACTIVE=true initial, später OIDC/SAML).

Bexio-OAuth: Im Bexio-Developer-Portal (developer.bexio.com) eine OAuth-App registrieren. Redirect-URI auf https://n8n.ihre-domain.ch/rest/oauth2-credential/callback setzen. Scopes auswählen: kb_invoice_show, contact_show, accounting, monitoring_show – minimal nötige Scopes für den Mahnstatus-Workflow. Client-ID und Client-Secret notieren.

Webhook-Empfang: n8n bietet einen Webhook-Trigger-Node, der eine eigene URL bereitstellt. Diese URL in Bexio unter "Einstellungen → Webhooks" eintragen, Trigger-Events "Rechnung erstellt" und "Rechnung verschickt" anwählen. Bexio sendet bei jedem Event einen JSON-POST an n8n.

Workflow-Logik für Mahnstatus: Trigger-Node empfängt Webhook. HTTP-Request-Node fragt via OAuth Token aktuelle Rechnung mit Fälligkeitsdatum ab. IF-Node prüft: ist Datum > heute + 30 Tage? Wenn ja, weiter. HTTP-Request holt Mahnstatus und Kunden-Stammdaten. IF-Node prüft: hat Kunde schon eine erste Mahnung erhalten? Wenn nein, Email-Node sendet erste Erinnerung via Brevo SMTP. Bexio-Node setzt Mahnstatus auf "Erinnerung gesendet". Postgres-Node loggt das Event in eine Audit-Tabelle.

Der Audit-Log ist wichtig für Compliance: jede automatische Mahnung wird mit Timestamp, Rechnungsnummer, Kunde und Mail-Inhalt protokolliert. Bei Reklamationen ist nachweisbar, was wann automatisch geschickt wurde.

n8n + Bexio in 10 Schritten

  1. 01Schritt 1 – Hetzner-Server anlegen: Cloud-Console von Hetzner, CX22 (2 vCPU, 4 GB RAM, 40 GB SSD, CHF 5/Monat) in Falkenstein. SSH-Key beim Anlegen hochladen. Nach Boot: `ssh root@<ip>`, `apt update && apt upgrade -y`, `ufw allow 22,80,443`, `ufw enable`.
  2. 02Schritt 2 – Docker installieren: `curl -fsSL https://get.docker.com | sh`. `apt install -y docker-compose-plugin`. `docker run hello-world` zum Test. User anlegen, in docker-Gruppe: `adduser n8nadmin && usermod -aG docker n8nadmin`.
  3. 03Schritt 3 – DNS und Reverse-Proxy: In Cloudflare A-Record `n8n.ihre-domain.ch → <Hetzner-IP>` als DNS-only. Verzeichnis `/opt/n8n` anlegen. docker-compose.yml mit Traefik-Service (Image traefik:v3.2) + Letsencrypt-Resolver. Erst Traefik starten, `docker compose up -d traefik`, Logs prüfen ob TLS-Zertifikat ausgestellt wird.
  4. 04Schritt 4 – Postgres und n8n im Compose: docker-compose.yml erweitern: postgres:17-alpine mit Volume `pgdata:/var/lib/postgresql/data`, env POSTGRES_PASSWORD aus .env. n8n-Service ghcr.io/n8n-io/n8n:1.65 mit env DB_TYPE=postgresdb, DB_POSTGRESDB_HOST=postgres, DB_POSTGRESDB_USER=n8n, N8N_ENCRYPTION_KEY=`openssl rand -hex 32`, WEBHOOK_URL=https://n8n.ihre-domain.ch/. Traefik-Labels für Host-Routing.
  5. 05Schritt 5 – n8n hochfahren: `docker compose up -d`. `docker logs n8n -f` prüfen. Erste Anmeldung auf https://n8n.ihre-domain.ch – n8n bittet um Owner-Account-Anlage. Mail-Adresse und Passwort setzen. 2FA in den Account-Settings aktivieren.
  6. 06Schritt 6 – Bexio-OAuth-App registrieren: Auf developer.bexio.com anmelden, "Create new application". Name "n8n Production", Redirect-URI exakt `https://n8n.ihre-domain.ch/rest/oauth2-credential/callback`. Scopes: kb_invoice_show, contact_show, accounting, monitoring_show, kb_invoice_edit (für Mahnstatus-Schreiben). Client-ID und Client-Secret notieren.
  7. 07Schritt 7 – Bexio-Credentials in n8n: In n8n unter "Credentials → New → Bexio OAuth2 API" einlegen: Client-ID und Client-Secret aus Schritt 6, Auth-URL `https://idp.bexio.com/realms/bexio/protocol/openid-connect/auth`, Token-URL `https://idp.bexio.com/realms/bexio/protocol/openid-connect/token`. "Connect my account" klicken, Bexio-Login, Authorize. Credential ist gespeichert.
  8. 08Schritt 8 – Webhook in Bexio einrichten: Im Bexio-UI unter "Einstellungen → API & Schnittstellen → Webhooks" neuen Webhook anlegen. URL: aus dem n8n-Workflow-Editor mit Webhook-Trigger-Node generierte Production-URL (z.B. https://n8n.ihre-domain.ch/webhook/abc-123). Events: "Rechnung erstellt", "Rechnung versendet".
  9. 09Schritt 9 – Workflow "Mahnstatus" bauen: In n8n neuer Workflow. Trigger: Webhook (POST). Node 2: HTTP Request → Bexio API GET /2.0/kb_invoice/{{$json.id}} mit OAuth-Credential. Node 3: IF-Node – `{{$json.is_valid_to < $today.minus({days: 30}).toISO()}}`. Node 4 (true-Pfad): HTTP Request → GET /2.0/contact/{{$json.contact_id}}. Node 5: Email-Send via Brevo SMTP – Empfänger aus Contact-Daten, Body mit Rechnungs-Details. Node 6: HTTP Request → PUT /2.0/kb_invoice/{{$json.id}} mit `{"mwst_is_net":true,...}` und Memo "Erinnerung am {{$today}} per n8n gesendet". Node 7: Postgres Insert in audit-Tabelle. Save + Activate.
  10. 10Schritt 10 – Test, Monitoring, Backup: Test-Rechnung in Bexio anlegen, Webhook sollte feuern, n8n-Execution-Log prüfen. Bei Erfolg in Bexio "Mahnstatus" Feld prüfen, im Mail-Postfach Erinnerung prüfen. Monitoring: n8n-Metrics-Endpoint mit Prometheus-Scraper (`N8N_METRICS=true`), Grafana-Dashboard für Workflow-Erfolgsrate. Backup: `pg_dump` täglich via Cron in S3-kompatiblen Storage (z.B. Backblaze B2 mit Object Lock).

Wann sich n8n + Bexio lohnt

Dieses Setup ist die richtige Wahl, wenn (a) Sie 5+ wiederkehrende Bexio-Prozesse haben (Mahnwesen, Rechnung-an-Mandant, Buchungsexport, Lead-Anlage), (b) das Daten-Volumen über Excel hinausgeht (50+ Vorgänge pro Monat) und (c) Daten in Bexio bleiben sollen oder müssen (keine externen Cloud-Workflow-Provider).

Konkrete Fälle: Eine Treuhand verwaltet 80 Mandanten in Bexio, will pro Mandant automatisch Quartalsabschluss-Reminder versenden. Ein KMU mit Bexio-Rechnungsstellung will jeden Lead aus dem Web-Formular automatisch als Kontakt anlegen und eine Begrüssungs-Mail senden. Ein Treuhand-Büro will pro Bexio-Buchung eine KI-Klassifikation (per LiteLLM zu Mistral) über Kostenstelle und Konto.

Für Single-Use-Cases mit weniger als 5 Vorgängen pro Monat ist n8n Overkill – ein einfaches Cron-Job-Script oder ein Bexio-Add-on aus dem Marketplace ist leichter. Sobald 3+ Workflows aufeinander aufbauen, lohnt sich die Investition in die n8n-Plattform.

Wann n8n + Bexio NICHT passt

Dieses Setup ist die falsche Wahl, wenn (a) das Team keinen Docker- und Linux-Admin hat – selbst-gehostete n8n braucht laufende Wartung (Updates, Backup, Monitoring). (b) Bexio nicht das führende System ist – bei Abacus oder SAP ist deren API der bessere Ansatz. (c) Die Workflows kritisch zeitkritisch sind (Real-Time, < 5 Sekunden) – n8n hat Webhook-Latenz von ca. 1-3 Sekunden plus die Bexio-API-Latenz.

Weitere Falle: n8n Cloud wählen, ohne den Datenschutz-Trade-off zu klären. Das Cloud-Angebot ist bequemer, aber bei Berufsgeheimnis ist self-host die einzige saubere Variante. Wer Berufsgeheimnis hat und trotzdem n8n Cloud nimmt, riskiert eine EDÖB-Auseinandersetzung bei einem Datenvorfall.

Nicht zu vergessen: Hetzner-Server ohne 2FA für SSH-Zugang. Wer einen self-host-n8n betreibt, muss Server-Hygiene leben – sonst ist die saubere Datenschutz-Geschichte durch eine unsichere Server-Konfiguration entwertet. Mindeststandard: SSH-Key-only, fail2ban, automatische Sicherheits-Updates, monitorter Docker-Stack.

Vor- und Nachteile

STÄRKEN

  • EU-Hosting plus Schweizer Bexio-Cloud – keine US-Touchpoints
  • 800+ Integrationen out of the box, Bexio-Node ist offiziell
  • Visual-Workflow-Editor – auch Fach-Anwender können einfache Änderungen machen
  • Open-Source, Fair-Code – kein Vendor-Lock-in

SCHWÄCHEN

  • Selbst-gehostet braucht Docker-Linux-Knowhow und 2-4h/Monat Wartung
  • Bexio-API hat 60 Requests/Minute Limit – bei hohem Volumen Engpässe
  • n8n-Cloud-UX ist polierter – self-host braucht mehr Lese-Disziplin
  • Workflow-Versionierung in n8n ist schwach – kein Git-natives Branching

Häufige Fragen

Was kostet das Setup laufend?

Hetzner CX22: CHF 5/Monat. Bexio mit Buchhaltung: ab CHF 39/Monat (vorhanden, nicht zusätzlich). Brevo SMTP für 1.000 Mails/Monat: Free. Backblaze B2 Backup: ca. CHF 2/Monat für 10 GB. Domain: CHF 10/Jahr für eine .ch. Gesamt: CHF 7-15/Monat plus Bexio-Lizenz. Personenstunden für Wartung: 2-4h/Monat (Updates, Workflow-Pflege).

Wie laufen n8n-Updates?

Monatlicher Rhythmus: `cd /opt/n8n && docker compose pull && docker compose up -d`. Vorher Postgres-Dump zur Sicherheit. Major-Versions (1.65 → 1.70) bringen gelegentlich Breaking-Changes – Changelog vor Update lesen. n8n hat ein gutes Migration-System; in 30+ Update-Zyklen seit 2024 ist kein Datenverlust passiert. Wartungsfenster: Sonntag-abends, Workflows sind 1-2 Minuten offline.

Was passiert, wenn Bexio die API-Limits raufdreht?

Bexio hat seit 2024 ein Limit von 60 Requests pro Minute pro App. n8n-HTTP-Request-Nodes haben einen Retry-Mode mit exponential backoff (in der Node-Konfig "On Fail → Retry On Fail" aktivieren). Bei sehr aktiven Workflows: Throttle-Node vorschalten oder die Bexio-API-App in mehrere splitten. Im Bexio-Developer-Portal kann man ein höheres Limit beantragen – typischerweise auf 200/min mit Begründung.

Kann n8n KI-Klassifikation pro Buchung machen?

Ja, über den HTTP-Request-Node zu einem LiteLLM-Gateway. Beispiel: Bexio-Webhook für "Beleg hochgeladen" → n8n holt Belegtext via Bexio-API → HTTP-Request an LiteLLM `/v1/chat/completions` mit Prompt "Klassifiziere diesen Beleg: Konto-Nummer, Kostenstelle, MWST-Satz" → JSON zurück → Bexio-PUT auf die Buchung. Latency ca. 3-5 Sekunden pro Beleg, Kosten ca. CHF 0.0015 pro Beleg bei Mistral Small.

Verwandte Themen

N8N · TECHn8n: Workflow-Automation mit 600+ Integrationen, self-hosted unter EU-RechtBEXIO API · INTEGRATIONBexio API: KI-Integration in die Schweizer Treuhand-BuchhaltungCLOUDFLARE · TECH-STACKCloudflare als DNS, Reverse-Proxy und WAF: SSL-Modi, Cache-Rules, Origin-CertificatesHETZNER · TECHHetzner als EU-Hosting für CH-Treuhand und KMU: Rechenzentren, Verträge, KostenBREVO · TECH-STACKBrevo SMTP: Transaktionale E-Mail aus EU-Hosting für KMU-AppsBREVO · ANLEITUNGBrevo SMTP einrichten: DNS, DKIM, DMARC, Nodemailer-Test und Bounce-Webhooks (Mai 2026)CLOUDFLARE · ANLEITUNGCloudflare mit eigener Domain einrichten: DNS, SSL, WAF, Workers KV und Tunnel (Mai 2026)

Quellen

  1. n8n self-host documentation – Docker Compose with PostgreSQL · 2026-05
  2. Bexio Developer Portal – OAuth 2.0 authentication and webhooks · 2026-05
  3. n8n Bexio node reference · 2026-04
  4. Traefik v3 – Let's Encrypt resolver and Docker provider · 2026-03
  5. Hetzner Cloud – CX server line and Falkenstein region · 2026-05

PASSEND ZU IHREM STACK?

Wie das in Ihrem Betrieb konkret aussieht – 30 Minuten Erstgespräch.

Erstgespräch buchen