From 1659e756d234aa79326d91e4df3d762a5e28430d Mon Sep 17 00:00:00 2001 From: Bryan Joshua Pedini Date: Wed, 3 Dec 2025 09:38:40 +0100 Subject: [PATCH] n8n deployment --- .gitignore | 2 ++ docker-compose.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ example.env | 16 ++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 .gitignore create mode 100644 docker-compose.yml create mode 100644 example.env diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb58dee --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +data diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8e72dfc --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +--- +services: + n8n: + image: docker.n8n.io/n8nio/n8n:${N8N_VERSION} + restart: unless-stopped + environment: + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + - N8N_HOST=${N8N_HOST} + - N8N_PORT=${N8N_PORT} + - N8N_PROTOCOL=https + - N8N_RUNNERS_ENABLED=true + - NODE_ENV=production + - WEBHOOK_URL=https://${N8N_HOST}/ + - GENERIC_TIMEZONE=${TZ} + - TZ=${TZ} + labels: + - traefik.enable=${TRAEFIK_ENABLED} + - traefik.docker.network=${TRAEFIK_NETWORK} + ### Section HTTP + - traefik.http.routers.http-${TRAEFIK_ROUTER}.entrypoints=http + # redirect to HTTPS only + - traefik.http.routers.http-${TRAEFIK_ROUTER}.middlewares=http-to-https + - traefik.http.routers.http-${TRAEFIK_ROUTER}.rule=Host(`${TRAEFIK_MATCHRULE}`) + ### Section HTTPS + - traefik.http.routers.https-${TRAEFIK_ROUTER}.entrypoints=https + # configure the exposed service + - traefik.http.routers.https-${TRAEFIK_ROUTER}.middlewares=hsts + - traefik.http.routers.https-${TRAEFIK_ROUTER}.rule=Host(`${TRAEFIK_MATCHRULE}`) + # of course, enable TLS and it's certificate provider + - traefik.http.routers.https-${TRAEFIK_ROUTER}.tls=${TRAEFIK_TLSENABLED} + - traefik.http.routers.https-${TRAEFIK_ROUTER}.tls.certresolver=${TRAEFIK_CERTRESOLVER} + # specify a service so a custom port can be used + - traefik.http.services.${TRAEFIK_SERVICE}.loadbalancer.server.port=${TRAEFIK_SERVICE_PORT} + networks: + - traefik + volumes: + - ${N8N_DATA}/data:/home/node/.n8n + - ${N8N_DATA}/files:/files + +networks: + traefik: + external: true + name: ${TRAEFIK_NETWORK} diff --git a/example.env b/example.env new file mode 100644 index 0000000..a4d9c96 --- /dev/null +++ b/example.env @@ -0,0 +1,16 @@ +# Træfik +TRAEFIK_ENABLED=true +TRAEFIK_NETWORK=traefik +TRAEFIK_ROUTER=n8n_example_com +TRAEFIK_MATCHRULE=n8n.example.com +TRAEFIK_TLSENABLED=true +TRAEFIK_CERTRESOLVER=letsencrypt +TRAEFIK_SERVICE=n8n_example_com +TRAEFIK_SERVICE_PORT=80 + +# N8N +N8N_VERSION=latest +N8N_HOST=n8n.example.com +N8N_PORT=80 +TZ=Europe/Rome +N8N_DATA=./data