compose.yaml.j2 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. services:
  2. {{ service_name | default('n8n') }}:
  3. image: n8nio/n8n:1.115.2
  4. container_name: {{ container_name | default('n8n') }}
  5. environment:
  6. - N8N_LOG_LEVEL={{ container_loglevel | default('info') }}
  7. - GENERIC_TIMEZONE={{ container_timezone | default('UTC') }}
  8. - TZ={{ container_timezone | default('UTC') }}
  9. - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
  10. - N8N_RUNNERS_ENABLED=true
  11. {% if traefik_enabled %}
  12. {% if traefik_tls_enabled %}
  13. - N8N_EDITOR_BASE_URL=https://{{ traefik_host | default('n8n.home.arpa') }}
  14. {% else %}
  15. - N8N_EDITOR_BASE_URL=http://{{ traefik_host | default('n8n.home.arpa') }}
  16. {% endif %}
  17. {% endif %}
  18. {% if database_enabled %}
  19. {% if database_type == 'postgres' -%}
  20. - DB_TYPE=postgresdb
  21. - DB_POSTGRESDB_HOST={{ database_host | default('database') }}
  22. - DB_POSTGRESDB_PORT={{ database_port | default(5432) }}
  23. - DB_POSTGRESDB_DATABASE={{ database_name | default('n8n') }}
  24. - DB_POSTGRESDB_USER={{ database_user | default('n8n') }}
  25. - DB_POSTGRESDB_PASSWORD={{ database_password | default('n8n') }}
  26. {% elif database_type == 'mysql' -%}
  27. - DB_TYPE=mysqldb
  28. - DB_MYSQLDB_HOST={{ database_host | default('database') }}
  29. - DB_MYSQLDB_PORT={{ database_port | default(3306) }}
  30. - DB_MYSQLDB_DATABASE={{ database_name | default('n8n') }}
  31. - DB_MYSQLDB_USER={{ database_user | default('n8n') }}
  32. - DB_MYSQLDB_PASSWORD={{ database_password | default('n8n') }}
  33. {% endif %}
  34. {% endif %}
  35. volumes:
  36. - /etc/localtime:/etc/localtime:ro
  37. - data:/home/node/.n8n
  38. {% if network_enabled %}
  39. networks:
  40. - {{ network_name | default('bridge') }}
  41. {% endif %}
  42. {% if traefik_enabled %}
  43. labels:
  44. - traefik.enable=true
  45. - traefik.http.routers.{{ service_name | default('n8n') }}-http.rule=Host(`{{ traefik_host | default('n8n.home.arpa') }}`)
  46. - traefik.http.routers.{{ service_name | default('n8n') }}-http.entrypoints={{ traefik_entrypoint | default('web') }}
  47. {% if traefik_tls_enabled %}
  48. - traefik.http.routers.{{ service_name | default('n8n') }}-https.rule=Host(`{{ traefik_host | default('n8n.home.arpa') }}`)
  49. - traefik.http.routers.{{ service_name | default('n8n') }}-https.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  50. - traefik.http.routers.{{ service_name | default('n8n') }}-https.tls=true
  51. - traefik.http.routers.{{ service_name | default('n8n') }}-https.tls.certresolver={{ traefik_tls_certresolver | default('default') }}
  52. {% else %}
  53. - traefik.http.routers.{{ service_name | default('n8n') }}.entrypoints={{ traefik_entrypoint | default('web') }}
  54. {% endif %}
  55. - traefik.http.services.{{ service_name | default('n8n') }}.loadbalancer.server.port=5678
  56. {% endif %}
  57. restart: {{ restart_policy | default('unless-stopped') }}
  58. {% if ports_enabled %}
  59. ports:
  60. - "{{ ports_http | default(5678) }}:5678"
  61. {% endif %}
  62. volumes:
  63. data:
  64. driver: local
  65. {% if network_enabled %}
  66. networks:
  67. {{ network_name | default('bridge') }}:
  68. {% if network_external %}
  69. external: true
  70. {% else %}
  71. driver: bridge
  72. {% endif %}
  73. {% endif %}