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 20:13] – [4.2 DNS-01 Challenge (Alternative TLS Ports)] psycore | linux:n8n:installation_compose [2024/01/13 22: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 | ||
| - | 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 | ||
| - | </ | ||