services: keycloak: image: quay.io/keycloak/keycloak:26.2 command: start-dev --import-realm volumes: - ./keycloak-realm.json:/opt/keycloak/data/import/realm.json:ro ports: - "8080:8080" environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin KC_HOSTNAME: localhost KC_HOSTNAME_PORT: "8080" KC_HTTP_ENABLED: "true" KC_HOSTNAME_STRICT: "false" healthcheck: test: ["CMD-SHELL", "cat < /dev/null > /dev/tcp/localhost/8080"] interval: 5s timeout: 3s retries: 30 start_period: 30s app: build: context: ../code args: PACKAGES_USERNAME: ${PACKAGES_USERNAME} PACKAGES_PAT: ${PACKAGES_PAT} network_mode: host depends_on: keycloak: condition: service_healthy extra_hosts: - "host.docker.internal:host-gateway" environment: PORT: "5000" HTTP_PORTS: "5000" tmpfs: - /config volumes: - ./test-data/downloads:/e2e-downloads nginx: image: nginx:1.27-alpine network_mode: host volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - app tracker: image: wiltonsr/opentracker:open network_mode: host restart: unless-stopped qbittorrent: image: lscr.io/linuxserver/qbittorrent:4.6.7 network_mode: host environment: PUID: "1000" PGID: "1000" TZ: "UTC" WEBUI_PORT: "8090" TORRENTING_PORT: "6881" volumes: - ./test-data/qbittorrent-config:/config - ./test-data/downloads/qbittorrent:/downloads healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:8090/api/v2/app/version > /dev/null 2>&1 || exit 1"] interval: 5s timeout: 3s retries: 60 start_period: 30s transmission: image: lscr.io/linuxserver/transmission:4.0.6 network_mode: host environment: PUID: "1000" PGID: "1000" TZ: "UTC" USER: "transmission" PASS: "transmission" PEERPORT: "51413" volumes: - ./test-data/transmission-config:/config - ./test-data/downloads/transmission:/downloads healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:9091/transmission/rpc > /dev/null 2>&1 ; [ $$? -eq 8 ] || [ $$? -eq 0 ]"] interval: 5s timeout: 3s retries: 60 start_period: 30s deluge: image: lscr.io/linuxserver/deluge:2.1.1 network_mode: host environment: PUID: "1000" PGID: "1000" TZ: "UTC" DELUGE_LOGLEVEL: "info" volumes: - ./test-data/deluge-config:/config - ./test-data/downloads/deluge:/downloads healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:8112 > /dev/null 2>&1 || exit 1"] interval: 5s timeout: 3s retries: 60 start_period: 30s utorrent: image: ekho/utorrent:latest platform: linux/amd64 ports: - "8083:8080" extra_hosts: - "host.docker.internal:host-gateway" environment: UID: "1000" GID: "1000" dir_root: "/downloads" dir_active: "/downloads" dir_completed: "/downloads" dir_download: "/downloads" volumes: - ./test-data/utorrent-config:/data - ./test-data/downloads/utorrent:/downloads healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:8080/gui/ > /dev/null 2>&1 || exit 1"] interval: 5s timeout: 3s retries: 60 start_period: 30s rutorrent: image: lscr.io/linuxserver/rutorrent:latest ports: - "8088:80" environment: PUID: "1000" PGID: "1000" TZ: "UTC" volumes: - ./test-data/rutorrent-config:/config - ./test-data/downloads/rtorrent:/downloads healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost > /dev/null 2>&1 || exit 1"] interval: 5s timeout: 3s retries: 60 start_period: 60s