compose.yaml.j2 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. services:
  2. {{ service_name }}:
  3. image: ghcr.io/open-webui/open-webui:v{{ openwebui_version }}
  4. container_name: {{ container_name }}
  5. hostname: {{ container_hostname }}
  6. environment:
  7. - TZ={{ container_timezone }}
  8. - OLLAMA_BASE_URL={{ ollama_base_url }}
  9. {% if authentik_enabled %}
  10. - ENABLE_OAUTH_SIGNUP=true
  11. - OAUTH_MERGE_ACCOUNTS_BY_EMAIL={{ oauth_merge_accounts|lower }}
  12. - OAUTH_PROVIDER_NAME=authentik
  13. - OPENID_PROVIDER_URL={{ openid_provider_url }}
  14. - OAUTH_CLIENT_ID={{ authentik_client_id }}
  15. - OAUTH_CLIENT_SECRET={{ authentik_client_secret }}
  16. - OAUTH_SCOPES={{ oauth_scopes }}
  17. - OPENID_REDIRECT_URI={{ openid_redirect_uri }}
  18. {% endif %}
  19. volumes:
  20. - data:/app/backend/data:rw
  21. {% if network_mode == 'host' %}
  22. network_mode: host
  23. {% else %}
  24. networks:
  25. {% if traefik_enabled %}
  26. {{ traefik_network }}:
  27. {% endif %}
  28. {% if network_mode == 'macvlan' %}
  29. {{ network_name }}:
  30. ipv4_address: {{ network_macvlan_ipv4_address }}
  31. {% elif network_mode == 'bridge' %}
  32. {{ network_name }}:
  33. {% endif %}
  34. {% endif %}
  35. {% if not traefik_enabled and network_mode == 'bridge' %}
  36. ports:
  37. - "{{ ports_http }}:8080"
  38. {% endif %}
  39. {% if traefik_enabled %}
  40. labels:
  41. - traefik.enable=true
  42. - traefik.docker.network={{ traefik_network }}
  43. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=8080
  44. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  45. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  46. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  47. {% if traefik_tls_enabled %}
  48. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  49. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  50. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  51. - traefik.http.routers.{{ service_name }}-https.tls=true
  52. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  53. {% endif %}
  54. {% endif %}
  55. restart: {{ restart_policy }}
  56. volumes:
  57. data:
  58. driver: local
  59. {% if network_mode != 'host' %}
  60. networks:
  61. {{ network_name }}:
  62. {% if network_external %}
  63. external: true
  64. {% else %}
  65. {% if network_mode == 'macvlan' %}
  66. driver: macvlan
  67. driver_opts:
  68. parent: {{ network_macvlan_parent_interface }}
  69. ipam:
  70. config:
  71. - subnet: {{ network_macvlan_subnet }}
  72. gateway: {{ network_macvlan_gateway }}
  73. {% else %}
  74. driver: bridge
  75. {% endif %}
  76. {% endif %}
  77. name: {{ network_name }}
  78. {% if traefik_enabled %}
  79. {{ traefik_network }}:
  80. external: true
  81. {% endif %}
  82. {% endif %}