services: {{ service_name }}: image: ghcr.io/gethomepage/homepage:v1.9.0 {% if not swarm_enabled %} restart: {{ restart_policy }} {% if container_name %} container_name: {{ container_name }} {% endif %} {% endif %} {% if container_timezone or container_loglevel %} environment: {% if container_timezone %} - TZ={{ container_timezone }} {% endif %} {% if container_loglevel %} - LOG_LEVEL={{ container_loglevel }} {% endif %} {% endif %} {% if traefik_enabled %} networks: {{ traefik_network }}: {% endif %} {% if not traefik_enabled %} ports: - {{ ports_http }}:3000 {% endif %} volumes: {% if volume_mode == 'local' %} - {{ service_name }}_config:/app/config - {{ service_name }}_images:/app/images - {{ service_name }}_icons:/app/icons {% elif volume_mode == 'mount' %} - {{ volume_mount_path }}/{{ service_name }}/config:/app/config - {{ volume_mount_path }}/{{ service_name }}/images:/app/images - {{ volume_mount_path }}/{{ service_name }}/icons:/app/icons {% endif %} {% 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=3000 - 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_placement_mode == 'replicated' %} replicas: {{ swarm_replicas }} placement: constraints: - node.hostname == {{ swarm_placement_host }} {% else %} mode: global {% endif %} {% if traefik_enabled %} labels: - traefik.enable=true - traefik.docker.network={{ traefik_network }} - traefik.http.services.{{ service_name }}-web.loadbalancer.server.port=3000 - 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 %} {% endif %} {% if traefik_enabled %} networks: {{ traefik_network }}: external: true {% endif %} {% if volume_mode == 'local' %} volumes: {{ service_name }}_config: {{ service_name }}_images: {{ service_name }}_icons: {% endif %}