version: '3.8' networks: traefik-public: external: true volumes: n8n_data: services: n8n: image: n8nio/n8n:latest volumes: - n8n_data:/home/node/.n8n - /var/run/docker.sock:/var/run/docker.sock networks: - traefik-public environment: - N8N_HOST=n8n.sj98.duckdns.org - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://n8n.sj98.duckdns.org/ healthcheck: test: ["CMD-SHELL", "wget -q --spider http://localhost:5678/healthz || exit 1"] interval: 30s timeout: 10s retries: 3 deploy: placement: constraints: - node.role == manager resources: limits: memory: 1G cpus: '0.5' reservations: memory: 256M cpus: '0.1' restart_policy: condition: on-failure delay: 5s max_attempts: 3 labels: - "traefik.enable=true" - "traefik.http.routers.n8n.rule=Host(`n8n.sj98.duckdns.org`)" - "traefik.http.routers.n8n.entrypoints=websecure" - "traefik.http.routers.n8n.tls.certresolver=leresolver" - "traefik.http.services.n8n.loadbalancer.server.port=5678" - "traefik.docker.network=traefik-public" logging: driver: "json-file" options: max-size: "10m" max-file: "3"