services: jellyfin: image: jellyfin/jellyfin:latest container_name: ${JELLY_COMPOSE_PROJECT_NAME}_app restart: unless-stopped volumes: - jellyfin_config:/config - jellyfin_cache:/cache - /mnt/hidrive/users/valknar/Pictures:/media/pictures:ro - /mnt/hidrive/users/valknar/Videos:/media/videos:ro environment: TZ: ${TIMEZONE:-Europe/Berlin} networks: - compose_network labels: - 'traefik.enable=${JELLY_TRAEFIK_ENABLED}' # HTTP to HTTPS redirect - 'traefik.http.middlewares.${JELLY_COMPOSE_PROJECT_NAME}-redirect-web-secure.redirectscheme.scheme=https' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web.middlewares=${JELLY_COMPOSE_PROJECT_NAME}-redirect-web-secure' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web.rule=Host(`${JELLY_TRAEFIK_HOST}`)' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web.entrypoints=web' # HTTPS router - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web-secure.rule=Host(`${JELLY_TRAEFIK_HOST}`)' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web-secure.tls.certresolver=resolver' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web-secure.entrypoints=web-secure' - 'traefik.http.middlewares.${JELLY_COMPOSE_PROJECT_NAME}-web-secure-compress.compress=true' - 'traefik.http.routers.${JELLY_COMPOSE_PROJECT_NAME}-web-secure.middlewares=${JELLY_COMPOSE_PROJECT_NAME}-web-secure-compress,security-headers@file' # Service - 'traefik.http.services.${JELLY_COMPOSE_PROJECT_NAME}-web-secure.loadbalancer.server.port=8096' - 'traefik.docker.network=${NETWORK_NAME}' # Watchtower - 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}' volumes: jellyfin_config: name: ${JELLY_COMPOSE_PROJECT_NAME}_config jellyfin_cache: name: ${JELLY_COMPOSE_PROJECT_NAME}_cache networks: compose_network: name: ${NETWORK_NAME} external: true