services: {{ service_name }}: image: docker.io/b4bz/homer:v25.11.1 {% if not swarm_enabled %} restart: {{ restart_policy }} {% if container_name %} container_name: {{ container_name }} {% endif %} {% endif %} {% if container_timezone %} environment: - TZ={{ container_timezone }} {% endif %} {% if traefik_enabled %} networks: {{ traefik_network }}: {% endif %} {% if not traefik_enabled %} ports: {% if swarm_enabled %} - target: 8080 published: {{ ports_http }} protocol: tcp mode: host {% else %} - "{{ ports_http }}:8080" {% endif %} {% endif %} volumes: - ./assets:/www/assets {% if traefik_enabled and not swarm_enabled %} labels: - traefik.enable=true - traefik.docker.network={{ traefik_network }} - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=8080 - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }} {% if traefik_tls_enabled %} - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }} - traefik.http.routers.{{ service_name }}-https.tls=true - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }} {% endif %} {% endif %} {% if swarm_enabled %} deploy: {% if swarm_enabled %} mode: {{ swarm_placement_mode }} {% if swarm_placement_mode == 'replicated' %} replicas: {{ swarm_replicas }} {% endif %} {% if swarm_placement_host %} placement: constraints: - node.hostname == {{ swarm_placement_host }} {% endif %} restart_policy: condition: on-failure {% endif %} {% if swarm_enabled and traefik_enabled %} labels: - traefik.enable=true - traefik.docker.network={{ traefik_network }} - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=8080 - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }} {% if authentik_enabled %} - traefik.http.routers.{{ service_name }}-http.middlewares={{ authentik_traefik_middleware }} {% endif %} {% if traefik_tls_enabled %} - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`) - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }} - traefik.http.routers.{{ service_name }}-https.tls=true - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }} {% if authentik_enabled %} - traefik.http.routers.{{ service_name }}-https.middlewares={{ authentik_traefik_middleware }} {% endif %} {% endif %} {% endif %} {% endif %} {% if traefik_enabled %} networks: {{ traefik_network }}: external: true {% endif %}