n8n ist ein immer beliebter werdendes Tool. Mit n8n können verschiedene Dienste miteinander kombiniert werden und Arbeitsschritte in sogenannten Workflows automatisiert werden. So gibt es die verschiedenste Workflows: z.B. E-Mails anhand des Inhalts automatisch in Ordner verschieben / mit Labels versehen, Webseiten überwachen und Preisänderungen erfassen usw.
Hier eine Anleitung, wie man n8n auf einem Hetzner vServer* installieren kann.
Voraussetzung:
-Debian / Ubuntu
-ca. 2 Kerne, mind. 4 GB SSD, 2 GB RAM (anhängig von den der Anzahl aktiver Workflows) – z.B. von Hetzner*
-eine Domain (z.B. aus dem Webhosting-Paket bei All-Inkl*)
1 .Schritt
Zunächst registrierst du dich bei Hetzner und buchst einen virtuellen Server. Nutze dafür gerne diesen Link*, dann erhältst du ein Guthaben von 20 Euro. Grundsätzlich kannst du aber einen der vielen anderen vServer-Angebote von anderen Anbietern nutzen.
In meinem Fall nehme ich einen vServer auf ARM-Basis „CAX11“ in Falkenstein. Dieser hat 2 VCPUS und 4GB, sowie 40 GB RAM. Für den Anfang reicht das mit Sicherheit. Für 4,51 Euro kann man da nichts falsch machen. Falls später noch mehr Leistung benötigt werden sollte, ist ein Upgrade leicht und ohne Neuinstallation möglich.
Nachdem du den Server mit der App „Docker-CE“ angelegt hast, logge dich per SSH als „root“ ein. Falls du noch keine SSH-Software hast, kann ich Termius (Windows/Mac) empfehlen. Komplett kostenlos ist auch Putty für Windows sehr beliebt.
Nach dem Login updaten wir erst einmal Ubuntu:
apt-get update && apt-get upgrade -y
danach starten wir den Server mit
reboot
neu.
2. Schritt
Falls du nicht einen Server mit vorinstalliertem Docker wählst, installiere zunächst docker und docker-compose:
3. Schritt
Gehe in das home-Verzeichnis mit
cd ..
und wechsle mit
cd home
und erstelle ein Verzeichnis und wechsle rein:
mkdir npm
cd npm
Erstelle dann eine yml.-Datei
nano docker-compose.yml
und füge folgenden Text ein
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
# Mysql/Maria connection parameters:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
MARIADB_AUTO_UPGRADE: '1'
volumes:
- ./mysql:/var/lib/mysql
Nun ist der Proxy Manager mit GUI installiert. Test den Zugriff, indem du die auf den Server gerichtete Domain oder die IP-Adresse in den Browser folgendermaßen eingibst: http://IP_oder_DOMAIN:81
Ggf. musst du dem Browser bestätigen, dass du eine ungesicherte Verbindung nutzen möchtest, da noch das SSL-Zertifikat fehlt.
4. Schritt
Als nächstes installieren wir n8n.
Wechsle dazu wieder in das home-Verzeichnis, erstelle das n8n-Verzeichnis und wechsle hinein:
cd ..
mkdir n8n
cd n8n
Nun müssen drei Dateien erstellt werden.
nano .env
mit folgendem Inhalt:
POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword
Ersetze die Passwörter nach eigenem Wunsch. Erstelle
nano docker-compose.yml
mit dem Inhalt
version: '3.8'
volumes:
db_storage:
n8n_storage:
services:
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- 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
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
ports:
- 5678:5678
links:
- postgres
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
und die Datei
nano init-data.sh
mit dem 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
Führe die Installation von n8n aus mit
docker-compose up -d
Nach der Installation ist der n8n-Server unter Port 5678 erreichbar. Jedoch erlaubt n8n nicht, dass man die GUI über die IP-Adresse besucht. Daher verknüpfen wir über den Proxy Manager eine Domain mit n8n.
Dazu erstellen wir einen Proxyhost. Z.B. n8n.domain.de. Gerichtet an localhost mit Port 5678 im Schema http. Im Reiter Details aktivieren wir alle Häckchen. Im SSL-Reiter stellen wir „Force SSL“ und „HTTP/2-Support“ an. Zudem muss eine E-Mail-Adresse eingegeben werden. Nach dem Absenden wird ein SSL-Zertifikat erstellt. n8n sollte nun unter der neu erstellten Domain erreichbar sein.
Bei Fragen schreibt mir gerne in die Kommentare. Demnächst erstelle ich ein Video dazu, welches ich hier ebenso verlinke.
Schreibe einen Kommentar