services:
  audiosilo:
    image: lscr.io/linuxserver/audiosilo:v2.3.1-ls6
    environment:
      PUID: ${PUID:-1000}
      PGID: ${PGID:-1000}
      TZ: ${TZ:-Etc/UTC}
      AUDIOSILO_BIND: 0.0.0.0:8080
      AUDIOSILO_TLS_MODE: "off"
      AUDIOSILO_PUBLIC_URL: https://${BOOKS_HOST:?Set BOOKS_HOST in .env}
      AUDIOSILO_TRUSTED_PROXIES: ${PROXY_IP:-172.30.90.2}/32
    volumes:
      - ./audiosilo:/config
      - ${AUDIOBOOKS_DIR:?Set AUDIOBOOKS_DIR in .env}:/audiobooks:ro
    networks:
      proxy:
        ipv4_address: ${AUDIOSILO_IP:-172.30.90.3}
    restart: unless-stopped

  traefik:
    image: traefik:v3.7.16
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.websecure.address=:443
      - --providers.file.directory=/etc/traefik/dynamic
      - --providers.file.watch=true
      - --certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL:?Set ACME_EMAIL in .env}
      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web
    environment:
      BOOKS_HOST: ${BOOKS_HOST:?Set BOOKS_HOST in .env}
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./dynamic:/etc/traefik/dynamic:ro
      - traefik_acme:/letsencrypt
    networks:
      proxy:
        ipv4_address: ${PROXY_IP:-172.30.90.2}
    depends_on:
      - audiosilo
    restart: unless-stopped

networks:
  proxy:
    ipam:
      config:
        - subnet: ${PROXY_SUBNET:-172.30.90.0/24}

volumes:
  traefik_acme:
