Hallo, die Webhook-URL wird in meiner selbstgehosteten n8n-Instanz nicht gesetzt. Ich habe einen Cloudflare-Tunnel eingerichtet (ich kann auf die n8n-Instanz zugreifen und mich über die öffentliche URL xx.domain.com:5678 anmelden) und ich weiß, dass er funktioniert. Selbst wenn das nicht funktionieren würde, hätte das keinen Einfluss auf mein Problem:
Unabhängig davon, was ich in meinen Umgebungsvariablen ändere, wird die OAuth-Redirect-URL nicht von der Standardeinstellung localhost:5678 auf meine öffentliche URL aktualisiert.
Hier sind die Umgebungsvariablen, die ich gesetzt habe:
N8N_EDITOR_BASE_URL=
N8N_PROTOCOL=https
N8N_HOST=
WEBHOOK_URL=https://
N8N_PROXY_HOPS=1
Ich habe das Gefühl, dass ich mich im Kreis drehe. Entweder übersehe ich etwas Offensichtliches, das mir hoffentlich jemand zeigen kann, oder ich muss alles neu anfangen, weil ich in den letzten 3 Wochen in ein Kaninchenloch geraten bin und versuche, das herauszufinden.
Hallo @minkeyboy2004, willkommen!
Hast du bei der npm-Version von n8n versucht, diese Variablen in der Shell zu exportieren, bevor du n8n startest? Führe diese Befehle aus:
und führe dann n8n start aus. Das ist meistens die Lösung, da bei n8n die gesetzten Umgebungsvariablen manchmal nicht erreichbar sind. Versuche das und berichte mir, wenn es nicht funktioniert.
Stelle sicher, dass du diese Variablen in Übereinstimmung mit folgendem setzt:
Entschuldigung, ich hätte wahrscheinlich erwähnen sollen, wie ich sie gesetzt habe! Ja, ich führe sie mit “export” davor aus und speichere sie nicht in einer Datei. Wenn ich “env” in der CLI ausführe, bekomme ich alle diese Variablen mit meinen definierten Werten zurück und habe die Instanz nach jeder Änderung gestoppt und dann neu gestartet, aber ohne Erfolg.
Willkommen @minkeyboy2004 in unserer Community! Ich bin Jay und ich bin ein n8n-verifizierter Creator.
Bei npm install müssen die Variablen in einer .env-Datei vorhanden sein oder in derselben Shell-Sitzung gesetzt werden, bevor du n8n startest. Die zuverlässigste Methode ist, eine ~/.n8n/.env-Datei zu erstellen (n8n erkennt sie automatisch) oder sie in deiner systemd-Service-Datei unter [Service] mit Environment="WEBHOOK_URL=https://yourdomain.com/" zu setzen. Außerdem ist die wichtigste Variable WEBHOOK_URL, nicht N8N_HOST. Setze WEBHOOK_URL=https://yourdomain.com/ (mit nachfolgendem Schrägstrich) und starte n8n neu. Überprüfe nach dem Neustart Einstellungen > n8n API in der Benutzeroberfläche, um zu bestätigen, dass die Webhook-URL aktualisiert wurde.
Ich habe getan, was du vorgeschlagen hast, und eine Umgebungsdatei unter dem n8n-Verzeichnis ~/.n8n/.env erstellt und n8n neu gestartet, aber die Rückruf-URL zeigt immer noch “localhost” an
Ich habe auch versucht, N8N_HOST und Editor Base URL zu entfernen, da ich diesen Screenshot gemacht habe, und es nach jeder Änderung neu gestartet, aber es zeigt immer noch localhost:5678
Ich denke, du hast es gelöst! Ich verwende PM2 Process Manager, um Live-Metriken der App zu erhalten, ohne mich auf dem Server anmelden und überprüfen zu müssen. Normalerweise würde ich es mit “pm2 start n8n” starten, aber seit ich die .env-Datei erstellt habe und es einfach mit “n8n” starte, scheint es zu funktionieren. Was auch immer PM2 da tut, bricht es offensichtlich.
Für alle anderen, die das in Zukunft finden. Es scheint, dass PM2 n8n davon abhielt, die Umgebungsvariablen aufzunehmen. Falls ich herausfinde, wie ich PM2 verwenden kann und dabei die Umgebungsvariablen setze, werde ich das aktualisieren.
Ah, wie toll @minkeyboy2004
Das freut mich sehr! Ich danke dir, dass du die Antwort als Lösung markiert hast, damit andere Mitglieder leichter Hilfe finden können.
Komm jederzeit zurück, wenn du Hilfe brauchst
@minkeyboy2004 freut mich, dass es bei dir funktioniert! Beim PM2 + env vars Problem ist die Lösung, eine PM2 ecosystem-Datei (ecosystem.config.js) zu verwenden und deine env vars dort unter dem env Schlüssel einzutragen, dann führe pm2 start ecosystem.config.js aus. So übergibt PM2 die Variablen direkt an den Prozess, statt sich darauf zu verlassen, dass dieser eine .env-Datei liest, was PM2 standardmäßig nicht tut.