Multiple ports on the same service

I'm attempting to setup a calibre route and service for both the webpage and the opds server. I'm... strugglilng to get this to work, despite looking through other examples throughout the forums.

Starting this up results in it creating two services for both calibre and calibreopds, but not two route. Any thoughts on this?

compose.yml                                                                              
services:
  calibre:
    image: lscr.io/linuxserver/calibre
    container_name: calibre
    environment:
      - some env variables
    volumes:
      - some volumes
    ports:
      # - 6837:8080 #webserver
      - 6838:8081 #OPDS
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.lan-only.ipallowlist.sourcerange=192.168.0.0/16, 127.0.0.1/32, 10.0.0.0/8

      - traefik.http.services.calibre.loadbalancer.server.port=8080
      - traefik.http.routers.calibre.rule=Host(`calibre.internal.domain.com`)
      - traefik.http.routers.calibre.entrypoints=https
      - traefik.http.routers.calibre.tls=true
      - traefik.http.routers.mycont2-secure.service=calibre
      - traefik.http.routers.calibre.middlewares=my-ipwhitelist

      - traefik.http.services.calibreopds.loadbalancer.server.port=6838
      - traefik.http.routers.calibreopds.rule=Host(`calibreopds.internal.domain.com`)
      - traefik.http.routers.calibreopds.entrypoints=https
      - traefik.http.routers.calibreopds.tls=true
      - traefik.http.routers.mycont2-secure.service=calibreopds
      - traefik.http.routers.calibreopds.middlewares=my-ipwhitelist
    networks:
      - container_backend
    restart: unless-stopped
networks:
  container_backend:
    name: container_backend

When using multiple services on labels, you need to make sure to use the correct router names and assign each a service:

      - traefik.http.routers.calibre.rule=Host(`calibre.internal.domain.com`)
      - traefik.http.routers.calibre.service=calibre
        #                    ^^^
      - traefik.http.services.calibre.loadbalancer.server.port=8080

      - traefik.http.routers.calibreopds.rule=Host(`calibreopds.internal.domain.com`)
      - traefik.http.routers.calibreopds.service=calibreopds
        #                    ^^^
      - traefik.http.services.calibreopds.loadbalancer.server.port=6838

Also, you're using a reverse proxy, so don't publish the ports. It just gets confusing (and potentially prevents the container from starting).

Btw, the calibreopds service should have specified port 8081. Like I said... it gets confusing