template.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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: 1.118.1
  27. author: Christian Lempa
  28. date: '2025-11-02'
  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. queue:
  44. title: "Queue Mode"
  45. description: "Enable queue mode with Redis for scaled deployments"
  46. toggle: queue_enabled
  47. needs: "database_enabled=true"
  48. vars:
  49. queue_enabled:
  50. type: bool
  51. description: "Enable queue mode (requires Redis)"
  52. default: false
  53. extra: "Required for multiple workers and scaled deployments"
  54. queue_redis_external:
  55. type: bool
  56. description: "Use external Redis instance"
  57. default: false
  58. needs: "queue_enabled"
  59. queue_redis_host:
  60. type: str
  61. description: "Redis host"
  62. default: "redis"
  63. needs: "queue_enabled"
  64. queue_redis_port:
  65. type: int
  66. description: "Redis port"
  67. default: 6379
  68. needs: "queue_enabled"
  69. queue_embedded_worker:
  70. type: bool
  71. description: "Include embedded worker in this deployment"
  72. default: false
  73. needs: "queue_enabled"
  74. extra: "Add a worker service to this compose file. For production, use separate n8n-worker template."
  75. database:
  76. title: "Database"
  77. description: "External database configuration"
  78. vars:
  79. database_enabled:
  80. type: bool
  81. description: "Use external database"
  82. default: false
  83. database_type:
  84. type: enum
  85. description: "Database type"
  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: str
  113. description: "Database password"
  114. sensitive: true
  115. needs: "database_enabled"
  116. security:
  117. title: "Security"
  118. vars:
  119. encryption_key:
  120. type: str
  121. description: "N8N encryption key for credentials"
  122. sensitive: true
  123. autogenerated: true
  124. extra: "Keep this secure! Used to encrypt stored credentials."
  125. proxy_hops:
  126. type: int
  127. description: "Number of proxy hops (X-Forwarded-For)"
  128. default: 1
  129. extra: "Set to 2 if behind multiple proxies (e.g., Cloudflare + Traefik)"
  130. webhooks:
  131. title: "Webhooks"
  132. description: "Webhook configuration for external triggers"
  133. vars:
  134. webhook_url:
  135. type: url
  136. description: "Webhook base URL"
  137. default: ""
  138. extra: "Optional separate webhook URL (e.g., https://webhooks.example.com/)"
  139. metrics:
  140. title: "Metrics"
  141. description: "Prometheus metrics configuration"
  142. vars:
  143. metrics_enabled:
  144. type: bool
  145. description: "Enable Prometheus metrics"
  146. default: false
  147. metrics_detailed:
  148. type: bool
  149. description: "Include detailed metrics (workflows, nodes, API endpoints)"
  150. default: false
  151. needs: "metrics_enabled"
  152. execution:
  153. title: "Execution Settings"
  154. vars:
  155. execution_save_on_error:
  156. type: enum
  157. description: "Save execution data on error"
  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. options:
  166. - "all"
  167. - "none"
  168. default: "none"
  169. extra: "Set to 'none' to reduce database size"
  170. network:
  171. vars:
  172. network_mode:
  173. extra: "For queue mode with workers, use 'bridge' with shared networks. Swarm only supports 'bridge'."
  174. network_name:
  175. default: "n8n_network"
  176. traefik:
  177. vars:
  178. traefik_enabled:
  179. needs: "network_mode=bridge"
  180. traefik_host:
  181. default: "n8n.home.arpa"
  182. traefik_webhook_host:
  183. type: hostname
  184. description: "Separate hostname for webhooks (optional)"
  185. default: ""
  186. needs: "traefik_enabled"
  187. extra: "Leave empty to use same host for webhooks"
  188. traefik_network:
  189. type: str
  190. description: "Traefik network name"
  191. default: "traefik"
  192. needs: "traefik_enabled"
  193. traefik_network_external:
  194. type: bool
  195. description: "Use external Traefik network"
  196. default: true
  197. needs: "traefik_enabled"
  198. ports:
  199. vars:
  200. ports_http:
  201. description: "External HTTP port"
  202. type: int
  203. default: 5678
  204. needs: ["traefik_enabled=false", "network_mode=bridge"]
  205. swarm:
  206. vars:
  207. swarm_enabled:
  208. needs: "network_mode=bridge"
  209. swarm_replicas:
  210. type: int
  211. description: "Number of server replicas"
  212. default: 1
  213. needs: "swarm_enabled"
  214. extra: "For HA, set > 1 (requires queue mode)"