| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- ---
- kind: compose
- metadata:
- icon:
- provider: selfh
- id: n8n
- name: N8N
- description: 'N8n is a free and source-available workflow automation tool. It enables you to connect
- various apps and services to automate repetitive tasks without coding.
- With its user-friendly interface, you can create complex workflows by simply dragging
- and dropping nodes that represent different actions and triggers.
- ## Prerequisites
- - :info: By default, n8n uses SQLite as its database, which is suitable for small-scale or
- personal use. For production environments, it is recommended to use an external
- database like PostgreSQL or MySQL for better performance and reliability. This is also
- required when using Queue Mode.
- - :info: Queue mode allows n8n to handle a large number of workflows and tasks efficiently, by using
- multiple Workers, and Redis as the queue backend. This is essential for high-availability
- setups where multiple n8n instances work together. It also supports Queue Monitoring
- (when Prometheus metrics are enabled).
- ## Resources
- - **Project**: https://n8n.io/
- - **Documentation**: https://docs.n8n.io/
- - **GitHub**: https://github.com/n8n-io/n8n
- '
- version: 8-alpine
- author: Christian Lempa
- date: '2025-12-17'
- tags:
- - traefik
- - database
- draft: true
- schema: '1.2'
- spec:
- general:
- vars:
- service_name:
- default: n8n
- container_name:
- default: n8n-server
- container_hostname:
- default: n8n-server
- container_timezone:
- type: str
- container_loglevel:
- type: enum
- options:
- - debug
- - info
- - warn
- - error
- restart_policy:
- type: enum
- options:
- - unless-stopped
- - always
- - on-failure
- - 'no'
- default: unless-stopped
- required: true
- queue:
- title: Queue Mode
- description: Enable queue mode with Redis for scaled deployments
- toggle: queue_enabled
- needs: database_enabled=true
- vars:
- queue_enabled:
- type: bool
- description: Enable queue mode (requires Redis)
- default: false
- extra: Required for multiple workers and scaled deployments
- queue_redis_external:
- type: bool
- description: Use external Redis instance
- default: false
- needs: queue_enabled
- queue_redis_host:
- type: str
- description: Redis host
- default: redis
- needs: queue_enabled
- queue_redis_port:
- type: int
- description: Redis port
- default: 6379
- needs: queue_enabled
- queue_embedded_worker:
- type: bool
- description: Include embedded worker in this deployment
- default: false
- needs: queue_enabled
- extra: Add a worker service to this compose file. For production, use separate n8n-worker template.
- database:
- title: Database
- toggle: database_enabled
- description: External database configuration
- vars:
- database_enabled:
- type: bool
- description: Use external database
- default: false
- database_type:
- type: enum
- description: Database type
- options:
- - postgres
- - mysql
- default: postgres
- needs: database_enabled
- database_host:
- type: str
- description: Database host
- default: postgres
- needs: database_enabled
- database_port:
- type: int
- description: Database port
- default: 5432
- needs: database_enabled
- database_name:
- type: str
- description: Database name
- default: n8n
- needs: database_enabled
- database_user:
- type: str
- description: Database username
- default: n8n
- needs: database_enabled
- database_password:
- type: str
- description: Database password
- sensitive: true
- needs: database_enabled
- database_external:
- type: bool
- default: false
- description: Use external database
- security:
- title: Security
- vars:
- encryption_key:
- type: str
- description: N8N encryption key for credentials
- sensitive: true
- autogenerated: true
- extra: Keep this secure! Used to encrypt stored credentials.
- proxy_hops:
- type: int
- description: Number of proxy hops (X-Forwarded-For)
- default: 1
- extra: Set to 2 if behind multiple proxies (e.g., Cloudflare + Traefik)
- webhooks:
- title: Webhooks
- description: Webhook configuration for external triggers
- vars:
- webhook_url:
- type: url
- description: Webhook base URL
- default: ''
- extra: Optional separate webhook URL (e.g., https://webhooks.example.com/)
- metrics:
- title: Metrics
- toggle: metrics_enabled
- description: Prometheus metrics configuration
- vars:
- metrics_enabled:
- type: bool
- description: Enable Prometheus metrics
- default: false
- metrics_detailed:
- type: bool
- description: Include detailed metrics (workflows, nodes, API endpoints)
- default: false
- needs: metrics_enabled
- execution:
- title: Execution Settings
- vars:
- execution_save_on_error:
- type: enum
- description: Save execution data on error
- options:
- - all
- - none
- default: all
- execution_save_on_success:
- type: enum
- description: Save execution data on success
- options:
- - all
- - none
- default: none
- extra: Set to 'none' to reduce database size
- network:
- vars:
- network_mode:
- extra: For queue mode with workers, use 'bridge' with shared networks. Swarm only supports 'bridge'.
- network_name:
- default: n8n_network
- network_external:
- type: bool
- default: false
- description: Whether the network is external
- traefik:
- toggle: traefik_enabled
- vars:
- traefik_enabled:
- needs: network_mode=bridge
- traefik_host:
- default: n8n.home.arpa
- traefik_webhook_host:
- type: hostname
- description: Separate hostname for webhooks (optional)
- default: ''
- needs: traefik_enabled
- extra: Leave empty to use same host for webhooks
- traefik_network:
- type: str
- description: Traefik network name
- default: traefik
- needs: traefik_enabled
- traefik_network_external:
- type: bool
- description: Use external Traefik network
- default: true
- needs: traefik_enabled
- traefik_domain:
- type: str
- default: home.arpa
- required: true
- ports:
- vars:
- ports_http:
- description: External HTTP port
- type: int
- default: 5678
- needs:
- - traefik_enabled=false
- - network_mode=bridge
- swarm:
- toggle: swarm_enabled
- vars:
- swarm_enabled:
- needs: network_mode=bridge
- swarm_replicas:
- type: int
- description: Number of server replicas
- default: 1
- needs: swarm_enabled
- extra: For HA, set > 1 (requires queue mode)
- swarm_placement_host:
- type: str
- description: Target hostname for placement constraint
- default: ''
- extra: Constrains service to run on specific node by hostname
- swarm_placement_mode:
- type: str
- default: replicated
- description: The placement mode
- traefik_tls:
- vars:
- traefik_tls_certresolver:
- type: str
- default: cloudflare
- required: true
- traefik_tls_enabled:
- type: bool
- default: false
- description: Enable Traefik TLS
|