
n8n ist mittlerweile extrem weit verbreitet. Aber wie startet man eigentlich? Die Frage stellen sich bestimmt viele von Euch. Die gute Nachricht zuerst: Solltest Du schon Home Assistant oder ioBroker nutzen, ist der Einstieg extrem einfach, da man n8n mit wenigen Klicks installieren kann. Also perfekt, um die beliebte Lösung einmal auszuprobieren und in das Thema einzusteigen.
Video
n8n Cloud
Der einfachste Weg ist die offizielle Cloud. Aber Achtung: Da fallen schnell Kosten an. Aber in einem kostenlosen Testzeitraum kann man schon viel ausprobieren. Generell bieten auch viele andere Provider n8n Hosting in der Cloud an. Einer dieser Anbieter finanziert gefühlt jedes zweite YouTube-Video zu dem Thema.
Wenn Du eh schon ioBroker oder Home Assistant hast, probiere es lieber dort aus.
ioBroker
Im ioBroker ist der n8n-Adapter aktuell nur im Beta-Repository zu finden. Wie immer gilt: Über npm bzw. die offizielle Adapterliste installieren. Nicht über GitHub!
Dabei bringt der ioBroker eine vollständige n8n-Installation mit. Man kan also mit nur einem Klick direkt starten und die beliebte Software einfach mal testen. Natürlich kann n8n auch mit dem ioBroker interagieren und beispielsweise Datenpunkte als Auslöser nutzen und diese auch schreiben.
Der Nachteil ist eigentlich nur, dass man bei der Version immer etwas hinterher hängt und diese auch nicht aktualisieren kann. Man muss also auf Updates des Adapters warten. Die aktuelle Version 0.3.0 ist leider auch schon wieder vom September 2025. Also über drei Monate gab es kein Update.
Home Assistant
Bei Home Assistant bzw. unter Home Assistant OS kann man Add-Ons nutzen um n8n zu installieren. Intern sind das ja auch wieder nur Docker-Container. Diese müssen aber für Home Assistant gebaut werden und haben nichts mit den offiziellen n8n-Docker-Images zu tun! Das heißt, der Maintainer des Add-Ons muss jedes Mal bei einer neuen Version auch ein neues Image erstellen und dieses veröffentlichen. Nur so kommt man an Updates.
Proxmox
Alternativ kannst Du auch die Proxmox Helper Scripts nutzen um einen LXC Container in Proxmox mit n8n zu erstellen. Da Du dann aber weder weißt wie der Prozess aussieht, oder wie man das System aktuell hält, würde ich die anderen Wege bevorzugen!
Docker
Unter Docker könnte man jetzt viel mit docker compose usw. machen. Um auf die Schnelle (lokal) einen Docker-Container zum Laufen zu bringen, reicht aber schon ein neues Volume (um die Daten persistent zu halten) und dann ein neuer Container. Im Standard wird automatisch eine SQLite-Datenbank verwendet.
Als Erstes installieren wir Docker unter Debian. Das habe ich hier schon einmal erklärt.
docker volume create n8n_data
docker run -d
--name n8n
--restart=always
-p 5678:5678
-e GENERIC_TIMEZONE="Europe/Berlin"
-e TZ="Europe/Berlin"
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
-e N8N_DEFAULT_BINARY_DATA_MODE=filesystem
-e N8N_RUNNERS_ENABLED=true
-e N8N_SECURE_COOKIE=false
-v n8n_data:/home/node/.n8n
docker.n8n.io/n8nio/n8n:2.0.1
Bonus: Mit Traefik und Docker Compose
Ich habe mich am Ende dazu entschieden, meine n8n-Instanz zwar selbst zu hosten, aber diese im Internet bereitzustellen. Dazu nutze ich:
- DynDNS auf einer eigenen Domain
- VLANs / DMZ und UniFi Zone Based Firewall
- Traefik als Reverse Proxy
- Letsencrypt als SSL Zertifikat
- CrowdSec als Webhook-Filter
- 2-Factor-Authentication in n8n
sudo mkdir -p /opt/docker/letsencrypt/
sudo mkdir -p /opt/docker/crowdsec/{db,config} && sudo chown -R 1000:1000 /opt/docker/crowdsec/
cd /opt/docker/
sudo nano .env
DOMAIN_NAME=deinedomain.de
SUBDOMAIN=n8n
ACME_EMAIL=deine-mail@example.com
TIMEZONE=Europe/Berlin
CROWDSEC_BOUNCER_API_KEY=
sudo nano crowdsec/acquis.yaml
filenames:
- /var/log/traefik/access.log
labels:
type: traefik
sudo nano docker-compose.yml
services:
traefik:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- "80:80"
- "443:443"
environment:
- TZ=${TIMEZONE}
- DOCKER_API_VERSION=1.52 # ggf. anpassen: docker version --format ''
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
- traefik_logs:/var/log/traefik
command:
- "--api.dashboard=false"
- "--log.level=INFO"
- "--accesslog=true"
- "--accesslog.filepath=/var/log/traefik/access.log"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
# https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
- "--experimental.plugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
- "--experimental.plugins.bouncer.version=v1.4.6"
networks:
- traefik_net
crowdsec:
image: crowdsecurity/crowdsec
container_name: crowdsec
restart: unless-stopped
environment:
- GID=1000
- COLLECTIONS=crowdsecurity/traefik crowdsecurity/http-cve
volumes:
- ./crowdsec/db:/var/lib/crowdsec/data
- ./crowdsec/config:/etc/crowdsec
- ./crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
- traefik_logs:/var/log/traefik:ro
networks:
- traefik_net
n8n:
image: docker.n8n.io/n8nio/n8n:2.0.1
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
- N8N_DEFAULT_BINARY_DATA_MODE=filesystem
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${TIMEZONE}
- BOUNCER_KEY_TRAEFIK=${CROWDSEC_BOUNCER_API_KEY}
volumes:
- n8n_storage:/home/node/.n8n
networks:
- traefik_net
labels:
- "traefik.enable=true"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
- "traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls.certresolver=myresolver"
- "traefik.http.middlewares.my-crowdsec.plugin.bouncer.enabled=true"
- "traefik.http.middlewares.my-crowdsec.plugin.bouncer.crowdseclapikey=${CROWDSEC_BOUNCER_API_KEY}"
- "traefik.http.middlewares.my-crowdsec.plugin.bouncer.crowdseclapischeme=http"
- "traefik.http.middlewares.my-crowdsec.plugin.bouncer.crowdseclapihost=crowdsec:8080"
- "traefik.http.middlewares.my-crowdsec.plugin.bouncer.crowdsecupdateregularity=10s"
- "traefik.http.middlewares.sec-headers.headers.sslredirect=true"
- "traefik.http.middlewares.sec-headers.headers.stsseconds=31536000"
- "traefik.http.middlewares.sec-headers.headers.browserxssfilter=true"
- "traefik.http.middlewares.sec-headers.headers.contentTypeNosniff=true"
- "traefik.http.routers.n8n.middlewares=my-crowdsec,sec-headers"
volumes:
traefik_logs:
n8n_storage:
networks:
traefik_net:
driver: bridge
Jetzt noch den Key generieren und in die .env Datei eintragen:
docker exec -t crowdsec cscli bouncers add traefik-plugin
docker exec -t crowdsec cscli decisions list





Schreibe einen Kommentar