template.yaml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. ---
  2. kind: compose
  3. metadata:
  4. icon:
  5. provider: selfh
  6. id: n8n
  7. name: N8N
  8. description: 'N8n is a free and source-available workflow automation tool. It enables you to connect
  9. various apps and services to automate repetitive tasks without coding.
  10. With its user-friendly interface, you can create complex workflows by simply dragging
  11. and dropping nodes that represent different actions and triggers.
  12. ## Prerequisites
  13. - :info: By default, n8n uses SQLite as its database, which is suitable for small-scale or
  14. personal use. For production environments, it is recommended to use an external
  15. database like PostgreSQL or MySQL for better performance and reliability. This is also
  16. required when using Queue Mode.
  17. - :info: Queue mode allows n8n to handle a large number of workflows and tasks efficiently, by using
  18. multiple Workers, and Redis as the queue backend. This is essential for high-availability
  19. setups where multiple n8n instances work together. It also supports Queue Monitoring
  20. (when Prometheus metrics are enabled).
  21. ## Resources
  22. - **Project**: https://n8n.io/
  23. - **Documentation**: https://docs.n8n.io/
  24. - **GitHub**: https://github.com/n8n-io/n8n
  25. '
  26. version: 8-alpine
  27. author: Christian Lempa
  28. date: '2025-12-17'
  29. tags:
  30. - traefik
  31. - database
  32. draft: true
  33. schema: '1.2'
  34. spec:
  35. general:
  36. vars:
  37. service_name:
  38. default: n8n
  39. container_name:
  40. default: n8n-server
  41. container_hostname:
  42. default: n8n-server
  43. container_timezone:
  44. type: str
  45. container_loglevel:
  46. type: enum
  47. options:
  48. - debug
  49. - info
  50. - warn
  51. - error
  52. restart_policy:
  53. type: enum
  54. options:
  55. - unless-stopped
  56. - always
  57. - on-failure
  58. - 'no'
  59. default: unless-stopped
  60. required: true
  61. queue:
  62. title: Queue Mode
  63. description: Enable queue mode with Redis for scaled deployments
  64. toggle: queue_enabled
  65. needs: database_enabled=true
  66. vars:
  67. queue_enabled:
  68. type: bool
  69. description: Enable queue mode (requires Redis)
  70. default: false
  71. extra: Required for multiple workers and scaled deployments
  72. queue_redis_external:
  73. type: bool
  74. description: Use external Redis instance
  75. default: false
  76. needs: queue_enabled
  77. queue_redis_host:
  78. type: str
  79. description: Redis host
  80. default: redis
  81. needs: queue_enabled
  82. queue_redis_port:
  83. type: int
  84. description: Redis port
  85. default: 6379
  86. needs: queue_enabled
  87. queue_embedded_worker:
  88. type: bool
  89. description: Include embedded worker in this deployment
  90. default: false
  91. needs: queue_enabled
  92. extra: Add a worker service to this compose file. For production, use separate n8n-worker template.
  93. database:
  94. title: Database
  95. description: External database configuration
  96. vars:
  97. database_enabled:
  98. type: bool
  99. description: Use external database
  100. default: false
  101. database_type:
  102. type: enum
  103. description: Database type
  104. options:
  105. - postgres
  106. - mysql
  107. default: postgres
  108. needs: database_enabled
  109. database_host:
  110. type: str
  111. description: Database host
  112. default: postgres
  113. needs: database_enabled
  114. database_port:
  115. type: int
  116. description: Database port
  117. default: 5432
  118. needs: database_enabled
  119. database_name:
  120. type: str
  121. description: Database name
  122. default: n8n
  123. needs: database_enabled
  124. database_user:
  125. type: str
  126. description: Database username
  127. default: n8n
  128. needs: database_enabled
  129. database_password:
  130. type: str
  131. description: Database password
  132. sensitive: true
  133. needs: database_enabled
  134. database_external:
  135. type: bool
  136. default: false
  137. description: Use external database
  138. security:
  139. title: Security
  140. vars:
  141. encryption_key:
  142. type: str
  143. description: N8N encryption key for credentials
  144. sensitive: true
  145. autogenerated: true
  146. extra: Keep this secure! Used to encrypt stored credentials.
  147. proxy_hops:
  148. type: int
  149. description: Number of proxy hops (X-Forwarded-For)
  150. default: 1
  151. extra: Set to 2 if behind multiple proxies (e.g., Cloudflare + Traefik)
  152. webhooks:
  153. title: Webhooks
  154. description: Webhook configuration for external triggers
  155. vars:
  156. webhook_url:
  157. type: url
  158. description: Webhook base URL
  159. default: ''
  160. extra: Optional separate webhook URL (e.g., https://webhooks.example.com/)
  161. metrics:
  162. title: Metrics
  163. description: Prometheus metrics configuration
  164. vars:
  165. metrics_enabled:
  166. type: bool
  167. description: Enable Prometheus metrics
  168. default: false
  169. metrics_detailed:
  170. type: bool
  171. description: Include detailed metrics (workflows, nodes, API endpoints)
  172. default: false
  173. needs: metrics_enabled
  174. execution:
  175. title: Execution Settings
  176. vars:
  177. execution_save_on_error:
  178. type: enum
  179. description: Save execution data on error
  180. options:
  181. - all
  182. - none
  183. default: all
  184. execution_save_on_success:
  185. type: enum
  186. description: Save execution data on success
  187. options:
  188. - all
  189. - none
  190. default: none
  191. extra: Set to 'none' to reduce database size
  192. network:
  193. vars:
  194. network_mode:
  195. extra: For queue mode with workers, use 'bridge' with shared networks. Swarm only supports 'bridge'.
  196. network_name:
  197. default: n8n_network
  198. network_external:
  199. type: bool
  200. default: false
  201. description: Whether the network is external
  202. traefik:
  203. vars:
  204. traefik_enabled:
  205. needs: network_mode=bridge
  206. traefik_host:
  207. default: n8n.home.arpa
  208. traefik_webhook_host:
  209. type: hostname
  210. description: Separate hostname for webhooks (optional)
  211. default: ''
  212. needs: traefik_enabled
  213. extra: Leave empty to use same host for webhooks
  214. traefik_network:
  215. type: str
  216. description: Traefik network name
  217. default: traefik
  218. needs: traefik_enabled
  219. traefik_network_external:
  220. type: bool
  221. description: Use external Traefik network
  222. default: true
  223. needs: traefik_enabled
  224. traefik_domain:
  225. type: str
  226. default: home.arpa
  227. required: true
  228. ports:
  229. vars:
  230. ports_http:
  231. description: External HTTP port
  232. type: int
  233. default: 5678
  234. needs:
  235. - traefik_enabled=false
  236. - network_mode=bridge
  237. swarm:
  238. vars:
  239. swarm_enabled:
  240. needs: network_mode=bridge
  241. swarm_replicas:
  242. type: int
  243. description: Number of server replicas
  244. default: 1
  245. needs: swarm_enabled
  246. extra: For HA, set > 1 (requires queue mode)
  247. swarm_placement_host:
  248. type: str
  249. description: Target hostname for placement constraint
  250. default: ''
  251. extra: Constrains service to run on specific node by hostname
  252. swarm_placement_mode:
  253. type: str
  254. default: replicated
  255. description: The placement mode
  256. traefik_tls:
  257. vars:
  258. traefik_tls_certresolver:
  259. type: str
  260. default: cloudflare
  261. required: true
  262. traefik_tls_enabled:
  263. type: bool
  264. default: false
  265. description: Enable Traefik TLS