template.yaml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  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. toggle: database_enabled
  96. description: External database configuration
  97. vars:
  98. database_enabled:
  99. type: bool
  100. description: Use external database
  101. default: false
  102. database_type:
  103. type: enum
  104. description: Database type
  105. options:
  106. - postgres
  107. - mysql
  108. default: postgres
  109. needs: database_enabled
  110. database_host:
  111. type: str
  112. description: Database host
  113. default: postgres
  114. needs: database_enabled
  115. database_port:
  116. type: int
  117. description: Database port
  118. default: 5432
  119. needs: database_enabled
  120. database_name:
  121. type: str
  122. description: Database name
  123. default: n8n
  124. needs: database_enabled
  125. database_user:
  126. type: str
  127. description: Database username
  128. default: n8n
  129. needs: database_enabled
  130. database_password:
  131. type: str
  132. description: Database password
  133. sensitive: true
  134. needs: database_enabled
  135. database_external:
  136. type: bool
  137. default: false
  138. description: Use external database
  139. security:
  140. title: Security
  141. vars:
  142. encryption_key:
  143. type: str
  144. description: N8N encryption key for credentials
  145. sensitive: true
  146. autogenerated: true
  147. extra: Keep this secure! Used to encrypt stored credentials.
  148. proxy_hops:
  149. type: int
  150. description: Number of proxy hops (X-Forwarded-For)
  151. default: 1
  152. extra: Set to 2 if behind multiple proxies (e.g., Cloudflare + Traefik)
  153. webhooks:
  154. title: Webhooks
  155. description: Webhook configuration for external triggers
  156. vars:
  157. webhook_url:
  158. type: url
  159. description: Webhook base URL
  160. default: ''
  161. extra: Optional separate webhook URL (e.g., https://webhooks.example.com/)
  162. metrics:
  163. title: Metrics
  164. toggle: metrics_enabled
  165. description: Prometheus metrics configuration
  166. vars:
  167. metrics_enabled:
  168. type: bool
  169. description: Enable Prometheus metrics
  170. default: false
  171. metrics_detailed:
  172. type: bool
  173. description: Include detailed metrics (workflows, nodes, API endpoints)
  174. default: false
  175. needs: metrics_enabled
  176. execution:
  177. title: Execution Settings
  178. vars:
  179. execution_save_on_error:
  180. type: enum
  181. description: Save execution data on error
  182. options:
  183. - all
  184. - none
  185. default: all
  186. execution_save_on_success:
  187. type: enum
  188. description: Save execution data on success
  189. options:
  190. - all
  191. - none
  192. default: none
  193. extra: Set to 'none' to reduce database size
  194. network:
  195. vars:
  196. network_mode:
  197. extra: For queue mode with workers, use 'bridge' with shared networks. Swarm only supports 'bridge'.
  198. network_name:
  199. default: n8n_network
  200. network_external:
  201. type: bool
  202. default: false
  203. description: Whether the network is external
  204. traefik:
  205. toggle: traefik_enabled
  206. vars:
  207. traefik_enabled:
  208. needs: network_mode=bridge
  209. traefik_host:
  210. default: n8n.home.arpa
  211. traefik_webhook_host:
  212. type: hostname
  213. description: Separate hostname for webhooks (optional)
  214. default: ''
  215. needs: traefik_enabled
  216. extra: Leave empty to use same host for webhooks
  217. traefik_network:
  218. type: str
  219. description: Traefik network name
  220. default: traefik
  221. needs: traefik_enabled
  222. traefik_network_external:
  223. type: bool
  224. description: Use external Traefik network
  225. default: true
  226. needs: traefik_enabled
  227. traefik_domain:
  228. type: str
  229. default: home.arpa
  230. required: true
  231. ports:
  232. vars:
  233. ports_http:
  234. description: External HTTP port
  235. type: int
  236. default: 5678
  237. needs:
  238. - traefik_enabled=false
  239. - network_mode=bridge
  240. swarm:
  241. toggle: swarm_enabled
  242. vars:
  243. swarm_enabled:
  244. needs: network_mode=bridge
  245. swarm_replicas:
  246. type: int
  247. description: Number of server replicas
  248. default: 1
  249. needs: swarm_enabled
  250. extra: For HA, set > 1 (requires queue mode)
  251. swarm_placement_host:
  252. type: str
  253. description: Target hostname for placement constraint
  254. default: ''
  255. extra: Constrains service to run on specific node by hostname
  256. swarm_placement_mode:
  257. type: str
  258. default: replicated
  259. description: The placement mode
  260. traefik_tls:
  261. vars:
  262. traefik_tls_certresolver:
  263. type: str
  264. default: cloudflare
  265. required: true
  266. traefik_tls_enabled:
  267. type: bool
  268. default: false
  269. description: Enable Traefik TLS