My n8n docker compose file (without caddy, traefik, nginx, etc. for SSL)
This is my docker compose file for n8n. I use certs signed by my own private CA via a mounted folder.
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=change-me
- N8N_HOST=HOST
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://HOST:5678/
- GENERIC_TIMEZONE=Europe/Berlin
- N8N_SSL_CERT=/certs/HOST.crt
- N8N_SSL_KEY=/certs/HOST.key
# Enable nodes "Execute Command" and "Local File Trigger"
- NODES_EXCLUDE=[]
volumes:
- /opt/docker/n8n/n8n_data:/home/node/.n8n
- /opt/docker/n8n/local-files:/files
# Mount cert-dir read-only for certificates
- /opt/docker/certs/:/certs:ro
healthcheck:
# No curl in n8n container
test: ["CMD-SHELL", "wget --no-check-certificate --quiet -O - https://HOST:5678/healthz | grep -q '\"ok\"' || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s