Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:n8n:installation_compose [2023/08/06 22:13] – [4.1 HTTP-01 Challenge (Standard TLS Port 443)] psycore | linux:n8n:installation_compose [2024/01/13 23:45] (aktuell) – gelöscht psycore | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== n8n Installation mit Docker Compose ====== | ||
- | n8n Installation mit Docker Compose, Let's Encrypt [[wpde> | ||
- | |||
- | ===== 1. Docker Installation (Debian) ===== | ||
- | |||
- | ==== 1.1 alte Versionen deinstallieren ==== | ||
- | |||
- | <code bash> | ||
- | sudo apt-get remove docker docker-engine docker.io containerd runc | ||
- | </ | ||
- | |||
- | ==== 1.2 Repo Installation ==== | ||
- | |||
- | === 1.2.1 Update apt und HTTPS aktivieren === | ||
- | |||
- | <code bash> | ||
- | sudo apt-get update | ||
- | |||
- | sudo apt-get install \ | ||
- | ca-certificates \ | ||
- | curl \ | ||
- | gnupg \ | ||
- | lsb-release | ||
- | | ||
- | sudo mkdir -m 0755 -p / | ||
- | curl -fsSL https:// | ||
- | echo \ | ||
- | "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
- | $(lsb_release -cs) stable" | ||
- | </ | ||
- | | ||
- | === 1.2.2 Docker GPG Key hinzufügen === | ||
- | |||
- | <code bash> | ||
- | sudo mkdir -m 0755 -p / | ||
- | curl -fsSL https:// | ||
- | </ | ||
- | |||
- | === 1.2.3 Repo Setup === | ||
- | |||
- | <code bash> | ||
- | echo \ | ||
- | "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
- | $(lsb_release -cs) stable" | ||
- | </ | ||
- | |||
- | ==== 1.3 Docker Engine installieren ==== | ||
- | |||
- | <code bash> | ||
- | sudo apt-get update | ||
- | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
- | </ | ||
- | |||
- | ===== 2. Docker Compose installieren ===== | ||
- | |||
- | <code bash> | ||
- | sudo apt-get install docker-compose-plugin | ||
- | </ | ||
- | |||
- | ===== 3. DNS Eintrag ===== | ||
- | |||
- | <code bash> | ||
- | Type: A | ||
- | Name: n8n | ||
- | IP address: < | ||
- | </ | ||
- | |||
- | ===== 4. Docker Compose Datei erstellen ===== | ||
- | |||
- | < | ||
- | |||
- | ==== 4.1 HTTP-01 Challenge (Standard TLS Port 443) ==== | ||
- | |||
- | < | ||
- | <code bash> | ||
- | version: " | ||
- | |||
- | services: | ||
- | traefik: | ||
- | image: " | ||
- | restart: always | ||
- | command: | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | ports: | ||
- | - " | ||
- | - " | ||
- | volumes: | ||
- | - ${DATA_FOLDER}/ | ||
- | - / | ||
- | |||
- | n8n: | ||
- | image: n8nio/n8n | ||
- | restart: always | ||
- | ports: | ||
- | - " | ||
- | labels: | ||
- | - traefik.enable=true | ||
- | - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) | ||
- | - traefik.http.routers.n8n.tls=true | ||
- | - traefik.http.routers.n8n.entrypoints=web, | ||
- | - traefik.http.routers.n8n.tls.certresolver=mytlschallenge | ||
- | - traefik.http.middlewares.n8n.headers.SSLRedirect=true | ||
- | - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 | ||
- | - traefik.http.middlewares.n8n.headers.browserXSSFilter=true | ||
- | - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true | ||
- | - traefik.http.middlewares.n8n.headers.forceSTSHeader=true | ||
- | - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} | ||
- | - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true | ||
- | - traefik.http.middlewares.n8n.headers.STSPreload=true | ||
- | - traefik.http.routers.n8n.middlewares=n8n@docker | ||
- | environment: | ||
- | - N8N_BASIC_AUTH_ACTIVE=true | ||
- | - N8N_BASIC_AUTH_USER | ||
- | - N8N_BASIC_AUTH_PASSWORD | ||
- | - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} | ||
- | - N8N_PORT=5678 | ||
- | - N8N_PROTOCOL=https | ||
- | - NODE_ENV=production | ||
- | - WEBHOOK_URL=https:// | ||
- | - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} | ||
- | # this section reduces the database size and speed up performance, | ||
- | - EXECUTIONS_DATA_SAVE_ON_ERROR=all | ||
- | - EXECUTIONS_DATA_SAVE_ON_SUCCESS=none | ||
- | - EXECUTIONS_DATA_SAVE_ON_PROGRESS=true | ||
- | - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false | ||
- | - EXECUTIONS_DATA_PRUNE=true | ||
- | - EXECUTIONS_DATA_MAX_AGE=336 | ||
- | - EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000 | ||
- | - DB_SQLITE_VACUUM_ON_STARTUP=true | ||
- | volumes: | ||
- | - ${DATA_FOLDER}/ | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== 4.2 DNS-01 Challenge (Alternative TLS Ports) ==== | ||
- | |||
- | Hier muss der [[wpde> | ||
- | |||
- | < | ||
- | <code bash> | ||
- | version: " | ||
- | |||
- | services: | ||
- | traefik: | ||
- | image: " | ||
- | restart: always | ||
- | command: | ||
- | #- " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | #- " | ||
- | - " | ||
- | - " | ||
- | ports: | ||
- | - " | ||
- | - " | ||
- | environment: | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | - " | ||
- | volumes: | ||
- | - ${DATA_FOLDER}/ | ||
- | - / | ||
- | |||
- | n8n: | ||
- | image: n8nio/n8n | ||
- | restart: always | ||
- | ports: | ||
- | - " | ||
- | labels: | ||
- | - traefik.enable=true | ||
- | - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) | ||
- | - traefik.http.routers.n8n.tls=true | ||
- | - traefik.http.routers.n8n.entrypoints=web, | ||
- | - traefik.http.routers.n8n.tls.certresolver=myresolver | ||
- | - traefik.http.middlewares.n8n.headers.SSLRedirect=true | ||
- | - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 | ||
- | - traefik.http.middlewares.n8n.headers.browserXSSFilter=true | ||
- | - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true | ||
- | - traefik.http.middlewares.n8n.headers.forceSTSHeader=true | ||
- | - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} | ||
- | - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true | ||
- | - traefik.http.middlewares.n8n.headers.STSPreload=true | ||
- | - traefik.http.routers.n8n.middlewares=n8n@docker | ||
- | environment: | ||
- | - N8N_BASIC_AUTH_ACTIVE=true | ||
- | - N8N_BASIC_AUTH_USER | ||
- | - N8N_BASIC_AUTH_PASSWORD | ||
- | - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} | ||
- | - N8N_PORT=5678 | ||
- | - N8N_PROTOCOL=https | ||
- | - NODE_ENV=production | ||
- | - WEBHOOK_URL=https:// | ||
- | - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} | ||
- | # this section reduces the database size and speed up performance, | ||
- | - EXECUTIONS_DATA_SAVE_ON_ERROR=all | ||
- | - EXECUTIONS_DATA_SAVE_ON_SUCCESS=none | ||
- | - EXECUTIONS_DATA_SAVE_ON_PROGRESS=true | ||
- | - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false | ||
- | - EXECUTIONS_DATA_PRUNE=true | ||
- | - EXECUTIONS_DATA_MAX_AGE=336 | ||
- | - EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000 | ||
- | - DB_SQLITE_VACUUM_ON_STARTUP=true | ||
- | #- N8N_LOG_LEVEL=debug | ||
- | #- N8N_LOG_OUTPUT=console | ||
- | volumes: | ||
- | - ${DATA_FOLDER}/ | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== 5. .env Datei erstellen ===== | ||
- | |||
- | < | ||
- | |||
- | <code bash> | ||
- | # Folder where data should be saved | ||
- | DATA_FOLDER=/ | ||
- | |||
- | # The top level domain to serve from | ||
- | DOMAIN_NAME=example.com | ||
- | |||
- | # The subdomain to serve from | ||
- | SUBDOMAIN=n8n | ||
- | |||
- | # DOMAIN_NAME and SUBDOMAIN combined decide where n8n will be reachable from | ||
- | # above example would result in: https:// | ||
- | |||
- | # The user name to use for authentication - IMPORTANT ALWAYS CHANGE! | ||
- | N8N_BASIC_AUTH_USER=user | ||
- | |||
- | # The password to use for authentication - IMPORTANT ALWAYS CHANGE! | ||
- | N8N_BASIC_AUTH_PASSWORD=password | ||
- | |||
- | # Optional timezone to set which gets used by Cron-Node by default | ||
- | # If not set New York time will be used | ||
- | GENERIC_TIMEZONE=Europe/ | ||
- | |||
- | # The email address to use for the SSL certificate creation | ||
- | SSL_EMAIL=user@example.com | ||
- | </ | ||
- | |||
- | ===== 6. Daten Verzeichnis erstellen ===== | ||
- | |||
- | <code bash> | ||
- | mkdir / | ||
- | </ | ||
- | |||
- | ===== 7. Starten und Stoppen ===== | ||
- | |||
- | ==== 7.1 Start ==== | ||
- | |||
- | <code bash> | ||
- | sudo docker compose up -d | ||
- | </ | ||
- | |||
- | === 7.1.1 Start mit Ausgabe === | ||
- | |||
- | <code bash> | ||
- | sudo docker compose up | ||
- | </ | ||
- | |||
- | ==== 7.2 Stopp ==== | ||
- | |||
- | <code bash> | ||
- | sudo docker compose stop | ||
- | </ | ||
- | |||
- | ===== 8. Update ===== | ||
- | |||
- | ==== 8.1 Image aktualisieren ==== | ||
- | |||
- | <code bash> | ||
- | docker pull n8nio/n8n | ||
- | </ | ||
- | |||
- | ==== 8.2 Neustart ==== | ||
- | |||
- | <code bash> | ||
- | # Stop current setup | ||
- | sudo docker compose stop | ||
- | # Delete it (will only delete the docker-containers, | ||
- | sudo docker compose rm | ||
- | # Then start it again, in ingteractive mode to check for errors | ||
- | sudo docker compose up | ||
- | </ | ||
- | |||
- | Wenn alles fehlerfrei läuft, den Prozess mit STRG+C beenden und im Daemon Modus starten | ||
- | |||
- | <code bash> | ||
- | sudo docker compose up -d | ||
- | </ |