template.yaml 6.5 KB

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