Files

1 line
2.0 MiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "bodecloud/bodecloud-infra", "files": {"compose/docker-compose.parsed.yml": {"a92266f4a4a5ea8c570df86cb1c0141e73bdb537": {"t": 1785747412.317586, "n": 105558, "h": "8f0b4374aa9971a9", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\n\nx-common-env:\n PGID: \"${PGID:-121}\"\n PUID: \"${PUID:-1001}\"\n TZ: ${TZ:-America/Chicago}\n UMASK: ${UMASK:-002}\nx-common-logging:\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\nx-common-uidgid:\n user: ${PUID:-1001}:${PGID:-121}\nx-resource-limits:\n labels:\n autoheal: \"true\"\n\n\nx-common-hostname-aliases:\n - host.docker.internal:host-gateway\n - warp:${WARP_IPV4_ADDRESS:-10.67.128.97}\n - comet:${COMET_IPV4_ADDRESS:-10.67.128.97}\n - jackett:${JACKETT_IPV4_ADDRESS:-10.67.128.97}\n - jackettio:${JACKETTIO_IPV4_ADDRESS:-10.67.128.97}\n - localhost:${LOCALHOST_IPV4_ADDRESS:-10.67.128.97}\n - mediafusion:${MEDIAFUSION_IPV4_ADDRESS:-10.67.128.97}\n - prowlarr:${PROWLARR_IPV4_ADDRESS:-10.67.128.97}\n - stremio-jackett:${STREMIO_JACKETT_IPV4_ADDRESS:-10.67.128.97}\n - zurg:${ZURG_IPV4_ADDRESS:-10.67.128.97}\n - mediaflow-proxy:${MEDIAFLOW_PROXY_IPV4_ADDRESS:-10.67.128.97}\n - deluge:${DELUGE_IPV4_ADDRESS:-10.67.128.97}\n - stremio-web:${STREMIO_WEB_IPV4_ADDRESS:-10.67.128.97}\n - stremio-https-server:${STREMIO_HTTPS_SERVER_IPV4_ADDRESS:-10.67.128.97}\n - stremio-fallback:${STREMIO_FALLBACK_IPV4_ADDRESS:-10.67.128.97}\n - gluetun-premiumize-nl:${GLUETUN_PREMIUMIZE_NL_IPV4_ADDRESS:-10.67.128.119}\n - transmission:${TRANSMISSION_IPV4_ADDRESS:-10.67.128.119}\n - qbittorrent:${QB_IPV4_ADDRESS:-10.67.128.119}\nx-gluetun-hosts-workaround:\n - host.docker.internal:host-gateway\n - boden-iphone:${BODEN_IPHONE_IPV4_ADDRESS:-100.97.148.14}\n - beatapostapita:${BEATAPOSTAPITA_IPV4_ADDRESS:-100.99.45.35}\n - micklethefickle:${MICKLETHEFICKLE_IPV4_ADDRESS:-100.72.149.123}\n - micklethefickle3:${MICKLETHEFICKLE3_IPV4_ADDRESS:-100.72.149.123}\n - wizard:${WIZARD_IPV4_ADDRESS:-100.119.187.62}\n - wizard-pc:${WIZARD_PC_IPV4_ADDRESS:-100.119.187.62}\n - warp:${WARP_IPV4_ADDRESS:-10.67.128.97}\n - comet:${COMET_IPV4_ADDRESS:-10.67.128.97}\n - jackett:${JACKETT_IPV4_ADDRESS:-10.67.128.97}\n - jackettio:${JACKETTIO_IPV4_ADDRESS:-10.67.128.97}\n - localhost:${LOCALHOST_IPV4_ADDRESS:-10.67.128.97}\n - mediafusion:${MEDIAFUSION_IPV4_ADDRESS:-10.67.128.97}\n - prowlarr:${PROWLARR_IPV4_ADDRESS:-10.67.128.97}\n - stremio-jackett:${STREMIO_JACKETT_IPV4_ADDRESS:-10.67.128.97}\n - zurg:${ZURG_IPV4_ADDRESS:-10.67.128.97}\n - mediaflow-proxy:${MEDIAFLOW_PROXY_IPV4_ADDRESS:-10.67.128.97}\n - deluge:${DELUGE_IPV4_ADDRESS:-10.67.128.97}\n - stremio-web:${STREMIO_WEB_IPV4_ADDRESS:-10.67.128.97}\n - stremio-https-server:${STREMIO_HTTPS_SERVER_IPV4_ADDRESS:-10.67.128.97}\n - stremio-fallback:${STREMIO_FALLBACK_IPV4_ADDRESS:-10.67.128.97}\n - gluetun-premiumize-nl:${GLUETUN_PREMIUMIZE_NL_IPV4_ADDRESS:-10.67.128.119}\n - transmission:${TRANSMISSION_IPV4_ADDRESS:-10.67.128.119}\n - qbittorrent:${QB_IPV4_ADDRESS:-10.67.128.119}\n - dash:${DASH_IPV4_ADDRESS:-10.67.128.23}\n - gpt-researcher:${GPT_RESEARCHER_IPV4_ADDRESS:-10.67.128.43}\n - gptr:${GPT_RESEARCHER_IPV4_ADDRESS:-10.67.128.43}\n - qdrant:${QDRANT_IPV4_ADDRESS:-10.67.128.44}\n - bocloud-nextjs:${BOCLOUD_NEXTJS_IPV4_ADDRESS:-10.67.128.45}\n - lobechat:${LOBECHAT_IPV4_ADDRESS:-10.67.128.46}\n - mongodb:${MONGODB_IPV4_ADDRESS:-10.67.0.50}\n - code-demo:${CODE_DEMO_IPV4_ADDRESS:-10.67.128.80}\n - whoami:${WHOAMI_IPV4_ADDRESS:-10.67.128.81}\n - tinyauth:${TINYAUTH_IPV4_ADDRESS:-10.67.128.82}\n - watchtower:${WATCHTOWER_IPV4_ADDRESS:-10.67.128.83}\n - maintainerr:${MAINTAINERR_IPV4_ADDRESS:-10.67.128.84}\n - traefik:${TRAEFIK_IPV4_ADDRESS:-10.67.128.85}\n - speedtest:${SPEEDTEST_IPV4_ADDRESS:-10.67.128.86}\n - redis:${REDIS_IPV4_ADDRESS:-10.67.128.87}\n - homepage:${HOMEPAGE_IPV4_ADDRESS:-10.67.128.88}\n - dozzle:${DOZZLE_IPV4_ADDRESS:-10.67.128.89}\n - searxng:${SEARXNG_IPV4_ADDRESS:-10.67.128.90}\n - code-server:${CODE_SERVER_IPV4_ADDRESS:-10.67.128.92}\n - byparr:${FLARESOLVERR_IPV4_ADDRESS:-10.67.128.93}\n - flaresolverr:${FLARESOLVERR_IPV4_ADDRESS:-10.67.128.93}\n - nginx-auth:${NGINX_AUTH_IPV4_ADDRESS:-10.67.128.94}\n - plex:${PLEX_IPV4_ADDRESS:-10.67.128.95}\n - code:${CODE_DEMO_IPV4_ADDRESS:-10.67.128.96}\n - stremthru:${STREMTHRU_IPV4_ADDRESS:-10.67.128.99}\n - riven-frontend:${RIVEN_IPV4_ADDRESS:-10.67.128.100}\n - riven:${RIVEN_CORE_IPV4_ADDRESS:-10.67.128.101}\n - riven-backend:${RIVEN_CORE_IPV4_ADDRESS:-10.67.128.101}\n - riven-db:${RIVEN_DB_IPV4_ADDRESS:-10.67.128.102}\n - tautulli:${TAUTULLI_IPV4_ADDRESS:-10.67.128.103}\n - crowdsec:${CROWDSEC_IPV4_ADDRESS:-10.67.128.104}\n - gatus:${GATUS_IPV4_ADDRESS:-10.67.128.105}\n - homer:${HOMER_IPV4_ADDRESS:-10.67.0.106}\n - wizarr:${WIZARR_IPV4_ADDRESS:-10.67.128.107}\n - plex-watchlist:${PLEX_WATCHLIST_IPV4_ADDRESS:-10.67.52.97}\n - realdebrid-account-monitor:${REALDEBRID_ACCOUNT_MONITOR_IPV4_ADDRESS:-10.67.128.109}\n - rclone:${RCLONE_IPV4_ADDRESS:-10.67.128.111} \n - plex-authentication:${PLEX_AUTHENTICATION_IPV4_ADDRESS:-10.67.128.112}\n - plex-request:${PLEX_REQUEST_IPV4_ADDRESS:-10.67.128.113}\n - jellyseerr:${JELLYSEERR_IPV4_ADDRESS:-10.67.128.115}\n - overseerr:${OVERSEERR_IPV4_ADDRESS:-10.67.128.116}\n - jellyfin:${JELLYFIN_IPV4_ADDRESS:-10.67.128.120}\n - radarr:${RADARR_IPV4_ADDRESS:-10.67.128.121}\n - sonarr:${SONARR_IPV4_ADDRESS:-10.67.128.122}\n - sonarr-anime:${SONARR_ANIME_IPV4_ADDRESS:-10.67.128.123}\n - firecrawl-api:${FIRECRAWL_API_IPV4_ADDRESS:-10.67.128.127}\n - firecrawl-worker:${FIRECRAWL_WORKER_IPV4_ADDRESS:-10.67.128.128}\n - firecrawl-playwright:${FIRECRAWL_PLAYWRIGHT_IPV4_ADDRESS:-10.67.128.130}\n - decluttarr:${DECLUTTARR_IPV4_ADDRESS:-10.67.128.21}\n - whisparr:${WHISPARR_IPV4_ADDRESS:-10.67.0.120}\n - aiostreams:${AIOSTREAMS_IPV4_ADDRESS:-10.67.128.200}\n - plex-repair:${PLEX_REPAIR_IPV4_ADDRESS:-10.67.0.115}\n - script-runner:${SCRIPT_RUNNER_IPV4_ADDRESS:-10.67.0.116}\n - recyclarr:${RECYCLARR_IPV4_ADDRESS:-10.67.0.117}\n - open-webui:${OPEN_WEBUI_IPV4_ADDRESS:-10.67.128.118}\n - autoscan:${AUTOSCAN_IPV4_ADDRESS:-10.67.0.119}\n\n\nconfigs:\n headscale-config:\n name: my-media-stack_headscale-config\n homer-config.yml:\n name: my-media-stack_homer-config.yml\n premiumize-auth:\n name: my-media-stack_premiumize-auth\n premiumize-ca:\n name: my-media-stack_premiumize-cached\n rclone-mounts.json:\n name: my-media-stack_rclone-mounts.json\n rclone-rclone.conf:\n name: my-media-stack_rclone-rclone.conf\n riven-settings.json:\n name: my-media-stack_riven-settings.json\n vpn-nl.premiumize.me:\n name: my-media-stack_vpn-nl.premiumize.me\n zurg-cli_debrid_update.sh:\n name: my-media-stack_zurg-cli_debrid_update.sh\n zurg-config.yml:\n name: my-media-stack_zurg-config.yml\n\n\nservices:\n aiostreams:\n build:\n context: https://github.com/viren070/aiostreams.git#main\n dockerfile: Dockerfile\n tags:\n - th3w1zard1/aiostreams:latest\n container_name: aiostreams\n environment:\n ADDON_CATALOG_CACHE_TTL: \"300\"\n ADDON_ID: $DOMAIN\n ADDON_NAME: BadenAIO\n ADDON_PASSWORD: sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9\n ADDON_PROXY: http://warp:1080\n ANIME_CATALOGS_URL: https://1fe84bc728af-stremio-anime-catalogs.baby-beamup.club/\n ANIME_KITSU_URL: https://anime-kitsu.strem.fun/\n BASE_URL: https://aiostreams.$DOMAIN\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n CATALOG_API_RATE_LIMIT_WINDOW: \"5\"\n CATALOG_CACHE_TTL: \"300\"\n COMET_URL: \"2020\"\n CUSTOM_HTML: \"\"\n DATABASE_URI: sqlite://./data/db.sqlite\n DC_UNIVERSE_URL: https://addon-dc-cq85.onrender.com/\n DEBRIDIO_TMDB_URL: https://tmdb-addon.debridio.com/\n DEBRIDIO_TV_URL: https://tv-addon.debridio.com/\n DEBRIDIO_TVDB_URL: https://tvdb-addon.debridio.com/\n DEBRIDIO_URL: https://addon.debridio.com/\n DEBRIDIO_WATCHTOWER_URL: https://wt-addon.debridio.com/\n DEFAULT_ALLDEBRID_API_KEY: \"\"\n DEFAULT_DEBRIDLINK_API_KEY: vvppT6-RCIXJVyr1O2j8VYIBAAPy4EmcY_OVgELZWujQOBt5iz_19Rpz6A6xxwwS\n DEFAULT_EASYDEBRID_API_KEY: \"\"\n DEFAULT_EASYNEWS_PASSWORD: \"\"\n DEFAULT_EASYNEWS_USERNAME: \"\"\n DEFAULT_JACKETTIO_INDEXERS: '[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n DEFAULT_JACKETTIO_STREMTHRU_URL: https://stremthru.13377001.xyz\n DEFAULT_MAX_CACHE_SIZE: \"100000\"\n DEFAULT_OFFCLOUD_API_KEY: \"\"\n DEFAULT_OFFCLOUD_EMAIL: \"\"\n DEFAULT_OFFCLOUD_PASSWORD: \"\"\n DEFAULT_PIKPAK_EMAIL: \"\"\n DEFAULT_PIKPAK_PASSWORD: \"\"\n DEFAULT_PREMIUMIZE_API_KEY: 6i6zgswm35baj3ur\n DEFAULT_PROXY_CREDENTIALS: bolabaden:duckdns\n DEFAULT_PROXY_ENABLED: \"true\"\n DEFAULT_PROXY_URL: http://stremthru:8080\n DEFAULT_PUTIO_CLIENT_ID: \"\"\n DEFAULT_PUTIO_CLIENT_SECRET: \"\"\n DEFAULT_REALDEBRID_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n DEFAULT_SEEDR_ENCODED_TOKEN: \"\"\n DEFAULT_TIMEOUT: \"15000\"\n DEFAULT_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n DISABLE_RATE_LIMITS: \"false\"\n DISABLE_SELF_SCRAPING: \"false\"\n DOCTOR_WHO_UNIVERSE_URL: https://new-who.onrender.com\n EASYNEWS_PLUS_PLUS_URL: https://easynews-cloudflare-worker.jqrw92fchz.workers.dev/\n EASYNEWS_PLUS_URL: https://b89262c192b0-stremio-easynews-addon.baby-beamup.club/\n EASYNEWS_URL: https://ea627ddf0ee7-easynews.baby-beamup.club/\n ENCRYPT_MEDIAFLOW_URLS: \"true\"\n ENCRYPT_STREMTHRU_URLS: \"true\"\n FORCE_COMET_HOSTNAME: comet.$DOMAIN\n FORCE_COMET_PORT: \"443\"\n FORCE_COMET_PROTOCOL: https\n FORCE_PROXY_ID: stremthru\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: \"443\"\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n FORCE_STREMTHRU_STORE_HOST: stremthru.$DOMAIN\n FORCE_STREMTHRU_STORE_PORT: \"443\"\n FORCE_STREMTHRU_STORE_PROTOCOL: https\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: \"30\"\n FORMAT_API_RATE_LIMIT_WINDOW: \"5\"\n JACKETTIO_URL: https://jackettio.elfhosted.com/\n LOG_FORMAT: text\n LOG_LEVEL: verbose\n LOG_SENSITIVE_INFO: \"true\"\n LOG_TIMEZONE: America/Chicago\n MANIFEST_CACHE_TTL: \"300\"\n MARVEL_UNIVERSE_URL: https://addon-marvel.onrender.com/\n MAX_ADDONS: \"100\"\n MAX_CONDITION_FILTERS: \"200\"\n MAX_GROUPS: \"50\"\n MAX_KEYWORD_FILTERS: \"50\"\n MAX_TIMEOUT: \"50000\"\n MEDIAFUSION_API_PASSWORD: h4L0m4St3R327\n MEDIAFUSION_CONFIG_TIMEOUT: \"5000\"\n MEDIAFUSION_URL: http://mediafusion:8080\n META_CACHE_TTL: \"300\"\n MIN_TIMEOUT: \"1000\"\n NUVIOSTREAMS_URL: https://nuviostreams.hayd.uk/\n OPENSUBTITLES_URL: https://opensubtitles-v3.strem.io/\n ORION_STREMIO_ADDON_URL: https://5a0d1888fa64-orion.baby-beamup.club/\n PEERFLIX_URL: https://peerflix-addon.onrender.com/\n PGID: \"121\"\n PORT: \"3005\"\n PROXY_IP_CACHE_TTL: \"900\"\n PRUNE_INTERVAL: \"86400\"\n PRUNE_MAX_DAYS: \"1\"\n PUID: \"1001\"\n REGEX_FILTER_ACCESS: trusted\n RPDB_API_KEY_VALIDITY_CACHE_TTL: \"604800\"\n RPDB_CATALOGS_URL: https://1fe84bc728af-rpdb.baby-beamup.club/\n SECRET_KEY: 207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde\n STAR_WARS_UNIVERSE_URL: https://addon-star-wars-u9e3.onrender.com/\n STATIC_RATE_LIMIT_MAX_REQUESTS: \"75\"\n STATIC_RATE_LIMIT_WINDOW: \"5\"\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREAM_API_RATE_LIMIT_WINDOW: \"5\"\n STREAM_CACHE_TTL: \"1\"\n STREAMFUSION_URL: https://stream-fusion.stremiofr.com/\n STREAMING_CATALOGS_URL: https://7a82163c306e-stremio-netflix-catalog-addon.baby-beamup.club/\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: \"30\"\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: \"15\"\n STREMIO_META_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_STREAM_RATE_LIMIT_WINDOW: \"15\"\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: \"5\"\n STREMTHRU_STORE_URL: http://stremthru:8080/stremio/store\n STREMTHRU_TORZ_URL: https://stremthru.elfhosted.com/stremio/torz\n SUBTITLE_CACHE_TTL: \"300\"\n TMDB_ACCESS_TOKEN: cec876f852b9c15d2c1b436b1117dff7\n TMDB_COLLECTIONS_URL: https://61ab9c85a149-tmdb-collections.baby-beamup.club/\n TORBOX_STREMIO_URL: https://stremio.torbox.app/\n TORRENT_CATALOGS_URL: https://torrent-catalogs.strem.fun/\n TORRENTIO_URL: https://torrentio.strem.fun/\n TRUSTED_UUIDS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n USER_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n USER_API_RATE_LIMIT_WINDOW: \"5\"\n WEBSTREAMR_URL: https://webstreamr.hayd.uk\n extra_hosts: *common-hostname-aliases\n hostname: aiostreams\n image: ghcr.io/viren070/aiostreams\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n homepage.group: Stremio Addons\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.icon: aiostreams.png\n homepage.name: AIOStreams\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.bocloud.org`) || Host(`aiostreams.bolabaden.duckdns.org`) || Host(`aiostreams.micklethefickle.duckdns.org`)\n traefik.http.routers.aiostreams.service: aiostreams\n traefik.http.services.aiostreams.loadbalancer.server.port: \"3005\"\n kuma.aiostreams.http.name: \"aiostreams.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.aiostreams.http.url: \"https://aiostreams.${DOMAIN}\"\n kuma.aiostreams.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.200\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/stremio/addons/aiostreams/data:/app/data\n bocloud-nextjs:\n build:\n context: /home/ubuntu/my-media-stack/src/bocloud-site\n dockerfile: Dockerfile\n image: th3w1zard1/bocloud-nextjs:latest\n container_name: bocloud-nextjs\n depends_on:\n - tinyauth\n - traefik\n environment:\n HOSTNAME: 0.0.0.0\n NODE_ENV: production\n PGID: \"121\"\n PORT: \"3000\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3000\"\n extra_hosts: *common-hostname-aliases\n hostname: bocloud-nextjs\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 40s\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.bocloud-nextjs.errors.query: /api/error/{status}\n traefik.http.middlewares.bocloud-nextjs.errors.service: bocloud-nextjs\n traefik.http.middlewares.bocloud-nextjs.errors.status: 400-599\n traefik.http.routers.404-catchall.middlewares: bocloud-nextjs\n traefik.http.routers.404-catchall.priority: \"1\"\n traefik.http.routers.404-catchall.rule: Host(`*`)\n traefik.http.routers.404-catchall.service: bocloud-nextjs\n traefik.http.routers.bocloud-embed.rule: Host(`embed.bocloud.org`)\n traefik.http.routers.bocloud-embed.service: bocloud-nextjs\n traefik.http.routers.bocloud-nextjs.rule: Host(`$DOMAIN`) || Host(`bocloud.org`) || Host(`bolabaden.duckdns.org`) || Host(`micklethefickle.duckdns.org`)\n traefik.http.routers.bocloud-nextjs.service: bocloud-nextjs\n traefik.http.services.bocloud-nextjs.loadbalancer.server.port: \"3000\"\n kuma.bocloud-nextjs.http.name: \"${TS_HOSTNAME}.${DOMAIN}\"\n kuma.bocloud-nextjs.http.url: \"https://${DOMAIN}\"\n kuma.bocloud-nextjs.http.interval: \"30\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.45\n ports:\n - mode: ingress\n target: 3000\n published: 3000\n protocol: tcp\n restart: always\n code-server:\n container_name: code-server\n environment:\n CODESERVER_DEFAULT_WORKSPACE: /workspace\n CODESERVER_PASSWORD: h4L0m4St3R327\n CODESERVER_SUDO_PASSWORD: h4L0m4St3R327\n DEFAULT_WORKSPACE: /workspace\n PASSWORD: h4L0m4St3R327\n PGID: \"121\"\n PUID: \"1001\"\n SUDO_PASSWORD: h4L0m4St3R327\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8443\"\n extra_hosts: *common-hostname-aliases\n hostname: code-server\n image: docker.io/linuxserver/code-server:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n homepage.group: Infrastructure\n homepage.href: https://code-server.$DOMAIN/\n homepage.icon: code-server.png\n homepage.name: Code Dev\n traefik.enable: \"true\"\n traefik.http.routers.code-server.middlewares: allow-iframe-from-domain@file\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.code-server.loadbalancer.server.port: \"8443\"\n kuma.code-server.http.name: \"code-server.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.code-server.http.url: \"https://code-server.${DOMAIN}\"\n kuma.code-server.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.92\n restart: always\n user: 1001:121\n volumes:\n - /home/ubuntu/my-media-stack/configs/code-server/dev/config:/config\n - /home/ubuntu/my-media-stack:/workspace\n comet:\n container_name: comet\n depends_on:\n - warp\n environment:\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n COMET_URL: https://comet.elfhosted.com\n DASHBOARD_ADMIN_PASSWORD: h4L0m4St3R327\n DATABASE_PATH: /data/comet.db\n DATABASE_TYPE: sqlite\n DEBRID_CACHE_TTL: \"86400\"\n DOWNLOAD_TORRENT_FILES: \"true\"\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: \"2020\"\n FASTAPI_WORKERS: \"4\"\n GET_TORRENT_TIMEOUT: \"2\"\n INDEXER_MANAGER_API_KEY: 29440a82740d475cacb35327c62c87a1\n INDEXER_MANAGER_INDEXERS: '[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n INDEXER_MANAGER_TIMEOUT: \"60\"\n INDEXER_MANAGER_TYPE: prowlarr\n INDEXER_MANAGER_URL: http://prowlarr:9696\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n METADATA_CACHE_TTL: \"2592000\"\n PGID: \"121\"\n PROXY_DEBRID_STREAM: \"true\"\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: 6i6zgswm35baj3ur\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: \"-1\"\n PROXY_DEBRID_STREAM_PASSWORD: brunner56:h4L0m4St3R327,bolabaden:duckdns\n PUID: \"1001\"\n REMOVE_ADULT_CONTENT: \"true\"\n SCRAPE_COMET: \"true\"\n SCRAPE_MEDIAFUSION: \"true\"\n SCRAPE_TORRENTIO: \"true\"\n SCRAPE_ZILEAN: \"true\"\n STREMTHRU_URL: https://stremthru.$DOMAIN\n TORRENT_CACHE_TTL: \"1296000\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UMASK: \"002\"\n USE_GUNICORN: \"true\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:2020/health > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 15s\n image: g0ldyy/comet:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n homepage.group: Stremio Addons\n homepage.href: https://comet.$DOMAIN/\n homepage.icon: comet.png\n homepage.name: Comet\n kuma.comet.http.name: \"comet.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.comet.http.url: \"https://comet.${DOMAIN}\"\n kuma.comet.http.interval: \"60\"\n network_mode: service:warp\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/stremio/addons/comet/data:/data\n crowdsec:\n container_name: crowdsec\n environment:\n AGENT_PASSWORD: \"\"\n AGENT_USERNAME: \"\"\n AGENTS_ALLOWED_OU: agent-ou\n APPSEC_CONFIGS: \"\"\n APPSEC_RULES: \"\"\n BOUNCER_KEY_TRAEFIK: usvi2urbIG5obProVWwcf2ImTrtB93x668jWDvrH\n BOUNCERS_ALLOWED_OU: bouncer-ou\n CACERT_FILE: \"\"\n CAPI_WHITELISTS_PATH: \"\"\n CI_TESTING: \"false\"\n CLIENT_CERT_FILE: \"\"\n CLIENT_KEY_FILE: \"\"\n COLLECTIONS: crowdsecurity/traefik\n CONFIG_FILE: /etc/crowdsec/config.yaml\n CONTEXTS: \"\"\n CUSTOM_HOSTNAME: localhost\n DEBUG: \"false\"\n DISABLE_AGENT: \"false\"\n DISABLE_APPSEC_CONFIGS: \"\"\n DISABLE_APPSEC_RULES: \"\"\n DISABLE_COLLECTIONS: \"\"\n DISABLE_CONTEXTS: \"\"\n DISABLE_LOCAL_API: \"false\"\n DISABLE_ONLINE_API: \"false\"\n DISABLE_PARSERS: \"\"\n DISABLE_POSTOVERFLOWS: \"\"\n DISABLE_SCENARIOS: \"\"\n DSN: \"\"\n ENROLL_INSTANCE_NAME: \"\"\n ENROLL_KEY: cm91pb2bz0011e35iltz9k6ra\n ENROLL_TAGS: ${CROWDSEC_ENROLL_TAGS:-}\n INSECURE_SKIP_VERIFY: \"\"\n LAPI_CERT_FILE: ${CROWDSEC_LAPI_CERT_FILE:-}\n LAPI_KEY_FILE: ${CROWDSEC_LAPI_KEY_FILE:-}\n LEVEL_DEBUG: ${CROWDSEC_LEVEL_DEBUG:-false}\n LEVEL_ERROR: ${CROWDSEC_LEVEL_ERROR:-false}\n LEVEL_FATAL: ${CROWDSEC_LEVEL_FATAL:-false}\n LEVEL_INFO: ${CROWDSEC_LEVEL_INFO:-false}\n LEVEL_TRACE: ${CROWDSEC_LEVEL_TRACE:-false}\n LEVEL_WARN: ${CROWDSEC_LEVEL_WARN:-false}\n LOCAL_API_URL: ${CROWDSEC_LOCAL_API_URL:-http://0.0.0.0:8080}\n METRICS_PORT: ${CROWDSEC_METRICS_PORT:-6060}\n NO_HUB_UPGRADE: ${CROWDSEC_NO_HUB_UPGRADE:-false}\n PARSERS: ${CROWDSEC_PARSERS:-}\n PGID: ${PGID:-121}\n PLUGIN_DIR: ${CROWDSEC_PLUGIN_DIR:-/usr/local/lib/crowdsec/plugins/}\n POSTOVERFLOWS: ${CROWDSEC_POSTOVERFLOWS:-}\n PUID: ${PUID:-1001}\n SCENARIOS: ${CROWDSEC_SCENARIOS:-}\n TEST_MODE: ${CROWDSEC_TEST_MODE:-false}\n TYPE: ${CROWDSEC_TYPE:-}\n TZ: ${TZ:-America/Chicago}\n UMASK: ${UMASK:-002}\n USE_TLS: ${CROWDSEC_USE_TLS:-false}\n USE_WAL: ${CROWDSEC_USE_WAL:-false}\n expose:\n - ${CROWDSEC_METRICS_PORT:-6060}\n - ${CROWDSEC_HTTP_PORT:-8080}\n extra_hosts: *common-hostname-aliases\n hostname: crowdsec\n image: docker.io/crowdsecurity/crowdsec:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: CrowdSec is an open-source, behavioral, intrusion detection system.\n homepage.group: Security\n homepage.href: https://crowdsec.$DOMAIN/\n homepage.icon: crowdsec.png\n homepage.name: Crowdsec\n homepage.widget.password: \"\"\n homepage.widget.type: crowdsec\n homepage.widget.url: http://crowdsec:8080\n homepage.widget.username: \"\"\n traefik.enable: \"true\"\n traefik.http.routers.crowdsec.middlewares: nginx-auth@file\n traefik.http.routers.crowdsec.rule: Host(`crowdsec.$DOMAIN`) || Host(`crowdsec.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.crowdsec.loadbalancer.server.port: \"8080\"\n kuma.crowdsec.http.name: \"crowdsec.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.crowdsec.http.url: \"https://crowdsec.${DOMAIN}\"\n kuma.crowdsec.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.104\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/crowdsec/data:/var/lib/crowdsec/data\n - /home/ubuntu/my-media-stack/configs/crowdsec/etc/crowdsec:/etc/crowdsec\n - /home/ubuntu/my-media-stack/configs/crowdsec/plugins:/usr/local/lib/crowdsec/plugins\n - /home/ubuntu/my-media-stack/configs/crowdsec/logs:/var/log\n deunhealth:\n container_name: deunhealth\n environment:\n HEALTH_SERVER_ADDRESS: 127.0.0.1:9999\n LOG_LEVEL: debug\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n image: qmcgaw/deunhealth\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: DeUnhealth is a tool that automatically restarts unhealthy containers.\n homepage.group: Infrastructure\n homepage.href: https://deunhealth.$DOMAIN/\n homepage.icon: deunhealth.png\n homepage.name: DeUnhealth\n network_mode: none\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n dozzle:\n container_name: dozzle\n expose:\n - \"8080\"\n extra_hosts: *common-hostname-aliases\n hostname: dozzle\n image: amir20/dozzle\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n homepage.group: System Monitoring\n homepage.href: https://dozzle.$DOMAIN/\n homepage.icon: dozzle.png\n homepage.name: Dozzle\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: Host(`dozzle.$DOMAIN`) || Host(`dozzle.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.dozzle.loadbalancer.server.port: \"8080\"\n kuma.dozzle.http.name: \"dozzle.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.dozzle.http.url: \"https://dozzle.${DOMAIN}\"\n kuma.dozzle.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.89\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n flaresolverr:\n image: ghcr.io/flaresolverr/flaresolverr:latest\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n expose:\n - \"8191\"\n environment:\n PGID: \"${PGID:-121}\"\n PUID: \"${PUID:-1001}\"\n TZ: \"${FLARESOLVERR_TZ:-America/Chicago}\"\n BROWSER_TIMEOUT: \"${FLARESOLVERR_BROWSER_TIMEOUT:-120000}\"\n CAPTCHA_SOLVER: \"${FLARESOLVERR_CAPTCHA_SOLVER:-none}\"\n HEADLESS: \"${FLARESOLVERR_HEADLESS:-true}\"\n HOST: \"${FLARESOLVERR_HOST:-0.0.0.0}\"\n LOG_HTML: \"${FLARESOLVERR_LOG_HTML:-false}\"\n LOG_LEVEL: \"${FLARESOLVERR_LOG_LEVEL:-info}\"\n PORT: \"${FLARESOLVERR_PORT:-8191}\"\n PROMETHEUS_ENABLED: \"${FLARESOLVERR_PROMETHEUS_ENABLED:-false}\"\n PROMETHEUS_PORT: \"${FLARESOLVERR_PROMETHEUS_PORT:-9090}\"\n TEST_URL: \"${FLARESOLVERR_TEST_URL:-https://www.cloudflare.com}\"\n UMASK: \"${FLARESOLVERR_UMASK:-002}\"\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8191/health > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n start_period: 1m0s\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n homepage.group: Infrastructure\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.icon: flaresolverr.png\n homepage.name: Flaresolverr\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.flaresolverr.loadbalancer.server.port: \"8191\"\n kuma.flaresolverr.http.name: \"flaresolverr.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.flaresolverr.http.url: \"https://flaresolverr.${DOMAIN}\"\n kuma.flaresolverr.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.93\n restart: always\n gluetun-premiumize-nl:\n cap_add:\n - NET_ADMIN\n configs:\n - source: premiumize-auth.txt\n target: \"/config/auth.conf\"\n mode: 0600\n - source: premiumize-ca.cert\n target: \"/etc/openvpn/premiumize-ca.pem\"\n mode: 0600\n - source: vpn-nl.premiumize.me\n target: \"/etc/openvpn/target.ovpn\"\n mode: 0600\n container_name: gluetun-premiumize-nl\n devices:\n - /dev/net/tun:/dev/net/tun\n environment:\n FIREWALL_OUTBOUND_SUBNETS: 10.67.0.0/16,172.16.0.0/16,172.17.0.0/16,100.64.0.0/10\n OPENVPN_CUSTOM_CONFIG: /etc/openvpn/target.ovpn\n OPENVPN_FLAGS: --auth-user-pass /config/auth.conf\n OPENVPN_IPV6: \"off\"\n VPN_SERVICE_PROVIDER: custom\n VPN_TYPE: openvpn\n expose:\n - \"51413\"\n - \"8084\"\n - \"6881\"\n - 6881/udp\n extra_hosts:\n - aiostreams=10.67.128.200\n - autoscan=10.67.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.67.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.67.128.93\n - code-demo=10.67.128.80\n - code-server=10.67.128.92\n - code=10.67.128.96\n - comet=10.67.128.97\n - crowdsec=10.67.128.104\n - dash=10.67.128.23\n - decluttarr=10.67.128.21\n - deluge=10.67.128.97\n - dozzle=10.67.128.89\n - firecrawl-api=10.67.128.127\n - firecrawl-playwright=10.67.128.130\n - firecrawl-worker=10.67.128.128\n - flaresolverr=10.67.128.93\n - gatus=10.67.128.105\n - gluetun-premiumize-nl=10.67.128.119\n - gpt-researcher=10.67.128.43\n - gptr=10.67.128.43\n - homepage=10.67.128.88\n - homer=10.67.0.106\n - host.docker.internal=host-gateway\n - jackett=10.67.128.97\n - jackettio=10.67.128.97\n - jellyfin=10.67.128.120\n - jellyseerr=10.67.128.115\n - lobechat=10.67.128.46\n - localhost=10.67.128.97\n - maintainerr=10.67.128.84\n - mediaflow-proxy=10.67.128.97\n - mediafusion=10.67.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.67.0.50\n - nginx-auth=10.67.128.94\n - open-webui=10.67.128.118\n - overseerr=10.67.128.116\n - plex-authentication=10.67.128.112\n - plex-repair=10.67.0.115\n - plex-request=10.67.128.113\n - plex-watchlist=10.67.52.97\n - plex=10.67.128.95\n - prowlarr=10.67.128.97\n - qbittorrent=10.67.128.119\n - qdrant=10.67.128.44\n - radarr=10.67.128.121\n - rclone=10.67.128.111\n - realdebrid-account-monitor=10.67.128.109\n - recyclarr=10.67.0.117\n - redis=10.67.128.87\n - riven-backend=10.67.128.101\n - riven-db=10.67.128.102\n - riven-frontend=10.67.128.100\n - riven=10.67.128.101\n - script-runner=10.67.0.116\n - searxng=10.67.128.90\n - sonarr-anime=10.67.128.123\n - sonarr=10.67.128.122\n - speedtest=10.67.128.86\n - stremio-fallback=10.67.128.97\n - stremio-https-server=10.67.128.97\n - stremio-jackett=10.67.128.97\n - stremio-web=10.67.128.97\n - stremthru=10.67.128.99\n - tautulli=10.67.128.103\n - tinyauth=10.67.128.82\n - traefik=10.67.128.85\n - transmission=10.67.128.119\n - warp=10.67.128.97\n - watchtower=10.67.128.83\n - whisparr=10.67.0.120\n - whoami=10.67.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.67.128.107\n - zurg=10.67.128.97\n hostname: gluetun-premiumize-nl\n image: ghcr.io/qdm12/gluetun\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.http.routers.qbittorrent.rule: Host(`qbittorrent.$DOMAIN`) || Host(`qbittorrent.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.qbittorrent.service: qbittorrent\n traefik.http.routers.transmission.rule: Host(`transmission.$DOMAIN`) || Host(`transmission.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.transmission.service: transmission\n traefik.http.services.qbittorrent.loadbalancer.server.port: \"8084\"\n traefik.http.services.transmission.loadbalancer.server.port: \"9091\"\n kuma.qbittorrent.http.name: \"qbittorrent.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.qbittorrent.http.url: \"https://qbittorrent.${DOMAIN}\"\n kuma.qbittorrent.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.119\n ports:\n - mode: ingress\n target: 8084\n published: 8084\n protocol: tcp\n - mode: ingress\n target: 6881\n published: 6881\n protocol: tcp\n - mode: ingress\n target: 6881\n published: 6881\n protocol: udp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n gptr:\n build:\n context: https://github.com/th3w1zard1/gpt-researcher.git#master\n dockerfile: Dockerfile.fullstack\n container_name: gptr\n environment:\n ANTHROPIC_API_KEY: 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\n BRAVE_API_KEY: BQYQ53Y34895489548954895489548954895489\n CHOKIDAR_USEPOLLING: \"true\"\n DEEPSEEK_API_KEY: sk-d6c4fe1d5db945ba8547fc348df03833\n EXA_API_KEY: 4f304bea-22a0-4473-bc38-21114d0f8aaf\n FIRE_CRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n FIRECRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n GEMINI_API_KEY: AIzaSyB-1aUePBQbb7_rpIDz5kY7AMWxguMq7Y8\n GLAMA_API_KEY: glama_eyJhcGlLZXkiOiI4YTc1MWRkYi0xNGNjLTQyNTctOTgzMS05OTMyNDQyNGY4NDQifQ\n GROQ_API_KEY: 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\n HF_TOKEN: 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\n HUGGINGFACE_ACCESS_TOKEN: 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\n HUGGINGFACE_API_TOKEN: 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\n LANGCHAIN_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_TRACING: \"true\"\n LOGGING_LEVEL: DEBUG\n MISTRAL_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n MISTRALAI_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n NEXT_PUBLIC_GA_MEASUREMENT_ID: \"\"\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n OPENAI_API_KEY: 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\n OPENROUTER_API_KEY: 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\n PERPLEXITY_API_KEY: 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\n PERPLEXITYAI_API_KEY: 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\n REPLICATE_API_KEY: r8_8ktlYwwthNrp8pPSLZF1DD7507tku082y7ptd\n REVID_API_KEY: 9a9884c5-6cb6-4ea9-aadc-91b31de76653\n SAMBANOVA_API_KEY: f3f47213-2123-4408-8247-816319bc1e84\n SEARCH1API_KEY: DE721F1D-498C-4DBF-843C-B72A75DAFD14\n SERPAPI_API_KEY: dfc64bfdf77ccdde0196b0fde7848a8ebc04e520\n TAVILY_API_KEY: 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\n TOGETHERAI_API_KEY: 3bf6c62c61e9dbfbe4e947bd7e0ec876188e41916fbd622877018188f84ab2f2\n UNIFY_API_KEY: XeFNQpisNryyS6NrlnDEAK7D-aE0mAq4JCkwsfeDa90=\n UPSTAGE_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n UPSTAGEAI_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n YOU_API_KEY: cbee3356-84ed-40ea-9d09-ce3d0afcb340<__>1QKC7nETU8N2v5f46hH6l6ax\n expose:\n - \"3000\"\n - \"3001\"\n - \"8000\"\n extra_hosts: *common-hostname-aliases\n hostname: gptr\n healthcheck:\n test:\n - CMD-SHELL\n - (wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1)\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: th3w1zard1/ai-researchwizard:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.group: AI\n homepage.href: https://gptr.$DOMAIN/\n homepage.icon: gptr.png\n homepage.name: AI Research Wizard\n traefik.enable: \"true\"\n traefik.http.routers.gptr-legacy.rule: Host(`gptr-legacy.$DOMAIN`) || Host(`gptr-legacy.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr.rule: Host(`gptr.$DOMAIN`) || Host(`gptr.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.gptr.service: gptr\n traefik.http.services.gptr-legacy.loadbalancer.server.port: \"8000\"\n traefik.http.services.gptr.loadbalancer.server.port: \"3000\"\n kuma.gptr.http.name: \"gptr.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.gptr.http.url: \"https://gptr.${DOMAIN}\"\n kuma.gptr.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.43\n ports:\n - mode: ingress\n target: 3001\n published: 3001\n protocol: tcp\n - mode: ingress\n target: 8000\n published: 8000\n protocol: tcp\n restart: always\n stdin_open: true\n volumes:\n - /home/ubuntu/my-media-stack/configs/gptr/logs:/usr/src/app/logs\n - /home/ubuntu/my-media-stack/configs/gptr/outputs:/usr/src/app/outputs\n - /home/ubuntu/my-media-stack/configs/gptr/reports:/usr/src/app/reports\n headscale:\n command:\n - serve\n configs:\n - source: headscale-config.yaml\n target: /etc/headscale/config.yml\n mode: 0444\n container_name: headscale\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3478\"\n - \"8080\"\n - \"9090\"\n - \"50443\"\n extra_hosts: *common-hostname-aliases\n hostname: headscale\n image: docker.io/headscale/headscale:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Headscale is a server that manages your Tailscale network.\n homepage.group: Networking\n homepage.href: https://headscale.$DOMAIN/\n homepage.icon: headscale.png\n homepage.name: Headscale\n traefik.enable: \"true\"\n traefik.http.routers.headscale-admin.rule: Host(`headscale-admin.$DOMAIN`) || Host(`headscale-admin.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.headscale-admin.service: headscale-admin\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.headscale.service: headscale\n traefik.http.services.headscale-admin.loadbalancer.server.port: \"9090\"\n traefik.http.services.headscale.loadbalancer.server.port: \"8080\"\n kuma.headscale.http.name: \"headscale.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.headscale.http.url: \"https://headscale.${DOMAIN}\"\n kuma.headscale.http.interval: \"60\"\n networks:\n swarmnet:\n ipv4_address: 10.67.0.106\n volumes:\n - /home/ubuntu/my-media-stack/configs/headscale/config:/etc/headscale\n - /home/ubuntu/my-media-stack/configs/headscale/lib:/var/lib/headscale\n - /home/ubuntu/my-media-stack/configs/headscale/run:/var/run/headscale\n homepage:\n container_name: homepage\n environment:\n HOMEPAGE_ALLOWED_HOSTS: '*'\n HOMEPAGE_VAR_HEADER_STYLE: \"\"\n HOMEPAGE_VAR_SEARCH_PROVIDER: google\n HOMEPAGE_VAR_TITLE: Bolabaden\n HOMEPAGE_VAR_WEATHER_CITY: Chicago\n HOMEPAGE_VAR_WEATHER_LAT: \"41.8781\"\n HOMEPAGE_VAR_WEATHER_LONG: \"-87.6298\"\n HOMEPAGE_VAR_WEATHER_UNIT: fahrenheit\n TZ: America/Chicago\n extra_hosts: *common-hostname-aliases\n hostname: homepage\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n image: ghcr.io/gethomepage/homepage\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Homepage is a dashboard that displays all of your services.\n homepage.group: Dashboards\n homepage.href: https://homepage.$DOMAIN/\n homepage.icon: homepage.png\n homepage.name: Homepage\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: Host(`homepage.$DOMAIN`) || Host(`homepage.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.homepage.loadbalancer.server.port: \"3000\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.88\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/ubuntu/my-media-stack/configs/homepage:/app/config\n homer:\n configs:\n - source: homer-config.yml\n target: /www/assets/config.yml\n container_name: homer\n environment:\n GID: \"121\"\n INIT_ASSETS: \"1\"\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UID: \"1001\"\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts: *common-hostname-aliases\n hostname: homer\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:8080 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: b4bz/homer:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Static homepage dashboard\n homepage.group: Dashboards\n homepage.href: https://homer.$DOMAIN/\n homepage.icon: http://127.0.0.1:8080/assets/icons/pwa-192x192.png\n homepage.name: Homer\n homepage.weight: \"0\"\n homepage.widget.type: homer\n homepage.widget.url: http://homer:8080\n traefik.enable: \"true\"\n traefik.http.routers.homer.rule: Host(`homer.$DOMAIN`) || Host(`homer.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.homer.loadbalancer.server.port: \"8080\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.106\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/homer/assets:/www/assets\n jackett:\n container_name: jackett\n depends_on:\n - flaresolverr\n - warp\n environment:\n AUTO_UPDATE: \"true\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n PGID: \"121\"\n PUID: \"1001\"\n RUN_OPTS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=nnx0n84pcj7umynyd2pbid2nl1zzuemz || exit 1\n timeout: 10s\n interval: 30s\n start_period: 1m0s\n image: linuxserver/jackett\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.group: Source Aggregator\n homepage.href: https://jackett.$DOMAIN/\n homepage.icon: jackett.png\n homepage.name: Jackett Indexer\n homepage.weight: \"1\"\n homepage.widget.key: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n homepage.widget.type: jackett\n homepage.widget.url: \"9117\"\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\n network_mode: service:warp\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/jackett/config:/config\n - /mnt/remote/realdebrid/blackhole:/blackhole\n - /mnt:/mnt\n mediaflow-proxy:\n container_name: mediaflow-proxy\n depends_on:\n - warp\n environment:\n API_PASSWORD: d468d92139047f1df5ba0fae9d998957c30834a386cd63d0472a7b044d42a96a\n ENABLE_STREAMING_PROGRESS: \"true\"\n PGID: \"121\"\n PORT: \"8888\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD\n - python3\n - -c\n - import socket; s=socket.socket(); s.connect(('127.0.0.1', 8888)); print('Healthcheck passed')\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 10s\n image: mhdzumair/mediaflow-proxy\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n homepage.icon: mediaflow-proxy.png\n homepage.name: MediaFlow Proxy\n network_mode: service:warp\n restart: always\n mediafusion:\n container_name: mediafusion\n depends_on:\n - mongodb\n - redis\n - warp\n environment:\n ADDON_NAME: MediaFusion | $DOMAIN\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\"\n ADULT_CONTENT_REGEX_KEYWORDS: \\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\b\n API_PASSWORD: h4L0m4St3R327\n ARAB_TORRENTS_SCHEDULER_CRONTAB: 0 0 * * *\n BACKGROUND_SEARCH_CRONTAB: '*/5 * * * *'\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\"\n BRANDING_DESCRIPTION: Hosted on $DOMAIN\n BT4G_IMMEDIATE_MAX_PROCESS: \"15\"\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n BT4G_SEARCH_INTERVAL_HOUR: \"72\"\n BT4G_SEARCH_TIMEOUT: \"10\"\n BT4G_URL: https://bt4gprx.com\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: 0 0 * * *\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: 0 * * * *\n CONTACT_EMAIL: $DOMAIN\n DB_MAX_CONNECTIONS: \"50\"\n DESCRIPTION: $DOMAIN\n DISABLE_ALL_SCHEDULER: \"False\"\n DISABLED_PROVIDERS: '[]'\n DLHD_SCHEDULER_CRONTAB: 25 * * * *\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\"\n ENABLE_RATE_LIMIT: \"True\"\n FLARESOLVERR_URL: http://flaresolverr:8191/v1\n FORMULA_TGX_SCHEDULER_CRONTAB: '*/30 * * * *'\n HOST_URL: $DOMAIN\n IS_PUBLIC_INSTANCE: \"False\"\n IS_SCRAP_FROM_BT4G: \"True\"\n IS_SCRAP_FROM_JACKETT: \"False\"\n IS_SCRAP_FROM_MEDIAFUSION: \"True\"\n IS_SCRAP_FROM_PROWLARR: \"False\"\n IS_SCRAP_FROM_TORRENTIO: \"True\"\n IS_SCRAP_FROM_YTS: \"True\"\n IS_SCRAP_FROM_ZILEAN: \"True\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\"\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n JACKETT_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\"\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n JACKETT_LIVE_TITLE_SEARCH: \"True\"\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\"\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\"\n JACKETT_URL: http://jackett:9117\n LOGGING_LEVEL: INFO\n LOGO_URL: \"\"\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"3\"\n MEDIAFUSION_URL: https://mediafusion.$DOMAIN\n META_CACHE_TTL: \"1800\"\n METADATA_PRIMARY_SOURCE: tmdb\n MIN_SCRAPING_VIDEO_SIZE: \"26214400\"\n MONGO_URI: mongodb\n MOTOGP_TGX_SCHEDULER_CRONTAB: 0 5 * * *\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: 0 * * * *\n NOWMETV_SCHEDULER_CRONTAB: 0 0 * * *\n NOWSPORTS_SCHEDULER_CRONTAB: 0 10 * * *\n PGID: \"121\"\n PLAYWRIGHT_CDP_URL: ws://browserless:3000?blockAds=true&stealth=true\n POSTER_HOST_URL: $DOMAIN\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"False\"\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n PROWLARR_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"10\"\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n PROWLARR_LIVE_TITLE_SEARCH: \"True\"\n PROWLARR_SEARCH_INTERVAL_HOUR: \"72\"\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"30\"\n PROWLARR_URL: http://prowlarr:9696\n PUID: \"1001\"\n REDIS_MAX_CONNECTIONS: \"100\"\n REDIS_URL: 10.67.128.87\n SCRAPE_WITH_AKA_TITLES: \"True\"\n SECRET_KEY: c75ac92df70c4383c8d1bb37f65454f9\n SPORT_VIDEO_SCHEDULER_CRONTAB: '*/20 * * * *'\n STORE_STREMTHRU_MAGNET_CACHE: \"true\"\n SYNC_DEBRID_CACHE_STREAMS: \"False\"\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: 0 */6 * * *\n TAMILMV_SCHEDULER_CRONTAB: 0 */3 * * *\n TAMILULTRA_SCHEDULER_CRONTAB: 0 8 * * *\n TELEGRAM_BOT_TOKEN: \"\"\n TELEGRAM_CHAT_ID: \"\"\n TMDB_API_KEY: cec876f852b9c15d2c1b436b1117dff7\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"3\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UFC_TGX_SCHEDULER_CRONTAB: 30 */3 * * *\n UMASK: \"002\"\n UPDATE_SEEDERS_CRONTAB: 0 0 * * *\n VALIDATE_M3U8_URLS_LIVENESS: \"True\"\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: 0 */6 * * *\n VERSION: 1.0.0\n WORKER_MAX_TASKS_PER_CHILD: \"20\"\n WWE_TGX_SCHEDULER_CRONTAB: 10 */3 * * *\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 1m0s\n image: mhdzumair/mediafusion:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.icon: mediafusion.png\n homepage.name: MediaFusion\n network_mode: service:warp\n restart: always\n mongodb:\n container_name: mongodb\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"27017\"\n extra_hosts: *common-hostname-aliases\n hostname: mongodb\n healthcheck:\n test:\n - CMD-SHELL\n - mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\"ping\").ok' > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 10s\n retries: 5\n start_period: 40s\n image: mongo:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MongoDB is a NoSQL database that uses JSON-like documents with optional schemas.\n homepage.group: Databases\n homepage.href: https://mongodb.$DOMAIN/\n homepage.icon: mongodb.png\n homepage.name: MongoDB\n traefik.enable: \"true\"\n traefik.http.routers.mongodb.middlewares: nginx-auth@file\n traefik.http.routers.mongodb.rule: Host(`mongodb.$DOMAIN`) || Host(`mongodb.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.mongodb.loadbalancer.server.port: \"27017\"\n networks:\n swarmnet:\n ipv4_address: 10.67.0.50\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/mongodb/data:/data/db\n nginx-auth:\n container_name: nginx-auth\n environment:\n NGINX_ACCESS_LOG: /dev/stdout\n NGINX_ERROR_LOG: /dev/stderr\n NGINX_LOG_LEVEL: warn\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n extra_hosts: *common-hostname-aliases\n hostname: nginx-auth\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:80/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 20s\n image: nginx:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.nginx-auth.forwardauth.address: http://nginx-auth:80/auth\n traefik.http.middlewares.nginx-auth.forwardauth.authResponseHeaders: X-Auth-Method,X-Auth-Passed,X-Middleware-Name\n traefik.http.middlewares.nginx-auth.forwardauth.trustForwardHeader: \"true\"\n traefik.http.routers.nginx-auth.rule: Host(`nginx-auth.$DOMAIN`) || Host(`nginx-auth.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.nginx-auth.service: nginx-auth\n traefik.http.services.nginx-auth.loadbalancer.server.port: \"80\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.94\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/nginx-middlewares/nginx.conf:/etc/nginx/nginx.conf\n - /home/ubuntu/my-media-stack/configs/nginx-middlewares/auth:/etc/nginx/auth\n overseerr:\n container_name: overseerr\n depends_on:\n - plex\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5055\"\n extra_hosts: *common-hostname-aliases\n hostname: overseerr\n image: docker.io/linuxserver/overseerr\n labels:\n homepage.description: Allows users to request movies and TV shows, integrating with your media server for easy content management.\n homepage.group: Media Requests\n homepage.href: https://overseerr.$DOMAIN/\n homepage.icon: overseerr.png\n homepage.name: Overseerr Requests\n homepage.weight: \"3\"\n homepage.widget.key: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n homepage.widget.type: overseerr\n homepage.widget.url: https://overseerr.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.overseerr.rule: Host(`overseerr.$DOMAIN`) || Host(`overseerr.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.overseerr.loadbalancer.server.port: \"5055\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.116\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/overseerr/config:/config\n plex:\n container_name: plex\n environment:\n ADVERTISE_IP: $DOMAIN\n EMAIL_TO: bolabaden.duckdns@gmail.com\n PLEX_CLAIM: claim-RmAd7Q1DfvybLKDY8zmQ\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n SMTP_FROM: $DOMAIN\n SMTP_PORT: \"587\"\n WAIT_FOR_MOUNT_PATHS: /mnt/remote/realdebrid\n WAIT_FOR_URLS: http://zurg:9999/http/version.txt\n extra_hosts: *common-hostname-aliases\n hostname: plex\n healthcheck:\n test:\n - CMD-SHELL\n - curl --connect-timeout 15 --silent --show-error --fail http://localhost:32400/identity\n timeout: 15s\n interval: 1m0s\n retries: 3\n start_period: 1m0s\n image: plexinc/pms-docker\n labels:\n homepage.description: Stream your movies, TV shows, music, and photos to any device, providing a centralized media hub for all your content.\n homepage.group: Media Streaming\n homepage.href: https://plex.$DOMAIN/\n homepage.icon: plex.png\n homepage.name: Plex Media Server\n homepage.weight: \"4\"\n homepage.widget.key: 18rS6gM-Wec22uq5Gw-U\n homepage.widget.type: plex\n homepage.widget.url: https://plex.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.plex.rule: Host(`plex.$DOMAIN`) || Host(`plex.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.plex.loadbalancer.server.port: \"32400\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.95\n ports:\n - mode: ingress\n target: 1900\n published: 1902\n protocol: udp\n - mode: ingress\n target: 32400\n published: 32400\n protocol: tcp\n - mode: ingress\n target: 32410\n published: 32410\n protocol: udp\n - mode: ingress\n target: 8324\n published: 8324\n protocol: tcp\n - mode: ingress\n target: 32412\n published: 32412\n protocol: udp\n - mode: ingress\n target: 32413\n published: 32413\n protocol: udp\n - mode: ingress\n target: 32414\n published: 32414\n protocol: udp\n - mode: ingress\n target: 32469\n published: 32469\n protocol: tcp\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/plex/config:/config\n - /home/ubuntu/my-media-stack/configs/plex/config/osx-config:/config/Library/Application Support/Plex Media Server\n - /dev/shm:/dev/shm\n - /mnt/local/transcodes/plex:/transcode\n - /mnt/symlinks:/storage/symlinks\n - /mnt/remote/realdebrid:/mnt/remote/realdebrid:rshared\n prowlarr:\n container_name: prowlarr\n depends_on:\n - warp\n environment:\n PGID: \"121\"\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - 'curl -fs -H \"Authorization: Bearer 29440a82740d475cacb35327c62c87a1\" http://127.0.0.1:9696/api/v1/system/status || exit 1'\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: linuxserver/prowlarr\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.group: Indexers\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.icon: prowlarr.png\n homepage.name: Prowlarr\n homepage.weight: \"1\"\n homepage.widget.key: 29440a82740d475cacb35327c62c87a1\n homepage.widget.type: prowlarr\n homepage.widget.url: http://prowlarr:9696\n network_mode: service:warp\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/prowlarr/config:/config\n - /mnt:/mnt\n rclone:\n cap_add:\n - SYS_ADMIN\n command:\n - rcd\n - --rc-web-gui\n - --rc-web-gui-no-open-browser\n - --rc-addr=:5572\n - --log-level=DEBUG\n - --rc-user=brunner56\n - --rc-pass=h4L0m4St3R327\n - --config=/config/rclone/rclone.conf\n - --cache-dir=/.cache/rclone\n configs:\n - source: rclone-rclone.conf\n target: \"/config/rclone/rclone.conf\"\n mode: 0777\n container_name: rclone\n devices:\n - '/dev/fuse:/dev/fuse'\n expose:\n - \"5572\"\n - \"5575\"\n extra_hosts: *common-hostname-aliases\n hostname: rclone\n image: rclone/rclone:latest\n labels:\n homepage.description: A web interface for Rclone.\n homepage.group: Media Management\n homepage.href: https://rclone.$DOMAIN/\n homepage.icon: rclone.png\n homepage.name: Rclone\n homepage.weight: \"0\"\n traefik.enable: \"true\"\n traefik.http.routers.rclone.rule: Host(`rclone.$DOMAIN`) || Host(`rclone.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.rclone.service: rclone\n traefik.http.services.rclone.loadbalancer.server.port: \"5572\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.111\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - /:/hostfs:rshared\n - /etc/fuse.conf:/etc/fuse.conf:ro\n - /etc/group:/etc/group:ro\n - /etc/passwd:/etc/passwd:ro\n - /mnt/remote/realdebrid:/mnt/remote/realdebrid:rshared\n - /mnt/symlinks:/mnt/symlinks\n - /home/ubuntu/my-media-stack/configs/rclone/.cache:/.cache\n - /home/ubuntu/my-media-stack/configs/rclone/config/rclone:/config/rclone\n - /home/ubuntu/my-media-stack/configs/rclonefm/js:/var/lib/rclonefm/js\n rclone-zurg:\n cap_add:\n - SYS_ADMIN\n configs:\n - source: rclone-mounts.json\n target: \"/app/mounts.json\"\n mode: 0777\n container_name: rclone-zurg\n depends_on:\n - rclone\n devices:\n - \"/dev/fuse:/dev/fuse\"\n environment:\n RCLONE_CONFIG_PATH: /config/rclone/rclone.conf\n RCLONE_PASSWORD: h4L0m4St3R327\n RCLONE_PORT: \"5572\"\n RCLONE_USERNAME: brunner56\n extra_hosts: *common-hostname-aliases\n hostname: rclone-zurg\n healthcheck:\n test:\n - CMD\n - mountpoint\n - -q\n - /mnt/remote/realdebrid\n timeout: 3s\n interval: 5s\n retries: 2\n start_period: 10s\n image: ghcr.io/coanghel/rclone-docker-automount/rclone-init:latest\n networks:\n swarmnet: null\n privileged: true\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - /mnt/remote/realdebrid:/mnt/remote/realdebrid:rshared\n redis:\n command:\n - redis-server\n - --appendonly\n - \"yes\"\n - --save\n - \"60\"\n - \"1\"\n - --bind\n - 0.0.0.0\n container_name: redis\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n REDIS_DATABASE: \"0\"\n REDIS_HOST: redis\n REDIS_PASSWORD: redis\n REDIS_PORT: \"6379\"\n REDIS_USERNAME: default\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"6379\"\n extra_hosts: *common-hostname-aliases\n hostname: redis\n healthcheck:\n test:\n - CMD-SHELL\n - redis-cli ping > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 10s\n retries: 5\n image: redis:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Redis is an in-memory data structure store, used as a database, cache, and message broker.\n homepage.group: Databases\n homepage.href: https://redis.$DOMAIN/\n homepage.icon: redis.png\n homepage.name: Redis\n traefik.enable: \"true\"\n traefik.http.routers.redis.middlewares: nginx-auth@file\n traefik.http.routers.redis.rule: Host(`redis.$DOMAIN`) || Host(`redis.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.redis.loadbalancer.server.port: \"6379\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.87\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/redis:/data\n riven:\n configs:\n - source: riven-settings.json\n target: /riven/data/settings.json\n mode: 0777\n container_name: riven\n depends_on:\n - riven-db\n deploy:\n resources:\n limits:\n cpus: \"1\"\n memory: \"1073741824\"\n reservations:\n cpus: \"0.5\"\n memory: \"20971520\"\n environment:\n API_KEY: 3e0be750b16ff363727d05d18ba364fd\n DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n DIALECT: postgres\n HARD_RESET: \"false\"\n PGID: \"121\"\n PUID: \"1001\"\n REPAIR_SYMLINKS: \"false\"\n RIVEN_CONTENT_LISTRR_API_KEY: d962d6e9fd4e4db790711128ed6013b236e86b1bea534c7f9f0c17a3c4c72982\n RIVEN_CONTENT_LISTRR_ENABLED: \"false\"\n RIVEN_CONTENT_LISTRR_MOVIE_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_SHOW_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_MDBLIST_API_KEY: so5wnihfjtqhacaa310gzmrq6\n RIVEN_CONTENT_MDBLIST_ENABLED: \"false\"\n RIVEN_CONTENT_MDBLIST_LISTS: '[]'\n RIVEN_CONTENT_MDBLIST_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_OVERSEERR_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n RIVEN_CONTENT_OVERSEERR_ENABLED: \"true\"\n RIVEN_CONTENT_OVERSEERR_UPDATE_INTERVAL: \"30\"\n RIVEN_CONTENT_OVERSEERR_URL: http://overseerr:5055\n RIVEN_CONTENT_OVERSEERR_USE_WEBHOOK: \"false\"\n RIVEN_CONTENT_PLEX_WATCHLIST_ENABLED: \"true\"\n RIVEN_CONTENT_PLEX_WATCHLIST_RSS: '[]'\n RIVEN_CONTENT_PLEX_WATCHLIST_UPDATE_INTERVAL: \"60\"\n RIVEN_CONTENT_TRAKT_API_KEY: 052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\n RIVEN_CONTENT_TRAKT_ENABLED: \"true\"\n RIVEN_CONTENT_TRAKT_UPDATE_INTERVAL: \"3600\"\n RIVEN_DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n RIVEN_DEBUG: \"false\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_API_KEY: \"\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_PROXY_URL: http://warp:1080\n RIVEN_DOWNLOADERS_REAL_DEBRID_API_KEY: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n RIVEN_DOWNLOADERS_REAL_DEBRID_ENABLED: \"true\"\n RIVEN_DOWNLOADERS_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n RIVEN_DOWNLOADERS_TORBOX_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_VIDEO_EXTENSIONS: '[\"avi\",\"mkv\",\"mp4\"]'\n RIVEN_EMBY_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_EMBY_ENABLED: \"false\"\n RIVEN_EMBY_URL: http://emby:8096\n RIVEN_FORCE_ENV: \"false\"\n RIVEN_FORCE_REFRESH: \"false\"\n RIVEN_JELLYFIN_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_JELLYFIN_ENABLED: \"true\"\n RIVEN_JELLYFIN_URL: http://jellyfin:8096\n RIVEN_LOG: \"true\"\n RIVEN_MAP_METADATA: \"true\"\n RIVEN_PLEX_ENABLED: \"true\"\n RIVEN_PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n RIVEN_PLEX_URL: http://plex:32400\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_PREFERRED: '[\"en\"]'\n RIVEN_RANKING_LANGUAGES_REQUIRED: '[\"en\"]'\n RIVEN_RANKING_OPTIONS_ALLOW_ENGLISH_IN_LANGUAGES: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_ALL_TRASH: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_RANKS_UNDER: \"-10000\"\n RIVEN_RANKING_OPTIONS_REMOVE_UNKNOWN_LANGUAGES: \"false\"\n RIVEN_RANKING_OPTIONS_TITLE_SIMILARITY: \"0.85\"\n RIVEN_RANKING_PREFERRED: '[]'\n RIVEN_RANKING_PROFILE: default\n RIVEN_RANKING_REQUIRE: '[]'\n RIVEN_RANKING_RESOLUTIONS_360P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_480P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_720P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_1080P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_2160P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_UNKNOWN: \"true\"\n RIVEN_SCRAPING_AFTER_2: \"2\"\n RIVEN_SCRAPING_AFTER_5: \"6\"\n RIVEN_SCRAPING_AFTER_10: \"24\"\n RIVEN_SCRAPING_COMET_ENABLED: \"true\"\n RIVEN_SCRAPING_COMET_INDEXERS: animetosho,anirena,eztv,limetorrents,nyaasi,solidtorrents,thepiratebay,torlock,yts\n RIVEN_SCRAPING_COMET_RATELIMIT: \"false\"\n RIVEN_SCRAPING_COMET_TIMEOUT: \"30\"\n RIVEN_SCRAPING_COMET_URL: http://comet:2020\n RIVEN_SCRAPING_ENABLE_ALIASES: \"true\"\n RIVEN_SCRAPING_JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n RIVEN_SCRAPING_JACKETT_ENABLED: \"true\"\n RIVEN_SCRAPING_JACKETT_RATELIMIT: \"false\"\n RIVEN_SCRAPING_JACKETT_TIMEOUT: \"10\"\n RIVEN_SCRAPING_JACKETT_URL: http://jackett:9117\n RIVEN_SCRAPING_KNIGHTCRAWLER_ENABLED: \"false\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_KNIGHTCRAWLER_RATELIMIT: \"true\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_TIMEOUT: \"30\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_URL: https://knightcrawler.elfhosted.com\n RIVEN_SCRAPING_MEDIAFUSION_CATALOGS: prowlarr_streams,torrentio_streams\n RIVEN_SCRAPING_MEDIAFUSION_ENABLED: \"true\"\n RIVEN_SCRAPING_MEDIAFUSION_RATELIMIT: \"false\"\n RIVEN_SCRAPING_MEDIAFUSION_TIMEOUT: \"10\"\n RIVEN_SCRAPING_MEDIAFUSION_URL: http://mediafusion:8080\n RIVEN_SCRAPING_ORIONOID_API_KEY: LXBVEGR6DBKLBSBNLPARQHQRH8DGD7PT\n RIVEN_SCRAPING_ORIONOID_CACHED_RESULTS_ONLY: \"true\"\n RIVEN_SCRAPING_ORIONOID_ENABLED: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_LIMITCOUNT: \"5\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEO3D: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEOQUALITY: sd_hd8k\n RIVEN_SCRAPING_ORIONOID_RATELIMIT: \"true\"\n RIVEN_SCRAPING_ORIONOID_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PARSE_DEBUG: \"false\"\n RIVEN_SCRAPING_PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n RIVEN_SCRAPING_PROWLARR_ENABLED: \"false\"\n RIVEN_SCRAPING_PROWLARR_LIMITER_SECONDS: \"60\"\n RIVEN_SCRAPING_PROWLARR_RATELIMIT: \"false\"\n RIVEN_SCRAPING_PROWLARR_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PROWLARR_URL: http://prowlarr:9696\n RIVEN_SCRAPING_TORRENTIO_ENABLED: \"true\"\n RIVEN_SCRAPING_TORRENTIO_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_TORRENTIO_PROXY_URL: http://warp:1080\n RIVEN_SCRAPING_TORRENTIO_RATELIMIT: \"true\"\n RIVEN_SCRAPING_TORRENTIO_TIMEOUT: \"30\"\n RIVEN_SCRAPING_TORRENTIO_URL: https://torrentio.strem.fun\n RIVEN_SCRAPING_ZILEAN_ENABLED: \"true\"\n RIVEN_SCRAPING_ZILEAN_RATELIMIT: \"false\"\n RIVEN_SCRAPING_ZILEAN_TIMEOUT: \"30\"\n RIVEN_SCRAPING_ZILEAN_URL: http://zilean.elfhosted.com\n RIVEN_SYMLINK_LIBRARY_PATH: /mnt/symlinks\n RIVEN_SYMLINK_RCLONE_PATH: /mnt/remote/realdebrid\n RIVEN_SYMLINK_REPAIR_INTERVAL: \"6.0\"\n RIVEN_SYMLINK_REPAIR_SYMLINKS: \"true\"\n RIVEN_SYMLINK_SEPARATE_ANIME_DIRS: \"true\"\n RIVEN_TRACEMALLOC: \"false\"\n RIVEN_UPDATER_INTERVAL: \"120\"\n RIVEN_VERSION: 0.21.21\n SETTINGS_FILENAME: settings.json\n SKIP_TRAKT_CACHE: \"false\"\n SYMLINK_MAX_WORKERS: \"4\"\n TRAKT_API_CLIENT_ID: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts: *common-hostname-aliases\n hostname: riven\n healthcheck:\n test:\n - CMD-SHELL\n - curl -s http://127.0.0.1:8080 >/dev/null || exit 1\n timeout: 10s\n interval: 30s\n retries: 10\n image: docker.io/spoked/riven:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.riven.rule: Host(`riven-backend.$DOMAIN`) || Host(`riven-backend.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.riven.loadbalancer.server.port: \"8080\"\n kuma.riven.http.name: \"riven-backend.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.riven.http.url: \"https://riven-backend.${DOMAIN}\"\n kuma.riven.http.interval: \"30\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.101\n restart: always\n tty: true\n volumes:\n - /home/ubuntu/my-media-stack/configs/riven/data:/riven/data\n - /mnt/remote/realdebrid:/mnt/remote/realdebrid:rshared\n - /mnt/symlinks:/mnt/symlinks\n riven-db:\n container_name: riven-db\n environment:\n PGDATA: /var/lib/postgresql/data/pgdata\n PGID: \"121\"\n POSTGRES_DB: riven\n POSTGRES_PASSWORD: postgres\n POSTGRES_USER: postgres\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts: *common-hostname-aliases\n hostname: riven-db\n healthcheck:\n test:\n - CMD-SHELL\n - pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}\n timeout: 5s\n interval: 10s\n retries: 5\n image: postgres:16.3-alpine3.20\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.riven-db.middlewares: nginx-auth@file\n traefik.http.routers.riven-db.rule: Host(`riven-db.$DOMAIN`) || Host(`riven-db.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.riven-db.loadbalancer.server.port: \"5432\"\n kuma.riven.http.name: \"riven-db.${TS_HOSTNAME}.${DOMAIN}\"\n kuma.riven.http.url: \"https://riven-db.${DOMAIN}\"\n kuma.riven.http.interval: \"10\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.102\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/riven/pgdata:/var/lib/postgresql/data/pgdata\n riven-frontend:\n container_name: riven-frontend\n depends_on:\n - riven\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts: *common-hostname-aliases\n hostname: riven-frontend\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: spoked/riven-frontend:latest\n labels:\n homepage.description: Modern frontend for Plex Debrid\n homepage.group: Media Management\n homepage.href: https://riven.$DOMAIN/\n homepage.icon: riven.png\n homepage.name: Riven\n traefik.enable: \"true\"\n traefik.http.routers.riven-frontend.middlewares: nginx-auth@file\n traefik.http.routers.riven-frontend.rule: Host(`riven.$DOMAIN`) || Host(`riven.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.riven-frontend.service: riven-frontend\n traefik.http.services.riven-frontend.loadbalancer.server.port: \"3000\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.100\n restart: always\n tty: true\n volumes:\n - /home/ubuntu/my-media-stack/configs/riven/config:/riven/config\n - /home/ubuntu/my-media-stack/configs/riven/tmp:/tmp\n searxng:\n container_name: searxng\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n SEARXNG_BASE_URL: searxng\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts: *common-hostname-aliases\n hostname: searxng\n healthcheck:\n test:\n - CMD-SHELL\n - wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: docker.io/searxng/searxng:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n homepage.group: Search\n homepage.href: https://searxng.$DOMAIN/\n homepage.icon: searxng.png\n homepage.name: SearxNG\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.searxng.loadbalancer.server.port: \"8080\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.90\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/searxng:/etc/searxng\n speedtest:\n container_name: speedtest\n environment:\n ADMIN_EMAIL: boden.crouch@gmail.com\n ADMIN_NAME: ubuntu\n ADMIN_PASSWORD: h4L0m4St3R327\n API_RATE_LIMIT: \"60\"\n APP_KEY: base64:OZVnVd3/7lJTtOTtVZ0YqxXJKtle2R48NIrfFv11CkM=\n APP_NAME: Speedtest Tracker\n APP_TIMEZONE: America/Chicago\n APP_URL: \"\"\n ASSET_URL: \"\"\n CHART_BEGIN_AT_ZERO: \"true\"\n CHART_DATETIME_FORMAT: j/m G:i\n CONTENT_WIDTH: 7xl\n DATETIME_FORMAT: j M Y, G:i:s\n DB_CONNECTION: sqlite\n DISPLAY_TIMEZONE: America/Chicago\n PGID: \"121\"\n PRUNE_RESULTS_OLDER_THAN: \"0\"\n PUBLIC_DASHBOARD: \"true\"\n PUID: \"1001\"\n SPEEDTEST_BLOCKED_SERVERS: \"\"\n SPEEDTEST_INTERFACE: \"\"\n SPEEDTEST_SCHEDULE: 0 * * * *\n SPEEDTEST_SERVERS: \"\"\n SPEEDTEST_SKIP_IPS: \"\"\n THRESHOLD_DOWNLOAD: \"900\"\n THRESHOLD_ENABLED: \"true\"\n THRESHOLD_PING: \"25\"\n THRESHOLD_UPLOAD: \"900\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts: *common-hostname-aliases\n hostname: speedtest\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:80 > /dev/null || exit 1\n timeout: 15s\n interval: 30s\n start_period: 20s\n image: docker.io/linuxserver/speedtest-tracker\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Regularly tests your internet speed and tracks performance over time, helping you monitor your connection quality.\n homepage.group: Network Monitoring\n homepage.href: https://speedtest.$DOMAIN/\n homepage.icon: speedtest.png\n homepage.name: Speedtest\n homepage.widget.fields: '[\"download\", \"upload\", \"ping\", \"speedtest\"]'\n homepage.widget.type: speedtest\n homepage.widget.url: http://speedtest-tracker:80\n traefik.enable: \"true\"\n traefik.http.routers.speedtest.rule: Host(`speedtest.$DOMAIN`) || Host(`speedtest.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.speedtest.loadbalancer.server.port: \"80\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.86\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - /home/ubuntu/my-media-stack/configs/speedtest-tracker/config:/config\n - /home/ubuntu/my-media-stack/speedtest-tracker/keys:/config/keys\n stremio:\n container_name: stremio\n depends_on:\n - warp\n environment:\n CASTING_DISABLED: \"1\"\n IPADDRESS: 170.9.225.137\n NO_CORS: \"0\"\n SERVER_URL: $DOMAIN\n WEBUI_LOCATION: https://stremio-web.$DOMAIN/shell/\n healthcheck:\n test:\n - CMD-SHELL\n - (curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 1m30s\n image: th3w1zard1/stremio-docker:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.group: Media Streaming Platforms\n homepage.href: https://stremio.$DOMAIN/\n homepage.icon: stremio.png\n homepage.name: Stremio\n homepage.widget.password: Hilogirl80!\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n homepage.widget.username: bolabaden.duckdns@gmail.com\n network_mode: service:warp\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/stremio/root/.stremio-server:/root/.stremio-server\n stremthru:\n container_name: stremthru\n depends_on:\n - redis\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n STREMTHRU_AUTH_ADMIN: brunner56:h4L0m4St3R327\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: \"0\"\n STREMTHRU_DATABASE_URI: sqlite://./data/stremthru.db\n STREMTHRU_FEATURE: '\"dmm_hashlist,imdb_title,stremio_sidekick,stremio_store,stremio_wrap,stremio_torz\"'\n STREMTHRU_HTTP_PROXY: http://warp:1080\n STREMTHRU_LOG_FORMAT: text\n STREMTHRU_LOG_LEVEL: DEBUG\n STREMTHRU_PROXY_AUTH: brunner56:h4L0m4St3R327,bolabaden:duckdns\n STREMTHRU_REDIS_URI: redis://10.67.128.87:6379\n STREMTHRU_STORE_AUTH: '*:realdebrid:UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ,*:realdebrid:TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA,*:premiumize:6i6zgswm35baj3ur,*:torbox:d490b7b1-1f6d-44e8-9cc8-3e735c87874b'\n STREMTHRU_STORE_CONTENT_PROXY: '*:true'\n STREMTHRU_STORE_TUNNEL: '*:true'\n STREMTHRU_TUNNEL: '*:true'\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts: *common-hostname-aliases\n hostname: stremthru\n image: muniftanjim/stremthru:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: StremThru is tunnel/proxy for debrid services.\n homepage.group: Stremio Addons\n homepage.href: https://stremthru.$DOMAIN/\n homepage.icon: stremthru.png\n homepage.name: StremThru\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: Host(`stremthru.$DOMAIN`) || Host(`stremthru.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.stremthru.service: stremthru\n traefik.http.services.stremthru.loadbalancer.server.port: \"8080\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.99\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/stremio/addons/stremthru/app/data:/app/data\n tautulli:\n container_name: tautulli\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TAUTULLI_API_KEY: f86827c56ae740e6bff77c386e726ab8\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8181\"\n extra_hosts: *common-hostname-aliases\n hostname: tautulli\n image: ghcr.io/tautulli/tautulli:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Tautulli is a web interface for Plex Media Server.\n homepage.group: Media Maintenance\n homepage.href: https://tautulli.$DOMAIN/\n homepage.icon: tautulli.png\n homepage.name: Tautulli\n homepage.weight: \"6\"\n homepage.widget.key: f86827c56ae740e6bff77c386e726ab8\n homepage.widget.type: tautulli\n homepage.widget.url: https://tautulli.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.tautulli.middlewares: nginx-auth@file\n traefik.http.routers.tautulli.rule: Host(`tautulli.$DOMAIN`) || Host(`tautulli.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.tautulli.loadbalancer.server.port: \"8181\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.103\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/tautulli:/config\n tinyauth:\n container_name: tinyauth\n environment:\n APP_TITLE: Bolabaden\n APP_URL: $DOMAIN\n COOKIE_SECURE: \"true\"\n GITHUB_CLIENT_ID: Ov23ct3xtNzKCw4aeqfQ\n GITHUB_CLIENT_SECRET: 915226982a066972f2dd1e07249737a9c5e28728\n GOOGLE_CLIENT_ID: 324816055390-dftm6jq2d3ifs37miivj3nj09piv0df9.apps.googleusercontent.com\n GOOGLE_CLIENT_SECRET: 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\n LOGIN_MAX_RETRIES: \"15\"\n LOGIN_TIMEOUT: \"300\"\n OAUTH_AUTO_REDIRECT: none\n OAUTH_WHITELIST: boden.crouch@gmail.com,halomastar@gmail.com,athenajaguiar@gmail.com,bolabaden.duckdns@gmail.com,dgorsch2@gmail.com,dgorsch4@gmail.com\n SECRET: b9a4ZxFNBbyR9KdTAf2kSciI5jUCQLzE\n SESSION_EXPIRY: \"604800\"\n USERS: brunner56:$$2y$$05$$CEXtGy1XS4BlkTXEgSG64eSQlrGn.55Xm2HbiSgVSgO./WoVXXLAa,bolabaden.duckdns@gmail.com:$$2y$$05$$BbVWsqh2XkzaxvLGwd.0euD/PkkoaeFNDIhB0tTEBn4tAjGckKRzq\n extra_hosts: *common-hostname-aliases\n hostname: auth\n image: ghcr.io/steveiliop56/tinyauth:v3\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Authentication service for securing your applications\n homepage.group: Security\n homepage.href: https://auth.$DOMAIN/\n homepage.icon: shield-lock.png\n homepage.name: TinyAuth\n traefik.enable: \"true\"\n traefik.http.middlewares.tinyauth.forwardauth.address: http://auth:3000/api/auth/traefik\n traefik.http.routers.tinyauth.rule: Host(`auth.$DOMAIN`) || Host(`auth.${TS_HOSTNAME}.${DOMAIN}`)\n networks:\n swarmnet:\n ipv4_address: 10.67.128.82\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/tinyauth:/data\n traefik:\n cap_add:\n - NET_ADMIN\n command:\n - --accesslog=true\n - --api.dashboard=true\n - --api.debug=true\n - --api.disableDashboardAd=true\n - --api.insecure=true\n - --certificatesresolvers.letsencrypt.acme.caServer=https://acme-v02.api.letsencrypt.org/directory\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.provider=cloudflare\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.resolvers=1.1.1.1,1.0.0.1\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge=true\n - --certificatesresolvers.letsencrypt.acme.email=boden.crouch@gmail.com\n - --certificatesresolvers.letsencrypt.acme.httpChallenge.entryPoint=web\n - --certificatesresolvers.letsencrypt.acme.httpChallenge=true\n - --certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json\n - --certificatesresolvers.letsencrypt.acme.tlsChallenge=true\n - --entrypoints.web.address=:80\n - --entrypoints.web.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.67.0.0/16,100.64.0.0/10\n - --entrypoints.web.http.redirections.entryPoint.scheme=https\n - --entrypoints.web.http.redirections.entryPoint.to=websecure\n - --entrypoints.websecure.address=:443\n - --entrypoints.websecure.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.67.0.0/16,100.64.0.0/10\n - --entrypoints.websecure.http.tls.certResolver=letsencrypt\n - --entrypoints.websecure.http.tls.domains[0].main=$DOMAIN\n - --entrypoints.websecure.http.tls.domains[0].sans=*.$DOMAIN,*.${TS_HOSTNAME}.${DOMAIN}\n - --entrypoints.websecure.http.tls=true\n - --global.checkNewVersion=true\n - --global.sendAnonymousUsage=false\n - --log.level=INFO\n - --ping.terminatingStatusCode=503\n - --ping=true\n - --providers.docker.exposedByDefault=false\n - --providers.docker.network=swarmnet\n - --providers.docker=true\n - --providers.file.directory=/config\n - --providers.file.watch=true\n - --serversTransport.insecureSkipVerify=true\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.version=v1.4.2\n container_name: traefik\n depends_on:\n - crowdsec\n - nginx-auth\n environment:\n CLOUDFLARE_DNS_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n CLOUDFLARE_EMAIL: boden.crouch@gmail.com\n CLOUDFLARE_ZONE_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n DUCKDNS_TOKEN: 2c18769a-2889-4648-a70c-2fe44dd10f20\n LETS_ENCRYPT_EMAIL: boden.crouch@gmail.com\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n - \"443\"\n - \"8080\"\n extra_hosts: *common-hostname-aliases\n hostname: traefik\n image: traefik:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Traefik is a modern HTTP reverse proxy and load balancer.\n homepage.group: Infrastructure\n homepage.href: https://traefik.$DOMAIN/api\n homepage.icon: traefik.png\n homepage.name: Traefik\n homepage.widget.type: traefik\n traefik.enable: \"true\"\n traefik.http.routers.traefik.middlewares: nginx-auth@file\n traefik.http.routers.traefik.rule: Host(`traefik.$DOMAIN`) || Host(`traefik.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.traefik.service: api@internal\n traefik.http.services.traefik.loadbalancer.server.port: \"8080\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.85\n ports:\n - mode: ingress\n target: 80\n published: 80\n protocol: tcp\n - mode: ingress\n target: 443\n published: 443\n protocol: tcp\n - mode: ingress\n target: 443\n published: 443\n protocol: udp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock\n - /home/ubuntu/my-media-stack:/certs\n - /home/ubuntu/my-media-stack/configs/traefik/config:/config\n - /home/ubuntu/my-media-stack/configs/traefik/plugins-local:/plugins-local\n - /var/run/docker.sock:/var/run/docker.sock\n warp:\n cap_add:\n - MKNOD\n - AUDIT_WRITE\n - NET_ADMIN\n container_name: warp\n # add removed rule back (https://github.com/opencontainers/runc/pull/3468)\n #device_cgroup_rules:\n # - 'c 10:200 rwm'\n privileged: true\n environment:\n TUNNEL_TOKEN: \"\"\n WARP_LICENSE_KEY: \"\"\n WARP_SLEEP: \"2\"\n expose:\n - \"1080\"\n - \"2020\"\n - \"3128\"\n - \"443\"\n - \"8000\"\n - \"8112\"\n - \"8888\"\n - \"9091\"\n - \"9117\"\n - \"9696\"\n - \"9999\"\n - \"8080\"\n - \"11470\"\n - \"12470\"\n extra_hosts:\n - aiostreams=10.67.128.200\n - autoscan=10.67.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.67.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.67.128.93\n - code-demo=10.67.128.80\n - code-server=10.67.128.92\n - code=10.67.128.96\n - comet=10.67.128.97\n - crowdsec=10.67.128.104\n - dash=10.67.128.23\n - decluttarr=10.67.128.21\n - deluge=10.67.128.97\n - dozzle=10.67.128.89\n - firecrawl-api=10.67.128.127\n - firecrawl-playwright=10.67.128.130\n - firecrawl-worker=10.67.128.128\n - flaresolverr=10.67.128.93\n - gatus=10.67.128.105\n - gluetun-premiumize-nl=10.67.128.119\n - gpt-researcher=10.67.128.43\n - gptr=10.67.128.43\n - homepage=10.67.128.88\n - homer=10.67.0.106\n - host.docker.internal=host-gateway\n - jackett=10.67.128.97\n - jackettio=10.67.128.97\n - jellyfin=10.67.128.120\n - jellyseerr=10.67.128.115\n - lobechat=10.67.128.46\n - localhost=10.67.128.97\n - maintainerr=10.67.128.84\n - mediaflow-proxy=10.67.128.97\n - mediafusion=10.67.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.67.0.50\n - nginx-auth=10.67.128.94\n - open-webui=10.67.128.118\n - overseerr=10.67.128.116\n - plex-authentication=10.67.128.112\n - plex-repair=10.67.0.115\n - plex-request=10.67.128.113\n - plex-watchlist=10.67.52.97\n - plex=10.67.128.95\n - prowlarr=10.67.128.97\n - qbittorrent=10.67.128.119\n - qdrant=10.67.128.44\n - radarr=10.67.128.121\n - rclone=10.67.128.111\n - realdebrid-account-monitor=10.67.128.109\n - recyclarr=10.67.0.117\n - redis=10.67.128.87\n - riven-backend=10.67.128.101\n - riven-db=10.67.128.102\n - riven-frontend=10.67.128.100\n - riven=10.67.128.101\n - script-runner=10.67.0.116\n - searxng=10.67.128.90\n - sonarr-anime=10.67.128.123\n - sonarr=10.67.128.122\n - speedtest=10.67.128.86\n - stremio-fallback=10.67.128.97\n - stremio-https-server=10.67.128.97\n - stremio-jackett=10.67.128.97\n - stremio-web=10.67.128.97\n - stremthru=10.67.128.99\n - tautulli=10.67.128.103\n - tinyauth=10.67.128.82\n - traefik=10.67.128.85\n - transmission=10.67.128.119\n - warp=10.67.128.97\n - watchtower=10.67.128.83\n - whisparr=10.67.0.120\n - whoami=10.67.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.67.128.107\n - zurg=10.67.128.97\n image: caomingjun/warp:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: Host(`comet.$DOMAIN`) || Host(`comet.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.comet.service: comet\n traefik.http.routers.deluge.rule: Host(`deluge.$DOMAIN`) || Host(`deluge.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.deluge.service: deluge\n traefik.http.routers.jackett.rule: Host(`jackett.$DOMAIN`) || Host(`jackett.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.jackett.service: jackett\n traefik.http.routers.mediaflow-proxy.rule: Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.mediaflow-proxy.service: mediaflow-proxy\n traefik.http.routers.mediafusion.rule: Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.mediafusion.service: mediafusion\n traefik.http.routers.prowlarr.rule: Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.prowlarr.service: prowlarr\n traefik.http.routers.stremio-api-http-server.priority: \"100\"\n traefik.http.routers.stremio-api-http-server.rule: Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-https-server.priority: \"100\"\n traefik.http.routers.stremio-api-https-server.rule: Host(`stremio.$DOMAIN`) || Host(`stremio.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.stremio-api-https-server.service: stremio-api-https-server\n traefik.http.routers.stremio-web.priority: \"10\"\n traefik.http.routers.stremio-web.rule: Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.warp-proxy.middlewares: nginx-auth@file\n traefik.http.routers.warp-proxy.rule: Host(`warp-proxy.$DOMAIN`) || Host(`warp-proxy.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.warp-proxy.service: warp-proxy\n traefik.http.routers.zurg.middlewares: nginx-auth@file\n traefik.http.routers.zurg.rule: Host(`zurg.$DOMAIN`) || Host(`zurg.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.routers.zurg.service: zurg\n traefik.http.services.comet.loadbalancer.server.port: \"2020\"\n traefik.http.services.deluge.loadbalancer.server.port: \"8112\"\n traefik.http.services.jackett.loadbalancer.server.port: \"9117\"\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: \"8888\"\n traefik.http.services.mediafusion.loadbalancer.server.port: \"8000\"\n traefik.http.services.prowlarr.loadbalancer.server.port: \"9696\"\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: \"11470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.port: \"12470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: \"8080\"\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.warp-proxy.loadbalancer.server.port: \"3128\"\n traefik.http.services.zurg.loadbalancer.server.port: \"9999\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.97\n ports:\n - mode: ingress\n target: 1080\n published: 1080\n protocol: tcp\n - mode: ingress\n target: 443\n published: 443\n protocol: udp\n - mode: ingress\n target: 9999\n published: 9999\n protocol: tcp\n - mode: ingress\n target: 11470\n published: 11470\n protocol: tcp\n - mode: ingress\n target: 12470\n published: 12470\n protocol: tcp\n restart: always\n sysctls:\n net.ipv4.conf.all.src_valid_mark: \"1\"\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - /home/ubuntu/my-media-stack/configs/warp/data:/var/lib/cloudflare-warp\n watchtower:\n container_name: watchtower\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n WATCHTOWER_CLEANUP: \"true\"\n WATCHTOWER_DEBUG: \"true\"\n WATCHTOWER_LOG_LEVEL: \"\"\n WATCHTOWER_NOTIFICATION_REPORT: \"true\"\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n WATCHTOWER_NOTIFICATION_URL: \"\"\n WATCHTOWER_SCHEDULE: 0 0 6 * * *\n extra_hosts: *common-hostname-aliases\n hostname: watchtower\n image: containrrr/watchtower:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.83\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n whoami:\n container_name: whoami\n extra_hosts: *common-hostname-aliases\n hostname: whoami\n image: traefik/whoami:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n homepage.group: Web Services\n homepage.href: https://whoami-nginx.$DOMAIN\n homepage.icon: whoami.png\n homepage.name: Whoami\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: Host(`whoami.$DOMAIN`) || Host(`whoami.${TS_HOSTNAME}.${DOMAIN}`)\n networks:\n swarmnet:\n ipv4_address: 10.67.128.81\n restart: always\n wizarr:\n container_name: wizarr\n environment:\n APP_URL: http://wizarr:5690\n DISABLE_BUILTIN_AUTH: \"true\"\n PGID: \"121\"\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n PLEX_URL: http://plex:32400\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5690\"\n extra_hosts: *common-hostname-aliases\n hostname: wizarr\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:5690/static/wizarr-logo.png || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 1m0s\n image: ghcr.io/wizarrrr/wizarr:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: User invitation and management system for Plex\n homepage.group: Media Management\n homepage.href: https://wizarr.$DOMAIN/\n homepage.icon: http://127.0.0.1:5690/static/wizarr-logo.png\n homepage.name: Wizarr\n homepage.weight: \"0\"\n homepage.widget.type: wizarr\n homepage.widget.url: http://wizarr:5690\n traefik.enable: \"true\"\n traefik.http.routers.wizarr.rule: Host(`wizarr.$DOMAIN`) || Host(`wizarr.${TS_HOSTNAME}.${DOMAIN}`)\n traefik.http.services.wizarr.loadbalancer.server.port: \"5690\"\n networks:\n swarmnet:\n ipv4_address: 10.67.128.107\n restart: always\n volumes:\n - /home/ubuntu/my-media-stack/configs/wizarr/database:/data/database\n - /home/ubuntu/my-media-stack/configs/wizarr/config:/config\n zurg:\n configs:\n - source: zurg-config.yml\n target: /app/config.yml\n mode: 0775\n - source: zurg-cli_debrid_update.sh\n target: /app/plex_update.sh\n mode: 0775\n container_name: zurg\n depends_on:\n - rclone-zurg\n - warp\n environment:\n DOMAIN: $DOMAIN\n DUCKDNS_SUBDOMAIN: $DUCKDNS_SUBDOMAIN\n ELF_APP_NAME: zurg\n K8S_APP_NAME: zurg\n PGID: ${PGID:-121}\n PUID: ${PUID:-1001}\n REAL_DEBRID_API_KEY: $REAL_DEBRID_API_KEY\n REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n REALDEBRID_TOKEN: $REALDEBRID_TOKEN\n TS_HOSTNAME: $TS_HOSTNAME\n TZ: ${TZ:-America/Chicago}\n UMASK: ${UMASK:-002}\n ZURG_LOG_LEVEL: ${ZURG_LOG_LEVEL:-debug}\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:9999/http/version.txt || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: ghcr.io/debridmediamanager/zurg-testing:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-Debrid WebDAV proxy for seamless streaming\n homepage.group: Download Clients\n homepage.href: https://zurg.$DOMAIN/\n homepage.icon: zurg.png\n homepage.name: Zurg\n homepage.weight: \"2\"\n homepage.widget.type: zurg\n homepage.widget.url: ${ZURG_INTERNAL_URL:-http://zurg:9999}\n network_mode: service:warp\n restart: always\n volumes:\n - ${CONFIG_PATH:-./configs}/zurg/app/data:/app/data\nnetworks:\n swarmnet:\n name: swarmnet\n driver: overlay\n driver_opts:\n com.docker.network.bridge.name: br_swarmnet\n ipam:\n config:\n - subnet: 10.67.0.0/16\n external: true\n attachable: true\n"}}, "compose/docker-compose.semifullparsed.yml": {"a92266f4a4a5ea8c570df86cb1c0141e73bdb537": {"t": 1785747421.496533, "n": 187134, "h": "e44b96e0c312e328", "c": "name: my-media-stack\nservices:\n aiostreams:\n build:\n context: https://github.com/viren070/aiostreams.git#main\n dockerfile: Dockerfile\n tags:\n - th3w1zard1/aiostreams:latest\n container_name: aiostreams\n environment:\n ADDON_CATALOG_CACHE_TTL: \"300\"\n ADDON_ID: aiostreams.$DOMAIN\n ADDON_NAME: BadenAIO\n ADDON_PASSWORD: sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9\n ADDON_PROXY: http://warp:1080\n ANIME_CATALOGS_URL: https://1fe84bc728af-stremio-anime-catalogs.baby-beamup.club/\n ANIME_KITSU_URL: https://anime-kitsu.strem.fun/\n BASE_URL: https://aiostreams.$DOMAIN\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n CATALOG_API_RATE_LIMIT_WINDOW: \"5\"\n CATALOG_CACHE_TTL: \"300\"\n COMET_URL: http://comet:2020\n CUSTOM_HTML: \"\"\n DATABASE_URI: sqlite://./data/db.sqlite\n DC_UNIVERSE_URL: https://addon-dc-cq85.onrender.com/\n DEBRIDIO_TMDB_URL: https://tmdb-addon.debridio.com/\n DEBRIDIO_TV_URL: https://tv-addon.debridio.com/\n DEBRIDIO_TVDB_URL: https://tvdb-addon.debridio.com/\n DEBRIDIO_URL: https://addon.debridio.com/\n DEBRIDIO_WATCHTOWER_URL: https://wt-addon.debridio.com/\n DEFAULT_ALLDEBRID_API_KEY: \"\"\n DEFAULT_DEBRIDLINK_API_KEY: vvppT6-RCIXJVyr1O2j8VYIBAAPy4EmcY_OVgELZWujQOBt5iz_19Rpz6A6xxwwS\n DEFAULT_EASYDEBRID_API_KEY: \"\"\n DEFAULT_EASYNEWS_PASSWORD: \"\"\n DEFAULT_EASYNEWS_USERNAME: \"\"\n DEFAULT_JACKETTIO_INDEXERS: '[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n DEFAULT_JACKETTIO_STREMTHRU_URL: https://stremthru.13377001.xyz\n DEFAULT_MAX_CACHE_SIZE: \"100000\"\n DEFAULT_OFFCLOUD_API_KEY: \"\"\n DEFAULT_OFFCLOUD_EMAIL: \"\"\n DEFAULT_OFFCLOUD_PASSWORD: \"\"\n DEFAULT_PIKPAK_EMAIL: \"\"\n DEFAULT_PIKPAK_PASSWORD: \"\"\n DEFAULT_PREMIUMIZE_API_KEY: 6i6zgswm35baj3ur\n DEFAULT_PROXY_CREDENTIALS: bolabaden:duckdns\n DEFAULT_PROXY_ENABLED: \"true\"\n DEFAULT_PROXY_URL: http://stremthru:8080\n DEFAULT_PUTIO_CLIENT_ID: \"\"\n DEFAULT_PUTIO_CLIENT_SECRET: \"\"\n DEFAULT_REALDEBRID_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n DEFAULT_SEEDR_ENCODED_TOKEN: \"\"\n DEFAULT_TIMEOUT: \"15000\"\n DEFAULT_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n DISABLE_RATE_LIMITS: \"false\"\n DISABLE_SELF_SCRAPING: \"false\"\n DOCTOR_WHO_UNIVERSE_URL: https://new-who.onrender.com\n EASYNEWS_PLUS_PLUS_URL: https://easynews-cloudflare-worker.jqrw92fchz.workers.dev/\n EASYNEWS_PLUS_URL: https://b89262c192b0-stremio-easynews-addon.baby-beamup.club/\n EASYNEWS_URL: https://ea627ddf0ee7-easynews.baby-beamup.club/\n ENCRYPT_MEDIAFLOW_URLS: \"true\"\n ENCRYPT_STREMTHRU_URLS: \"true\"\n FORCE_COMET_HOSTNAME: comet.$DOMAIN\n FORCE_COMET_PORT: \"443\"\n FORCE_COMET_PROTOCOL: https\n FORCE_PROXY_ID: stremthru\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: \"443\"\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n FORCE_STREMTHRU_STORE_HOST: stremthru.$DOMAIN\n FORCE_STREMTHRU_STORE_PORT: \"443\"\n FORCE_STREMTHRU_STORE_PROTOCOL: https\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: \"30\"\n FORMAT_API_RATE_LIMIT_WINDOW: \"5\"\n JACKETTIO_URL: https://jackettio.elfhosted.com/\n LOG_FORMAT: text\n LOG_LEVEL: verbose\n LOG_SENSITIVE_INFO: \"true\"\n LOG_TIMEZONE: America/Chicago\n MANIFEST_CACHE_TTL: \"300\"\n MARVEL_UNIVERSE_URL: https://addon-marvel.onrender.com/\n MAX_ADDONS: \"100\"\n MAX_CONDITION_FILTERS: \"200\"\n MAX_GROUPS: \"50\"\n MAX_KEYWORD_FILTERS: \"50\"\n MAX_TIMEOUT: \"50000\"\n MEDIAFUSION_API_PASSWORD: h4L0m4St3R327\n MEDIAFUSION_CONFIG_TIMEOUT: \"5000\"\n MEDIAFUSION_URL: http://mediafusion:8080\n META_CACHE_TTL: \"300\"\n MIN_TIMEOUT: \"1000\"\n NUVIOSTREAMS_URL: https://nuviostreams.hayd.uk/\n OPENSUBTITLES_URL: https://opensubtitles-v3.strem.io/\n ORION_STREMIO_ADDON_URL: https://5a0d1888fa64-orion.baby-beamup.club/\n PEERFLIX_URL: https://peerflix-addon.onrender.com/\n PGID: \"121\"\n PORT: \"3005\"\n PROXY_IP_CACHE_TTL: \"900\"\n PRUNE_INTERVAL: \"86400\"\n PRUNE_MAX_DAYS: \"1\"\n PUID: \"1001\"\n REGEX_FILTER_ACCESS: trusted\n RPDB_API_KEY_VALIDITY_CACHE_TTL: \"604800\"\n RPDB_CATALOGS_URL: https://1fe84bc728af-rpdb.baby-beamup.club/\n SECRET_KEY: 207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde\n STAR_WARS_UNIVERSE_URL: https://addon-star-wars-u9e3.onrender.com/\n STATIC_RATE_LIMIT_MAX_REQUESTS: \"75\"\n STATIC_RATE_LIMIT_WINDOW: \"5\"\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREAM_API_RATE_LIMIT_WINDOW: \"5\"\n STREAM_CACHE_TTL: \"1\"\n STREAMFUSION_URL: https://stream-fusion.stremiofr.com/\n STREAMING_CATALOGS_URL: https://7a82163c306e-stremio-netflix-catalog-addon.baby-beamup.club/\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: \"30\"\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: \"15\"\n STREMIO_META_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_STREAM_RATE_LIMIT_WINDOW: \"15\"\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: \"5\"\n STREMTHRU_STORE_URL: http://stremthru:8080/stremio/store\n STREMTHRU_TORZ_URL: https://stremthru.elfhosted.com/stremio/torz\n SUBTITLE_CACHE_TTL: \"300\"\n TMDB_ACCESS_TOKEN: cec876f852b9c15d2c1b436b1117dff7\n TMDB_COLLECTIONS_URL: https://61ab9c85a149-tmdb-collections.baby-beamup.club/\n TORBOX_STREMIO_URL: https://stremio.torbox.app/\n TORRENT_CATALOGS_URL: https://torrent-catalogs.strem.fun/\n TORRENTIO_URL: https://torrentio.strem.fun/\n TRUSTED_UUIDS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n USER_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n USER_API_RATE_LIMIT_WINDOW: \"5\"\n WEBSTREAMR_URL: https://webstreamr.hayd.uk\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: aiostreams\n image: ghcr.io/viren070/aiostreams\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n homepage.group: Stremio Addons\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.icon: aiostreams.png\n homepage.name: AIOStreams\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.bocloud.org`) || Host(`aiostreams.bolabaden.duckdns.org`) || Host(`aiostreams.micklethefickle.duckdns.org`)\n traefik.http.routers.aiostreams.service: aiostreams\n traefik.http.services.aiostreams.loadbalancer.server.port: \"3005\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.200\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/aiostreams/data\n target: /app/data\n bind:\n create_host_path: true\n bocloud-nextjs:\n build:\n context: /home/ubuntu/my-media-stack/src/bocloud-site\n dockerfile: Dockerfile\n container_name: bocloud-nextjs\n depends_on:\n tinyauth:\n condition: service_started\n required: true\n traefik:\n condition: service_started\n required: true\n environment:\n HOSTNAME: 0.0.0.0\n NODE_ENV: production\n PGID: \"121\"\n PORT: \"3000\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3000\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: bocloud-nextjs\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 40s\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.bocloud-nextjs.errors.query: /api/error/{status}\n traefik.http.middlewares.bocloud-nextjs.errors.service: bocloud-nextjs\n traefik.http.middlewares.bocloud-nextjs.errors.status: 400-599\n traefik.http.routers.404-catchall.middlewares: bocloud-nextjs\n traefik.http.routers.404-catchall.priority: \"1\"\n traefik.http.routers.404-catchall.rule: Host(`*`)\n traefik.http.routers.404-catchall.service: bocloud-nextjs\n traefik.http.routers.bocloud-embed.rule: Host(`embed.bocloud.org`)\n traefik.http.routers.bocloud-embed.service: bocloud-nextjs\n traefik.http.routers.bocloud-nextjs.rule: Host(`$DOMAIN`) || Host(`bocloud.org`) || Host(`bolabaden.duckdns.org`) || Host(`micklethefickle.duckdns.org`)\n traefik.http.routers.bocloud-nextjs.service: bocloud-nextjs\n traefik.http.services.bocloud-nextjs.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.45\n ports:\n - mode: ingress\n target: 3000\n published: \"3000\"\n protocol: tcp\n restart: always\n code-server:\n container_name: code-server\n environment:\n CODESERVER_DEFAULT_WORKSPACE: /workspace\n CODESERVER_PASSWORD: h4L0m4St3R327\n CODESERVER_SUDO_PASSWORD: h4L0m4St3R327\n DEFAULT_WORKSPACE: /workspace\n PASSWORD: h4L0m4St3R327\n PGID: \"121\"\n PUID: \"1001\"\n SUDO_PASSWORD: h4L0m4St3R327\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8443\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: code-server\n image: docker.io/linuxserver/code-server:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n homepage.group: Infrastructure\n homepage.href: https://code-server.$DOMAIN/\n homepage.icon: code-server.png\n homepage.name: Code Dev\n traefik.enable: \"true\"\n traefik.http.routers.code-server.middlewares: allow-iframe-from-domain@file\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.bocloud.org`) || Host(`code-server.bolabaden.duckdns.org`) || Host(`code-server.micklethefickle.duckdns.org`)\n traefik.http.services.code-server.loadbalancer.server.port: \"8443\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.92\n restart: always\n user: 1001:121\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/code-server/dev/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack\n target: /workspace\n bind:\n create_host_path: true\n comet:\n container_name: comet\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n COMET_URL: https://comet.elfhosted.com\n DASHBOARD_ADMIN_PASSWORD: h4L0m4St3R327\n DATABASE_PATH: /data/comet.db\n DATABASE_TYPE: sqlite\n DEBRID_CACHE_TTL: \"86400\"\n DOWNLOAD_TORRENT_FILES: \"true\"\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: \"2020\"\n FASTAPI_WORKERS: \"4\"\n GET_TORRENT_TIMEOUT: \"2\"\n INDEXER_MANAGER_API_KEY: 29440a82740d475cacb35327c62c87a1\n INDEXER_MANAGER_INDEXERS: '[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n INDEXER_MANAGER_TIMEOUT: \"60\"\n INDEXER_MANAGER_TYPE: prowlarr\n INDEXER_MANAGER_URL: http://prowlarr:9696\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n METADATA_CACHE_TTL: \"2592000\"\n PGID: \"121\"\n PROXY_DEBRID_STREAM: \"true\"\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: 6i6zgswm35baj3ur\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: \"-1\"\n PROXY_DEBRID_STREAM_PASSWORD: brunner56:h4L0m4St3R327,bolabaden:duckdns\n PUID: \"1001\"\n REMOVE_ADULT_CONTENT: \"true\"\n SCRAPE_COMET: \"true\"\n SCRAPE_MEDIAFUSION: \"true\"\n SCRAPE_TORRENTIO: \"true\"\n SCRAPE_ZILEAN: \"true\"\n STREMTHRU_URL: https://stremthru.$DOMAIN\n TORRENT_CACHE_TTL: \"1296000\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UMASK: \"002\"\n USE_GUNICORN: \"true\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:2020/health > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 15s\n image: g0ldyy/comet:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n homepage.group: Stremio Addons\n homepage.href: https://comet.$DOMAIN/\n homepage.icon: comet.png\n homepage.name: Comet\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/comet/data\n target: /data\n bind:\n create_host_path: true\n crowdsec:\n container_name: crowdsec\n environment:\n AGENT_PASSWORD: \"\"\n AGENT_USERNAME: \"\"\n AGENTS_ALLOWED_OU: agent-ou\n APPSEC_CONFIGS: \"\"\n APPSEC_RULES: \"\"\n BOUNCER_KEY_TRAEFIK: usvi2urbIG5obProVWwcf2ImTrtB93x668jWDvrH\n BOUNCERS_ALLOWED_OU: bouncer-ou\n CACERT_FILE: \"\"\n CAPI_WHITELISTS_PATH: \"\"\n CI_TESTING: \"false\"\n CLIENT_CERT_FILE: \"\"\n CLIENT_KEY_FILE: \"\"\n COLLECTIONS: crowdsecurity/traefik\n CONFIG_FILE: /etc/crowdsec/config.yaml\n CONTEXTS: \"\"\n CUSTOM_HOSTNAME: localhost\n DEBUG: \"false\"\n DISABLE_AGENT: \"false\"\n DISABLE_APPSEC_CONFIGS: \"\"\n DISABLE_APPSEC_RULES: \"\"\n DISABLE_COLLECTIONS: \"\"\n DISABLE_CONTEXTS: \"\"\n DISABLE_LOCAL_API: \"false\"\n DISABLE_ONLINE_API: \"false\"\n DISABLE_PARSERS: \"\"\n DISABLE_POSTOVERFLOWS: \"\"\n DISABLE_SCENARIOS: \"\"\n DSN: \"\"\n ENROLL_INSTANCE_NAME: \"\"\n ENROLL_KEY: cm91pb2bz0011e35iltz9k6ra\n ENROLL_TAGS: \"\"\n INSECURE_SKIP_VERIFY: \"\"\n LAPI_CERT_FILE: \"\"\n LAPI_KEY_FILE: \"\"\n LEVEL_DEBUG: \"false\"\n LEVEL_ERROR: \"false\"\n LEVEL_FATAL: \"false\"\n LEVEL_INFO: \"false\"\n LEVEL_TRACE: \"false\"\n LEVEL_WARN: \"false\"\n LOCAL_API_URL: http://0.0.0.0:8080\n METRICS_PORT: \"6060\"\n NO_HUB_UPGRADE: \"false\"\n PARSERS: \"\"\n PGID: \"121\"\n PLUGIN_DIR: /usr/local/lib/crowdsec/plugins/\n POSTOVERFLOWS: \"\"\n PUID: \"1001\"\n SCENARIOS: \"\"\n TEST_MODE: \"false\"\n TYPE: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n USE_TLS: \"false\"\n USE_WAL: \"false\"\n expose:\n - \"6060\"\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: crowdsec\n image: docker.io/crowdsecurity/crowdsec:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: CrowdSec is an open-source, behavioral, intrusion detection system.\n homepage.group: Security\n homepage.href: https://crowdsec.$DOMAIN/\n homepage.icon: crowdsec.png\n homepage.name: Crowdsec\n homepage.widget.password: \"\"\n homepage.widget.type: crowdsec\n homepage.widget.url: http://crowdsec:8080\n homepage.widget.username: \"\"\n traefik.enable: \"true\"\n traefik.http.routers.crowdsec.middlewares: nginx-auth@file\n traefik.http.routers.crowdsec.rule: Host(`crowdsec.$DOMAIN`) || Host(`crowdsec.bocloud.org`) || Host(`crowdsec.bolabaden.duckdns.org`) || Host(`crowdsec.micklethefickle.duckdns.org`)\n traefik.http.services.crowdsec.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.104\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/data\n target: /var/lib/crowdsec/data\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/etc/crowdsec\n target: /etc/crowdsec\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/plugins\n target: /usr/local/lib/crowdsec/plugins\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/logs\n target: /var/log\n bind:\n create_host_path: true\n deunhealth:\n container_name: deunhealth\n environment:\n HEALTH_SERVER_ADDRESS: 127.0.0.1:9999\n LOG_LEVEL: debug\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n image: qmcgaw/deunhealth\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: DeUnhealth is a tool that automatically restarts unhealthy containers.\n homepage.group: Infrastructure\n homepage.href: https://deunhealth.$DOMAIN/\n homepage.icon: deunhealth.png\n homepage.name: DeUnhealth\n network_mode: none\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n dozzle:\n container_name: dozzle\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: dozzle\n image: amir20/dozzle\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n homepage.group: System Monitoring\n homepage.href: https://dozzle.$DOMAIN/\n homepage.icon: dozzle.png\n homepage.name: Dozzle\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: Host(`dozzle.$DOMAIN`) || Host(`dozzle.bocloud.org`) || Host(`dozzle.bolabaden.duckdns.org`) || Host(`dozzle.micklethefickle.duckdns.org`)\n traefik.http.services.dozzle.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.89\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n flaresolverr:\n container_name: flaresolverr\n environment:\n BROWSER_TIMEOUT: \"120000\"\n CAPTCHA_SOLVER: none\n HEADLESS: \"true\"\n HOST: 0.0.0.0\n LOG_HTML: \"false\"\n LOG_LEVEL: info\n PGID: \"121\"\n PORT: \"8191\"\n PROMETHEUS_ENABLED: \"false\"\n PROMETHEUS_PORT: \"9090\"\n PUID: \"1001\"\n TEST_URL: https://www.google.com\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8191\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: flaresolverr\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8191/health > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n start_period: 1m0s\n image: ghcr.io/flaresolverr/flaresolverr:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n homepage.group: Infrastructure\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.icon: flaresolverr.png\n homepage.name: Flaresolverr\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.bocloud.org`) || Host(`flaresolverr.bolabaden.duckdns.org`) || Host(`flaresolverr.micklethefickle.duckdns.org`)\n traefik.http.services.flaresolverr.loadbalancer.server.port: \"8191\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.93\n restart: always\n gluetun-premiumize-nl:\n cap_add:\n - NET_ADMIN\n configs:\n - source: premiumize-auth\n target: /config/auth.conf\n mode: \"0600\"\n - source: premiumize-ca\n target: /etc/openvpn/premiumize-ca.pem\n mode: \"0600\"\n - source: vpn-nl.premiumize.me\n target: /etc/openvpn/target.ovpn\n mode: \"0600\"\n container_name: gluetun-premiumize-nl\n devices:\n - source: /dev/net/tun\n target: /dev/net/tun\n permissions: rwm\n environment:\n FIREWALL_OUTBOUND_SUBNETS: 10.76.0.0/16,172.16.0.0/16,172.17.0.0/16,100.64.0.0/10\n OPENVPN_CUSTOM_CONFIG: /etc/openvpn/target.ovpn\n OPENVPN_FLAGS: --auth-user-pass /config/auth.conf\n OPENVPN_IPV6: \"off\"\n VPN_SERVICE_PROVIDER: custom\n VPN_TYPE: openvpn\n expose:\n - \"51413\"\n - \"8084\"\n - \"6881\"\n - 6881/udp\n extra_hosts:\n - aiostreams=10.76.128.200\n - autoscan=10.76.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.76.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.76.128.93\n - code-demo=10.76.128.80\n - code-server=10.76.128.92\n - code=10.76.128.96\n - comet=10.76.128.97\n - crowdsec=10.76.128.104\n - dash=10.76.128.23\n - decluttarr=10.76.128.21\n - deluge=10.76.128.97\n - dozzle=10.76.128.89\n - firecrawl-api=10.76.128.127\n - firecrawl-playwright=10.76.128.130\n - firecrawl-worker=10.76.128.128\n - flaresolverr=10.76.128.93\n - gatus=10.76.128.105\n - gluetun-premiumize-nl=10.76.128.119\n - gpt-researcher=10.76.128.43\n - gptr=10.76.128.43\n - homepage=10.76.128.88\n - homer=10.76.0.106\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - jellyfin=10.76.128.120\n - jellyseerr=10.76.128.115\n - lobechat=10.76.128.46\n - localhost=10.76.128.97\n - maintainerr=10.76.128.84\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.76.0.50\n - nginx-auth=10.76.128.94\n - open-webui=10.76.128.118\n - overseerr=10.76.128.116\n - plex-authentication=10.76.128.112\n - plex-repair=10.76.0.115\n - plex-request=10.76.128.113\n - plex-watchlist=10.76.52.97\n - plex=10.76.128.95\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - qdrant=10.76.128.44\n - radarr=10.76.128.121\n - rclone=10.76.128.111\n - realdebrid-account-monitor=10.76.128.109\n - recyclarr=10.76.0.117\n - redis=10.76.128.87\n - riven-backend=10.76.128.101\n - riven-db=10.76.128.102\n - riven-frontend=10.76.128.100\n - riven=10.76.128.101\n - script-runner=10.76.0.116\n - searxng=10.76.128.90\n - sonarr-anime=10.76.128.123\n - sonarr=10.76.128.122\n - speedtest=10.76.128.86\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - stremthru=10.76.128.99\n - tautulli=10.76.128.103\n - tinyauth=10.76.128.82\n - traefik=10.76.128.85\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - watchtower=10.76.128.83\n - whisparr=10.76.0.120\n - whoami=10.76.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.76.128.107\n - zurg=10.76.128.97\n hostname: gluetun-premiumize-nl\n image: ghcr.io/qdm12/gluetun\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.http.routers.qbittorrent.rule: Host(`qbittorrent.$DOMAIN`) || Host(`qbittorrent.bocloud.org`) || Host(`qbittorrent.bolabaden.duckdns.org`) || Host(`qbittorrent.micklethefickle.duckdns.org`)\n traefik.http.routers.qbittorrent.service: qbittorrent\n traefik.http.routers.transmission.rule: Host(`transmission.$DOMAIN`) || Host(`transmission.bocloud.org`) || Host(`transmission.bolabaden.duckdns.org`) || Host(`transmission.micklethefickle.duckdns.org`)\n traefik.http.routers.transmission.service: transmission\n traefik.http.services.qbittorrent.loadbalancer.server.port: \"8084\"\n traefik.http.services.transmission.loadbalancer.server.port: \"9091\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.119\n ports:\n - mode: ingress\n target: 8084\n published: \"8084\"\n protocol: tcp\n - mode: ingress\n target: 6881\n published: \"6881\"\n protocol: tcp\n - mode: ingress\n target: 6881\n published: \"6881\"\n protocol: udp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n gptr:\n build:\n context: https://github.com/th3w1zard1/gpt-researcher.git#master\n dockerfile: Dockerfile.fullstack\n container_name: gptr\n environment:\n ANTHROPIC_API_KEY: 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\n BRAVE_API_KEY: BQYQ53Y34895489548954895489548954895489\n CHOKIDAR_USEPOLLING: \"true\"\n DEEPSEEK_API_KEY: sk-d6c4fe1d5db945ba8547fc348df03833\n EXA_API_KEY: 4f304bea-22a0-4473-bc38-21114d0f8aaf\n FIRE_CRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n FIRECRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n GEMINI_API_KEY: AIzaSyB-1aUePBQbb7_rpIDz5kY7AMWxguMq7Y8\n GLAMA_API_KEY: glama_eyJhcGlLZXkiOiI4YTc1MWRkYi0xNGNjLTQyNTctOTgzMS05OTMyNDQyNGY4NDQifQ\n GROQ_API_KEY: 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\n HF_TOKEN: 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\n HUGGINGFACE_ACCESS_TOKEN: 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\n HUGGINGFACE_API_TOKEN: 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\n LANGCHAIN_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_TRACING: \"true\"\n LOGGING_LEVEL: DEBUG\n MISTRAL_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n MISTRALAI_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n NEXT_PUBLIC_GA_MEASUREMENT_ID: \"\"\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n OPENAI_API_KEY: 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\n OPENROUTER_API_KEY: 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\n PERPLEXITY_API_KEY: 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\n PERPLEXITYAI_API_KEY: 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\n REPLICATE_API_KEY: r8_8ktlYwwthNrp8pPSLZF1DD7507tku082y7ptd\n REVID_API_KEY: 9a9884c5-6cb6-4ea9-aadc-91b31de76653\n SAMBANOVA_API_KEY: f3f47213-2123-4408-8247-816319bc1e84\n SEARCH1API_KEY: DE721F1D-498C-4DBF-843C-B72A75DAFD14\n SERPAPI_API_KEY: dfc64bfdf77ccdde0196b0fde7848a8ebc04e520\n TAVILY_API_KEY: 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\n TOGETHERAI_API_KEY: 3bf6c62c61e9dbfbe4e947bd7e0ec876188e41916fbd622877018188f84ab2f2\n UNIFY_API_KEY: XeFNQpisNryyS6NrlnDEAK7D-aE0mAq4JCkwsfeDa90=\n UPSTAGE_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n UPSTAGEAI_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n YOU_API_KEY: cbee3356-84ed-40ea-9d09-ce3d0afcb340<__>1QKC7nETU8N2v5f46hH6l6ax\n expose:\n - \"3000\"\n - \"3001\"\n - \"8000\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: gptr\n healthcheck:\n test:\n - CMD-SHELL\n - (wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1)\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: th3w1zard1/ai-researchwizard:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.group: AI\n homepage.href: https://gptr.$DOMAIN/\n homepage.icon: gptr.png\n homepage.name: AI Research Wizard\n traefik.enable: \"true\"\n traefik.http.routers.gptr-legacy.rule: Host(`gptr-legacy.$DOMAIN`) || Host(`gptr-legacy.bocloud.org`) || Host(`gptr-legacy.bolabaden.duckdns.org`) || Host(`gptr-legacy.micklethefickle.duckdns.org`)\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr.rule: Host(`gptr.$DOMAIN`) || Host(`gptr.bocloud.org`) || Host(`gptr.bolabaden.duckdns.org`) || Host(`gptr.micklethefickle.duckdns.org`)\n traefik.http.routers.gptr.service: gptr\n traefik.http.services.gptr-legacy.loadbalancer.server.port: \"8000\"\n traefik.http.services.gptr.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.43\n ports:\n - mode: ingress\n target: 3001\n published: \"3001\"\n protocol: tcp\n - mode: ingress\n target: 8000\n published: \"8000\"\n protocol: tcp\n restart: always\n stdin_open: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/logs\n target: /usr/src/app/logs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/outputs\n target: /usr/src/app/outputs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/reports\n target: /usr/src/app/reports\n bind:\n create_host_path: true\n headscale:\n command:\n - serve\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yml\n container_name: headscale\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3478\"\n - \"8080\"\n - \"9090\"\n - \"50443\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: headscale\n image: docker.io/headscale/headscale:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Headscale is a server that manages your Tailscale network.\n homepage.group: Networking\n homepage.href: https://headscale.$DOMAIN/\n homepage.icon: headscale.png\n homepage.name: Headscale\n traefik.enable: \"true\"\n traefik.http.routers.headscale-admin.rule: Host(`headscale-admin.$DOMAIN`) || Host(`headscale-admin.bocloud.org`) || Host(`headscale-admin.bolabaden.duckdns.org`) || Host(`headscale-admin.micklethefickle.duckdns.org`)\n traefik.http.routers.headscale-admin.service: headscale-admin\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.bocloud.org`) || Host(`headscale.bolabaden.duckdns.org`) || Host(`headscale.micklethefickle.duckdns.org`)\n traefik.http.routers.headscale.service: headscale\n traefik.http.services.headscale-admin.loadbalancer.server.port: \"9090\"\n traefik.http.services.headscale.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.0.106\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/config\n target: /etc/headscale\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/lib\n target: /var/lib/headscale\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/run\n target: /var/run/headscale\n bind:\n create_host_path: true\n homepage:\n container_name: homepage\n environment:\n HOMEPAGE_ALLOWED_HOSTS: '*'\n HOMEPAGE_VAR_HEADER_STYLE: \"\"\n HOMEPAGE_VAR_SEARCH_PROVIDER: google\n HOMEPAGE_VAR_TITLE: Bolabaden\n HOMEPAGE_VAR_WEATHER_CITY: Chicago\n HOMEPAGE_VAR_WEATHER_LAT: \"41.8781\"\n HOMEPAGE_VAR_WEATHER_LONG: \"-87.6298\"\n HOMEPAGE_VAR_WEATHER_UNIT: fahrenheit\n TZ: America/Chicago\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: homepage\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n image: ghcr.io/gethomepage/homepage\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Homepage is a dashboard that displays all of your services.\n homepage.group: Dashboards\n homepage.href: https://homepage.$DOMAIN/\n homepage.icon: homepage.png\n homepage.name: Homepage\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: Host(`homepage.$DOMAIN`) || Host(`homepage.bocloud.org`) || Host(`homepage.bolabaden.duckdns.org`) || Host(`homepage.micklethefickle.duckdns.org`)\n traefik.http.services.homepage.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.88\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/homepage\n target: /app/config\n bind:\n create_host_path: true\n homer:\n configs:\n - source: homer-config.yml\n target: /www/assets/config.yml\n container_name: homer\n environment:\n GID: \"121\"\n INIT_ASSETS: \"1\"\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UID: \"1001\"\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: homer\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:8080 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: b4bz/homer:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Static homepage dashboard\n homepage.group: Dashboards\n homepage.href: https://homer.$DOMAIN/\n homepage.icon: http://127.0.0.1:8080/assets/icons/pwa-192x192.png\n homepage.name: Homer\n homepage.weight: \"0\"\n homepage.widget.type: homer\n homepage.widget.url: http://homer:8080\n traefik.enable: \"true\"\n traefik.http.routers.homer.rule: Host(`homer.$DOMAIN`) || Host(`homer.bocloud.org`) || Host(`homer.bolabaden.duckdns.org`) || Host(`homer.micklethefickle.duckdns.org`)\n traefik.http.services.homer.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.106\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/homer/assets\n target: /www/assets\n bind:\n create_host_path: true\n jackett:\n container_name: jackett\n depends_on:\n flaresolverr:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n AUTO_UPDATE: \"true\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n PGID: \"121\"\n PUID: \"1001\"\n RUN_OPTS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=nnx0n84pcj7umynyd2pbid2nl1zzuemz || exit 1\n timeout: 10s\n interval: 30s\n start_period: 1m0s\n image: linuxserver/jackett\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.group: Source Aggregator\n homepage.href: https://jackett.$DOMAIN/\n homepage.icon: jackett.png\n homepage.name: Jackett Indexer\n homepage.weight: \"1\"\n homepage.widget.key: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n homepage.widget.type: jackett\n homepage.widget.url: http://jackett:9117\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/jackett/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid/blackhole\n target: /blackhole\n bind:\n create_host_path: true\n - type: bind\n source: /mnt\n target: /mnt\n bind:\n create_host_path: true\n mediaflow-proxy:\n container_name: mediaflow-proxy\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n API_PASSWORD: d468d92139047f1df5ba0fae9d998957c30834a386cd63d0472a7b044d42a96a\n ENABLE_STREAMING_PROGRESS: \"true\"\n PGID: \"121\"\n PORT: \"8888\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD\n - python3\n - -c\n - import socket; s=socket.socket(); s.connect(('127.0.0.1', 8888)); print('Healthcheck passed')\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 10s\n image: mhdzumair/mediaflow-proxy\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n homepage.icon: mediaflow-proxy.png\n homepage.name: MediaFlow Proxy\n network_mode: service:warp\n restart: always\n mediafusion:\n container_name: mediafusion\n depends_on:\n mongodb:\n condition: service_healthy\n required: true\n redis:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n ADDON_NAME: MediaFusion | $DOMAIN\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\"\n ADULT_CONTENT_REGEX_KEYWORDS: \\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\b\n API_PASSWORD: h4L0m4St3R327\n ARAB_TORRENTS_SCHEDULER_CRONTAB: 0 0 * * *\n BACKGROUND_SEARCH_CRONTAB: '*/5 * * * *'\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\"\n BRANDING_DESCRIPTION: Hosted on $DOMAIN\n BT4G_IMMEDIATE_MAX_PROCESS: \"15\"\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n BT4G_SEARCH_INTERVAL_HOUR: \"72\"\n BT4G_SEARCH_TIMEOUT: \"10\"\n BT4G_URL: https://bt4gprx.com\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: 0 0 * * *\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: 0 * * * *\n CONTACT_EMAIL: boden.crouch@gmail.com\n DB_MAX_CONNECTIONS: \"50\"\n DESCRIPTION: MediaFusion | $DOMAIN\n DISABLE_ALL_SCHEDULER: \"False\"\n DISABLED_PROVIDERS: '[]'\n DLHD_SCHEDULER_CRONTAB: 25 * * * *\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\"\n ENABLE_RATE_LIMIT: \"True\"\n FLARESOLVERR_URL: http://flaresolverr:8191/v1\n FORMULA_TGX_SCHEDULER_CRONTAB: '*/30 * * * *'\n HOST_URL: https://mediafusion.$DOMAIN\n IS_PUBLIC_INSTANCE: \"False\"\n IS_SCRAP_FROM_BT4G: \"True\"\n IS_SCRAP_FROM_JACKETT: \"False\"\n IS_SCRAP_FROM_MEDIAFUSION: \"True\"\n IS_SCRAP_FROM_PROWLARR: \"False\"\n IS_SCRAP_FROM_TORRENTIO: \"True\"\n IS_SCRAP_FROM_YTS: \"True\"\n IS_SCRAP_FROM_ZILEAN: \"True\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\"\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n JACKETT_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\"\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n JACKETT_LIVE_TITLE_SEARCH: \"True\"\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\"\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\"\n JACKETT_URL: http://jackett:9117\n LOGGING_LEVEL: INFO\n LOGO_URL: \"\"\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"3\"\n MEDIAFUSION_URL: https://mediafusion.$DOMAIN\n META_CACHE_TTL: \"1800\"\n METADATA_PRIMARY_SOURCE: tmdb\n MIN_SCRAPING_VIDEO_SIZE: \"26214400\"\n MONGO_URI: mongodb://mongodb:27017/mediafusion\n MOTOGP_TGX_SCHEDULER_CRONTAB: 0 5 * * *\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: 0 * * * *\n NOWMETV_SCHEDULER_CRONTAB: 0 0 * * *\n NOWSPORTS_SCHEDULER_CRONTAB: 0 10 * * *\n PGID: \"121\"\n PLAYWRIGHT_CDP_URL: ws://browserless:3000?blockAds=true&stealth=true\n POSTER_HOST_URL: https://mediafusion.$DOMAIN\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"False\"\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n PROWLARR_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"10\"\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n PROWLARR_LIVE_TITLE_SEARCH: \"True\"\n PROWLARR_SEARCH_INTERVAL_HOUR: \"72\"\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"30\"\n PROWLARR_URL: http://prowlarr:9696\n PUID: \"1001\"\n REDIS_MAX_CONNECTIONS: \"100\"\n REDIS_URL: redis://10.76.128.87:6379\n SCRAPE_WITH_AKA_TITLES: \"True\"\n SECRET_KEY: c75ac92df70c4383c8d1bb37f65454f9\n SPORT_VIDEO_SCHEDULER_CRONTAB: '*/20 * * * *'\n STORE_STREMTHRU_MAGNET_CACHE: \"true\"\n SYNC_DEBRID_CACHE_STREAMS: \"False\"\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: 0 */6 * * *\n TAMILMV_SCHEDULER_CRONTAB: 0 */3 * * *\n TAMILULTRA_SCHEDULER_CRONTAB: 0 8 * * *\n TELEGRAM_BOT_TOKEN: \"\"\n TELEGRAM_CHAT_ID: \"\"\n TMDB_API_KEY: cec876f852b9c15d2c1b436b1117dff7\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"3\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UFC_TGX_SCHEDULER_CRONTAB: 30 */3 * * *\n UMASK: \"002\"\n UPDATE_SEEDERS_CRONTAB: 0 0 * * *\n VALIDATE_M3U8_URLS_LIVENESS: \"True\"\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: 0 */6 * * *\n VERSION: 1.0.0\n WORKER_MAX_TASKS_PER_CHILD: \"20\"\n WWE_TGX_SCHEDULER_CRONTAB: 10 */3 * * *\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 1m0s\n image: mhdzumair/mediafusion:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.icon: mediafusion.png\n homepage.name: MediaFusion\n network_mode: service:warp\n restart: always\n mongodb:\n container_name: mongodb\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"27017\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: mongodb\n healthcheck:\n test:\n - CMD-SHELL\n - mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\"ping\").ok' > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 10s\n retries: 5\n start_period: 40s\n image: mongo:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MongoDB is a NoSQL database that uses JSON-like documents with optional schemas.\n homepage.group: Databases\n homepage.href: https://mongodb.$DOMAIN/\n homepage.icon: mongodb.png\n homepage.name: MongoDB\n traefik.enable: \"true\"\n traefik.http.routers.mongodb.middlewares: nginx-auth@file\n traefik.http.routers.mongodb.rule: Host(`mongodb.$DOMAIN`) || Host(`mongodb.bocloud.org`) || Host(`mongodb.bolabaden.duckdns.org`) || Host(`mongodb.micklethefickle.duckdns.org`)\n traefik.http.services.mongodb.loadbalancer.server.port: \"27017\"\n networks:\n publicnet:\n ipv4_address: 10.76.0.50\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/mongodb/data\n target: /data/db\n bind:\n create_host_path: true\n nginx-auth:\n container_name: nginx-auth\n environment:\n NGINX_ACCESS_LOG: /dev/stdout\n NGINX_ERROR_LOG: /dev/stderr\n NGINX_LOG_LEVEL: warn\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: nginx-auth\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:80/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 20s\n image: nginx:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.nginx-auth.forwardauth.address: http://nginx-auth:80/auth\n traefik.http.middlewares.nginx-auth.forwardauth.authResponseHeaders: X-Auth-Method,X-Auth-Passed,X-Middleware-Name\n traefik.http.middlewares.nginx-auth.forwardauth.trustForwardHeader: \"true\"\n traefik.http.routers.nginx-auth.rule: Host(`nginx-auth.$DOMAIN`) || Host(`nginx-auth.bocloud.org`) || Host(`nginx-auth.bolabaden.duckdns.org`) || Host(`nginx-auth.micklethefickle.duckdns.org`)\n traefik.http.routers.nginx-auth.service: nginx-auth\n traefik.http.services.nginx-auth.loadbalancer.server.port: \"80\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.94\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/nginx-middlewares/nginx.conf\n target: /etc/nginx/nginx.conf\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/nginx-middlewares/auth\n target: /etc/nginx/auth\n read_only: true\n bind:\n create_host_path: true\n overseerr:\n container_name: overseerr\n depends_on:\n plex:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5055\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: overseerr\n image: docker.io/linuxserver/overseerr\n labels:\n homepage.description: Allows users to request movies and TV shows, integrating with your media server for easy content management.\n homepage.group: Media Requests\n homepage.href: https://overseerr.$DOMAIN/\n homepage.icon: overseerr.png\n homepage.name: Overseerr Requests\n homepage.weight: \"3\"\n homepage.widget.key: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n homepage.widget.type: overseerr\n homepage.widget.url: https://overseerr.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.overseerr.rule: Host(`overseerr.$DOMAIN`) || Host(`overseerr.bocloud.org`) || Host(`overseerr.bolabaden.duckdns.org`) || Host(`overseerr.micklethefickle.duckdns.org`)\n traefik.http.services.overseerr.loadbalancer.server.port: \"5055\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.116\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/overseerr/config\n target: /config\n bind:\n create_host_path: true\n plex:\n container_name: plex\n environment:\n ADVERTISE_IP: https://plex.$DOMAIN:443\n EMAIL_TO: bolabaden.duckdns@gmail.com\n PLEX_CLAIM: claim-RmAd7Q1DfvybLKDY8zmQ\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n SMTP_FROM: transcode-killer@$DOMAIN\n SMTP_PORT: \"587\"\n WAIT_FOR_MOUNT_PATHS: /mnt/remote/realdebrid\n WAIT_FOR_URLS: http://zurg:9999/http/version.txt\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: plex\n healthcheck:\n test:\n - CMD-SHELL\n - curl --connect-timeout 15 --silent --show-error --fail http://localhost:32400/identity\n timeout: 15s\n interval: 1m0s\n retries: 3\n start_period: 1m0s\n image: plexinc/pms-docker\n labels:\n homepage.description: Stream your movies, TV shows, music, and photos to any device, providing a centralized media hub for all your content.\n homepage.group: Media Streaming\n homepage.href: https://plex.$DOMAIN/\n homepage.icon: plex.png\n homepage.name: Plex Media Server\n homepage.weight: \"4\"\n homepage.widget.key: 18rS6gM-Wec22uq5Gw-U\n homepage.widget.type: plex\n homepage.widget.url: https://plex.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.plex.rule: Host(`plex.$DOMAIN`) || Host(`plex.bocloud.org`) || Host(`plex.bolabaden.duckdns.org`) || Host(`plex.micklethefickle.duckdns.org`)\n traefik.http.services.plex.loadbalancer.server.port: \"32400\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.95\n ports:\n - mode: ingress\n target: 1900\n published: \"1902\"\n protocol: udp\n - mode: ingress\n target: 32400\n published: \"32400\"\n protocol: tcp\n - mode: ingress\n target: 32410\n published: \"32410\"\n protocol: udp\n - mode: ingress\n target: 8324\n published: \"8324\"\n protocol: tcp\n - mode: ingress\n target: 32412\n published: \"32412\"\n protocol: udp\n - mode: ingress\n target: 32413\n published: \"32413\"\n protocol: udp\n - mode: ingress\n target: 32414\n published: \"32414\"\n protocol: udp\n - mode: ingress\n target: 32469\n published: \"32469\"\n protocol: tcp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/plex/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/plex/config/osx-config\n target: /config/Library/Application Support/Plex Media Server\n bind:\n create_host_path: true\n - type: bind\n source: /dev/shm\n target: /dev/shm\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/local/transcodes/plex\n target: /transcode\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /storage/symlinks\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n prowlarr:\n container_name: prowlarr\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n PGID: \"121\"\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - 'curl -fs -H \"Authorization: Bearer 29440a82740d475cacb35327c62c87a1\" http://127.0.0.1:9696/api/v1/system/status || exit 1'\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: linuxserver/prowlarr\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.group: Indexers\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.icon: prowlarr.png\n homepage.name: Prowlarr\n homepage.weight: \"1\"\n homepage.widget.key: 29440a82740d475cacb35327c62c87a1\n homepage.widget.type: prowlarr\n homepage.widget.url: http://prowlarr:9696\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/prowlarr/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /mnt\n target: /mnt\n bind:\n create_host_path: true\n rclone:\n cap_add:\n - SYS_ADMIN\n command:\n - rcd\n - --rc-web-gui\n - --rc-web-gui-no-open-browser\n - --rc-addr=:5572\n - --log-level=DEBUG\n - --rc-user=brunner56\n - --rc-pass=h4L0m4St3R327\n - --config=/config/rclone/rclone.conf\n - --cache-dir=/.cache/rclone\n configs:\n - source: rclone-rclone.conf\n target: /config/rclone/rclone.conf\n mode: \"0777\"\n container_name: rclone\n devices:\n - source: /dev/fuse\n target: /dev/fuse\n permissions: rwm\n expose:\n - \"5572\"\n - \"5575\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: rclone\n image: rclone/rclone:latest\n labels:\n homepage.description: A web interface for Rclone.\n homepage.group: Media Management\n homepage.href: https://rclone.$DOMAIN/\n homepage.icon: rclone.png\n homepage.name: Rclone\n homepage.weight: \"0\"\n traefik.enable: \"true\"\n traefik.http.routers.rclone.rule: Host(`rclone.$DOMAIN`) || Host(`rclone.bocloud.org`) || Host(`rclone.bolabaden.duckdns.org`) || Host(`rclone.micklethefickle.duckdns.org`)\n traefik.http.routers.rclone.service: rclone\n traefik.http.services.rclone.loadbalancer.server.port: \"5572\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.111\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - type: bind\n source: /\n target: /hostfs\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /etc/fuse.conf\n target: /etc/fuse.conf\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /etc/group\n target: /etc/group\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /etc/passwd\n target: /etc/passwd\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /mnt/symlinks\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclone/.cache\n target: /.cache\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclone/config/rclone\n target: /config/rclone\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclonefm/js\n target: /var/lib/rclonefm/js\n bind:\n create_host_path: true\n rclone-zurg:\n cap_add:\n - SYS_ADMIN\n configs:\n - source: rclone-mounts.json\n target: /app/mounts.json\n mode: \"0777\"\n container_name: rclone-zurg\n depends_on:\n rclone:\n condition: service_started\n required: true\n devices:\n - source: /dev/fuse\n target: /dev/fuse\n permissions: rwm\n environment:\n RCLONE_CONFIG_PATH: /config/rclone/rclone.conf\n RCLONE_PASSWORD: h4L0m4St3R327\n RCLONE_PORT: \"5572\"\n RCLONE_USERNAME: brunner56\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: rclone-zurg\n healthcheck:\n test:\n - CMD\n - mountpoint\n - -q\n - /mnt/remote/realdebrid\n timeout: 3s\n interval: 5s\n retries: 2\n start_period: 10s\n image: ghcr.io/coanghel/rclone-docker-automount/rclone-init:latest\n networks:\n publicnet: null\n privileged: true\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n redis:\n command:\n - redis-server\n - --appendonly\n - \"yes\"\n - --save\n - \"60\"\n - \"1\"\n - --bind\n - 0.0.0.0\n container_name: redis\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n REDIS_DATABASE: \"0\"\n REDIS_HOST: redis\n REDIS_PASSWORD: redis\n REDIS_PORT: \"6379\"\n REDIS_USERNAME: default\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"6379\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: redis\n healthcheck:\n test:\n - CMD-SHELL\n - redis-cli ping > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 10s\n retries: 5\n image: redis:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Redis is an in-memory data structure store, used as a database, cache, and message broker.\n homepage.group: Databases\n homepage.href: https://redis.$DOMAIN/\n homepage.icon: redis.png\n homepage.name: Redis\n traefik.enable: \"true\"\n traefik.http.routers.redis.middlewares: nginx-auth@file\n traefik.http.routers.redis.rule: Host(`redis.$DOMAIN`) || Host(`redis.bocloud.org`) || Host(`redis.bolabaden.duckdns.org`) || Host(`redis.micklethefickle.duckdns.org`)\n traefik.http.services.redis.loadbalancer.server.port: \"6379\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.87\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/redis\n target: /data\n bind:\n create_host_path: true\n riven:\n configs:\n - source: riven-settings.json\n target: /riven/data/settings.json\n mode: \"0777\"\n container_name: riven\n depends_on:\n riven-db:\n condition: service_healthy\n required: true\n deploy:\n resources:\n limits:\n cpus: 1\n memory: \"1073741824\"\n reservations:\n cpus: 0.5\n memory: \"20971520\"\n environment:\n API_KEY: 3e0be750b16ff363727d05d18ba364fd\n DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n DIALECT: postgres\n HARD_RESET: \"false\"\n PGID: \"121\"\n PUID: \"1001\"\n REPAIR_SYMLINKS: \"false\"\n RIVEN_CONTENT_LISTRR_API_KEY: d962d6e9fd4e4db790711128ed6013b236e86b1bea534c7f9f0c17a3c4c72982\n RIVEN_CONTENT_LISTRR_ENABLED: \"false\"\n RIVEN_CONTENT_LISTRR_MOVIE_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_SHOW_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_MDBLIST_API_KEY: so5wnihfjtqhacaa310gzmrq6\n RIVEN_CONTENT_MDBLIST_ENABLED: \"false\"\n RIVEN_CONTENT_MDBLIST_LISTS: '[]'\n RIVEN_CONTENT_MDBLIST_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_OVERSEERR_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n RIVEN_CONTENT_OVERSEERR_ENABLED: \"true\"\n RIVEN_CONTENT_OVERSEERR_UPDATE_INTERVAL: \"30\"\n RIVEN_CONTENT_OVERSEERR_URL: http://overseerr:5055\n RIVEN_CONTENT_OVERSEERR_USE_WEBHOOK: \"false\"\n RIVEN_CONTENT_PLEX_WATCHLIST_ENABLED: \"true\"\n RIVEN_CONTENT_PLEX_WATCHLIST_RSS: '[]'\n RIVEN_CONTENT_PLEX_WATCHLIST_UPDATE_INTERVAL: \"60\"\n RIVEN_CONTENT_TRAKT_API_KEY: 052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\n RIVEN_CONTENT_TRAKT_ENABLED: \"true\"\n RIVEN_CONTENT_TRAKT_UPDATE_INTERVAL: \"3600\"\n RIVEN_DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n RIVEN_DEBUG: \"false\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_API_KEY: \"\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_PROXY_URL: http://warp:1080\n RIVEN_DOWNLOADERS_REAL_DEBRID_API_KEY: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n RIVEN_DOWNLOADERS_REAL_DEBRID_ENABLED: \"true\"\n RIVEN_DOWNLOADERS_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n RIVEN_DOWNLOADERS_TORBOX_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_VIDEO_EXTENSIONS: '[\"avi\",\"mkv\",\"mp4\"]'\n RIVEN_EMBY_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_EMBY_ENABLED: \"false\"\n RIVEN_EMBY_URL: http://emby:8096\n RIVEN_FORCE_ENV: \"false\"\n RIVEN_FORCE_REFRESH: \"false\"\n RIVEN_JELLYFIN_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_JELLYFIN_ENABLED: \"true\"\n RIVEN_JELLYFIN_URL: http://jellyfin:8096\n RIVEN_LOG: \"true\"\n RIVEN_MAP_METADATA: \"true\"\n RIVEN_PLEX_ENABLED: \"true\"\n RIVEN_PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n RIVEN_PLEX_URL: http://plex:32400\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_PREFERRED: '[\"en\"]'\n RIVEN_RANKING_LANGUAGES_REQUIRED: '[\"en\"]'\n RIVEN_RANKING_OPTIONS_ALLOW_ENGLISH_IN_LANGUAGES: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_ALL_TRASH: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_RANKS_UNDER: \"-10000\"\n RIVEN_RANKING_OPTIONS_REMOVE_UNKNOWN_LANGUAGES: \"false\"\n RIVEN_RANKING_OPTIONS_TITLE_SIMILARITY: \"0.85\"\n RIVEN_RANKING_PREFERRED: '[]'\n RIVEN_RANKING_PROFILE: default\n RIVEN_RANKING_REQUIRE: '[]'\n RIVEN_RANKING_RESOLUTIONS_360P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_480P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_720P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_1080P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_2160P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_UNKNOWN: \"true\"\n RIVEN_SCRAPING_AFTER_2: \"2\"\n RIVEN_SCRAPING_AFTER_5: \"6\"\n RIVEN_SCRAPING_AFTER_10: \"24\"\n RIVEN_SCRAPING_COMET_ENABLED: \"true\"\n RIVEN_SCRAPING_COMET_INDEXERS: animetosho,anirena,eztv,limetorrents,nyaasi,solidtorrents,thepiratebay,torlock,yts\n RIVEN_SCRAPING_COMET_RATELIMIT: \"false\"\n RIVEN_SCRAPING_COMET_TIMEOUT: \"30\"\n RIVEN_SCRAPING_COMET_URL: http://comet:2020\n RIVEN_SCRAPING_ENABLE_ALIASES: \"true\"\n RIVEN_SCRAPING_JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n RIVEN_SCRAPING_JACKETT_ENABLED: \"true\"\n RIVEN_SCRAPING_JACKETT_RATELIMIT: \"false\"\n RIVEN_SCRAPING_JACKETT_TIMEOUT: \"10\"\n RIVEN_SCRAPING_JACKETT_URL: http://jackett:9117\n RIVEN_SCRAPING_KNIGHTCRAWLER_ENABLED: \"false\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_KNIGHTCRAWLER_RATELIMIT: \"true\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_TIMEOUT: \"30\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_URL: https://knightcrawler.elfhosted.com\n RIVEN_SCRAPING_MEDIAFUSION_CATALOGS: prowlarr_streams,torrentio_streams\n RIVEN_SCRAPING_MEDIAFUSION_ENABLED: \"true\"\n RIVEN_SCRAPING_MEDIAFUSION_RATELIMIT: \"false\"\n RIVEN_SCRAPING_MEDIAFUSION_TIMEOUT: \"10\"\n RIVEN_SCRAPING_MEDIAFUSION_URL: http://mediafusion:8080\n RIVEN_SCRAPING_ORIONOID_API_KEY: LXBVEGR6DBKLBSBNLPARQHQRH8DGD7PT\n RIVEN_SCRAPING_ORIONOID_CACHED_RESULTS_ONLY: \"true\"\n RIVEN_SCRAPING_ORIONOID_ENABLED: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_LIMITCOUNT: \"5\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEO3D: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEOQUALITY: sd_hd8k\n RIVEN_SCRAPING_ORIONOID_RATELIMIT: \"true\"\n RIVEN_SCRAPING_ORIONOID_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PARSE_DEBUG: \"false\"\n RIVEN_SCRAPING_PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n RIVEN_SCRAPING_PROWLARR_ENABLED: \"false\"\n RIVEN_SCRAPING_PROWLARR_LIMITER_SECONDS: \"60\"\n RIVEN_SCRAPING_PROWLARR_RATELIMIT: \"false\"\n RIVEN_SCRAPING_PROWLARR_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PROWLARR_URL: http://prowlarr:9696\n RIVEN_SCRAPING_TORRENTIO_ENABLED: \"true\"\n RIVEN_SCRAPING_TORRENTIO_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_TORRENTIO_PROXY_URL: http://warp:1080\n RIVEN_SCRAPING_TORRENTIO_RATELIMIT: \"true\"\n RIVEN_SCRAPING_TORRENTIO_TIMEOUT: \"30\"\n RIVEN_SCRAPING_TORRENTIO_URL: https://torrentio.strem.fun\n RIVEN_SCRAPING_ZILEAN_ENABLED: \"true\"\n RIVEN_SCRAPING_ZILEAN_RATELIMIT: \"false\"\n RIVEN_SCRAPING_ZILEAN_TIMEOUT: \"30\"\n RIVEN_SCRAPING_ZILEAN_URL: http://zilean.elfhosted.com\n RIVEN_SYMLINK_LIBRARY_PATH: /mnt/symlinks\n RIVEN_SYMLINK_RCLONE_PATH: /mnt/remote/realdebrid/__all__\n RIVEN_SYMLINK_REPAIR_INTERVAL: \"6.0\"\n RIVEN_SYMLINK_REPAIR_SYMLINKS: \"true\"\n RIVEN_SYMLINK_SEPARATE_ANIME_DIRS: \"true\"\n RIVEN_TRACEMALLOC: \"false\"\n RIVEN_UPDATER_INTERVAL: \"120\"\n RIVEN_VERSION: 0.21.21\n SETTINGS_FILENAME: settings.json\n SKIP_TRAKT_CACHE: \"false\"\n SYMLINK_MAX_WORKERS: \"4\"\n TRAKT_API_CLIENT_ID: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven\n healthcheck:\n test:\n - CMD-SHELL\n - curl -s http://127.0.0.1:8080 >/dev/null || exit 1\n timeout: 10s\n interval: 30s\n retries: 10\n image: docker.io/spoked/riven:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.riven.rule: Host(`riven-backend.$DOMAIN`) || Host(`riven-backend.bocloud.org`) || Host(`riven-backend.bolabaden.duckdns.org`) || Host(`riven-backend.micklethefickle.duckdns.org`)\n traefik.http.services.riven.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.101\n restart: always\n tty: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/data\n target: /riven/data\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /mnt/symlinks\n bind:\n create_host_path: true\n riven-db:\n container_name: riven-db\n environment:\n PGDATA: /var/lib/postgresql/data/pgdata\n PGID: \"121\"\n POSTGRES_DB: riven\n POSTGRES_PASSWORD: postgres\n POSTGRES_USER: postgres\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven-db\n healthcheck:\n test:\n - CMD-SHELL\n - pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}\n timeout: 5s\n interval: 10s\n retries: 5\n image: postgres:16.3-alpine3.20\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.riven-db.middlewares: nginx-auth@file\n traefik.http.routers.riven-db.rule: Host(`riven-db.$DOMAIN`) || Host(`riven-db.bocloud.org`) || Host(`riven-db.bolabaden.duckdns.org`) || Host(`riven-db.micklethefickle.duckdns.org`)\n traefik.http.services.riven-db.loadbalancer.server.port: \"5432\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.102\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/pgdata\n target: /var/lib/postgresql/data/pgdata\n bind:\n create_host_path: true\n riven-frontend:\n container_name: riven-frontend\n depends_on:\n riven:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven-frontend\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: spoked/riven-frontend:latest\n labels:\n homepage.description: Modern frontend for Plex Debrid\n homepage.group: Media Management\n homepage.href: https://riven.$DOMAIN/\n homepage.icon: riven.png\n homepage.name: Riven\n traefik.enable: \"true\"\n traefik.http.routers.riven-frontend.middlewares: nginx-auth@file\n traefik.http.routers.riven-frontend.rule: Host(`riven.$DOMAIN`) || Host(`riven.bocloud.org`) || Host(`riven.bolabaden.duckdns.org`) || Host(`riven.micklethefickle.duckdns.org`)\n traefik.http.routers.riven-frontend.service: riven-frontend\n traefik.http.services.riven-frontend.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.100\n restart: always\n tty: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/config\n target: /riven/config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/tmp\n target: /tmp\n bind:\n create_host_path: true\n searxng:\n container_name: searxng\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n SEARXNG_BASE_URL: http://searxng:8080\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: searxng\n healthcheck:\n test:\n - CMD-SHELL\n - wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: docker.io/searxng/searxng:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n homepage.group: Search\n homepage.href: https://searxng.$DOMAIN/\n homepage.icon: searxng.png\n homepage.name: SearxNG\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.90\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/searxng\n target: /etc/searxng\n bind:\n create_host_path: true\n speedtest:\n container_name: speedtest\n environment:\n ADMIN_EMAIL: boden.crouch@gmail.com\n ADMIN_NAME: ubuntu\n ADMIN_PASSWORD: h4L0m4St3R327\n API_RATE_LIMIT: \"60\"\n APP_KEY: base64:OZVnVd3/7lJTtOTtVZ0YqxXJKtle2R48NIrfFv11CkM=\n APP_NAME: Speedtest Tracker\n APP_TIMEZONE: America/Chicago\n APP_URL: \"\"\n ASSET_URL: \"\"\n CHART_BEGIN_AT_ZERO: \"true\"\n CHART_DATETIME_FORMAT: j/m G:i\n CONTENT_WIDTH: 7xl\n DATETIME_FORMAT: j M Y, G:i:s\n DB_CONNECTION: sqlite\n DISPLAY_TIMEZONE: America/Chicago\n PGID: \"121\"\n PRUNE_RESULTS_OLDER_THAN: \"0\"\n PUBLIC_DASHBOARD: \"true\"\n PUID: \"1001\"\n SPEEDTEST_BLOCKED_SERVERS: \"\"\n SPEEDTEST_INTERFACE: \"\"\n SPEEDTEST_SCHEDULE: 0 * * * *\n SPEEDTEST_SERVERS: \"\"\n SPEEDTEST_SKIP_IPS: \"\"\n THRESHOLD_DOWNLOAD: \"900\"\n THRESHOLD_ENABLED: \"true\"\n THRESHOLD_PING: \"25\"\n THRESHOLD_UPLOAD: \"900\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: speedtest\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:80 > /dev/null || exit 1\n timeout: 15s\n interval: 30s\n start_period: 20s\n image: linuxserver/speedtest-tracker\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Regularly tests your internet speed and tracks performance over time, helping you monitor your connection quality.\n homepage.group: Network Monitoring\n homepage.href: https://speedtest.$DOMAIN/\n homepage.icon: speedtest.png\n homepage.name: Speedtest\n homepage.widget.fields: '[\"download\", \"upload\", \"ping\", \"speedtest\"]'\n homepage.widget.type: speedtest\n homepage.widget.url: http://speedtest-tracker:80\n traefik.enable: \"true\"\n traefik.http.routers.speedtest.rule: Host(`speedtest.$DOMAIN`) || Host(`speedtest.bocloud.org`) || Host(`speedtest.bolabaden.duckdns.org`) || Host(`speedtest.micklethefickle.duckdns.org`)\n traefik.http.services.speedtest.loadbalancer.server.port: \"80\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.86\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/speedtest-tracker/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/speedtest-tracker/keys\n target: /config/keys\n bind:\n create_host_path: true\n stremio:\n container_name: stremio\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n CASTING_DISABLED: \"1\"\n IPADDRESS: 170.9.225.137\n NO_CORS: \"0\"\n SERVER_URL: https://stremio.$DOMAIN\n WEBUI_LOCATION: https://stremio-web.$DOMAIN/shell/\n healthcheck:\n test:\n - CMD-SHELL\n - (curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 1m30s\n image: th3w1zard1/stremio-docker:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.group: Media Streaming Platforms\n homepage.href: https://stremio.$DOMAIN/\n homepage.icon: stremio.png\n homepage.name: Stremio\n homepage.widget.password: Hilogirl80!\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n homepage.widget.username: bolabaden.duckdns@gmail.com\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/root/.stremio-server\n target: /root/.stremio-server\n bind:\n create_host_path: true\n stremthru:\n container_name: stremthru\n depends_on:\n redis:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n STREMTHRU_AUTH_ADMIN: brunner56:h4L0m4St3R327\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: \"0\"\n STREMTHRU_DATABASE_URI: sqlite://./data/stremthru.db\n STREMTHRU_FEATURE: '\"dmm_hashlist,imdb_title,stremio_sidekick,stremio_store,stremio_wrap,stremio_torz\"'\n STREMTHRU_HTTP_PROXY: http://warp:1080\n STREMTHRU_LOG_FORMAT: text\n STREMTHRU_LOG_LEVEL: DEBUG\n STREMTHRU_PROXY_AUTH: brunner56:h4L0m4St3R327,bolabaden:duckdns\n STREMTHRU_REDIS_URI: redis://10.76.128.87:6379\n STREMTHRU_STORE_AUTH: '*:realdebrid:UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ,*:realdebrid:TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA,*:premiumize:6i6zgswm35baj3ur,*:torbox:d490b7b1-1f6d-44e8-9cc8-3e735c87874b'\n STREMTHRU_STORE_CONTENT_PROXY: '*:true'\n STREMTHRU_STORE_TUNNEL: '*:true'\n STREMTHRU_TUNNEL: '*:true'\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: stremthru\n image: muniftanjim/stremthru:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: StremThru is tunnel/proxy for debrid services.\n homepage.group: Stremio Addons\n homepage.href: https://stremthru.$DOMAIN/\n homepage.icon: stremthru.png\n homepage.name: StremThru\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: Host(`stremthru.$DOMAIN`) || Host(`stremthru.bolabaden.duckdns.org`) || Host(`stremthru.bocloud.org`) || Host(`stremthru.bolabaden.duckdns.org`) || Host(`stremthru.micklethefickle.duckdns.org`)\n traefik.http.routers.stremthru.service: stremthru\n traefik.http.services.stremthru.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.99\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/stremthru/app/data\n target: /app/data\n bind:\n create_host_path: true\n tautulli:\n container_name: tautulli\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TAUTULLI_API_KEY: f86827c56ae740e6bff77c386e726ab8\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8181\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: tautulli\n image: ghcr.io/tautulli/tautulli:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Tautulli is a web interface for Plex Media Server.\n homepage.group: Media Maintenance\n homepage.href: https://tautulli.$DOMAIN/\n homepage.icon: tautulli.png\n homepage.name: Tautulli\n homepage.weight: \"6\"\n homepage.widget.key: f86827c56ae740e6bff77c386e726ab8\n homepage.widget.type: tautulli\n homepage.widget.url: https://tautulli.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.tautulli.middlewares: nginx-auth@file\n traefik.http.routers.tautulli.rule: Host(`tautulli.$DOMAIN`) || Host(`tautulli.bocloud.org`) || Host(`tautulli.bolabaden.duckdns.org`) || Host(`tautulli.micklethefickle.duckdns.org`)\n traefik.http.services.tautulli.loadbalancer.server.port: \"8181\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.103\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/tautulli\n target: /config\n bind:\n create_host_path: true\n tinyauth:\n container_name: tinyauth\n environment:\n APP_TITLE: Bolabaden\n APP_URL: https://auth.$DOMAIN\n COOKIE_SECURE: \"true\"\n GITHUB_CLIENT_ID: Ov23ct3xtNzKCw4aeqfQ\n GITHUB_CLIENT_SECRET: 915226982a066972f2dd1e07249737a9c5e28728\n GOOGLE_CLIENT_ID: 324816055390-dftm6jq2d3ifs37miivj3nj09piv0df9.apps.googleusercontent.com\n GOOGLE_CLIENT_SECRET: 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\n LOGIN_MAX_RETRIES: \"15\"\n LOGIN_TIMEOUT: \"300\"\n OAUTH_AUTO_REDIRECT: none\n OAUTH_WHITELIST: boden.crouch@gmail.com,halomastar@gmail.com,athenajaguiar@gmail.com,bolabaden.duckdns@gmail.com,dgorsch2@gmail.com,dgorsch4@gmail.com\n SECRET: b9a4ZxFNBbyR9KdTAf2kSciI5jUCQLzE\n SESSION_EXPIRY: \"604800\"\n USERS: brunner56:$$2y$$05$$CEXtGy1XS4BlkTXEgSG64eSQlrGn.55Xm2HbiSgVSgO./WoVXXLAa,bolabaden.duckdns@gmail.com:$$2y$$05$$BbVWsqh2XkzaxvLGwd.0euD/PkkoaeFNDIhB0tTEBn4tAjGckKRzq\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: auth\n image: ghcr.io/steveiliop56/tinyauth:v3\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Authentication service for securing your applications\n homepage.group: Security\n homepage.href: https://auth.$DOMAIN/\n homepage.icon: shield-lock.png\n homepage.name: TinyAuth\n traefik.enable: \"true\"\n traefik.http.middlewares.tinyauth.forwardauth.address: http://auth:3000/api/auth/traefik\n traefik.http.routers.tinyauth.rule: Host(`auth.$DOMAIN`) || Host(`auth.bocloud.org`) || Host(`auth.bolabaden.duckdns.org`) || Host(`auth.micklethefickle.duckdns.org`)\n networks:\n publicnet:\n ipv4_address: 10.76.128.82\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/tinyauth\n target: /data\n bind:\n create_host_path: true\n traefik:\n cap_add:\n - NET_ADMIN\n command:\n - --accesslog=true\n - --api.dashboard=true\n - --api.debug=true\n - --api.disableDashboardAd=true\n - --api.insecure=true\n - --certificatesresolvers.letsencrypt.acme.caServer=https://acme-v02.api.letsencrypt.org/directory\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.provider=cloudflare\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.resolvers=1.1.1.1,1.0.0.1\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge=true\n - --certificatesresolvers.letsencrypt.acme.email=boden.crouch@gmail.com\n - --certificatesresolvers.letsencrypt.acme.httpChallenge.entryPoint=web\n - --certificatesresolvers.letsencrypt.acme.httpChallenge=true\n - --certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json\n - --certificatesresolvers.letsencrypt.acme.tlsChallenge=true\n - --entrypoints.web.address=:80\n - --entrypoints.web.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.76.0.0/16,100.64.0.0/10\n - --entrypoints.web.http.redirections.entryPoint.scheme=https\n - --entrypoints.web.http.redirections.entryPoint.to=websecure\n - --entrypoints.websecure.address=:443\n - --entrypoints.websecure.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.76.0.0/16,100.64.0.0/10\n - --entrypoints.websecure.http.tls.certResolver=letsencrypt\n - --entrypoints.websecure.http.tls.domains[0].main=$DOMAIN\n - --entrypoints.websecure.http.tls.domains[0].sans=*.$DOMAIN\n - --entrypoints.websecure.http.tls.domains[1].main=bocloud.org\n - --entrypoints.websecure.http.tls.domains[1].sans=*.bocloud.org\n - --entrypoints.websecure.http.tls=true\n - --global.checkNewVersion=true\n - --global.sendAnonymousUsage=false\n - --log.level=INFO\n - --ping.terminatingStatusCode=503\n - --ping=true\n - --providers.docker.exposedByDefault=false\n - --providers.docker.network=publicnet\n - --providers.docker=true\n - --providers.file.directory=/config\n - --providers.file.watch=true\n - --serversTransport.insecureSkipVerify=true\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.version=v1.4.2\n container_name: traefik\n depends_on:\n crowdsec:\n condition: service_started\n required: true\n nginx-auth:\n condition: service_started\n required: true\n environment:\n CLOUDFLARE_DNS_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n CLOUDFLARE_EMAIL: boden.crouch@gmail.com\n CLOUDFLARE_ZONE_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n DUCKDNS_TOKEN: 2c18769a-2889-4648-a70c-2fe44dd10f20\n LETS_ENCRYPT_EMAIL: boden.crouch@gmail.com\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n - \"443\"\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: traefik\n image: traefik:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Traefik is a modern HTTP reverse proxy and load balancer.\n homepage.group: Infrastructure\n homepage.href: https://traefik.$DOMAIN/api\n homepage.icon: traefik.png\n homepage.name: Traefik\n homepage.widget.type: traefik\n traefik.enable: \"true\"\n traefik.http.routers.traefik.middlewares: nginx-auth@file\n traefik.http.routers.traefik.rule: Host(`traefik.$DOMAIN`) || Host(`traefik.bocloud.org`) || Host(`traefik.bolabaden.duckdns.org`) || Host(`traefik.micklethefickle.duckdns.org`)\n traefik.http.routers.traefik.service: api@internal\n traefik.http.services.traefik.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.85\n ports:\n - mode: ingress\n target: 80\n published: \"80\"\n protocol: tcp\n - mode: ingress\n target: 443\n published: \"443\"\n protocol: tcp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - type: bind\n source: /var/run/tailscale/tailscaled.sock\n target: /var/run/tailscale/tailscaled.sock\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack\n target: /certs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/traefik/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/traefik/plugins-local\n target: /plugins-local\n bind:\n create_host_path: true\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n create_host_path: true\n warp:\n cap_add:\n - MKNOD\n - AUDIT_WRITE\n - NET_ADMIN\n container_name: warp\n device_cgroup_rules:\n - c 10:200 rwm\n environment:\n TUNNEL_TOKEN: \"\"\n WARP_LICENSE_KEY: \"\"\n WARP_SLEEP: \"2\"\n expose:\n - \"1080\"\n - \"2020\"\n - \"3128\"\n - \"443\"\n - \"8000\"\n - \"8112\"\n - \"8888\"\n - \"9091\"\n - \"9117\"\n - \"9696\"\n - \"9999\"\n - \"8080\"\n - \"11470\"\n - \"12470\"\n extra_hosts:\n - aiostreams=10.76.128.200\n - autoscan=10.76.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.76.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.76.128.93\n - code-demo=10.76.128.80\n - code-server=10.76.128.92\n - code=10.76.128.96\n - comet=10.76.128.97\n - crowdsec=10.76.128.104\n - dash=10.76.128.23\n - decluttarr=10.76.128.21\n - deluge=10.76.128.97\n - dozzle=10.76.128.89\n - firecrawl-api=10.76.128.127\n - firecrawl-playwright=10.76.128.130\n - firecrawl-worker=10.76.128.128\n - flaresolverr=10.76.128.93\n - gatus=10.76.128.105\n - gluetun-premiumize-nl=10.76.128.119\n - gpt-researcher=10.76.128.43\n - gptr=10.76.128.43\n - homepage=10.76.128.88\n - homer=10.76.0.106\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - jellyfin=10.76.128.120\n - jellyseerr=10.76.128.115\n - lobechat=10.76.128.46\n - localhost=10.76.128.97\n - maintainerr=10.76.128.84\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.76.0.50\n - nginx-auth=10.76.128.94\n - open-webui=10.76.128.118\n - overseerr=10.76.128.116\n - plex-authentication=10.76.128.112\n - plex-repair=10.76.0.115\n - plex-request=10.76.128.113\n - plex-watchlist=10.76.52.97\n - plex=10.76.128.95\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - qdrant=10.76.128.44\n - radarr=10.76.128.121\n - rclone=10.76.128.111\n - realdebrid-account-monitor=10.76.128.109\n - recyclarr=10.76.0.117\n - redis=10.76.128.87\n - riven-backend=10.76.128.101\n - riven-db=10.76.128.102\n - riven-frontend=10.76.128.100\n - riven=10.76.128.101\n - script-runner=10.76.0.116\n - searxng=10.76.128.90\n - sonarr-anime=10.76.128.123\n - sonarr=10.76.128.122\n - speedtest=10.76.128.86\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - stremthru=10.76.128.99\n - tautulli=10.76.128.103\n - tinyauth=10.76.128.82\n - traefik=10.76.128.85\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - watchtower=10.76.128.83\n - whisparr=10.76.0.120\n - whoami=10.76.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.76.128.107\n - zurg=10.76.128.97\n image: caomingjun/warp:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: Host(`comet.$DOMAIN`) || Host(`comet.bocloud.org`) || Host(`comet.bolabaden.duckdns.org`) || Host(`comet.micklethefickle.duckdns.org`)\n traefik.http.routers.comet.service: comet\n traefik.http.routers.deluge.rule: Host(`deluge.$DOMAIN`) || Host(`deluge.bocloud.org`) || Host(`deluge.bolabaden.duckdns.org`) || Host(`deluge.micklethefickle.duckdns.org`)\n traefik.http.routers.deluge.service: deluge\n traefik.http.routers.jackett.rule: Host(`jackett.$DOMAIN`) || Host(`jackett.bocloud.org`) || Host(`jackett.bolabaden.duckdns.org`) || Host(`jackett.micklethefickle.duckdns.org`)\n traefik.http.routers.jackett.service: jackett\n traefik.http.routers.mediaflow-proxy.rule: Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.bocloud.org`) || Host(`mediaflow-proxy.bolabaden.duckdns.org`) || Host(`mediaflow-proxy.micklethefickle.duckdns.org`)\n traefik.http.routers.mediaflow-proxy.service: mediaflow-proxy\n traefik.http.routers.mediafusion.rule: Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.bocloud.org`) || Host(`mediafusion.bolabaden.duckdns.org`) || Host(`mediafusion.micklethefickle.duckdns.org`)\n traefik.http.routers.mediafusion.service: mediafusion\n traefik.http.routers.prowlarr.rule: Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.bocloud.org`) || Host(`prowlarr.bolabaden.duckdns.org`) || Host(`prowlarr.micklethefickle.duckdns.org`)\n traefik.http.routers.prowlarr.service: prowlarr\n traefik.http.routers.stremio-api-http-server.priority: \"100\"\n traefik.http.routers.stremio-api-http-server.rule: Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.bocloud.org`) || Host(`stremio-api.bolabaden.duckdns.org`) || Host(`stremio-api.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-https-server.priority: \"100\"\n traefik.http.routers.stremio-api-https-server.rule: Host(`stremio.$DOMAIN`) || Host(`stremio.bocloud.org`) || Host(`stremio.bolabaden.duckdns.org`) || Host(`stremio.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-api-https-server.service: stremio-api-https-server\n traefik.http.routers.stremio-web.priority: \"10\"\n traefik.http.routers.stremio-web.rule: Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.bocloud.org`) || Host(`stremio-web.bolabaden.duckdns.org`) || Host(`stremio-web.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.warp-proxy.middlewares: nginx-auth@file\n traefik.http.routers.warp-proxy.rule: Host(`warp-proxy.$DOMAIN`) || Host(`warp-proxy.bocloud.org`) || Host(`warp-proxy.bolabaden.duckdns.org`) || Host(`warp-proxy.micklethefickle.duckdns.org`)\n traefik.http.routers.warp-proxy.service: warp-proxy\n traefik.http.routers.zurg.middlewares: nginx-auth@file\n traefik.http.routers.zurg.rule: Host(`zurg.$DOMAIN`) || Host(`zurg.bocloud.org`) || Host(`zurg.bolabaden.duckdns.org`) || Host(`zurg.micklethefickle.duckdns.org`)\n traefik.http.routers.zurg.service: zurg\n traefik.http.services.comet.loadbalancer.server.port: \"2020\"\n traefik.http.services.deluge.loadbalancer.server.port: \"8112\"\n traefik.http.services.jackett.loadbalancer.server.port: \"9117\"\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: \"8888\"\n traefik.http.services.mediafusion.loadbalancer.server.port: \"8000\"\n traefik.http.services.prowlarr.loadbalancer.server.port: \"9696\"\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: \"11470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.port: \"12470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: \"8080\"\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.warp-proxy.loadbalancer.server.port: \"3128\"\n traefik.http.services.zurg.loadbalancer.server.port: \"9999\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.97\n ports:\n - mode: ingress\n target: 1080\n published: \"1080\"\n protocol: tcp\n - mode: ingress\n target: 443\n published: \"443\"\n protocol: udp\n - mode: ingress\n target: 9999\n published: \"9999\"\n protocol: tcp\n - mode: ingress\n target: 11470\n published: \"11470\"\n protocol: tcp\n - mode: ingress\n target: 12470\n published: \"12470\"\n protocol: tcp\n restart: always\n sysctls:\n net.ipv4.conf.all.src_valid_mark: \"1\"\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/warp/data\n target: /var/lib/cloudflare-warp\n bind:\n create_host_path: true\n watchtower:\n container_name: watchtower\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n WATCHTOWER_CLEANUP: \"true\"\n WATCHTOWER_DEBUG: \"true\"\n WATCHTOWER_LOG_LEVEL: \"\"\n WATCHTOWER_NOTIFICATION_REPORT: \"true\"\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n WATCHTOWER_NOTIFICATION_URL: \"\"\n WATCHTOWER_SCHEDULE: 0 0 6 * * *\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: watchtower\n image: containrrr/watchtower:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.83\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n create_host_path: true\n whoami:\n container_name: whoami\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: whoami\n image: traefik/whoami:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n homepage.group: Web Services\n homepage.href: https://whoami-nginx.$DOMAIN\n homepage.icon: whoami.png\n homepage.name: Whoami\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: Host(`whoami.$DOMAIN`) || Host(`whoami.bocloud.org`) || Host(`whoami.bolabaden.duckdns.org`) || Host(`whoami.micklethefickle.duckdns.org`)\n networks:\n publicnet:\n ipv4_address: 10.76.128.81\n restart: always\n wizarr:\n container_name: wizarr\n environment:\n APP_URL: http://wizarr:5690\n DISABLE_BUILTIN_AUTH: \"true\"\n PGID: \"121\"\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n PLEX_URL: http://plex:32400\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5690\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: wizarr\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:5690/static/wizarr-logo.png || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 1m0s\n image: ghcr.io/wizarrrr/wizarr:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: User invitation and management system for Plex\n homepage.group: Media Management\n homepage.href: https://wizarr.$DOMAIN/\n homepage.icon: http://127.0.0.1:5690/static/wizarr-logo.png\n homepage.name: Wizarr\n homepage.weight: \"0\"\n homepage.widget.type: wizarr\n homepage.widget.url: http://wizarr:5690\n traefik.enable: \"true\"\n traefik.http.routers.wizarr.rule: Host(`wizarr.$DOMAIN`) || Host(`wizarr.bocloud.org`) || Host(`wizarr.bolabaden.duckdns.org`) || Host(`wizarr.micklethefickle.duckdns.org`)\n traefik.http.services.wizarr.loadbalancer.server.port: \"5690\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.107\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/wizarr/database\n target: /data/database\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/wizarr/config\n target: /config\n bind:\n create_host_path: true\n zurg:\n configs:\n - source: zurg-config.yml\n target: /app/config.yml\n mode: \"0775\"\n - source: zurg-cli_debrid_update.sh\n target: /app/plex_update.sh\n mode: \"0775\"\n container_name: zurg\n depends_on:\n rclone-zurg:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n DOMAIN: $DOMAIN\n DUCKDNS_SUBDOMAIN: bolabaden\n ELF_APP_NAME: zurg\n K8S_APP_NAME: zurg\n PGID: \"121\"\n PUID: \"1001\"\n REAL_DEBRID_API_KEY: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n REALDEBRID_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n REALDEBRID_TOKEN: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n SECOND_DOMAIN: bocloud.org\n TS_HOSTNAME: micklethefickle\n TZ: America/Chicago\n UMASK: \"002\"\n ZURG_LOG_LEVEL: debug\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:9999/http/version.txt || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: ghcr.io/debridmediamanager/zurg-testing:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-Debrid WebDAV proxy for seamless streaming\n homepage.group: Download Clients\n homepage.href: https://zurg.$DOMAIN/\n homepage.icon: zurg.png\n homepage.name: Zurg\n homepage.weight: \"2\"\n homepage.widget.type: zurg\n homepage.widget.url: http://zurg:9999\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/zurg/app/data\n target: /app/data\n bind:\n create_host_path: true\nnetworks:\n publicnet:\n name: publicnet\n driver: bridge\n driver_opts:\n com.docker.network.bridge.name: br_publicnet\n ipam:\n config:\n - subnet: 10.76.0.0/16\n gateway: 10.76.0.1\n ip_range: 10.76.0.0/16\n attachable: true\nconfigs:\n headscale-config:\n name: my-media-stack_headscale-config\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://headscale.$DOMAIN:443\n #\n server_url: https://headscale.$DOMAIN:443\n # For local development:\n #server_url: http://127.0.0.1:8080\n # Address to listen to / bind to on the server\n #\n # For production:\n listen_addr: 0.0.0.0:8080\n # For local development\n #listen_addr: 127.0.0.1:8080\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n #\n # For production:\n grpc_listen_addr: 0.0.0.0:50443\n # For local development\n #grpc_listen_addr: 127.0.0.1:50443\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: sequential\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: true\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"Chicago\"\n region_name: \"Oracle Cloud Headscale Embedded DERP\"\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n #ipv4: 1.2.3.4\n #ipv6: 2001:db8::1\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n # How often should we check for DERP updates?\n update_frequency: 3h # default is 24h\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: false\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: true\n # Enable parameterized queries.\n parameterized_queries: true\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: true\n # Threshold for slow queries in milliseconds.\n slow_threshold: 1000\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: true\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: 1000\n ### TLS configuration\n #\n ## Let's encrypt / ACME\n #\n # headscale supports automatically requesting and setting up\n # TLS for a domain with Let's Encrypt.\n #\n # URL to ACME directory\n acme_url: https://acme-v02.api.letsencrypt.org/directory\n # Email to register with ACME provider\n acme_email: \"bolabaden.duckdns@gmail.com\"\n # Domain name to request a TLS certificate for:\n tls_letsencrypt_hostname: \"headscale.$DOMAIN\"\n # Path to store certificates and metadata needed by\n # letsencrypt\n # For production:\n tls_letsencrypt_cache_dir: /var/lib/headscale/cache\n # Type of ACME challenge to use, currently supported types:\n # HTTP-01 or TLS-ALPN-01\n # See: docs/ref/tls.md for more information\n tls_letsencrypt_challenge_type: HTTP-01\n # When HTTP-01 challenge is chosen, letsencrypt must set up a\n # verification endpoint, and it will be listening on:\n # :http = port 80\n tls_letsencrypt_listen: \":http\"\n ## Use already defined certificates:\n tls_cert_path: \"\"\n tls_key_path: \"\"\n log:\n # Output formatting for logs: text or json\n format: text\n level: info\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: file\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: \"\"\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: true\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: $DOMAIN\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: true\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 8.8.8.8\n - 8.8.4.4\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n - https://dns.nextdns.io/\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {}\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n #\n # headscale supports experimental OpenID connect support,\n # it is still being tested and might have some bugs, please\n # help us test it.\n # OpenID Connect\n # oidc:\n # only_start_if_oidc_is_available: true\n # issuer: \"https://your-oidc.issuer.com/path\"\n # client_id: \"your-oidc-client-id\"\n # client_secret: \"your-oidc-client-secret\"\n # # Alternatively, set `client_secret_path` to read the secret from the file.\n # # It resolves environment variables, making integration to systemd's\n # # `LoadCredential` straightforward:\n # client_secret_path: \"/home/ubuntu/my-media-stack/secrets/oidc_client_secret\"\n # # client_secret and client_secret_path are mutually exclusive.\n #\n # # The amount of time from a node is authenticated with OpenID until it\n # # expires and needs to reauthenticate.\n # # Setting the value to \"0\" will mean no expiry.\n # expiry: 180d\n #\n # # Use the expiry from the token received from OpenID when the user logged\n # # in, this will typically lead to frequent need to reauthenticate and should\n # # only been enabled if you know what you are doing.\n # # Note: enabling this will cause `oidc.expiry` to be ignored.\n # use_expiry_from_token: false\n #\n # # Customize the scopes used in the OIDC flow, defaults to \"openid\", \"profile\" and \"email\" and add custom query\n # # parameters to the Authorize Endpoint request. Scopes default to \"openid\", \"profile\" and \"email\".\n #\n # scope: [\"openid\", \"profile\", \"email\", \"custom\"]\n # extra_params:\n # domain_hint: example.com\n #\n # # List allowed principal domains and/or users. If an authenticated user's domain is not in this list, the\n # # authentication request will be rejected.\n #\n # allowed_domains:\n # - example.com\n # # Note: Groups from keycloak have a leading '/'\n # allowed_groups:\n # - /headscale\n # allowed_users:\n # - alice@example.com\n #\n # # Optional: PKCE (Proof Key for Code Exchange) configuration\n # # PKCE adds an additional layer of security to the OAuth 2.0 authorization code flow\n # # by preventing authorization code interception attacks\n # # See https://datatracker.ietf.org/doc/html/rfc7636\n # pkce:\n # # Enable or disable PKCE support (default: false)\n # enabled: false\n # # PKCE method to use:\n # # - plain: Use plain code verifier\n # # - S256: Use SHA256 hashed code verifier (default, recommended)\n # method: S256\n #Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: false\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: false\n homer-config.yml:\n name: my-media-stack_homer-config.yml\n content: \"# Homepage configuration\\n# See https://fontawesome.com/icons for icons options\\n\\n# Optional: Use external configuration file.\\n# Using this will ignore remaining config in this file\\n# externalConfig: https://$DOMAIN/server-luci/config.yaml\\nsubtitle: \\\"boCLOUD ...\\\"\\ntitle: \\\"boCLOUD!\\\"\\ndocumentTitle: \\\"$DOMAIN - micklethefickle\\\" # Customize the browser tab text\\n# Alternatively a fa icon can be provided:\\nicon: \\\"fas fa-wand-magic-sparkles\\\"\\n#logo: https://$DOMAIN/images/logo.png\\nheader: true # Set to false to hide the header\\nfooter: Version 1.417.0\\ncolumns: \\\"3\\\" # \\\"auto\\\" or number (must be a factor of 12: 1, 2, 3, 4, 6, 12)\\nconnectivityCheck: false # whether you want to display a message when the apps are not accessible anymore (VPN disconnected for example)\\n# Optional theming\\n# theme: default # 'default' or one of the themes available in 'src/assets/themes'.\\n# Optional custom stylesheet\\n# Will load custom CSS files. Especially useful for custom icon sets.\\n#stylesheet:\\n# - \\\"assets/custom.css\\\"\\n# Here is the exhaustive list of customization parameters\\n# However all value are optional and will fallback to default if not set.\\n# if you want to change only some of the colors, feel free to remove all unused key.\\ncolors:\\n light:\\n highlight-primary: \\\"#222526\\\"\\n highlight-secondary: \\\"#4285F4\\\"\\n highlight-hover: \\\"#5A95F5\\\"\\n background: \\\"#222526\\\"\\n card-background: \\\"#FFFFFF\\\"\\n text: \\\"#363636\\\"\\n text-header: \\\"#FFFFFF\\\"\\n text-title: \\\"#303030\\\"\\n text-subtitle: \\\"#424242\\\"\\n card-shadow: \\\"rgba(0, 0, 0, 0.1)\\\"\\n link-hover: \\\"#363636\\\"\\n background-image: /assets/backgrounds/background-light.jpg\\n dark:\\n highlight-primary: \\\"#222526\\\"\\n highlight-secondary: \\\"#4285F4\\\"\\n highlight-hover: \\\"#5A95F5\\\"\\n background: \\\"#222526\\\"\\n card-background: \\\"#2B2B2B\\\"\\n text: \\\"#EAEAEA\\\"\\n text-header: \\\"#FFFFFF\\\"\\n text-title: \\\"#FAFAFA\\\"\\n text-subtitle: \\\"#F5F5F5\\\"\\n card-shadow: \\\"rgba(0, 0, 0, 0.4)\\\"\\n link-hover: \\\"#FFDD57\\\"\\n background-image: /assets/backgrounds/background-dark.jpg\\n# Optional message\\nmessage:\\n url: \\\"https://$DOMAIN/assets/message/message.json\\\"\\n # mapping:\\n # content: 'message'\\n # style: 'style'\\n # title: 'title'\\n refreshInterval: 10000\\n icon: \\\"fas fa-door-open\\\"\\n# Optional navbar\\n# links: [] # Allows for navbar (dark mode, layout, and search) without any links\\nlinks:\\n - name: \\\"Apps\\\"\\n icon: \\\"fas fa-couch\\\"\\n url: \\\"#config\\\"\\n - name: \\\"Health\\\"\\n icon: \\\"fas fa-heartbeat\\\"\\n url: \\\"https://homer-health.$DOMAIN\\\"\\n target: \\\"_blank\\\" # optional html tag target attribute\\n# Services\\n# First level array represents a group.\\n# Leave only a \\\"items\\\" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).\\nservices:\\n - name: \\\"Consume Media\\\"\\n icon: \\\"fas fa-couch\\\"\\n # A path to an image can also be provided. Note that icon take precedence if both icon and logo are set.\\n # logo: \\\"path/to/logo\\\"\\n items:\\n - name: \\\"Plex\\\"\\n logo: \\\"assets/png/plex.png\\\"\\n # Alternatively a fa icon can be provided:\\n # icon: \\\"fab fa-photo-video\\\"\\n subtitle: \\\"Watch Movies/TV\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://plex.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Jellyfin\\\"\\n logo: \\\"assets/png/jellyfin.png\\\"\\n subtitle: \\\"Watch Movies/TV\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://jellyfin.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Manage Media\\\"\\n icon: \\\"fas fa-photo-video\\\"\\n items:\\n - name: \\\"Wizarr\\\"\\n icon: \\\"fas fa-hat-wizard\\\"\\n subtitle: \\\"Manage Plex / Emby / Jellyfin Accounts / Invites\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://wizarr.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Riven\\\"\\n icon: \\\"fas fa-mountain\\\"\\n subtitle: \\\"All-in-one Debrid Media Management\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://riven.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Riven (backend)\\\"\\n icon: \\\"fas fa-mountain\\\"\\n subtitle: \\\"Geek out over Riven's backend\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://riven-backend.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Download Media\\\"\\n icon: \\\"fas fa-cloud-arrow-down\\\"\\n items:\\n - name: \\\"Zurg\\\"\\n logo: \\\"assets/png/real-debrid.png\\\"\\n subtitle: \\\"Manage RealDebrid Mount\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://zurg.$DOMAIN/http/\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Tools\\\"\\n icon: \\\"fas fa-toolbox\\\"\\n items:\\n - name: \\\"FileBrowser\\\"\\n logo: \\\"assets/png/filebrowser.png\\\"\\n subtitle: \\\"Manage Files\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://filebrowser.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"code-server\\\"\\n icon: \\\"fas fa-terminal\\\"\\n subtitle: \\\"Enter the code-server.. \\U0001FA84\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://code-server.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Rclone\\\"\\n icon: \\\"fas fa-truck\\\"\\n items:\\n - name: \\\"Rclone Remotes\\\"\\n logo: \\\"assets/png/rclone.png\\\"\\n subtitle: \\\"Rclone remotes\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://filebrowser.$DOMAIN/files/config/rclone/rclone.conf\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Rclone UI\\\"\\n logo: \\\"assets/png/rclone.png\\\"\\n subtitle: \\\"Rclone UI\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://rclone.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n\"\n premiumize-auth:\n name: my-media-stack_premiumize-auth\n content: |\n 117274388\n 6i6zgswm35baj3ur\n premiumize-ca:\n name: my-media-stack_premiumize-ca\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n rclone-mounts.json:\n name: my-media-stack_rclone-mounts.json\n content: |\n [\n {\n \"fs\": \"zurg:\",\n \"mountPoint\": \"/mnt/remote/realdebrid\",\n \"mainOpt\": {\n \"LogLevel\": \"DEBUG\"\n },\n \"LogLevel\": \"DEBUG\",\n \"mountOpt\": {\n \"GID\": 121,\n \"UID\": 1001,\n \"AllowNonEmpty\": true,\n \"AllowOther\": true,\n \"AttrTimeout\": \"87600h\",\n \"DirCacheTime\": \"60s\",\n \"DirPerms\": \"0777\",\n \"FilePerms\": \"0666\",\n \"PollInterval\": \"30s\",\n \"ExtraFlags\": [\n \"--config=/config/rclone/rclone.conf\",\n \"--log-level=DEBUG\",\n \"--log-file=/config/rclone/rclone.log\"\n ]\n },\n \"vfsOpt\": {\n \"BufferSize\": \"128M\",\n \"CacheMaxAge\": \"2m\",\n \"CacheMaxSize\": \"100G\",\n \"CacheMode\": \"full\",\n \"CachePollInterval\": \"30s\",\n \"ChunkSize\": \"2M\",\n \"ChunkSizeLimit\": \"64M\",\n \"DiskSpaceTotalSize\": \"1T\",\n \"FastFingerprint\": true,\n \"MinFreeSpace\": \"1G\",\n \"ReadAhead\": \"128M\",\n \"ReadWait\": \"40ms\",\n \"ExtraOptions\": [\n \"--vfs-refresh\",\n \"--transfers=16\",\n \"--checkers=16\",\n \"--multi-thread-streams=4\",\n \"--cache-dir=/mnt/remote/cache/zurg\"\n ]\n }\n }\n ]\n rclone-rclone.conf:\n name: my-media-stack_rclone-rclone.conf\n content: |\n [rdhttp]\n type = http\n url = https://my.real-debrid.com/{SUDO_PASSWORD}/\n no_head = false\n no_slash = false\n\n [rd-webdav]\n type = webdav\n url = https://dav.real-debrid.com/\n vendor = other\n user = null\n pass = null\n\n [rdhttp2]\n type = http\n url = https://my.real-debrid.com/{SUDO_PASSWORD}/\n no_head = false\n no_slash = false\n\n [rd-webdav2]\n type = webdav\n url = https://dav.real-debrid.com/\n vendor = other\n user = null\n pass = null\n\n [zurg]\n type = webdav\n url = http://zurg:9999/dav\n vendor = other\n pacer_min_sleep = 0\n riven-settings.json:\n name: my-media-stack_riven-settings.json\n content: |\n {\n \"version\": \"0.21.21\",\n \"api_key\": \"3e0be750b16ff363727d05d18ba364fd\",\n \"debug\": false,\n \"debug_database\": false,\n \"log\": true,\n \"force_refresh\": false,\n \"map_metadata\": true,\n \"tracemalloc\": false,\n \"symlink\": {\n \"rclone_path\": \"/mnt/remote/realdebrid/__all__\",\n \"library_path\": \"/mnt/symlinks\",\n \"separate_anime_dirs\": true,\n \"repair_symlinks\": true,\n \"repair_interval\": 6.0\n },\n \"updaters\": {\n \"updater_interval\": 120,\n \"plex\": {\n \"enabled\": true,\n \"token\": \"18rS6gM-Wec22uq5Gw-U\",\n \"url\": \"http://plex:32400\"\n },\n \"jellyfin\": {\n \"enabled\": true,\n \"api_key\": \"e0dd06e8809143a69c7c6ba174bbe129\",\n \"url\": \"http://jellyfin:8096\"\n },\n \"emby\": {\n \"enabled\": false,\n \"api_key\": \"\",\n \"url\": \"\"\n }\n },\n \"downloaders\": {\n \"video_extensions\": [\n \"avi\",\n \"mkv\",\n \"mp4\"\n ],\n \"movie_filesize_mb_min\": 700,\n \"movie_filesize_mb_max\": -1,\n \"episode_filesize_mb_min\": 100,\n \"episode_filesize_mb_max\": -1,\n \"proxy_url\": \"http://warp:1080\",\n \"real_debrid\": {\n \"enabled\": true,\n \"api_key\": \"TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA\"\n },\n \"all_debrid\": {\n \"enabled\": false,\n \"api_key\": \"\"\n }\n },\n \"content\": {\n \"overseerr\": {\n \"update_interval\": 30,\n \"enabled\": true,\n \"url\": \"http://overseerr:5055\",\n \"api_key\": \"MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\",\n \"use_webhook\": false\n },\n \"plex_watchlist\": {\n \"update_interval\": 60,\n \"enabled\": true,\n \"rss\": []\n },\n \"mdblist\": {\n \"update_interval\": 300,\n \"enabled\": false,\n \"api_key\": \"\",\n \"lists\": []\n },\n \"listrr\": {\n \"update_interval\": 300,\n \"enabled\": false,\n \"movie_lists\": [],\n \"show_lists\": [],\n \"api_key\": \"d962d6e9fd4e4db790711128ed6013b236e86b1bea534c7f9f0c17a3c4c72982\"\n },\n \"trakt\": {\n \"update_interval\": 3600,\n \"enabled\": true,\n \"api_key\": \"052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\",\n \"watchlist\": [],\n \"user_lists\": [],\n \"collection\": [],\n \"fetch_trending\": false,\n \"trending_count\": 10,\n \"fetch_popular\": false,\n \"popular_count\": 10,\n \"fetch_most_watched\": false,\n \"most_watched_period\": \"weekly\",\n \"most_watched_count\": 10,\n \"oauth\": {\n \"oauth_client_id\": \"052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\",\n \"oauth_client_secret\": \"1d5701574cae67023c25a3743f07669bb84ee74628fd8f0a3fc0c9cca51535c3\",\n \"oauth_redirect_uri\": \"urn:ietf:wg:oauth:2.0:oob\",\n \"access_token\": \"efe0bd386fee5cd93c1cc51579fb37cdb65c0e0b9ebc34c7a8e2c547714f7efc\",\n \"refresh_token\": \"\"\n }\n }\n },\n \"scraping\": {\n \"after_2\": 2.0,\n \"after_5\": 6.0,\n \"after_10\": 24.0,\n \"parse_debug\": false,\n \"enable_aliases\": true,\n \"bucket_limit\": 5,\n \"max_failed_attempts\": 0,\n \"dubbed_anime_only\": false,\n \"torrentio\": {\n \"enabled\": true,\n \"filter\": \"sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\",\n \"url\": \"https://torrentio.strem.fun\",\n \"timeout\": 30,\n \"ratelimit\": true,\n \"proxy_url\": \"http://warp:1080\"\n },\n \"knightcrawler\": {\n \"enabled\": false,\n \"filter\": \"sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\",\n \"url\": \"https://knightcrawler.elfhosted.com/\",\n \"timeout\": 30,\n \"ratelimit\": true\n },\n \"jackett\": {\n \"enabled\": false,\n \"url\": \"http://jackett:9117\",\n \"api_key\": \"nnx0n84pcj7umynyd2pbid2nl1zzuemz\",\n \"timeout\": 10,\n \"ratelimit\": false\n },\n \"prowlarr\": {\n \"enabled\": false,\n \"url\": \"http://prowlarr:9696\",\n \"api_key\": \"29440a82740d475cacb35327c62c87a1\",\n \"timeout\": 10,\n \"ratelimit\": false,\n \"limiter_seconds\": 60\n },\n \"orionoid\": {\n \"enabled\": false,\n \"api_key\": \"LXBVEGR6DBKLBSBNLPARQHQRH8DGD7PT\",\n \"cached_results_only\": true,\n \"parameters\": {\n \"video3d\": false,\n \"videoquality\": \"sd_hd8k\",\n \"limitcount\": 5\n },\n \"timeout\": 10,\n \"ratelimit\": true\n },\n \"mediafusion\": {\n \"enabled\": false,\n \"url\": \"https://mediafusion.$DOMAIN\",\n \"timeout\": 10,\n \"ratelimit\": true\n },\n \"zilean\": {\n \"enabled\": true,\n \"url\": \"http://zilean.elfhosted.com\",\n \"timeout\": 30,\n \"ratelimit\": false\n },\n \"comet\": {\n \"enabled\": true,\n \"url\": \"http://comet:2020\",\n \"timeout\": 30,\n \"ratelimit\": false,\n \"indexers\": [\n \"animetosho\",\n \"anirena\",\n \"eztv\",\n \"limetorrents\",\n \"nyaasi\",\n \"solidtorrents\",\n \"thepiratebay\",\n \"torlock\",\n \"yts\"\n ]\n }\n },\n \"ranking\": {\n \"profile\": \"default\",\n \"require\": [],\n \"exclude\": [],\n \"preferred\": [],\n \"resolutions\": {\n \"r2160p\": false,\n \"r1080p\": true,\n \"r720p\": true,\n \"r480p\": false,\n \"r360p\": false,\n \"unknown\": true\n },\n \"options\": {\n \"title_similarity\": 0.85,\n \"remove_all_trash\": true,\n \"remove_ranks_under\": -10000,\n \"remove_unknown_languages\": false,\n \"allow_english_in_languages\": true,\n \"enable_fetch_speed_mode\": true,\n \"remove_adult_content\": true\n },\n \"languages\": {\n \"required\": [\n \"en\"\n ],\n \"exclude\": [],\n \"preferred\": [\n \"en\"\n ]\n },\n \"custom_ranks\": {\n \"quality\": {\n \"av1\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"avc\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"bluray\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dvd\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdtv\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hevc\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mpeg\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"remux\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"vhs\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"web\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webdl\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webmux\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"xvid\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"rips\": {\n \"bdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"brrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dvdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"ppvrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"satrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"tvrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"uhdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"vhsrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webdlrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webrip\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"hdr\": {\n \"bit10\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_vision\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdr\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdr10plus\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"sdr\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"audio\": {\n \"aac\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"atmos\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_digital\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_digital_plus\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dts_lossy\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dts_lossless\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"flac\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mono\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mp3\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"stereo\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"surround\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"truehd\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"extras\": {\n \"three_d\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"converted\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"documentary\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dubbed\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"edition\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hardcoded\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"network\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"proper\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"repack\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"retail\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"site\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"subbed\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"upscaled\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"scene\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"uncensored\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"trash\": {\n \"cam\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"clean_audio\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"pdtv\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"r5\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"screener\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"size\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"telecine\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"telesync\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n }\n }\n },\n \"indexer\": {\n \"update_interval\": 3600\n },\n \"database\": {\n \"host\": \"postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\"\n },\n \"notifications\": {\n \"enabled\": true,\n \"on_item_type\": [\n \"movie\",\n \"show\",\n \"season\",\n \"episode\"\n ],\n \"service_urls\": []\n },\n \"post_processing\": {\n \"subliminal\": {\n \"enabled\": true,\n \"languages\": [\n \"eng\"\n ],\n \"providers\": {\n \"opensubtitles\": {\n \"enabled\": true,\n \"username\": \"th3w1zard1\",\n \"password\": \"h4L0m4St3R327\"\n },\n \"opensubtitlescom\": {\n \"enabled\": true,\n \"username\": \"th3w1zard1\",\n \"password\": \"c3ll0h3r0327!\"\n }\n }\n }\n }\n }\n vpn-nl.premiumize.me:\n name: my-media-stack_vpn-nl.premiumize.me\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n auth-user-pass\n client\n resolv-retry infinite\n nobind\n persist-key\n persist-tun\n mute-replay-warnings\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n remote 185.107.94.249 1194\n dev tun0\n mute-replay-warnings\n auth-nocache\n pull-filter ignore \"auth-token\"\n auth-retry nointeract\n suppress-timestamps\n verb 1\n data-ciphers-fallback aes-256-cbc\n data-ciphers aes-256-cbc\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n user nonrootuser\n persist-tun\n persist-key\n zurg-cli_debrid_update.sh:\n name: my-media-stack_zurg-cli_debrid_update.sh\n content: |\n #!/bin/bash\n webhook_url=\"http://cli-debrid:5000/webhook/rclone\" # Replace with your actual webhook URL\n # First notify our webhook for each file\n for arg in \"$$@\"\n do\n arg_clean=$$(echo \"$$arg\" | sed 's/\\\\//g')\n echo \"Notifying webhook for: $$arg_clean\"\n encoded_webhook_arg=$$(echo -n \"$$arg_clean\" | python3 -c \"import sys, urllib.parse as ul; print(ul.quote(sys.stdin.read()))\")\n curl -s -X GET \"$$webhook_url?file=$$encoded_webhook_arg\"\n done\n echo \"Updates completed!\"\n zurg-config.yml:\n name: my-media-stack_zurg-config.yml\n content: |\n # Zurg configuration version\n zurg: v1\n\n # Get your token for the next line from https://real-debrid.com/apitoken\n token: \"UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\"\n\n # additional download tokens - uncomment the lines below, and populate this with your additional tokens to auto-overcome bandwidth limitation issues\n download_tokens:\n - \"TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA\"\n\n # basic functionality\n host: \"[::]\" # do not change this if you are running it inside a docker container\n port: 9999 # do not change this if you are running it inside a docker container\n concurrent_workers: 32\n check_for_changes_every_secs: 30\n\n # misc configs\n retain_folder_name_extension: true # if true, zurg won't modify the filenames from real-debrid\n retain_rd_torrent_name: true # if true, it will strictly follow RD API torrent name property w/c should make this more compatible with rdt-client\n auto_delete_rar_torrents: false # if true, zurg will delete unstreamable rar files (these torrents will always be compressed in a rar archive no matter what files you select)\n use_download_cache: false # if true, during zurg initialization, it will fetch all downloads to unrestrict links faster\n\n enable_repair: true\n repair_every_mins: 60\n\n ###on_library_update: sh plex_update.sh \"$$@\"\n ignore_renames: true\n\n # do a RD speed test on every start\n cache_network_test_results: false\n\n # network configs\n network_buffer_size: 1048576 # 1 MiB\n serve_from_rclone: false\n verify_download_link: true # if true, zurg will check if the link is truly streamable; only relevant if serve_from_rclone is set to true (as it already does this all the time if serve_from_rclone is false)\n force_ipv6: false # force connect to real-debrid ipv6 addresses\n rate_limit_sleep_secs: 6 # wait time after getting a 429 from Real-Debrid API\n realdebrid_timeout_secs: 60 # api timeout\n retries_until_failed: 5 # api failures until considered failed\n get_torrents_count: 5000\n\n rar_action: extract\n\n addl_playable_extensions:\n - avi\n - flac\n - m4b\n - mkv\n - mp3\n - mp4\n\n # List of directory definitions and their filtering rules\n directories:\n audiobooks:\n group_order: 5\n group: media\n filters:\n - and:\n - is_music: true\n - media_info_duration_gte: 600\n\n music:\n group_order: 10\n group: media\n filters:\n - is_music: true\n\n anime:\n group_order: 15\n group: media\n filters:\n - regex: /\\b[a-fA-F0-9]{8}\\b/\n - any_file_inside_regex: /\\b[a-fA-F0-9]{8}\\b/\n\n shows:\n group_order: 20\n group: media\n filters:\n - has_episodes: true\n\n movies:\n group_order: 25\n group: media\n only_show_the_biggest_file: true\n filters:\n - regex: /.*/\n\n restrict_repair_to_cached: true\nx-common-env:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\nx-common-firecrawl-api:\n BULL_AUTH_KEY: sk_m6u2KpEW_NgijX00A_GnTJY3btGgGh01tSPO4oOpJ1Zk\n HOST: 0.0.0.0\n LOGGING_LEVEL: DEBUG\n MAX_CPU: 0\n MAX_RAM: 0\n NUM_WORKERS_PER_QUEUE: \"8\"\n OPENAI_API_KEY: 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\n PGID: \"121\"\n PLAYWRIGHT_MICROSERVICE_URL: http://firecrawl-playwright:3000/html\n PORT: \"3002\"\n PUID: \"1001\"\n REDIS_RATE_LIMIT_URL: redis://10.76.128.87:6379\n REDIS_URL: redis://10.76.128.87:6379\n SEARXNG_ENDPOINT: http://searxng:8888\n TZ: America/Chicago\n UMASK: \"002\"\n USE_DB_AUTHENTICATION: \"false\"\nx-common-hostname-aliases:\n - host.docker.internal:host-gateway\n - boden-iphone:100.97.148.14\n - beatapostapita:100.99.45.35\n - micklethefickle:100.72.149.123\n - micklethefickle3:100.72.149.123\n - wizard:100.119.187.62\n - wizard-pc:100.119.187.62\n - warp:10.76.128.97\n - comet:10.76.128.97\n - jackett:10.76.128.97\n - jackettio:10.76.128.97\n - localhost:10.76.128.97\n - mediafusion:10.76.128.97\n - prowlarr:10.76.128.97\n - stremio-jackett:10.76.128.97\n - zurg:10.76.128.97\n - mediaflow-proxy:10.76.128.97\n - deluge:10.76.128.97\n - stremio-web:10.76.128.97\n - stremio-https-server:10.76.128.97\n - stremio-fallback:10.76.128.97\n - gluetun-premiumize-nl:10.76.128.119\n - transmission:10.76.128.119\n - qbittorrent:10.76.128.119\nx-common-logging:\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\nx-common-uidgid:\n user: 1001:121\nx-gluetun-hosts-workaround:\n - host.docker.internal:host-gateway\n - boden-iphone:100.97.148.14\n - beatapostapita:100.99.45.35\n - micklethefickle:100.72.149.123\n - micklethefickle3:100.72.149.123\n - wizard:100.119.187.62\n - wizard-pc:100.119.187.62\n - warp:10.76.128.97\n - comet:10.76.128.97\n - jackett:10.76.128.97\n - jackettio:10.76.128.97\n - localhost:10.76.128.97\n - mediafusion:10.76.128.97\n - prowlarr:10.76.128.97\n - stremio-jackett:10.76.128.97\n - zurg:10.76.128.97\n - mediaflow-proxy:10.76.128.97\n - deluge:10.76.128.97\n - stremio-web:10.76.128.97\n - stremio-https-server:10.76.128.97\n - stremio-fallback:10.76.128.97\n - gluetun-premiumize-nl:10.76.128.119\n - transmission:10.76.128.119\n - qbittorrent:10.76.128.119\n - dash:10.76.128.23\n - gpt-researcher:10.76.128.43\n - gptr:10.76.128.43\n - qdrant:10.76.128.44\n - bocloud-nextjs:10.76.128.45\n - lobechat:10.76.128.46\n - mongodb:10.76.0.50\n - code-demo:10.76.128.80\n - whoami:10.76.128.81\n - tinyauth:10.76.128.82\n - watchtower:10.76.128.83\n - maintainerr:10.76.128.84\n - traefik:10.76.128.85\n - speedtest:10.76.128.86\n - redis:10.76.128.87\n - homepage:10.76.128.88\n - dozzle:10.76.128.89\n - searxng:10.76.128.90\n - code-server:10.76.128.92\n - byparr:10.76.128.93\n - flaresolverr:10.76.128.93\n - nginx-auth:10.76.128.94\n - plex:10.76.128.95\n - code:10.76.128.96\n - stremthru:10.76.128.99\n - riven-frontend:10.76.128.100\n - riven:10.76.128.101\n - riven-backend:10.76.128.101\n - riven-db:10.76.128.102\n - tautulli:10.76.128.103\n - crowdsec:10.76.128.104\n - gatus:10.76.128.105\n - homer:10.76.0.106\n - wizarr:10.76.128.107\n - plex-watchlist:10.76.52.97\n - realdebrid-account-monitor:10.76.128.109\n - rclone:10.76.128.111\n - plex-authentication:10.76.128.112\n - plex-request:10.76.128.113\n - jellyseerr:10.76.128.115\n - overseerr:10.76.128.116\n - jellyfin:10.76.128.120\n - radarr:10.76.128.121\n - sonarr:10.76.128.122\n - sonarr-anime:10.76.128.123\n - firecrawl-api:10.76.128.127\n - firecrawl-worker:10.76.128.128\n - firecrawl-playwright:10.76.128.130\n - decluttarr:10.76.128.21\n - whisparr:10.76.0.120\n - aiostreams:10.76.128.200\n - plex-repair:10.76.0.115\n - script-runner:10.76.0.116\n - recyclarr:10.76.0.117\n - open-webui:10.76.128.118\n - autoscan:10.76.0.119\nx-resource-limits:\n labels:\n autoheal: \"true\"\n"}, "f640473b066693c4c956c68600edd176b558167f": {"t": 1785773133.827517, "n": 187134, "h": "e44b96e0c312e328", "c": "name: my-media-stack\nservices:\n aiostreams:\n build:\n context: https://github.com/viren070/aiostreams.git#main\n dockerfile: Dockerfile\n tags:\n - th3w1zard1/aiostreams:latest\n container_name: aiostreams\n environment:\n ADDON_CATALOG_CACHE_TTL: \"300\"\n ADDON_ID: aiostreams.$DOMAIN\n ADDON_NAME: BadenAIO\n ADDON_PASSWORD: sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9\n ADDON_PROXY: http://warp:1080\n ANIME_CATALOGS_URL: https://1fe84bc728af-stremio-anime-catalogs.baby-beamup.club/\n ANIME_KITSU_URL: https://anime-kitsu.strem.fun/\n BASE_URL: https://aiostreams.$DOMAIN\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n CATALOG_API_RATE_LIMIT_WINDOW: \"5\"\n CATALOG_CACHE_TTL: \"300\"\n COMET_URL: http://comet:2020\n CUSTOM_HTML: \"\"\n DATABASE_URI: sqlite://./data/db.sqlite\n DC_UNIVERSE_URL: https://addon-dc-cq85.onrender.com/\n DEBRIDIO_TMDB_URL: https://tmdb-addon.debridio.com/\n DEBRIDIO_TV_URL: https://tv-addon.debridio.com/\n DEBRIDIO_TVDB_URL: https://tvdb-addon.debridio.com/\n DEBRIDIO_URL: https://addon.debridio.com/\n DEBRIDIO_WATCHTOWER_URL: https://wt-addon.debridio.com/\n DEFAULT_ALLDEBRID_API_KEY: \"\"\n DEFAULT_DEBRIDLINK_API_KEY: vvppT6-RCIXJVyr1O2j8VYIBAAPy4EmcY_OVgELZWujQOBt5iz_19Rpz6A6xxwwS\n DEFAULT_EASYDEBRID_API_KEY: \"\"\n DEFAULT_EASYNEWS_PASSWORD: \"\"\n DEFAULT_EASYNEWS_USERNAME: \"\"\n DEFAULT_JACKETTIO_INDEXERS: '[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n DEFAULT_JACKETTIO_STREMTHRU_URL: https://stremthru.13377001.xyz\n DEFAULT_MAX_CACHE_SIZE: \"100000\"\n DEFAULT_OFFCLOUD_API_KEY: \"\"\n DEFAULT_OFFCLOUD_EMAIL: \"\"\n DEFAULT_OFFCLOUD_PASSWORD: \"\"\n DEFAULT_PIKPAK_EMAIL: \"\"\n DEFAULT_PIKPAK_PASSWORD: \"\"\n DEFAULT_PREMIUMIZE_API_KEY: 6i6zgswm35baj3ur\n DEFAULT_PROXY_CREDENTIALS: bolabaden:duckdns\n DEFAULT_PROXY_ENABLED: \"true\"\n DEFAULT_PROXY_URL: http://stremthru:8080\n DEFAULT_PUTIO_CLIENT_ID: \"\"\n DEFAULT_PUTIO_CLIENT_SECRET: \"\"\n DEFAULT_REALDEBRID_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n DEFAULT_SEEDR_ENCODED_TOKEN: \"\"\n DEFAULT_TIMEOUT: \"15000\"\n DEFAULT_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n DISABLE_RATE_LIMITS: \"false\"\n DISABLE_SELF_SCRAPING: \"false\"\n DOCTOR_WHO_UNIVERSE_URL: https://new-who.onrender.com\n EASYNEWS_PLUS_PLUS_URL: https://easynews-cloudflare-worker.jqrw92fchz.workers.dev/\n EASYNEWS_PLUS_URL: https://b89262c192b0-stremio-easynews-addon.baby-beamup.club/\n EASYNEWS_URL: https://ea627ddf0ee7-easynews.baby-beamup.club/\n ENCRYPT_MEDIAFLOW_URLS: \"true\"\n ENCRYPT_STREMTHRU_URLS: \"true\"\n FORCE_COMET_HOSTNAME: comet.$DOMAIN\n FORCE_COMET_PORT: \"443\"\n FORCE_COMET_PROTOCOL: https\n FORCE_PROXY_ID: stremthru\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: \"443\"\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n FORCE_STREMTHRU_STORE_HOST: stremthru.$DOMAIN\n FORCE_STREMTHRU_STORE_PORT: \"443\"\n FORCE_STREMTHRU_STORE_PROTOCOL: https\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: \"30\"\n FORMAT_API_RATE_LIMIT_WINDOW: \"5\"\n JACKETTIO_URL: https://jackettio.elfhosted.com/\n LOG_FORMAT: text\n LOG_LEVEL: verbose\n LOG_SENSITIVE_INFO: \"true\"\n LOG_TIMEZONE: America/Chicago\n MANIFEST_CACHE_TTL: \"300\"\n MARVEL_UNIVERSE_URL: https://addon-marvel.onrender.com/\n MAX_ADDONS: \"100\"\n MAX_CONDITION_FILTERS: \"200\"\n MAX_GROUPS: \"50\"\n MAX_KEYWORD_FILTERS: \"50\"\n MAX_TIMEOUT: \"50000\"\n MEDIAFUSION_API_PASSWORD: h4L0m4St3R327\n MEDIAFUSION_CONFIG_TIMEOUT: \"5000\"\n MEDIAFUSION_URL: http://mediafusion:8080\n META_CACHE_TTL: \"300\"\n MIN_TIMEOUT: \"1000\"\n NUVIOSTREAMS_URL: https://nuviostreams.hayd.uk/\n OPENSUBTITLES_URL: https://opensubtitles-v3.strem.io/\n ORION_STREMIO_ADDON_URL: https://5a0d1888fa64-orion.baby-beamup.club/\n PEERFLIX_URL: https://peerflix-addon.onrender.com/\n PGID: \"121\"\n PORT: \"3005\"\n PROXY_IP_CACHE_TTL: \"900\"\n PRUNE_INTERVAL: \"86400\"\n PRUNE_MAX_DAYS: \"1\"\n PUID: \"1001\"\n REGEX_FILTER_ACCESS: trusted\n RPDB_API_KEY_VALIDITY_CACHE_TTL: \"604800\"\n RPDB_CATALOGS_URL: https://1fe84bc728af-rpdb.baby-beamup.club/\n SECRET_KEY: 207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde\n STAR_WARS_UNIVERSE_URL: https://addon-star-wars-u9e3.onrender.com/\n STATIC_RATE_LIMIT_MAX_REQUESTS: \"75\"\n STATIC_RATE_LIMIT_WINDOW: \"5\"\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREAM_API_RATE_LIMIT_WINDOW: \"5\"\n STREAM_CACHE_TTL: \"1\"\n STREAMFUSION_URL: https://stream-fusion.stremiofr.com/\n STREAMING_CATALOGS_URL: https://7a82163c306e-stremio-netflix-catalog-addon.baby-beamup.club/\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: \"30\"\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: \"5\"\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: \"15\"\n STREMIO_META_RATE_LIMIT_WINDOW: \"5\"\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_STREAM_RATE_LIMIT_WINDOW: \"15\"\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: \"10\"\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: \"5\"\n STREMTHRU_STORE_URL: http://stremthru:8080/stremio/store\n STREMTHRU_TORZ_URL: https://stremthru.elfhosted.com/stremio/torz\n SUBTITLE_CACHE_TTL: \"300\"\n TMDB_ACCESS_TOKEN: cec876f852b9c15d2c1b436b1117dff7\n TMDB_COLLECTIONS_URL: https://61ab9c85a149-tmdb-collections.baby-beamup.club/\n TORBOX_STREMIO_URL: https://stremio.torbox.app/\n TORRENT_CATALOGS_URL: https://torrent-catalogs.strem.fun/\n TORRENTIO_URL: https://torrentio.strem.fun/\n TRUSTED_UUIDS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n USER_API_RATE_LIMIT_MAX_REQUESTS: \"5\"\n USER_API_RATE_LIMIT_WINDOW: \"5\"\n WEBSTREAMR_URL: https://webstreamr.hayd.uk\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: aiostreams\n image: ghcr.io/viren070/aiostreams\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n homepage.group: Stremio Addons\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.icon: aiostreams.png\n homepage.name: AIOStreams\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.bocloud.org`) || Host(`aiostreams.bolabaden.duckdns.org`) || Host(`aiostreams.micklethefickle.duckdns.org`)\n traefik.http.routers.aiostreams.service: aiostreams\n traefik.http.services.aiostreams.loadbalancer.server.port: \"3005\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.200\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/aiostreams/data\n target: /app/data\n bind:\n create_host_path: true\n bocloud-nextjs:\n build:\n context: /home/ubuntu/my-media-stack/src/bocloud-site\n dockerfile: Dockerfile\n container_name: bocloud-nextjs\n depends_on:\n tinyauth:\n condition: service_started\n required: true\n traefik:\n condition: service_started\n required: true\n environment:\n HOSTNAME: 0.0.0.0\n NODE_ENV: production\n PGID: \"121\"\n PORT: \"3000\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3000\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: bocloud-nextjs\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 40s\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.bocloud-nextjs.errors.query: /api/error/{status}\n traefik.http.middlewares.bocloud-nextjs.errors.service: bocloud-nextjs\n traefik.http.middlewares.bocloud-nextjs.errors.status: 400-599\n traefik.http.routers.404-catchall.middlewares: bocloud-nextjs\n traefik.http.routers.404-catchall.priority: \"1\"\n traefik.http.routers.404-catchall.rule: Host(`*`)\n traefik.http.routers.404-catchall.service: bocloud-nextjs\n traefik.http.routers.bocloud-embed.rule: Host(`embed.bocloud.org`)\n traefik.http.routers.bocloud-embed.service: bocloud-nextjs\n traefik.http.routers.bocloud-nextjs.rule: Host(`$DOMAIN`) || Host(`bocloud.org`) || Host(`bolabaden.duckdns.org`) || Host(`micklethefickle.duckdns.org`)\n traefik.http.routers.bocloud-nextjs.service: bocloud-nextjs\n traefik.http.services.bocloud-nextjs.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.45\n ports:\n - mode: ingress\n target: 3000\n published: \"3000\"\n protocol: tcp\n restart: always\n code-server:\n container_name: code-server\n environment:\n CODESERVER_DEFAULT_WORKSPACE: /workspace\n CODESERVER_PASSWORD: h4L0m4St3R327\n CODESERVER_SUDO_PASSWORD: h4L0m4St3R327\n DEFAULT_WORKSPACE: /workspace\n PASSWORD: h4L0m4St3R327\n PGID: \"121\"\n PUID: \"1001\"\n SUDO_PASSWORD: h4L0m4St3R327\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8443\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: code-server\n image: docker.io/linuxserver/code-server:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n homepage.group: Infrastructure\n homepage.href: https://code-server.$DOMAIN/\n homepage.icon: code-server.png\n homepage.name: Code Dev\n traefik.enable: \"true\"\n traefik.http.routers.code-server.middlewares: allow-iframe-from-domain@file\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.bocloud.org`) || Host(`code-server.bolabaden.duckdns.org`) || Host(`code-server.micklethefickle.duckdns.org`)\n traefik.http.services.code-server.loadbalancer.server.port: \"8443\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.92\n restart: always\n user: 1001:121\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/code-server/dev/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack\n target: /workspace\n bind:\n create_host_path: true\n comet:\n container_name: comet\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n COMET_URL: https://comet.elfhosted.com\n DASHBOARD_ADMIN_PASSWORD: h4L0m4St3R327\n DATABASE_PATH: /data/comet.db\n DATABASE_TYPE: sqlite\n DEBRID_CACHE_TTL: \"86400\"\n DOWNLOAD_TORRENT_FILES: \"true\"\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: \"2020\"\n FASTAPI_WORKERS: \"4\"\n GET_TORRENT_TIMEOUT: \"2\"\n INDEXER_MANAGER_API_KEY: 29440a82740d475cacb35327c62c87a1\n INDEXER_MANAGER_INDEXERS: '[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]'\n INDEXER_MANAGER_TIMEOUT: \"60\"\n INDEXER_MANAGER_TYPE: prowlarr\n INDEXER_MANAGER_URL: http://prowlarr:9696\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n METADATA_CACHE_TTL: \"2592000\"\n PGID: \"121\"\n PROXY_DEBRID_STREAM: \"true\"\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: 6i6zgswm35baj3ur\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: \"-1\"\n PROXY_DEBRID_STREAM_PASSWORD: brunner56:h4L0m4St3R327,bolabaden:duckdns\n PUID: \"1001\"\n REMOVE_ADULT_CONTENT: \"true\"\n SCRAPE_COMET: \"true\"\n SCRAPE_MEDIAFUSION: \"true\"\n SCRAPE_TORRENTIO: \"true\"\n SCRAPE_ZILEAN: \"true\"\n STREMTHRU_URL: https://stremthru.$DOMAIN\n TORRENT_CACHE_TTL: \"1296000\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UMASK: \"002\"\n USE_GUNICORN: \"true\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:2020/health > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 15s\n image: g0ldyy/comet:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n homepage.group: Stremio Addons\n homepage.href: https://comet.$DOMAIN/\n homepage.icon: comet.png\n homepage.name: Comet\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/comet/data\n target: /data\n bind:\n create_host_path: true\n crowdsec:\n container_name: crowdsec\n environment:\n AGENT_PASSWORD: \"\"\n AGENT_USERNAME: \"\"\n AGENTS_ALLOWED_OU: agent-ou\n APPSEC_CONFIGS: \"\"\n APPSEC_RULES: \"\"\n BOUNCER_KEY_TRAEFIK: usvi2urbIG5obProVWwcf2ImTrtB93x668jWDvrH\n BOUNCERS_ALLOWED_OU: bouncer-ou\n CACERT_FILE: \"\"\n CAPI_WHITELISTS_PATH: \"\"\n CI_TESTING: \"false\"\n CLIENT_CERT_FILE: \"\"\n CLIENT_KEY_FILE: \"\"\n COLLECTIONS: crowdsecurity/traefik\n CONFIG_FILE: /etc/crowdsec/config.yaml\n CONTEXTS: \"\"\n CUSTOM_HOSTNAME: localhost\n DEBUG: \"false\"\n DISABLE_AGENT: \"false\"\n DISABLE_APPSEC_CONFIGS: \"\"\n DISABLE_APPSEC_RULES: \"\"\n DISABLE_COLLECTIONS: \"\"\n DISABLE_CONTEXTS: \"\"\n DISABLE_LOCAL_API: \"false\"\n DISABLE_ONLINE_API: \"false\"\n DISABLE_PARSERS: \"\"\n DISABLE_POSTOVERFLOWS: \"\"\n DISABLE_SCENARIOS: \"\"\n DSN: \"\"\n ENROLL_INSTANCE_NAME: \"\"\n ENROLL_KEY: cm91pb2bz0011e35iltz9k6ra\n ENROLL_TAGS: \"\"\n INSECURE_SKIP_VERIFY: \"\"\n LAPI_CERT_FILE: \"\"\n LAPI_KEY_FILE: \"\"\n LEVEL_DEBUG: \"false\"\n LEVEL_ERROR: \"false\"\n LEVEL_FATAL: \"false\"\n LEVEL_INFO: \"false\"\n LEVEL_TRACE: \"false\"\n LEVEL_WARN: \"false\"\n LOCAL_API_URL: http://0.0.0.0:8080\n METRICS_PORT: \"6060\"\n NO_HUB_UPGRADE: \"false\"\n PARSERS: \"\"\n PGID: \"121\"\n PLUGIN_DIR: /usr/local/lib/crowdsec/plugins/\n POSTOVERFLOWS: \"\"\n PUID: \"1001\"\n SCENARIOS: \"\"\n TEST_MODE: \"false\"\n TYPE: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n USE_TLS: \"false\"\n USE_WAL: \"false\"\n expose:\n - \"6060\"\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: crowdsec\n image: docker.io/crowdsecurity/crowdsec:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: CrowdSec is an open-source, behavioral, intrusion detection system.\n homepage.group: Security\n homepage.href: https://crowdsec.$DOMAIN/\n homepage.icon: crowdsec.png\n homepage.name: Crowdsec\n homepage.widget.password: \"\"\n homepage.widget.type: crowdsec\n homepage.widget.url: http://crowdsec:8080\n homepage.widget.username: \"\"\n traefik.enable: \"true\"\n traefik.http.routers.crowdsec.middlewares: nginx-auth@file\n traefik.http.routers.crowdsec.rule: Host(`crowdsec.$DOMAIN`) || Host(`crowdsec.bocloud.org`) || Host(`crowdsec.bolabaden.duckdns.org`) || Host(`crowdsec.micklethefickle.duckdns.org`)\n traefik.http.services.crowdsec.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.104\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/data\n target: /var/lib/crowdsec/data\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/etc/crowdsec\n target: /etc/crowdsec\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/plugins\n target: /usr/local/lib/crowdsec/plugins\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/crowdsec/logs\n target: /var/log\n bind:\n create_host_path: true\n deunhealth:\n container_name: deunhealth\n environment:\n HEALTH_SERVER_ADDRESS: 127.0.0.1:9999\n LOG_LEVEL: debug\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n image: qmcgaw/deunhealth\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: DeUnhealth is a tool that automatically restarts unhealthy containers.\n homepage.group: Infrastructure\n homepage.href: https://deunhealth.$DOMAIN/\n homepage.icon: deunhealth.png\n homepage.name: DeUnhealth\n network_mode: none\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n dozzle:\n container_name: dozzle\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: dozzle\n image: amir20/dozzle\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n homepage.group: System Monitoring\n homepage.href: https://dozzle.$DOMAIN/\n homepage.icon: dozzle.png\n homepage.name: Dozzle\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: Host(`dozzle.$DOMAIN`) || Host(`dozzle.bocloud.org`) || Host(`dozzle.bolabaden.duckdns.org`) || Host(`dozzle.micklethefickle.duckdns.org`)\n traefik.http.services.dozzle.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.89\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n flaresolverr:\n container_name: flaresolverr\n environment:\n BROWSER_TIMEOUT: \"120000\"\n CAPTCHA_SOLVER: none\n HEADLESS: \"true\"\n HOST: 0.0.0.0\n LOG_HTML: \"false\"\n LOG_LEVEL: info\n PGID: \"121\"\n PORT: \"8191\"\n PROMETHEUS_ENABLED: \"false\"\n PROMETHEUS_PORT: \"9090\"\n PUID: \"1001\"\n TEST_URL: https://www.google.com\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8191\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: flaresolverr\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8191/health > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n start_period: 1m0s\n image: ghcr.io/flaresolverr/flaresolverr:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n homepage.group: Infrastructure\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.icon: flaresolverr.png\n homepage.name: Flaresolverr\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.bocloud.org`) || Host(`flaresolverr.bolabaden.duckdns.org`) || Host(`flaresolverr.micklethefickle.duckdns.org`)\n traefik.http.services.flaresolverr.loadbalancer.server.port: \"8191\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.93\n restart: always\n gluetun-premiumize-nl:\n cap_add:\n - NET_ADMIN\n configs:\n - source: premiumize-auth\n target: /config/auth.conf\n mode: \"0600\"\n - source: premiumize-ca\n target: /etc/openvpn/premiumize-ca.pem\n mode: \"0600\"\n - source: vpn-nl.premiumize.me\n target: /etc/openvpn/target.ovpn\n mode: \"0600\"\n container_name: gluetun-premiumize-nl\n devices:\n - source: /dev/net/tun\n target: /dev/net/tun\n permissions: rwm\n environment:\n FIREWALL_OUTBOUND_SUBNETS: 10.76.0.0/16,172.16.0.0/16,172.17.0.0/16,100.64.0.0/10\n OPENVPN_CUSTOM_CONFIG: /etc/openvpn/target.ovpn\n OPENVPN_FLAGS: --auth-user-pass /config/auth.conf\n OPENVPN_IPV6: \"off\"\n VPN_SERVICE_PROVIDER: custom\n VPN_TYPE: openvpn\n expose:\n - \"51413\"\n - \"8084\"\n - \"6881\"\n - 6881/udp\n extra_hosts:\n - aiostreams=10.76.128.200\n - autoscan=10.76.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.76.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.76.128.93\n - code-demo=10.76.128.80\n - code-server=10.76.128.92\n - code=10.76.128.96\n - comet=10.76.128.97\n - crowdsec=10.76.128.104\n - dash=10.76.128.23\n - decluttarr=10.76.128.21\n - deluge=10.76.128.97\n - dozzle=10.76.128.89\n - firecrawl-api=10.76.128.127\n - firecrawl-playwright=10.76.128.130\n - firecrawl-worker=10.76.128.128\n - flaresolverr=10.76.128.93\n - gatus=10.76.128.105\n - gluetun-premiumize-nl=10.76.128.119\n - gpt-researcher=10.76.128.43\n - gptr=10.76.128.43\n - homepage=10.76.128.88\n - homer=10.76.0.106\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - jellyfin=10.76.128.120\n - jellyseerr=10.76.128.115\n - lobechat=10.76.128.46\n - localhost=10.76.128.97\n - maintainerr=10.76.128.84\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.76.0.50\n - nginx-auth=10.76.128.94\n - open-webui=10.76.128.118\n - overseerr=10.76.128.116\n - plex-authentication=10.76.128.112\n - plex-repair=10.76.0.115\n - plex-request=10.76.128.113\n - plex-watchlist=10.76.52.97\n - plex=10.76.128.95\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - qdrant=10.76.128.44\n - radarr=10.76.128.121\n - rclone=10.76.128.111\n - realdebrid-account-monitor=10.76.128.109\n - recyclarr=10.76.0.117\n - redis=10.76.128.87\n - riven-backend=10.76.128.101\n - riven-db=10.76.128.102\n - riven-frontend=10.76.128.100\n - riven=10.76.128.101\n - script-runner=10.76.0.116\n - searxng=10.76.128.90\n - sonarr-anime=10.76.128.123\n - sonarr=10.76.128.122\n - speedtest=10.76.128.86\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - stremthru=10.76.128.99\n - tautulli=10.76.128.103\n - tinyauth=10.76.128.82\n - traefik=10.76.128.85\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - watchtower=10.76.128.83\n - whisparr=10.76.0.120\n - whoami=10.76.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.76.128.107\n - zurg=10.76.128.97\n hostname: gluetun-premiumize-nl\n image: ghcr.io/qdm12/gluetun\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.http.routers.qbittorrent.rule: Host(`qbittorrent.$DOMAIN`) || Host(`qbittorrent.bocloud.org`) || Host(`qbittorrent.bolabaden.duckdns.org`) || Host(`qbittorrent.micklethefickle.duckdns.org`)\n traefik.http.routers.qbittorrent.service: qbittorrent\n traefik.http.routers.transmission.rule: Host(`transmission.$DOMAIN`) || Host(`transmission.bocloud.org`) || Host(`transmission.bolabaden.duckdns.org`) || Host(`transmission.micklethefickle.duckdns.org`)\n traefik.http.routers.transmission.service: transmission\n traefik.http.services.qbittorrent.loadbalancer.server.port: \"8084\"\n traefik.http.services.transmission.loadbalancer.server.port: \"9091\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.119\n ports:\n - mode: ingress\n target: 8084\n published: \"8084\"\n protocol: tcp\n - mode: ingress\n target: 6881\n published: \"6881\"\n protocol: tcp\n - mode: ingress\n target: 6881\n published: \"6881\"\n protocol: udp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n gptr:\n build:\n context: https://github.com/th3w1zard1/gpt-researcher.git#master\n dockerfile: Dockerfile.fullstack\n container_name: gptr\n environment:\n ANTHROPIC_API_KEY: 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\n BRAVE_API_KEY: BQYQ53Y34895489548954895489548954895489\n CHOKIDAR_USEPOLLING: \"true\"\n DEEPSEEK_API_KEY: sk-d6c4fe1d5db945ba8547fc348df03833\n EXA_API_KEY: 4f304bea-22a0-4473-bc38-21114d0f8aaf\n FIRE_CRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n FIRECRAWL_API_KEY: fc-e0e316bead3d497fb24d42ea21d5daf6\n GEMINI_API_KEY: AIzaSyB-1aUePBQbb7_rpIDz5kY7AMWxguMq7Y8\n GLAMA_API_KEY: glama_eyJhcGlLZXkiOiI4YTc1MWRkYi0xNGNjLTQyNTctOTgzMS05OTMyNDQyNGY4NDQifQ\n GROQ_API_KEY: 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\n HF_TOKEN: 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\n HUGGINGFACE_ACCESS_TOKEN: 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\n HUGGINGFACE_API_TOKEN: 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\n LANGCHAIN_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_API_KEY: lsv2_0123456789012345678901234567890123456789\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_TRACING: \"true\"\n LOGGING_LEVEL: DEBUG\n MISTRAL_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n MISTRALAI_API_KEY: rNZOe7bauJwpknHvDjOtnXV6iaKHzEt1\n NEXT_PUBLIC_GA_MEASUREMENT_ID: \"\"\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n OPENAI_API_KEY: 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\n OPENROUTER_API_KEY: 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\n PERPLEXITY_API_KEY: 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\n PERPLEXITYAI_API_KEY: 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\n REPLICATE_API_KEY: r8_8ktlYwwthNrp8pPSLZF1DD7507tku082y7ptd\n REVID_API_KEY: 9a9884c5-6cb6-4ea9-aadc-91b31de76653\n SAMBANOVA_API_KEY: f3f47213-2123-4408-8247-816319bc1e84\n SEARCH1API_KEY: DE721F1D-498C-4DBF-843C-B72A75DAFD14\n SERPAPI_API_KEY: dfc64bfdf77ccdde0196b0fde7848a8ebc04e520\n TAVILY_API_KEY: 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\n TOGETHERAI_API_KEY: 3bf6c62c61e9dbfbe4e947bd7e0ec876188e41916fbd622877018188f84ab2f2\n UNIFY_API_KEY: XeFNQpisNryyS6NrlnDEAK7D-aE0mAq4JCkwsfeDa90=\n UPSTAGE_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n UPSTAGEAI_API_KEY: up_uPJNmSkziDbrTi75fQ7fFOkOcCTSC\n YOU_API_KEY: cbee3356-84ed-40ea-9d09-ce3d0afcb340<__>1QKC7nETU8N2v5f46hH6l6ax\n expose:\n - \"3000\"\n - \"3001\"\n - \"8000\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: gptr\n healthcheck:\n test:\n - CMD-SHELL\n - (wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1)\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: th3w1zard1/ai-researchwizard:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.group: AI\n homepage.href: https://gptr.$DOMAIN/\n homepage.icon: gptr.png\n homepage.name: AI Research Wizard\n traefik.enable: \"true\"\n traefik.http.routers.gptr-legacy.rule: Host(`gptr-legacy.$DOMAIN`) || Host(`gptr-legacy.bocloud.org`) || Host(`gptr-legacy.bolabaden.duckdns.org`) || Host(`gptr-legacy.micklethefickle.duckdns.org`)\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr.rule: Host(`gptr.$DOMAIN`) || Host(`gptr.bocloud.org`) || Host(`gptr.bolabaden.duckdns.org`) || Host(`gptr.micklethefickle.duckdns.org`)\n traefik.http.routers.gptr.service: gptr\n traefik.http.services.gptr-legacy.loadbalancer.server.port: \"8000\"\n traefik.http.services.gptr.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.43\n ports:\n - mode: ingress\n target: 3001\n published: \"3001\"\n protocol: tcp\n - mode: ingress\n target: 8000\n published: \"8000\"\n protocol: tcp\n restart: always\n stdin_open: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/logs\n target: /usr/src/app/logs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/outputs\n target: /usr/src/app/outputs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/gptr/reports\n target: /usr/src/app/reports\n bind:\n create_host_path: true\n headscale:\n command:\n - serve\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yml\n container_name: headscale\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"3478\"\n - \"8080\"\n - \"9090\"\n - \"50443\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: headscale\n image: docker.io/headscale/headscale:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Headscale is a server that manages your Tailscale network.\n homepage.group: Networking\n homepage.href: https://headscale.$DOMAIN/\n homepage.icon: headscale.png\n homepage.name: Headscale\n traefik.enable: \"true\"\n traefik.http.routers.headscale-admin.rule: Host(`headscale-admin.$DOMAIN`) || Host(`headscale-admin.bocloud.org`) || Host(`headscale-admin.bolabaden.duckdns.org`) || Host(`headscale-admin.micklethefickle.duckdns.org`)\n traefik.http.routers.headscale-admin.service: headscale-admin\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.bocloud.org`) || Host(`headscale.bolabaden.duckdns.org`) || Host(`headscale.micklethefickle.duckdns.org`)\n traefik.http.routers.headscale.service: headscale\n traefik.http.services.headscale-admin.loadbalancer.server.port: \"9090\"\n traefik.http.services.headscale.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.0.106\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/config\n target: /etc/headscale\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/lib\n target: /var/lib/headscale\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/headscale/run\n target: /var/run/headscale\n bind:\n create_host_path: true\n homepage:\n container_name: homepage\n environment:\n HOMEPAGE_ALLOWED_HOSTS: '*'\n HOMEPAGE_VAR_HEADER_STYLE: \"\"\n HOMEPAGE_VAR_SEARCH_PROVIDER: google\n HOMEPAGE_VAR_TITLE: Bolabaden\n HOMEPAGE_VAR_WEATHER_CITY: Chicago\n HOMEPAGE_VAR_WEATHER_LAT: \"41.8781\"\n HOMEPAGE_VAR_WEATHER_LONG: \"-87.6298\"\n HOMEPAGE_VAR_WEATHER_UNIT: fahrenheit\n TZ: America/Chicago\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: homepage\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\n timeout: 15s\n interval: 30s\n retries: 3\n image: ghcr.io/gethomepage/homepage\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Homepage is a dashboard that displays all of your services.\n homepage.group: Dashboards\n homepage.href: https://homepage.$DOMAIN/\n homepage.icon: homepage.png\n homepage.name: Homepage\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: Host(`homepage.$DOMAIN`) || Host(`homepage.bocloud.org`) || Host(`homepage.bolabaden.duckdns.org`) || Host(`homepage.micklethefickle.duckdns.org`)\n traefik.http.services.homepage.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.88\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n selinux: z\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/homepage\n target: /app/config\n bind:\n create_host_path: true\n homer:\n configs:\n - source: homer-config.yml\n target: /www/assets/config.yml\n container_name: homer\n environment:\n GID: \"121\"\n INIT_ASSETS: \"1\"\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UID: \"1001\"\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: homer\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:8080 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: b4bz/homer:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Static homepage dashboard\n homepage.group: Dashboards\n homepage.href: https://homer.$DOMAIN/\n homepage.icon: http://127.0.0.1:8080/assets/icons/pwa-192x192.png\n homepage.name: Homer\n homepage.weight: \"0\"\n homepage.widget.type: homer\n homepage.widget.url: http://homer:8080\n traefik.enable: \"true\"\n traefik.http.routers.homer.rule: Host(`homer.$DOMAIN`) || Host(`homer.bocloud.org`) || Host(`homer.bolabaden.duckdns.org`) || Host(`homer.micklethefickle.duckdns.org`)\n traefik.http.services.homer.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.106\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/homer/assets\n target: /www/assets\n bind:\n create_host_path: true\n jackett:\n container_name: jackett\n depends_on:\n flaresolverr:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n AUTO_UPDATE: \"true\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n PGID: \"121\"\n PUID: \"1001\"\n RUN_OPTS: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=nnx0n84pcj7umynyd2pbid2nl1zzuemz || exit 1\n timeout: 10s\n interval: 30s\n start_period: 1m0s\n image: linuxserver/jackett\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.group: Source Aggregator\n homepage.href: https://jackett.$DOMAIN/\n homepage.icon: jackett.png\n homepage.name: Jackett Indexer\n homepage.weight: \"1\"\n homepage.widget.key: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n homepage.widget.type: jackett\n homepage.widget.url: http://jackett:9117\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/jackett/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid/blackhole\n target: /blackhole\n bind:\n create_host_path: true\n - type: bind\n source: /mnt\n target: /mnt\n bind:\n create_host_path: true\n mediaflow-proxy:\n container_name: mediaflow-proxy\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n API_PASSWORD: d468d92139047f1df5ba0fae9d998957c30834a386cd63d0472a7b044d42a96a\n ENABLE_STREAMING_PROGRESS: \"true\"\n PGID: \"121\"\n PORT: \"8888\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD\n - python3\n - -c\n - import socket; s=socket.socket(); s.connect(('127.0.0.1', 8888)); print('Healthcheck passed')\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 10s\n image: mhdzumair/mediaflow-proxy\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n homepage.icon: mediaflow-proxy.png\n homepage.name: MediaFlow Proxy\n network_mode: service:warp\n restart: always\n mediafusion:\n container_name: mediafusion\n depends_on:\n mongodb:\n condition: service_healthy\n required: true\n redis:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n ADDON_NAME: MediaFusion | $DOMAIN\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\"\n ADULT_CONTENT_REGEX_KEYWORDS: \\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\b\n API_PASSWORD: h4L0m4St3R327\n ARAB_TORRENTS_SCHEDULER_CRONTAB: 0 0 * * *\n BACKGROUND_SEARCH_CRONTAB: '*/5 * * * *'\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\"\n BRANDING_DESCRIPTION: Hosted on $DOMAIN\n BT4G_IMMEDIATE_MAX_PROCESS: \"15\"\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n BT4G_SEARCH_INTERVAL_HOUR: \"72\"\n BT4G_SEARCH_TIMEOUT: \"10\"\n BT4G_URL: https://bt4gprx.com\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: 0 0 * * *\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: 0 * * * *\n CONTACT_EMAIL: boden.crouch@gmail.com\n DB_MAX_CONNECTIONS: \"50\"\n DESCRIPTION: MediaFusion | $DOMAIN\n DISABLE_ALL_SCHEDULER: \"False\"\n DISABLED_PROVIDERS: '[]'\n DLHD_SCHEDULER_CRONTAB: 25 * * * *\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\"\n ENABLE_RATE_LIMIT: \"True\"\n FLARESOLVERR_URL: http://flaresolverr:8191/v1\n FORMULA_TGX_SCHEDULER_CRONTAB: '*/30 * * * *'\n HOST_URL: https://mediafusion.$DOMAIN\n IS_PUBLIC_INSTANCE: \"False\"\n IS_SCRAP_FROM_BT4G: \"True\"\n IS_SCRAP_FROM_JACKETT: \"False\"\n IS_SCRAP_FROM_MEDIAFUSION: \"True\"\n IS_SCRAP_FROM_PROWLARR: \"False\"\n IS_SCRAP_FROM_TORRENTIO: \"True\"\n IS_SCRAP_FROM_YTS: \"True\"\n IS_SCRAP_FROM_ZILEAN: \"True\"\n JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\"\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n JACKETT_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\"\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n JACKETT_LIVE_TITLE_SEARCH: \"True\"\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\"\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\"\n JACKETT_URL: http://jackett:9117\n LOGGING_LEVEL: INFO\n LOGO_URL: \"\"\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"3\"\n MEDIAFUSION_URL: https://mediafusion.$DOMAIN\n META_CACHE_TTL: \"1800\"\n METADATA_PRIMARY_SOURCE: tmdb\n MIN_SCRAPING_VIDEO_SIZE: \"26214400\"\n MONGO_URI: mongodb://mongodb:27017/mediafusion\n MOTOGP_TGX_SCHEDULER_CRONTAB: 0 5 * * *\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: 0 * * * *\n NOWMETV_SCHEDULER_CRONTAB: 0 0 * * *\n NOWSPORTS_SCHEDULER_CRONTAB: 0 10 * * *\n PGID: \"121\"\n PLAYWRIGHT_CDP_URL: ws://browserless:3000?blockAds=true&stealth=true\n POSTER_HOST_URL: https://mediafusion.$DOMAIN\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"False\"\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"3\"\n PROWLARR_FEED_SCRAPER_CRONTAB: 0 */3 * * *\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"10\"\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"15\"\n PROWLARR_LIVE_TITLE_SEARCH: \"True\"\n PROWLARR_SEARCH_INTERVAL_HOUR: \"72\"\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"30\"\n PROWLARR_URL: http://prowlarr:9696\n PUID: \"1001\"\n REDIS_MAX_CONNECTIONS: \"100\"\n REDIS_URL: redis://10.76.128.87:6379\n SCRAPE_WITH_AKA_TITLES: \"True\"\n SECRET_KEY: c75ac92df70c4383c8d1bb37f65454f9\n SPORT_VIDEO_SCHEDULER_CRONTAB: '*/20 * * * *'\n STORE_STREMTHRU_MAGNET_CACHE: \"true\"\n SYNC_DEBRID_CACHE_STREAMS: \"False\"\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: 0 */6 * * *\n TAMILMV_SCHEDULER_CRONTAB: 0 */3 * * *\n TAMILULTRA_SCHEDULER_CRONTAB: 0 8 * * *\n TELEGRAM_BOT_TOKEN: \"\"\n TELEGRAM_CHAT_ID: \"\"\n TMDB_API_KEY: cec876f852b9c15d2c1b436b1117dff7\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"3\"\n TORRENTIO_URL: https://torrentio.strem.fun\n TZ: America/Chicago\n UFC_TGX_SCHEDULER_CRONTAB: 30 */3 * * *\n UMASK: \"002\"\n UPDATE_SEEDERS_CRONTAB: 0 0 * * *\n VALIDATE_M3U8_URLS_LIVENESS: \"True\"\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: 0 */6 * * *\n VERSION: 1.0.0\n WORKER_MAX_TASKS_PER_CHILD: \"20\"\n WWE_TGX_SCHEDULER_CRONTAB: 10 */3 * * *\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\"\n ZILEAN_URL: https://zilean.elfhosted.com\n healthcheck:\n test:\n - CMD-SHELL\n - curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 1m0s\n retries: 5\n start_period: 1m0s\n image: mhdzumair/mediafusion:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.icon: mediafusion.png\n homepage.name: MediaFusion\n network_mode: service:warp\n restart: always\n mongodb:\n container_name: mongodb\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"27017\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: mongodb\n healthcheck:\n test:\n - CMD-SHELL\n - mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\"ping\").ok' > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 10s\n retries: 5\n start_period: 40s\n image: mongo:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: MongoDB is a NoSQL database that uses JSON-like documents with optional schemas.\n homepage.group: Databases\n homepage.href: https://mongodb.$DOMAIN/\n homepage.icon: mongodb.png\n homepage.name: MongoDB\n traefik.enable: \"true\"\n traefik.http.routers.mongodb.middlewares: nginx-auth@file\n traefik.http.routers.mongodb.rule: Host(`mongodb.$DOMAIN`) || Host(`mongodb.bocloud.org`) || Host(`mongodb.bolabaden.duckdns.org`) || Host(`mongodb.micklethefickle.duckdns.org`)\n traefik.http.services.mongodb.loadbalancer.server.port: \"27017\"\n networks:\n publicnet:\n ipv4_address: 10.76.0.50\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/mongodb/data\n target: /data/db\n bind:\n create_host_path: true\n nginx-auth:\n container_name: nginx-auth\n environment:\n NGINX_ACCESS_LOG: /dev/stdout\n NGINX_ERROR_LOG: /dev/stderr\n NGINX_LOG_LEVEL: warn\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: nginx-auth\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:80/health > /dev/null 2>&1 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 20s\n image: nginx:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.middlewares.nginx-auth.forwardauth.address: http://nginx-auth:80/auth\n traefik.http.middlewares.nginx-auth.forwardauth.authResponseHeaders: X-Auth-Method,X-Auth-Passed,X-Middleware-Name\n traefik.http.middlewares.nginx-auth.forwardauth.trustForwardHeader: \"true\"\n traefik.http.routers.nginx-auth.rule: Host(`nginx-auth.$DOMAIN`) || Host(`nginx-auth.bocloud.org`) || Host(`nginx-auth.bolabaden.duckdns.org`) || Host(`nginx-auth.micklethefickle.duckdns.org`)\n traefik.http.routers.nginx-auth.service: nginx-auth\n traefik.http.services.nginx-auth.loadbalancer.server.port: \"80\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.94\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/nginx-middlewares/nginx.conf\n target: /etc/nginx/nginx.conf\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/nginx-middlewares/auth\n target: /etc/nginx/auth\n read_only: true\n bind:\n create_host_path: true\n overseerr:\n container_name: overseerr\n depends_on:\n plex:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5055\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: overseerr\n image: docker.io/linuxserver/overseerr\n labels:\n homepage.description: Allows users to request movies and TV shows, integrating with your media server for easy content management.\n homepage.group: Media Requests\n homepage.href: https://overseerr.$DOMAIN/\n homepage.icon: overseerr.png\n homepage.name: Overseerr Requests\n homepage.weight: \"3\"\n homepage.widget.key: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n homepage.widget.type: overseerr\n homepage.widget.url: https://overseerr.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.overseerr.rule: Host(`overseerr.$DOMAIN`) || Host(`overseerr.bocloud.org`) || Host(`overseerr.bolabaden.duckdns.org`) || Host(`overseerr.micklethefickle.duckdns.org`)\n traefik.http.services.overseerr.loadbalancer.server.port: \"5055\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.116\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/overseerr/config\n target: /config\n bind:\n create_host_path: true\n plex:\n container_name: plex\n environment:\n ADVERTISE_IP: https://plex.$DOMAIN:443\n EMAIL_TO: bolabaden.duckdns@gmail.com\n PLEX_CLAIM: claim-RmAd7Q1DfvybLKDY8zmQ\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n SMTP_FROM: transcode-killer@$DOMAIN\n SMTP_PORT: \"587\"\n WAIT_FOR_MOUNT_PATHS: /mnt/remote/realdebrid\n WAIT_FOR_URLS: http://zurg:9999/http/version.txt\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: plex\n healthcheck:\n test:\n - CMD-SHELL\n - curl --connect-timeout 15 --silent --show-error --fail http://localhost:32400/identity\n timeout: 15s\n interval: 1m0s\n retries: 3\n start_period: 1m0s\n image: plexinc/pms-docker\n labels:\n homepage.description: Stream your movies, TV shows, music, and photos to any device, providing a centralized media hub for all your content.\n homepage.group: Media Streaming\n homepage.href: https://plex.$DOMAIN/\n homepage.icon: plex.png\n homepage.name: Plex Media Server\n homepage.weight: \"4\"\n homepage.widget.key: 18rS6gM-Wec22uq5Gw-U\n homepage.widget.type: plex\n homepage.widget.url: https://plex.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.plex.rule: Host(`plex.$DOMAIN`) || Host(`plex.bocloud.org`) || Host(`plex.bolabaden.duckdns.org`) || Host(`plex.micklethefickle.duckdns.org`)\n traefik.http.services.plex.loadbalancer.server.port: \"32400\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.95\n ports:\n - mode: ingress\n target: 1900\n published: \"1902\"\n protocol: udp\n - mode: ingress\n target: 32400\n published: \"32400\"\n protocol: tcp\n - mode: ingress\n target: 32410\n published: \"32410\"\n protocol: udp\n - mode: ingress\n target: 8324\n published: \"8324\"\n protocol: tcp\n - mode: ingress\n target: 32412\n published: \"32412\"\n protocol: udp\n - mode: ingress\n target: 32413\n published: \"32413\"\n protocol: udp\n - mode: ingress\n target: 32414\n published: \"32414\"\n protocol: udp\n - mode: ingress\n target: 32469\n published: \"32469\"\n protocol: tcp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/plex/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/plex/config/osx-config\n target: /config/Library/Application Support/Plex Media Server\n bind:\n create_host_path: true\n - type: bind\n source: /dev/shm\n target: /dev/shm\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/local/transcodes/plex\n target: /transcode\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /storage/symlinks\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n prowlarr:\n container_name: prowlarr\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n PGID: \"121\"\n PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n healthcheck:\n test:\n - CMD-SHELL\n - 'curl -fs -H \"Authorization: Bearer 29440a82740d475cacb35327c62c87a1\" http://127.0.0.1:9696/api/v1/system/status || exit 1'\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 2m0s\n image: linuxserver/prowlarr\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.group: Indexers\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.icon: prowlarr.png\n homepage.name: Prowlarr\n homepage.weight: \"1\"\n homepage.widget.key: 29440a82740d475cacb35327c62c87a1\n homepage.widget.type: prowlarr\n homepage.widget.url: http://prowlarr:9696\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/prowlarr/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /mnt\n target: /mnt\n bind:\n create_host_path: true\n rclone:\n cap_add:\n - SYS_ADMIN\n command:\n - rcd\n - --rc-web-gui\n - --rc-web-gui-no-open-browser\n - --rc-addr=:5572\n - --log-level=DEBUG\n - --rc-user=brunner56\n - --rc-pass=h4L0m4St3R327\n - --config=/config/rclone/rclone.conf\n - --cache-dir=/.cache/rclone\n configs:\n - source: rclone-rclone.conf\n target: /config/rclone/rclone.conf\n mode: \"0777\"\n container_name: rclone\n devices:\n - source: /dev/fuse\n target: /dev/fuse\n permissions: rwm\n expose:\n - \"5572\"\n - \"5575\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: rclone\n image: rclone/rclone:latest\n labels:\n homepage.description: A web interface for Rclone.\n homepage.group: Media Management\n homepage.href: https://rclone.$DOMAIN/\n homepage.icon: rclone.png\n homepage.name: Rclone\n homepage.weight: \"0\"\n traefik.enable: \"true\"\n traefik.http.routers.rclone.rule: Host(`rclone.$DOMAIN`) || Host(`rclone.bocloud.org`) || Host(`rclone.bolabaden.duckdns.org`) || Host(`rclone.micklethefickle.duckdns.org`)\n traefik.http.routers.rclone.service: rclone\n traefik.http.services.rclone.loadbalancer.server.port: \"5572\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.111\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - type: bind\n source: /\n target: /hostfs\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /etc/fuse.conf\n target: /etc/fuse.conf\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /etc/group\n target: /etc/group\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /etc/passwd\n target: /etc/passwd\n read_only: true\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /mnt/symlinks\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclone/.cache\n target: /.cache\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclone/config/rclone\n target: /config/rclone\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/rclonefm/js\n target: /var/lib/rclonefm/js\n bind:\n create_host_path: true\n rclone-zurg:\n cap_add:\n - SYS_ADMIN\n configs:\n - source: rclone-mounts.json\n target: /app/mounts.json\n mode: \"0777\"\n container_name: rclone-zurg\n depends_on:\n rclone:\n condition: service_started\n required: true\n devices:\n - source: /dev/fuse\n target: /dev/fuse\n permissions: rwm\n environment:\n RCLONE_CONFIG_PATH: /config/rclone/rclone.conf\n RCLONE_PASSWORD: h4L0m4St3R327\n RCLONE_PORT: \"5572\"\n RCLONE_USERNAME: brunner56\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: rclone-zurg\n healthcheck:\n test:\n - CMD\n - mountpoint\n - -q\n - /mnt/remote/realdebrid\n timeout: 3s\n interval: 5s\n retries: 2\n start_period: 10s\n image: ghcr.io/coanghel/rclone-docker-automount/rclone-init:latest\n networks:\n publicnet: null\n privileged: true\n restart: always\n security_opt:\n - apparmor:unconfined\n volumes:\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n redis:\n command:\n - redis-server\n - --appendonly\n - \"yes\"\n - --save\n - \"60\"\n - \"1\"\n - --bind\n - 0.0.0.0\n container_name: redis\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n REDIS_DATABASE: \"0\"\n REDIS_HOST: redis\n REDIS_PASSWORD: redis\n REDIS_PORT: \"6379\"\n REDIS_USERNAME: default\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"6379\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: redis\n healthcheck:\n test:\n - CMD-SHELL\n - redis-cli ping > /dev/null 2>&1 || exit 1\n timeout: 5s\n interval: 10s\n retries: 5\n image: redis:alpine\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Redis is an in-memory data structure store, used as a database, cache, and message broker.\n homepage.group: Databases\n homepage.href: https://redis.$DOMAIN/\n homepage.icon: redis.png\n homepage.name: Redis\n traefik.enable: \"true\"\n traefik.http.routers.redis.middlewares: nginx-auth@file\n traefik.http.routers.redis.rule: Host(`redis.$DOMAIN`) || Host(`redis.bocloud.org`) || Host(`redis.bolabaden.duckdns.org`) || Host(`redis.micklethefickle.duckdns.org`)\n traefik.http.services.redis.loadbalancer.server.port: \"6379\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.87\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/redis\n target: /data\n bind:\n create_host_path: true\n riven:\n configs:\n - source: riven-settings.json\n target: /riven/data/settings.json\n mode: \"0777\"\n container_name: riven\n depends_on:\n riven-db:\n condition: service_healthy\n required: true\n deploy:\n resources:\n limits:\n cpus: 1\n memory: \"1073741824\"\n reservations:\n cpus: 0.5\n memory: \"20971520\"\n environment:\n API_KEY: 3e0be750b16ff363727d05d18ba364fd\n DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n DIALECT: postgres\n HARD_RESET: \"false\"\n PGID: \"121\"\n PUID: \"1001\"\n REPAIR_SYMLINKS: \"false\"\n RIVEN_CONTENT_LISTRR_API_KEY: d962d6e9fd4e4db790711128ed6013b236e86b1bea534c7f9f0c17a3c4c72982\n RIVEN_CONTENT_LISTRR_ENABLED: \"false\"\n RIVEN_CONTENT_LISTRR_MOVIE_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_SHOW_LISTS: '[]'\n RIVEN_CONTENT_LISTRR_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_MDBLIST_API_KEY: so5wnihfjtqhacaa310gzmrq6\n RIVEN_CONTENT_MDBLIST_ENABLED: \"false\"\n RIVEN_CONTENT_MDBLIST_LISTS: '[]'\n RIVEN_CONTENT_MDBLIST_UPDATE_INTERVAL: \"300\"\n RIVEN_CONTENT_OVERSEERR_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n RIVEN_CONTENT_OVERSEERR_ENABLED: \"true\"\n RIVEN_CONTENT_OVERSEERR_UPDATE_INTERVAL: \"30\"\n RIVEN_CONTENT_OVERSEERR_URL: http://overseerr:5055\n RIVEN_CONTENT_OVERSEERR_USE_WEBHOOK: \"false\"\n RIVEN_CONTENT_PLEX_WATCHLIST_ENABLED: \"true\"\n RIVEN_CONTENT_PLEX_WATCHLIST_RSS: '[]'\n RIVEN_CONTENT_PLEX_WATCHLIST_UPDATE_INTERVAL: \"60\"\n RIVEN_CONTENT_TRAKT_API_KEY: 052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\n RIVEN_CONTENT_TRAKT_ENABLED: \"true\"\n RIVEN_CONTENT_TRAKT_UPDATE_INTERVAL: \"3600\"\n RIVEN_DATABASE_URL: postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\n RIVEN_DEBUG: \"false\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_API_KEY: \"\"\n RIVEN_DOWNLOADERS_ALL_DEBRID_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_PROXY_URL: http://warp:1080\n RIVEN_DOWNLOADERS_REAL_DEBRID_API_KEY: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n RIVEN_DOWNLOADERS_REAL_DEBRID_ENABLED: \"true\"\n RIVEN_DOWNLOADERS_TORBOX_API_KEY: d490b7b1-1f6d-44e8-9cc8-3e735c87874b\n RIVEN_DOWNLOADERS_TORBOX_ENABLED: \"false\"\n RIVEN_DOWNLOADERS_VIDEO_EXTENSIONS: '[\"avi\",\"mkv\",\"mp4\"]'\n RIVEN_EMBY_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_EMBY_ENABLED: \"false\"\n RIVEN_EMBY_URL: http://emby:8096\n RIVEN_FORCE_ENV: \"false\"\n RIVEN_FORCE_REFRESH: \"false\"\n RIVEN_JELLYFIN_API_KEY: e0dd06e8809143a69c7c6ba174bbe129\n RIVEN_JELLYFIN_ENABLED: \"true\"\n RIVEN_JELLYFIN_URL: http://jellyfin:8096\n RIVEN_LOG: \"true\"\n RIVEN_MAP_METADATA: \"true\"\n RIVEN_PLEX_ENABLED: \"true\"\n RIVEN_PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n RIVEN_PLEX_URL: http://plex:32400\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_AC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_ATMOS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DOLBY_DIGITAL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSLESS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_DTS_LOSSY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_EAC3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_FLAC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MONO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_MP3_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_STEREO_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_SURROUND_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_AUDIO_TRUEHD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_10BIT_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_DOLBY_VISION_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_HDR10PLUS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_HDR_SDR_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AV1_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_AVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_BLURAY_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_DVD_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HDTV_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_HEVC_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_MPEG_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_REMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_VHS_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEB_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBDL_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_WEBMUX_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_QUALITY_XVID_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_BRRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_DVDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_HDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_PPVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_SATRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_TVRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_UHDRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_VHSRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_FETCH: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBDLRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_FETCH: \"true\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_RANK: \"0\"\n RIVEN_RANKING_CUSTOM_RANKS_RIPS_WEBRIP_USE_CUSTOM_RANK: \"false\"\n RIVEN_RANKING_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_EXCLUDE: '[]'\n RIVEN_RANKING_LANGUAGES_PREFERRED: '[\"en\"]'\n RIVEN_RANKING_LANGUAGES_REQUIRED: '[\"en\"]'\n RIVEN_RANKING_OPTIONS_ALLOW_ENGLISH_IN_LANGUAGES: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_ALL_TRASH: \"true\"\n RIVEN_RANKING_OPTIONS_REMOVE_RANKS_UNDER: \"-10000\"\n RIVEN_RANKING_OPTIONS_REMOVE_UNKNOWN_LANGUAGES: \"false\"\n RIVEN_RANKING_OPTIONS_TITLE_SIMILARITY: \"0.85\"\n RIVEN_RANKING_PREFERRED: '[]'\n RIVEN_RANKING_PROFILE: default\n RIVEN_RANKING_REQUIRE: '[]'\n RIVEN_RANKING_RESOLUTIONS_360P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_480P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_720P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_1080P: \"true\"\n RIVEN_RANKING_RESOLUTIONS_2160P: \"false\"\n RIVEN_RANKING_RESOLUTIONS_UNKNOWN: \"true\"\n RIVEN_SCRAPING_AFTER_2: \"2\"\n RIVEN_SCRAPING_AFTER_5: \"6\"\n RIVEN_SCRAPING_AFTER_10: \"24\"\n RIVEN_SCRAPING_COMET_ENABLED: \"true\"\n RIVEN_SCRAPING_COMET_INDEXERS: animetosho,anirena,eztv,limetorrents,nyaasi,solidtorrents,thepiratebay,torlock,yts\n RIVEN_SCRAPING_COMET_RATELIMIT: \"false\"\n RIVEN_SCRAPING_COMET_TIMEOUT: \"30\"\n RIVEN_SCRAPING_COMET_URL: http://comet:2020\n RIVEN_SCRAPING_ENABLE_ALIASES: \"true\"\n RIVEN_SCRAPING_JACKETT_API_KEY: nnx0n84pcj7umynyd2pbid2nl1zzuemz\n RIVEN_SCRAPING_JACKETT_ENABLED: \"true\"\n RIVEN_SCRAPING_JACKETT_RATELIMIT: \"false\"\n RIVEN_SCRAPING_JACKETT_TIMEOUT: \"10\"\n RIVEN_SCRAPING_JACKETT_URL: http://jackett:9117\n RIVEN_SCRAPING_KNIGHTCRAWLER_ENABLED: \"false\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_KNIGHTCRAWLER_RATELIMIT: \"true\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_TIMEOUT: \"30\"\n RIVEN_SCRAPING_KNIGHTCRAWLER_URL: https://knightcrawler.elfhosted.com\n RIVEN_SCRAPING_MEDIAFUSION_CATALOGS: prowlarr_streams,torrentio_streams\n RIVEN_SCRAPING_MEDIAFUSION_ENABLED: \"true\"\n RIVEN_SCRAPING_MEDIAFUSION_RATELIMIT: \"false\"\n RIVEN_SCRAPING_MEDIAFUSION_TIMEOUT: \"10\"\n RIVEN_SCRAPING_MEDIAFUSION_URL: http://mediafusion:8080\n RIVEN_SCRAPING_ORIONOID_API_KEY: LXBVEGR6DBKLBSBNLPARQHQRH8DGD7PT\n RIVEN_SCRAPING_ORIONOID_CACHED_RESULTS_ONLY: \"true\"\n RIVEN_SCRAPING_ORIONOID_ENABLED: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_LIMITCOUNT: \"5\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEO3D: \"false\"\n RIVEN_SCRAPING_ORIONOID_PARAMETERS_VIDEOQUALITY: sd_hd8k\n RIVEN_SCRAPING_ORIONOID_RATELIMIT: \"true\"\n RIVEN_SCRAPING_ORIONOID_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PARSE_DEBUG: \"false\"\n RIVEN_SCRAPING_PROWLARR_API_KEY: 29440a82740d475cacb35327c62c87a1\n RIVEN_SCRAPING_PROWLARR_ENABLED: \"false\"\n RIVEN_SCRAPING_PROWLARR_LIMITER_SECONDS: \"60\"\n RIVEN_SCRAPING_PROWLARR_RATELIMIT: \"false\"\n RIVEN_SCRAPING_PROWLARR_TIMEOUT: \"10\"\n RIVEN_SCRAPING_PROWLARR_URL: http://prowlarr:9696\n RIVEN_SCRAPING_TORRENTIO_ENABLED: \"true\"\n RIVEN_SCRAPING_TORRENTIO_FILTER: sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\n RIVEN_SCRAPING_TORRENTIO_PROXY_URL: http://warp:1080\n RIVEN_SCRAPING_TORRENTIO_RATELIMIT: \"true\"\n RIVEN_SCRAPING_TORRENTIO_TIMEOUT: \"30\"\n RIVEN_SCRAPING_TORRENTIO_URL: https://torrentio.strem.fun\n RIVEN_SCRAPING_ZILEAN_ENABLED: \"true\"\n RIVEN_SCRAPING_ZILEAN_RATELIMIT: \"false\"\n RIVEN_SCRAPING_ZILEAN_TIMEOUT: \"30\"\n RIVEN_SCRAPING_ZILEAN_URL: http://zilean.elfhosted.com\n RIVEN_SYMLINK_LIBRARY_PATH: /mnt/symlinks\n RIVEN_SYMLINK_RCLONE_PATH: /mnt/remote/realdebrid/__all__\n RIVEN_SYMLINK_REPAIR_INTERVAL: \"6.0\"\n RIVEN_SYMLINK_REPAIR_SYMLINKS: \"true\"\n RIVEN_SYMLINK_SEPARATE_ANIME_DIRS: \"true\"\n RIVEN_TRACEMALLOC: \"false\"\n RIVEN_UPDATER_INTERVAL: \"120\"\n RIVEN_VERSION: 0.21.21\n SETTINGS_FILENAME: settings.json\n SKIP_TRAKT_CACHE: \"false\"\n SYMLINK_MAX_WORKERS: \"4\"\n TRAKT_API_CLIENT_ID: \"\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven\n healthcheck:\n test:\n - CMD-SHELL\n - curl -s http://127.0.0.1:8080 >/dev/null || exit 1\n timeout: 10s\n interval: 30s\n retries: 10\n image: docker.io/spoked/riven:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.riven.rule: Host(`riven-backend.$DOMAIN`) || Host(`riven-backend.bocloud.org`) || Host(`riven-backend.bolabaden.duckdns.org`) || Host(`riven-backend.micklethefickle.duckdns.org`)\n traefik.http.services.riven.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.101\n restart: always\n tty: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/data\n target: /riven/data\n bind:\n create_host_path: true\n - type: bind\n source: /mnt/remote/realdebrid\n target: /mnt/remote/realdebrid\n bind:\n propagation: rshared\n create_host_path: true\n - type: bind\n source: /mnt/symlinks\n target: /mnt/symlinks\n bind:\n create_host_path: true\n riven-db:\n container_name: riven-db\n environment:\n PGDATA: /var/lib/postgresql/data/pgdata\n PGID: \"121\"\n POSTGRES_DB: riven\n POSTGRES_PASSWORD: postgres\n POSTGRES_USER: postgres\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven-db\n healthcheck:\n test:\n - CMD-SHELL\n - pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}\n timeout: 5s\n interval: 10s\n retries: 5\n image: postgres:16.3-alpine3.20\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.riven-db.middlewares: nginx-auth@file\n traefik.http.routers.riven-db.rule: Host(`riven-db.$DOMAIN`) || Host(`riven-db.bocloud.org`) || Host(`riven-db.bolabaden.duckdns.org`) || Host(`riven-db.micklethefickle.duckdns.org`)\n traefik.http.services.riven-db.loadbalancer.server.port: \"5432\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.102\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/pgdata\n target: /var/lib/postgresql/data/pgdata\n bind:\n create_host_path: true\n riven-frontend:\n container_name: riven-frontend\n depends_on:\n riven:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: riven-frontend\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:3000 || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: spoked/riven-frontend:latest\n labels:\n homepage.description: Modern frontend for Plex Debrid\n homepage.group: Media Management\n homepage.href: https://riven.$DOMAIN/\n homepage.icon: riven.png\n homepage.name: Riven\n traefik.enable: \"true\"\n traefik.http.routers.riven-frontend.middlewares: nginx-auth@file\n traefik.http.routers.riven-frontend.rule: Host(`riven.$DOMAIN`) || Host(`riven.bocloud.org`) || Host(`riven.bolabaden.duckdns.org`) || Host(`riven.micklethefickle.duckdns.org`)\n traefik.http.routers.riven-frontend.service: riven-frontend\n traefik.http.services.riven-frontend.loadbalancer.server.port: \"3000\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.100\n restart: always\n tty: true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/config\n target: /riven/config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/riven/tmp\n target: /tmp\n bind:\n create_host_path: true\n searxng:\n container_name: searxng\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n SEARXNG_BASE_URL: http://searxng:8080\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: searxng\n healthcheck:\n test:\n - CMD-SHELL\n - wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n image: docker.io/searxng/searxng:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n homepage.group: Search\n homepage.href: https://searxng.$DOMAIN/\n homepage.icon: searxng.png\n homepage.name: SearxNG\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.90\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/searxng\n target: /etc/searxng\n bind:\n create_host_path: true\n speedtest:\n container_name: speedtest\n environment:\n ADMIN_EMAIL: boden.crouch@gmail.com\n ADMIN_NAME: ubuntu\n ADMIN_PASSWORD: h4L0m4St3R327\n API_RATE_LIMIT: \"60\"\n APP_KEY: base64:OZVnVd3/7lJTtOTtVZ0YqxXJKtle2R48NIrfFv11CkM=\n APP_NAME: Speedtest Tracker\n APP_TIMEZONE: America/Chicago\n APP_URL: \"\"\n ASSET_URL: \"\"\n CHART_BEGIN_AT_ZERO: \"true\"\n CHART_DATETIME_FORMAT: j/m G:i\n CONTENT_WIDTH: 7xl\n DATETIME_FORMAT: j M Y, G:i:s\n DB_CONNECTION: sqlite\n DISPLAY_TIMEZONE: America/Chicago\n PGID: \"121\"\n PRUNE_RESULTS_OLDER_THAN: \"0\"\n PUBLIC_DASHBOARD: \"true\"\n PUID: \"1001\"\n SPEEDTEST_BLOCKED_SERVERS: \"\"\n SPEEDTEST_INTERFACE: \"\"\n SPEEDTEST_SCHEDULE: 0 * * * *\n SPEEDTEST_SERVERS: \"\"\n SPEEDTEST_SKIP_IPS: \"\"\n THRESHOLD_DOWNLOAD: \"900\"\n THRESHOLD_ENABLED: \"true\"\n THRESHOLD_PING: \"25\"\n THRESHOLD_UPLOAD: \"900\"\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: speedtest\n healthcheck:\n test:\n - CMD-SHELL\n - curl -fs http://127.0.0.1:80 > /dev/null || exit 1\n timeout: 15s\n interval: 30s\n start_period: 20s\n image: linuxserver/speedtest-tracker\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Regularly tests your internet speed and tracks performance over time, helping you monitor your connection quality.\n homepage.group: Network Monitoring\n homepage.href: https://speedtest.$DOMAIN/\n homepage.icon: speedtest.png\n homepage.name: Speedtest\n homepage.widget.fields: '[\"download\", \"upload\", \"ping\", \"speedtest\"]'\n homepage.widget.type: speedtest\n homepage.widget.url: http://speedtest-tracker:80\n traefik.enable: \"true\"\n traefik.http.routers.speedtest.rule: Host(`speedtest.$DOMAIN`) || Host(`speedtest.bocloud.org`) || Host(`speedtest.bolabaden.duckdns.org`) || Host(`speedtest.micklethefickle.duckdns.org`)\n traefik.http.services.speedtest.loadbalancer.server.port: \"80\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.86\n restart: always\n security_opt:\n - no-new-privileges:true\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/speedtest-tracker/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/speedtest-tracker/keys\n target: /config/keys\n bind:\n create_host_path: true\n stremio:\n container_name: stremio\n depends_on:\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n CASTING_DISABLED: \"1\"\n IPADDRESS: 170.9.225.137\n NO_CORS: \"0\"\n SERVER_URL: https://stremio.$DOMAIN\n WEBUI_LOCATION: https://stremio-web.$DOMAIN/shell/\n healthcheck:\n test:\n - CMD-SHELL\n - (curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\n timeout: 5s\n interval: 1m0s\n retries: 3\n start_period: 1m30s\n image: th3w1zard1/stremio-docker:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.group: Media Streaming Platforms\n homepage.href: https://stremio.$DOMAIN/\n homepage.icon: stremio.png\n homepage.name: Stremio\n homepage.widget.password: Hilogirl80!\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n homepage.widget.username: bolabaden.duckdns@gmail.com\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/root/.stremio-server\n target: /root/.stremio-server\n bind:\n create_host_path: true\n stremthru:\n container_name: stremthru\n depends_on:\n redis:\n condition: service_healthy\n required: true\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n STREMTHRU_AUTH_ADMIN: brunner56:h4L0m4St3R327\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: \"0\"\n STREMTHRU_DATABASE_URI: sqlite://./data/stremthru.db\n STREMTHRU_FEATURE: '\"dmm_hashlist,imdb_title,stremio_sidekick,stremio_store,stremio_wrap,stremio_torz\"'\n STREMTHRU_HTTP_PROXY: http://warp:1080\n STREMTHRU_LOG_FORMAT: text\n STREMTHRU_LOG_LEVEL: DEBUG\n STREMTHRU_PROXY_AUTH: brunner56:h4L0m4St3R327,bolabaden:duckdns\n STREMTHRU_REDIS_URI: redis://10.76.128.87:6379\n STREMTHRU_STORE_AUTH: '*:realdebrid:UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ,*:realdebrid:TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA,*:premiumize:6i6zgswm35baj3ur,*:torbox:d490b7b1-1f6d-44e8-9cc8-3e735c87874b'\n STREMTHRU_STORE_CONTENT_PROXY: '*:true'\n STREMTHRU_STORE_TUNNEL: '*:true'\n STREMTHRU_TUNNEL: '*:true'\n TZ: America/Chicago\n UMASK: \"002\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: stremthru\n image: muniftanjim/stremthru:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: StremThru is tunnel/proxy for debrid services.\n homepage.group: Stremio Addons\n homepage.href: https://stremthru.$DOMAIN/\n homepage.icon: stremthru.png\n homepage.name: StremThru\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: Host(`stremthru.$DOMAIN`) || Host(`stremthru.bolabaden.duckdns.org`) || Host(`stremthru.bocloud.org`) || Host(`stremthru.bolabaden.duckdns.org`) || Host(`stremthru.micklethefickle.duckdns.org`)\n traefik.http.routers.stremthru.service: stremthru\n traefik.http.services.stremthru.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.99\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/stremio/addons/stremthru/app/data\n target: /app/data\n bind:\n create_host_path: true\n tautulli:\n container_name: tautulli\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TAUTULLI_API_KEY: f86827c56ae740e6bff77c386e726ab8\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"8181\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: tautulli\n image: ghcr.io/tautulli/tautulli:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Tautulli is a web interface for Plex Media Server.\n homepage.group: Media Maintenance\n homepage.href: https://tautulli.$DOMAIN/\n homepage.icon: tautulli.png\n homepage.name: Tautulli\n homepage.weight: \"6\"\n homepage.widget.key: f86827c56ae740e6bff77c386e726ab8\n homepage.widget.type: tautulli\n homepage.widget.url: https://tautulli.$DOMAIN\n traefik.enable: \"true\"\n traefik.http.routers.tautulli.middlewares: nginx-auth@file\n traefik.http.routers.tautulli.rule: Host(`tautulli.$DOMAIN`) || Host(`tautulli.bocloud.org`) || Host(`tautulli.bolabaden.duckdns.org`) || Host(`tautulli.micklethefickle.duckdns.org`)\n traefik.http.services.tautulli.loadbalancer.server.port: \"8181\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.103\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/tautulli\n target: /config\n bind:\n create_host_path: true\n tinyauth:\n container_name: tinyauth\n environment:\n APP_TITLE: Bolabaden\n APP_URL: https://auth.$DOMAIN\n COOKIE_SECURE: \"true\"\n GITHUB_CLIENT_ID: Ov23ct3xtNzKCw4aeqfQ\n GITHUB_CLIENT_SECRET: 915226982a066972f2dd1e07249737a9c5e28728\n GOOGLE_CLIENT_ID: 324816055390-dftm6jq2d3ifs37miivj3nj09piv0df9.apps.googleusercontent.com\n GOOGLE_CLIENT_SECRET: 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\n LOGIN_MAX_RETRIES: \"15\"\n LOGIN_TIMEOUT: \"300\"\n OAUTH_AUTO_REDIRECT: none\n OAUTH_WHITELIST: boden.crouch@gmail.com,halomastar@gmail.com,athenajaguiar@gmail.com,bolabaden.duckdns@gmail.com,dgorsch2@gmail.com,dgorsch4@gmail.com\n SECRET: b9a4ZxFNBbyR9KdTAf2kSciI5jUCQLzE\n SESSION_EXPIRY: \"604800\"\n USERS: brunner56:$$2y$$05$$CEXtGy1XS4BlkTXEgSG64eSQlrGn.55Xm2HbiSgVSgO./WoVXXLAa,bolabaden.duckdns@gmail.com:$$2y$$05$$BbVWsqh2XkzaxvLGwd.0euD/PkkoaeFNDIhB0tTEBn4tAjGckKRzq\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: auth\n image: ghcr.io/steveiliop56/tinyauth:v3\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Authentication service for securing your applications\n homepage.group: Security\n homepage.href: https://auth.$DOMAIN/\n homepage.icon: shield-lock.png\n homepage.name: TinyAuth\n traefik.enable: \"true\"\n traefik.http.middlewares.tinyauth.forwardauth.address: http://auth:3000/api/auth/traefik\n traefik.http.routers.tinyauth.rule: Host(`auth.$DOMAIN`) || Host(`auth.bocloud.org`) || Host(`auth.bolabaden.duckdns.org`) || Host(`auth.micklethefickle.duckdns.org`)\n networks:\n publicnet:\n ipv4_address: 10.76.128.82\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/tinyauth\n target: /data\n bind:\n create_host_path: true\n traefik:\n cap_add:\n - NET_ADMIN\n command:\n - --accesslog=true\n - --api.dashboard=true\n - --api.debug=true\n - --api.disableDashboardAd=true\n - --api.insecure=true\n - --certificatesresolvers.letsencrypt.acme.caServer=https://acme-v02.api.letsencrypt.org/directory\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.provider=cloudflare\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge.resolvers=1.1.1.1,1.0.0.1\n - --certificatesresolvers.letsencrypt.acme.dnsChallenge=true\n - --certificatesresolvers.letsencrypt.acme.email=boden.crouch@gmail.com\n - --certificatesresolvers.letsencrypt.acme.httpChallenge.entryPoint=web\n - --certificatesresolvers.letsencrypt.acme.httpChallenge=true\n - --certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json\n - --certificatesresolvers.letsencrypt.acme.tlsChallenge=true\n - --entrypoints.web.address=:80\n - --entrypoints.web.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.76.0.0/16,100.64.0.0/10\n - --entrypoints.web.http.redirections.entryPoint.scheme=https\n - --entrypoints.web.http.redirections.entryPoint.to=websecure\n - --entrypoints.websecure.address=:443\n - --entrypoints.websecure.forwardedHeaders.trustedIPs=127.0.0.1/32,::1/128,172.17.0.0/12,10.76.0.0/16,100.64.0.0/10\n - --entrypoints.websecure.http.tls.certResolver=letsencrypt\n - --entrypoints.websecure.http.tls.domains[0].main=$DOMAIN\n - --entrypoints.websecure.http.tls.domains[0].sans=*.$DOMAIN\n - --entrypoints.websecure.http.tls.domains[1].main=bocloud.org\n - --entrypoints.websecure.http.tls.domains[1].sans=*.bocloud.org\n - --entrypoints.websecure.http.tls=true\n - --global.checkNewVersion=true\n - --global.sendAnonymousUsage=false\n - --log.level=INFO\n - --ping.terminatingStatusCode=503\n - --ping=true\n - --providers.docker.exposedByDefault=false\n - --providers.docker.network=publicnet\n - --providers.docker=true\n - --providers.file.directory=/config\n - --providers.file.watch=true\n - --serversTransport.insecureSkipVerify=true\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin\n - --experimental.plugins.crowdsec-bouncer-traefik-plugin.version=v1.4.2\n container_name: traefik\n depends_on:\n crowdsec:\n condition: service_started\n required: true\n nginx-auth:\n condition: service_started\n required: true\n environment:\n CLOUDFLARE_DNS_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n CLOUDFLARE_EMAIL: boden.crouch@gmail.com\n CLOUDFLARE_ZONE_API_TOKEN: fp6tjZWb66p1rCyZBM9k0hxrE0n0Y7XctSTwP52I\n DUCKDNS_TOKEN: 2c18769a-2889-4648-a70c-2fe44dd10f20\n LETS_ENCRYPT_EMAIL: boden.crouch@gmail.com\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"80\"\n - \"443\"\n - \"8080\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: traefik\n image: traefik:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Traefik is a modern HTTP reverse proxy and load balancer.\n homepage.group: Infrastructure\n homepage.href: https://traefik.$DOMAIN/api\n homepage.icon: traefik.png\n homepage.name: Traefik\n homepage.widget.type: traefik\n traefik.enable: \"true\"\n traefik.http.routers.traefik.middlewares: nginx-auth@file\n traefik.http.routers.traefik.rule: Host(`traefik.$DOMAIN`) || Host(`traefik.bocloud.org`) || Host(`traefik.bolabaden.duckdns.org`) || Host(`traefik.micklethefickle.duckdns.org`)\n traefik.http.routers.traefik.service: api@internal\n traefik.http.services.traefik.loadbalancer.server.port: \"8080\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.85\n ports:\n - mode: ingress\n target: 80\n published: \"80\"\n protocol: tcp\n - mode: ingress\n target: 443\n published: \"443\"\n protocol: tcp\n restart: always\n sysctls:\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - type: bind\n source: /var/run/tailscale/tailscaled.sock\n target: /var/run/tailscale/tailscaled.sock\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack\n target: /certs\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/traefik/config\n target: /config\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/traefik/plugins-local\n target: /plugins-local\n bind:\n create_host_path: true\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n create_host_path: true\n warp:\n cap_add:\n - MKNOD\n - AUDIT_WRITE\n - NET_ADMIN\n container_name: warp\n device_cgroup_rules:\n - c 10:200 rwm\n environment:\n TUNNEL_TOKEN: \"\"\n WARP_LICENSE_KEY: \"\"\n WARP_SLEEP: \"2\"\n expose:\n - \"1080\"\n - \"2020\"\n - \"3128\"\n - \"443\"\n - \"8000\"\n - \"8112\"\n - \"8888\"\n - \"9091\"\n - \"9117\"\n - \"9696\"\n - \"9999\"\n - \"8080\"\n - \"11470\"\n - \"12470\"\n extra_hosts:\n - aiostreams=10.76.128.200\n - autoscan=10.76.0.119\n - beatapostapita=100.99.45.35\n - bocloud-nextjs=10.76.128.45\n - boden-iphone=100.97.148.14\n - byparr=10.76.128.93\n - code-demo=10.76.128.80\n - code-server=10.76.128.92\n - code=10.76.128.96\n - comet=10.76.128.97\n - crowdsec=10.76.128.104\n - dash=10.76.128.23\n - decluttarr=10.76.128.21\n - deluge=10.76.128.97\n - dozzle=10.76.128.89\n - firecrawl-api=10.76.128.127\n - firecrawl-playwright=10.76.128.130\n - firecrawl-worker=10.76.128.128\n - flaresolverr=10.76.128.93\n - gatus=10.76.128.105\n - gluetun-premiumize-nl=10.76.128.119\n - gpt-researcher=10.76.128.43\n - gptr=10.76.128.43\n - homepage=10.76.128.88\n - homer=10.76.0.106\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - jellyfin=10.76.128.120\n - jellyseerr=10.76.128.115\n - lobechat=10.76.128.46\n - localhost=10.76.128.97\n - maintainerr=10.76.128.84\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - mongodb=10.76.0.50\n - nginx-auth=10.76.128.94\n - open-webui=10.76.128.118\n - overseerr=10.76.128.116\n - plex-authentication=10.76.128.112\n - plex-repair=10.76.0.115\n - plex-request=10.76.128.113\n - plex-watchlist=10.76.52.97\n - plex=10.76.128.95\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - qdrant=10.76.128.44\n - radarr=10.76.128.121\n - rclone=10.76.128.111\n - realdebrid-account-monitor=10.76.128.109\n - recyclarr=10.76.0.117\n - redis=10.76.128.87\n - riven-backend=10.76.128.101\n - riven-db=10.76.128.102\n - riven-frontend=10.76.128.100\n - riven=10.76.128.101\n - script-runner=10.76.0.116\n - searxng=10.76.128.90\n - sonarr-anime=10.76.128.123\n - sonarr=10.76.128.122\n - speedtest=10.76.128.86\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - stremthru=10.76.128.99\n - tautulli=10.76.128.103\n - tinyauth=10.76.128.82\n - traefik=10.76.128.85\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - watchtower=10.76.128.83\n - whisparr=10.76.0.120\n - whoami=10.76.128.81\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - wizarr=10.76.128.107\n - zurg=10.76.128.97\n image: caomingjun/warp:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: Host(`comet.$DOMAIN`) || Host(`comet.bocloud.org`) || Host(`comet.bolabaden.duckdns.org`) || Host(`comet.micklethefickle.duckdns.org`)\n traefik.http.routers.comet.service: comet\n traefik.http.routers.deluge.rule: Host(`deluge.$DOMAIN`) || Host(`deluge.bocloud.org`) || Host(`deluge.bolabaden.duckdns.org`) || Host(`deluge.micklethefickle.duckdns.org`)\n traefik.http.routers.deluge.service: deluge\n traefik.http.routers.jackett.rule: Host(`jackett.$DOMAIN`) || Host(`jackett.bocloud.org`) || Host(`jackett.bolabaden.duckdns.org`) || Host(`jackett.micklethefickle.duckdns.org`)\n traefik.http.routers.jackett.service: jackett\n traefik.http.routers.mediaflow-proxy.rule: Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.bocloud.org`) || Host(`mediaflow-proxy.bolabaden.duckdns.org`) || Host(`mediaflow-proxy.micklethefickle.duckdns.org`)\n traefik.http.routers.mediaflow-proxy.service: mediaflow-proxy\n traefik.http.routers.mediafusion.rule: Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.bocloud.org`) || Host(`mediafusion.bolabaden.duckdns.org`) || Host(`mediafusion.micklethefickle.duckdns.org`)\n traefik.http.routers.mediafusion.service: mediafusion\n traefik.http.routers.prowlarr.rule: Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.bocloud.org`) || Host(`prowlarr.bolabaden.duckdns.org`) || Host(`prowlarr.micklethefickle.duckdns.org`)\n traefik.http.routers.prowlarr.service: prowlarr\n traefik.http.routers.stremio-api-http-server.priority: \"100\"\n traefik.http.routers.stremio-api-http-server.rule: Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.bocloud.org`) || Host(`stremio-api.bolabaden.duckdns.org`) || Host(`stremio-api.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-https-server.priority: \"100\"\n traefik.http.routers.stremio-api-https-server.rule: Host(`stremio.$DOMAIN`) || Host(`stremio.bocloud.org`) || Host(`stremio.bolabaden.duckdns.org`) || Host(`stremio.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-api-https-server.service: stremio-api-https-server\n traefik.http.routers.stremio-web.priority: \"10\"\n traefik.http.routers.stremio-web.rule: Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.bocloud.org`) || Host(`stremio-web.bolabaden.duckdns.org`) || Host(`stremio-web.micklethefickle.duckdns.org`)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.warp-proxy.middlewares: nginx-auth@file\n traefik.http.routers.warp-proxy.rule: Host(`warp-proxy.$DOMAIN`) || Host(`warp-proxy.bocloud.org`) || Host(`warp-proxy.bolabaden.duckdns.org`) || Host(`warp-proxy.micklethefickle.duckdns.org`)\n traefik.http.routers.warp-proxy.service: warp-proxy\n traefik.http.routers.zurg.middlewares: nginx-auth@file\n traefik.http.routers.zurg.rule: Host(`zurg.$DOMAIN`) || Host(`zurg.bocloud.org`) || Host(`zurg.bolabaden.duckdns.org`) || Host(`zurg.micklethefickle.duckdns.org`)\n traefik.http.routers.zurg.service: zurg\n traefik.http.services.comet.loadbalancer.server.port: \"2020\"\n traefik.http.services.deluge.loadbalancer.server.port: \"8112\"\n traefik.http.services.jackett.loadbalancer.server.port: \"9117\"\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: \"8888\"\n traefik.http.services.mediafusion.loadbalancer.server.port: \"8000\"\n traefik.http.services.prowlarr.loadbalancer.server.port: \"9696\"\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: \"11470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.port: \"12470\"\n traefik.http.services.stremio-api-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: \"8080\"\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.warp-proxy.loadbalancer.server.port: \"3128\"\n traefik.http.services.zurg.loadbalancer.server.port: \"9999\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.97\n ports:\n - mode: ingress\n target: 1080\n published: \"1080\"\n protocol: tcp\n - mode: ingress\n target: 443\n published: \"443\"\n protocol: udp\n - mode: ingress\n target: 9999\n published: \"9999\"\n protocol: tcp\n - mode: ingress\n target: 11470\n published: \"11470\"\n protocol: tcp\n - mode: ingress\n target: 12470\n published: \"12470\"\n protocol: tcp\n restart: always\n sysctls:\n net.ipv4.conf.all.src_valid_mark: \"1\"\n net.ipv6.conf.all.disable_ipv6: \"1\"\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/warp/data\n target: /var/lib/cloudflare-warp\n bind:\n create_host_path: true\n watchtower:\n container_name: watchtower\n environment:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n WATCHTOWER_CLEANUP: \"true\"\n WATCHTOWER_DEBUG: \"true\"\n WATCHTOWER_LOG_LEVEL: \"\"\n WATCHTOWER_NOTIFICATION_REPORT: \"true\"\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n WATCHTOWER_NOTIFICATION_URL: \"\"\n WATCHTOWER_SCHEDULE: 0 0 6 * * *\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: watchtower\n image: containrrr/watchtower:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.83\n restart: always\n volumes:\n - type: bind\n source: /var/run/docker.sock\n target: /var/run/docker.sock\n bind:\n create_host_path: true\n whoami:\n container_name: whoami\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: whoami\n image: traefik/whoami:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n homepage.group: Web Services\n homepage.href: https://whoami-nginx.$DOMAIN\n homepage.icon: whoami.png\n homepage.name: Whoami\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: Host(`whoami.$DOMAIN`) || Host(`whoami.bocloud.org`) || Host(`whoami.bolabaden.duckdns.org`) || Host(`whoami.micklethefickle.duckdns.org`)\n networks:\n publicnet:\n ipv4_address: 10.76.128.81\n restart: always\n wizarr:\n container_name: wizarr\n environment:\n APP_URL: http://wizarr:5690\n DISABLE_BUILTIN_AUTH: \"true\"\n PGID: \"121\"\n PLEX_TOKEN: 18rS6gM-Wec22uq5Gw-U\n PLEX_URL: http://plex:32400\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\n expose:\n - \"5690\"\n extra_hosts:\n - beatapostapita=100.99.45.35\n - boden-iphone=100.97.148.14\n - comet=10.76.128.97\n - deluge=10.76.128.97\n - gluetun-premiumize-nl=10.76.128.119\n - host.docker.internal=host-gateway\n - jackett=10.76.128.97\n - jackettio=10.76.128.97\n - localhost=10.76.128.97\n - mediaflow-proxy=10.76.128.97\n - mediafusion=10.76.128.97\n - micklethefickle3=100.72.149.123\n - micklethefickle=100.72.149.123\n - prowlarr=10.76.128.97\n - qbittorrent=10.76.128.119\n - stremio-fallback=10.76.128.97\n - stremio-https-server=10.76.128.97\n - stremio-jackett=10.76.128.97\n - stremio-web=10.76.128.97\n - transmission=10.76.128.119\n - warp=10.76.128.97\n - wizard-pc=100.119.187.62\n - wizard=100.119.187.62\n - zurg=10.76.128.97\n hostname: wizarr\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:5690/static/wizarr-logo.png || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 1m0s\n image: ghcr.io/wizarrrr/wizarr:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: User invitation and management system for Plex\n homepage.group: Media Management\n homepage.href: https://wizarr.$DOMAIN/\n homepage.icon: http://127.0.0.1:5690/static/wizarr-logo.png\n homepage.name: Wizarr\n homepage.weight: \"0\"\n homepage.widget.type: wizarr\n homepage.widget.url: http://wizarr:5690\n traefik.enable: \"true\"\n traefik.http.routers.wizarr.rule: Host(`wizarr.$DOMAIN`) || Host(`wizarr.bocloud.org`) || Host(`wizarr.bolabaden.duckdns.org`) || Host(`wizarr.micklethefickle.duckdns.org`)\n traefik.http.services.wizarr.loadbalancer.server.port: \"5690\"\n networks:\n publicnet:\n ipv4_address: 10.76.128.107\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/wizarr/database\n target: /data/database\n bind:\n create_host_path: true\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/wizarr/config\n target: /config\n bind:\n create_host_path: true\n zurg:\n configs:\n - source: zurg-config.yml\n target: /app/config.yml\n mode: \"0775\"\n - source: zurg-cli_debrid_update.sh\n target: /app/plex_update.sh\n mode: \"0775\"\n container_name: zurg\n depends_on:\n rclone-zurg:\n condition: service_healthy\n required: true\n warp:\n condition: service_started\n restart: true\n required: true\n environment:\n DOMAIN: $DOMAIN\n DUCKDNS_SUBDOMAIN: bolabaden\n ELF_APP_NAME: zurg\n K8S_APP_NAME: zurg\n PGID: \"121\"\n PUID: \"1001\"\n REAL_DEBRID_API_KEY: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n REALDEBRID_API_KEY: MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\n REALDEBRID_TOKEN: UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\n SECOND_DOMAIN: bocloud.org\n TS_HOSTNAME: micklethefickle\n TZ: America/Chicago\n UMASK: \"002\"\n ZURG_LOG_LEVEL: debug\n healthcheck:\n test:\n - CMD-SHELL\n - wget -qO- http://127.0.0.1:9999/http/version.txt || exit 1\n timeout: 10s\n interval: 30s\n retries: 3\n start_period: 30s\n image: ghcr.io/debridmediamanager/zurg-testing:latest\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n homepage.description: Real-Debrid WebDAV proxy for seamless streaming\n homepage.group: Download Clients\n homepage.href: https://zurg.$DOMAIN/\n homepage.icon: zurg.png\n homepage.name: Zurg\n homepage.weight: \"2\"\n homepage.widget.type: zurg\n homepage.widget.url: http://zurg:9999\n network_mode: service:warp\n restart: always\n volumes:\n - type: bind\n source: /home/ubuntu/my-media-stack/configs/zurg/app/data\n target: /app/data\n bind:\n create_host_path: true\nnetworks:\n publicnet:\n name: publicnet\n driver: bridge\n driver_opts:\n com.docker.network.bridge.name: br_publicnet\n ipam:\n config:\n - subnet: 10.76.0.0/16\n gateway: 10.76.0.1\n ip_range: 10.76.0.0/16\n attachable: true\nconfigs:\n headscale-config:\n name: my-media-stack_headscale-config\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://headscale.$DOMAIN:443\n #\n server_url: https://headscale.$DOMAIN:443\n # For local development:\n #server_url: http://127.0.0.1:8080\n # Address to listen to / bind to on the server\n #\n # For production:\n listen_addr: 0.0.0.0:8080\n # For local development\n #listen_addr: 127.0.0.1:8080\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n #\n # For production:\n grpc_listen_addr: 0.0.0.0:50443\n # For local development\n #grpc_listen_addr: 127.0.0.1:50443\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: sequential\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: true\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"Chicago\"\n region_name: \"Oracle Cloud Headscale Embedded DERP\"\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n #ipv4: 1.2.3.4\n #ipv6: 2001:db8::1\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n # How often should we check for DERP updates?\n update_frequency: 3h # default is 24h\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: false\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: true\n # Enable parameterized queries.\n parameterized_queries: true\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: true\n # Threshold for slow queries in milliseconds.\n slow_threshold: 1000\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: true\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: 1000\n ### TLS configuration\n #\n ## Let's encrypt / ACME\n #\n # headscale supports automatically requesting and setting up\n # TLS for a domain with Let's Encrypt.\n #\n # URL to ACME directory\n acme_url: https://acme-v02.api.letsencrypt.org/directory\n # Email to register with ACME provider\n acme_email: \"bolabaden.duckdns@gmail.com\"\n # Domain name to request a TLS certificate for:\n tls_letsencrypt_hostname: \"headscale.$DOMAIN\"\n # Path to store certificates and metadata needed by\n # letsencrypt\n # For production:\n tls_letsencrypt_cache_dir: /var/lib/headscale/cache\n # Type of ACME challenge to use, currently supported types:\n # HTTP-01 or TLS-ALPN-01\n # See: docs/ref/tls.md for more information\n tls_letsencrypt_challenge_type: HTTP-01\n # When HTTP-01 challenge is chosen, letsencrypt must set up a\n # verification endpoint, and it will be listening on:\n # :http = port 80\n tls_letsencrypt_listen: \":http\"\n ## Use already defined certificates:\n tls_cert_path: \"\"\n tls_key_path: \"\"\n log:\n # Output formatting for logs: text or json\n format: text\n level: info\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: file\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: \"\"\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: true\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: $DOMAIN\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: true\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 8.8.8.8\n - 8.8.4.4\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n - https://dns.nextdns.io/\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {}\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n #\n # headscale supports experimental OpenID connect support,\n # it is still being tested and might have some bugs, please\n # help us test it.\n # OpenID Connect\n # oidc:\n # only_start_if_oidc_is_available: true\n # issuer: \"https://your-oidc.issuer.com/path\"\n # client_id: \"your-oidc-client-id\"\n # client_secret: \"your-oidc-client-secret\"\n # # Alternatively, set `client_secret_path` to read the secret from the file.\n # # It resolves environment variables, making integration to systemd's\n # # `LoadCredential` straightforward:\n # client_secret_path: \"/home/ubuntu/my-media-stack/secrets/oidc_client_secret\"\n # # client_secret and client_secret_path are mutually exclusive.\n #\n # # The amount of time from a node is authenticated with OpenID until it\n # # expires and needs to reauthenticate.\n # # Setting the value to \"0\" will mean no expiry.\n # expiry: 180d\n #\n # # Use the expiry from the token received from OpenID when the user logged\n # # in, this will typically lead to frequent need to reauthenticate and should\n # # only been enabled if you know what you are doing.\n # # Note: enabling this will cause `oidc.expiry` to be ignored.\n # use_expiry_from_token: false\n #\n # # Customize the scopes used in the OIDC flow, defaults to \"openid\", \"profile\" and \"email\" and add custom query\n # # parameters to the Authorize Endpoint request. Scopes default to \"openid\", \"profile\" and \"email\".\n #\n # scope: [\"openid\", \"profile\", \"email\", \"custom\"]\n # extra_params:\n # domain_hint: example.com\n #\n # # List allowed principal domains and/or users. If an authenticated user's domain is not in this list, the\n # # authentication request will be rejected.\n #\n # allowed_domains:\n # - example.com\n # # Note: Groups from keycloak have a leading '/'\n # allowed_groups:\n # - /headscale\n # allowed_users:\n # - alice@example.com\n #\n # # Optional: PKCE (Proof Key for Code Exchange) configuration\n # # PKCE adds an additional layer of security to the OAuth 2.0 authorization code flow\n # # by preventing authorization code interception attacks\n # # See https://datatracker.ietf.org/doc/html/rfc7636\n # pkce:\n # # Enable or disable PKCE support (default: false)\n # enabled: false\n # # PKCE method to use:\n # # - plain: Use plain code verifier\n # # - S256: Use SHA256 hashed code verifier (default, recommended)\n # method: S256\n #Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: false\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: false\n homer-config.yml:\n name: my-media-stack_homer-config.yml\n content: \"# Homepage configuration\\n# See https://fontawesome.com/icons for icons options\\n\\n# Optional: Use external configuration file.\\n# Using this will ignore remaining config in this file\\n# externalConfig: https://$DOMAIN/server-luci/config.yaml\\nsubtitle: \\\"boCLOUD ...\\\"\\ntitle: \\\"boCLOUD!\\\"\\ndocumentTitle: \\\"$DOMAIN - micklethefickle\\\" # Customize the browser tab text\\n# Alternatively a fa icon can be provided:\\nicon: \\\"fas fa-wand-magic-sparkles\\\"\\n#logo: https://$DOMAIN/images/logo.png\\nheader: true # Set to false to hide the header\\nfooter: Version 1.417.0\\ncolumns: \\\"3\\\" # \\\"auto\\\" or number (must be a factor of 12: 1, 2, 3, 4, 6, 12)\\nconnectivityCheck: false # whether you want to display a message when the apps are not accessible anymore (VPN disconnected for example)\\n# Optional theming\\n# theme: default # 'default' or one of the themes available in 'src/assets/themes'.\\n# Optional custom stylesheet\\n# Will load custom CSS files. Especially useful for custom icon sets.\\n#stylesheet:\\n# - \\\"assets/custom.css\\\"\\n# Here is the exhaustive list of customization parameters\\n# However all value are optional and will fallback to default if not set.\\n# if you want to change only some of the colors, feel free to remove all unused key.\\ncolors:\\n light:\\n highlight-primary: \\\"#222526\\\"\\n highlight-secondary: \\\"#4285F4\\\"\\n highlight-hover: \\\"#5A95F5\\\"\\n background: \\\"#222526\\\"\\n card-background: \\\"#FFFFFF\\\"\\n text: \\\"#363636\\\"\\n text-header: \\\"#FFFFFF\\\"\\n text-title: \\\"#303030\\\"\\n text-subtitle: \\\"#424242\\\"\\n card-shadow: \\\"rgba(0, 0, 0, 0.1)\\\"\\n link-hover: \\\"#363636\\\"\\n background-image: /assets/backgrounds/background-light.jpg\\n dark:\\n highlight-primary: \\\"#222526\\\"\\n highlight-secondary: \\\"#4285F4\\\"\\n highlight-hover: \\\"#5A95F5\\\"\\n background: \\\"#222526\\\"\\n card-background: \\\"#2B2B2B\\\"\\n text: \\\"#EAEAEA\\\"\\n text-header: \\\"#FFFFFF\\\"\\n text-title: \\\"#FAFAFA\\\"\\n text-subtitle: \\\"#F5F5F5\\\"\\n card-shadow: \\\"rgba(0, 0, 0, 0.4)\\\"\\n link-hover: \\\"#FFDD57\\\"\\n background-image: /assets/backgrounds/background-dark.jpg\\n# Optional message\\nmessage:\\n url: \\\"https://$DOMAIN/assets/message/message.json\\\"\\n # mapping:\\n # content: 'message'\\n # style: 'style'\\n # title: 'title'\\n refreshInterval: 10000\\n icon: \\\"fas fa-door-open\\\"\\n# Optional navbar\\n# links: [] # Allows for navbar (dark mode, layout, and search) without any links\\nlinks:\\n - name: \\\"Apps\\\"\\n icon: \\\"fas fa-couch\\\"\\n url: \\\"#config\\\"\\n - name: \\\"Health\\\"\\n icon: \\\"fas fa-heartbeat\\\"\\n url: \\\"https://homer-health.$DOMAIN\\\"\\n target: \\\"_blank\\\" # optional html tag target attribute\\n# Services\\n# First level array represents a group.\\n# Leave only a \\\"items\\\" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).\\nservices:\\n - name: \\\"Consume Media\\\"\\n icon: \\\"fas fa-couch\\\"\\n # A path to an image can also be provided. Note that icon take precedence if both icon and logo are set.\\n # logo: \\\"path/to/logo\\\"\\n items:\\n - name: \\\"Plex\\\"\\n logo: \\\"assets/png/plex.png\\\"\\n # Alternatively a fa icon can be provided:\\n # icon: \\\"fab fa-photo-video\\\"\\n subtitle: \\\"Watch Movies/TV\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://plex.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Jellyfin\\\"\\n logo: \\\"assets/png/jellyfin.png\\\"\\n subtitle: \\\"Watch Movies/TV\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://jellyfin.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Manage Media\\\"\\n icon: \\\"fas fa-photo-video\\\"\\n items:\\n - name: \\\"Wizarr\\\"\\n icon: \\\"fas fa-hat-wizard\\\"\\n subtitle: \\\"Manage Plex / Emby / Jellyfin Accounts / Invites\\\"\\n tag: \\\"public\\\"\\n tagstyle: \\\"is-danger\\\"\\n url: \\\"https://wizarr.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Riven\\\"\\n icon: \\\"fas fa-mountain\\\"\\n subtitle: \\\"All-in-one Debrid Media Management\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://riven.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Riven (backend)\\\"\\n icon: \\\"fas fa-mountain\\\"\\n subtitle: \\\"Geek out over Riven's backend\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://riven-backend.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Download Media\\\"\\n icon: \\\"fas fa-cloud-arrow-down\\\"\\n items:\\n - name: \\\"Zurg\\\"\\n logo: \\\"assets/png/real-debrid.png\\\"\\n subtitle: \\\"Manage RealDebrid Mount\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://zurg.$DOMAIN/http/\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Tools\\\"\\n icon: \\\"fas fa-toolbox\\\"\\n items:\\n - name: \\\"FileBrowser\\\"\\n logo: \\\"assets/png/filebrowser.png\\\"\\n subtitle: \\\"Manage Files\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://filebrowser.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"code-server\\\"\\n icon: \\\"fas fa-terminal\\\"\\n subtitle: \\\"Enter the code-server.. \\U0001FA84\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://code-server.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Rclone\\\"\\n icon: \\\"fas fa-truck\\\"\\n items:\\n - name: \\\"Rclone Remotes\\\"\\n logo: \\\"assets/png/rclone.png\\\"\\n subtitle: \\\"Rclone remotes\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://filebrowser.$DOMAIN/files/config/rclone/rclone.conf\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n - name: \\\"Rclone UI\\\"\\n logo: \\\"assets/png/rclone.png\\\"\\n subtitle: \\\"Rclone UI\\\"\\n tag: \\\"protected\\\"\\n tagstyle: \\\"is-success\\\"\\n url: \\\"https://rclone.$DOMAIN\\\"\\n target: \\\"_blank\\\" # Optional html tag target attribute\\n\"\n premiumize-auth:\n name: my-media-stack_premiumize-auth\n content: |\n 117274388\n 6i6zgswm35baj3ur\n premiumize-ca:\n name: my-media-stack_premiumize-ca\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n rclone-mounts.json:\n name: my-media-stack_rclone-mounts.json\n content: |\n [\n {\n \"fs\": \"zurg:\",\n \"mountPoint\": \"/mnt/remote/realdebrid\",\n \"mainOpt\": {\n \"LogLevel\": \"DEBUG\"\n },\n \"LogLevel\": \"DEBUG\",\n \"mountOpt\": {\n \"GID\": 121,\n \"UID\": 1001,\n \"AllowNonEmpty\": true,\n \"AllowOther\": true,\n \"AttrTimeout\": \"87600h\",\n \"DirCacheTime\": \"60s\",\n \"DirPerms\": \"0777\",\n \"FilePerms\": \"0666\",\n \"PollInterval\": \"30s\",\n \"ExtraFlags\": [\n \"--config=/config/rclone/rclone.conf\",\n \"--log-level=DEBUG\",\n \"--log-file=/config/rclone/rclone.log\"\n ]\n },\n \"vfsOpt\": {\n \"BufferSize\": \"128M\",\n \"CacheMaxAge\": \"2m\",\n \"CacheMaxSize\": \"100G\",\n \"CacheMode\": \"full\",\n \"CachePollInterval\": \"30s\",\n \"ChunkSize\": \"2M\",\n \"ChunkSizeLimit\": \"64M\",\n \"DiskSpaceTotalSize\": \"1T\",\n \"FastFingerprint\": true,\n \"MinFreeSpace\": \"1G\",\n \"ReadAhead\": \"128M\",\n \"ReadWait\": \"40ms\",\n \"ExtraOptions\": [\n \"--vfs-refresh\",\n \"--transfers=16\",\n \"--checkers=16\",\n \"--multi-thread-streams=4\",\n \"--cache-dir=/mnt/remote/cache/zurg\"\n ]\n }\n }\n ]\n rclone-rclone.conf:\n name: my-media-stack_rclone-rclone.conf\n content: |\n [rdhttp]\n type = http\n url = https://my.real-debrid.com/{SUDO_PASSWORD}/\n no_head = false\n no_slash = false\n\n [rd-webdav]\n type = webdav\n url = https://dav.real-debrid.com/\n vendor = other\n user = null\n pass = null\n\n [rdhttp2]\n type = http\n url = https://my.real-debrid.com/{SUDO_PASSWORD}/\n no_head = false\n no_slash = false\n\n [rd-webdav2]\n type = webdav\n url = https://dav.real-debrid.com/\n vendor = other\n user = null\n pass = null\n\n [zurg]\n type = webdav\n url = http://zurg:9999/dav\n vendor = other\n pacer_min_sleep = 0\n riven-settings.json:\n name: my-media-stack_riven-settings.json\n content: |\n {\n \"version\": \"0.21.21\",\n \"api_key\": \"3e0be750b16ff363727d05d18ba364fd\",\n \"debug\": false,\n \"debug_database\": false,\n \"log\": true,\n \"force_refresh\": false,\n \"map_metadata\": true,\n \"tracemalloc\": false,\n \"symlink\": {\n \"rclone_path\": \"/mnt/remote/realdebrid/__all__\",\n \"library_path\": \"/mnt/symlinks\",\n \"separate_anime_dirs\": true,\n \"repair_symlinks\": true,\n \"repair_interval\": 6.0\n },\n \"updaters\": {\n \"updater_interval\": 120,\n \"plex\": {\n \"enabled\": true,\n \"token\": \"18rS6gM-Wec22uq5Gw-U\",\n \"url\": \"http://plex:32400\"\n },\n \"jellyfin\": {\n \"enabled\": true,\n \"api_key\": \"e0dd06e8809143a69c7c6ba174bbe129\",\n \"url\": \"http://jellyfin:8096\"\n },\n \"emby\": {\n \"enabled\": false,\n \"api_key\": \"\",\n \"url\": \"\"\n }\n },\n \"downloaders\": {\n \"video_extensions\": [\n \"avi\",\n \"mkv\",\n \"mp4\"\n ],\n \"movie_filesize_mb_min\": 700,\n \"movie_filesize_mb_max\": -1,\n \"episode_filesize_mb_min\": 100,\n \"episode_filesize_mb_max\": -1,\n \"proxy_url\": \"http://warp:1080\",\n \"real_debrid\": {\n \"enabled\": true,\n \"api_key\": \"TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA\"\n },\n \"all_debrid\": {\n \"enabled\": false,\n \"api_key\": \"\"\n }\n },\n \"content\": {\n \"overseerr\": {\n \"update_interval\": 30,\n \"enabled\": true,\n \"url\": \"http://overseerr:5055\",\n \"api_key\": \"MTc0MDcxNDk2MTY5MDRmMDcxYmM1LTI5ODktNGJiMy05NzExLTdhYjYyMWQxMDAyOQ==\",\n \"use_webhook\": false\n },\n \"plex_watchlist\": {\n \"update_interval\": 60,\n \"enabled\": true,\n \"rss\": []\n },\n \"mdblist\": {\n \"update_interval\": 300,\n \"enabled\": false,\n \"api_key\": \"\",\n \"lists\": []\n },\n \"listrr\": {\n \"update_interval\": 300,\n \"enabled\": false,\n \"movie_lists\": [],\n \"show_lists\": [],\n \"api_key\": \"d962d6e9fd4e4db790711128ed6013b236e86b1bea534c7f9f0c17a3c4c72982\"\n },\n \"trakt\": {\n \"update_interval\": 3600,\n \"enabled\": true,\n \"api_key\": \"052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\",\n \"watchlist\": [],\n \"user_lists\": [],\n \"collection\": [],\n \"fetch_trending\": false,\n \"trending_count\": 10,\n \"fetch_popular\": false,\n \"popular_count\": 10,\n \"fetch_most_watched\": false,\n \"most_watched_period\": \"weekly\",\n \"most_watched_count\": 10,\n \"oauth\": {\n \"oauth_client_id\": \"052d735c61c723ed670991aee9d6322822ed6766702d66910be63a1e1a511fd0\",\n \"oauth_client_secret\": \"1d5701574cae67023c25a3743f07669bb84ee74628fd8f0a3fc0c9cca51535c3\",\n \"oauth_redirect_uri\": \"urn:ietf:wg:oauth:2.0:oob\",\n \"access_token\": \"efe0bd386fee5cd93c1cc51579fb37cdb65c0e0b9ebc34c7a8e2c547714f7efc\",\n \"refresh_token\": \"\"\n }\n }\n },\n \"scraping\": {\n \"after_2\": 2.0,\n \"after_5\": 6.0,\n \"after_10\": 24.0,\n \"parse_debug\": false,\n \"enable_aliases\": true,\n \"bucket_limit\": 5,\n \"max_failed_attempts\": 0,\n \"dubbed_anime_only\": false,\n \"torrentio\": {\n \"enabled\": true,\n \"filter\": \"sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\",\n \"url\": \"https://torrentio.strem.fun\",\n \"timeout\": 30,\n \"ratelimit\": true,\n \"proxy_url\": \"http://warp:1080\"\n },\n \"knightcrawler\": {\n \"enabled\": false,\n \"filter\": \"sort=qualitysize%7Cqualityfilter=480p,scr,cam,unknown\",\n \"url\": \"https://knightcrawler.elfhosted.com/\",\n \"timeout\": 30,\n \"ratelimit\": true\n },\n \"jackett\": {\n \"enabled\": false,\n \"url\": \"http://jackett:9117\",\n \"api_key\": \"nnx0n84pcj7umynyd2pbid2nl1zzuemz\",\n \"timeout\": 10,\n \"ratelimit\": false\n },\n \"prowlarr\": {\n \"enabled\": false,\n \"url\": \"http://prowlarr:9696\",\n \"api_key\": \"29440a82740d475cacb35327c62c87a1\",\n \"timeout\": 10,\n \"ratelimit\": false,\n \"limiter_seconds\": 60\n },\n \"orionoid\": {\n \"enabled\": false,\n \"api_key\": \"LXBVEGR6DBKLBSBNLPARQHQRH8DGD7PT\",\n \"cached_results_only\": true,\n \"parameters\": {\n \"video3d\": false,\n \"videoquality\": \"sd_hd8k\",\n \"limitcount\": 5\n },\n \"timeout\": 10,\n \"ratelimit\": true\n },\n \"mediafusion\": {\n \"enabled\": false,\n \"url\": \"https://mediafusion.$DOMAIN\",\n \"timeout\": 10,\n \"ratelimit\": true\n },\n \"zilean\": {\n \"enabled\": true,\n \"url\": \"http://zilean.elfhosted.com\",\n \"timeout\": 30,\n \"ratelimit\": false\n },\n \"comet\": {\n \"enabled\": true,\n \"url\": \"http://comet:2020\",\n \"timeout\": 30,\n \"ratelimit\": false,\n \"indexers\": [\n \"animetosho\",\n \"anirena\",\n \"eztv\",\n \"limetorrents\",\n \"nyaasi\",\n \"solidtorrents\",\n \"thepiratebay\",\n \"torlock\",\n \"yts\"\n ]\n }\n },\n \"ranking\": {\n \"profile\": \"default\",\n \"require\": [],\n \"exclude\": [],\n \"preferred\": [],\n \"resolutions\": {\n \"r2160p\": false,\n \"r1080p\": true,\n \"r720p\": true,\n \"r480p\": false,\n \"r360p\": false,\n \"unknown\": true\n },\n \"options\": {\n \"title_similarity\": 0.85,\n \"remove_all_trash\": true,\n \"remove_ranks_under\": -10000,\n \"remove_unknown_languages\": false,\n \"allow_english_in_languages\": true,\n \"enable_fetch_speed_mode\": true,\n \"remove_adult_content\": true\n },\n \"languages\": {\n \"required\": [\n \"en\"\n ],\n \"exclude\": [],\n \"preferred\": [\n \"en\"\n ]\n },\n \"custom_ranks\": {\n \"quality\": {\n \"av1\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"avc\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"bluray\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dvd\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdtv\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hevc\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mpeg\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"remux\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"vhs\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"web\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webdl\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webmux\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"xvid\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"rips\": {\n \"bdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"brrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dvdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"ppvrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"satrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"tvrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"uhdrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"vhsrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webdlrip\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"webrip\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"hdr\": {\n \"bit10\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_vision\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdr\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hdr10plus\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"sdr\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"audio\": {\n \"aac\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"atmos\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_digital\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dolby_digital_plus\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dts_lossy\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dts_lossless\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"flac\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mono\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"mp3\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"stereo\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"surround\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"truehd\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"extras\": {\n \"three_d\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"converted\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"documentary\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"dubbed\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"edition\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"hardcoded\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"network\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"proper\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"repack\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"retail\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"site\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"subbed\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"upscaled\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"scene\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"uncensored\": {\n \"fetch\": true,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n },\n \"trash\": {\n \"cam\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"clean_audio\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"pdtv\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"r5\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"screener\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"size\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"telecine\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n },\n \"telesync\": {\n \"fetch\": false,\n \"use_custom_rank\": false,\n \"rank\": 0\n }\n }\n }\n },\n \"indexer\": {\n \"update_interval\": 3600\n },\n \"database\": {\n \"host\": \"postgresql+psycopg2://postgres:postgres@riven-db:5432/riven\"\n },\n \"notifications\": {\n \"enabled\": true,\n \"on_item_type\": [\n \"movie\",\n \"show\",\n \"season\",\n \"episode\"\n ],\n \"service_urls\": []\n },\n \"post_processing\": {\n \"subliminal\": {\n \"enabled\": true,\n \"languages\": [\n \"eng\"\n ],\n \"providers\": {\n \"opensubtitles\": {\n \"enabled\": true,\n \"username\": \"th3w1zard1\",\n \"password\": \"h4L0m4St3R327\"\n },\n \"opensubtitlescom\": {\n \"enabled\": true,\n \"username\": \"th3w1zard1\",\n \"password\": \"c3ll0h3r0327!\"\n }\n }\n }\n }\n }\n vpn-nl.premiumize.me:\n name: my-media-stack_vpn-nl.premiumize.me\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n auth-user-pass\n client\n resolv-retry infinite\n nobind\n persist-key\n persist-tun\n mute-replay-warnings\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n remote 185.107.94.249 1194\n dev tun0\n mute-replay-warnings\n auth-nocache\n pull-filter ignore \"auth-token\"\n auth-retry nointeract\n suppress-timestamps\n verb 1\n data-ciphers-fallback aes-256-cbc\n data-ciphers aes-256-cbc\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n user nonrootuser\n persist-tun\n persist-key\n zurg-cli_debrid_update.sh:\n name: my-media-stack_zurg-cli_debrid_update.sh\n content: |\n #!/bin/bash\n webhook_url=\"http://cli-debrid:5000/webhook/rclone\" # Replace with your actual webhook URL\n # First notify our webhook for each file\n for arg in \"$$@\"\n do\n arg_clean=$$(echo \"$$arg\" | sed 's/\\\\//g')\n echo \"Notifying webhook for: $$arg_clean\"\n encoded_webhook_arg=$$(echo -n \"$$arg_clean\" | python3 -c \"import sys, urllib.parse as ul; print(ul.quote(sys.stdin.read()))\")\n curl -s -X GET \"$$webhook_url?file=$$encoded_webhook_arg\"\n done\n echo \"Updates completed!\"\n zurg-config.yml:\n name: my-media-stack_zurg-config.yml\n content: |\n # Zurg configuration version\n zurg: v1\n\n # Get your token for the next line from https://real-debrid.com/apitoken\n token: \"UFZDKT6N4WTXCHIAZH5QRHNTQDAD6LPCBN4IYKLL2JRA5HGPH4YQ\"\n\n # additional download tokens - uncomment the lines below, and populate this with your additional tokens to auto-overcome bandwidth limitation issues\n download_tokens:\n - \"TE6M7M2GGBN6H6XT2OZTUQIX42LEPJ4EIZIHTN73HAW2TJUZAFHA\"\n\n # basic functionality\n host: \"[::]\" # do not change this if you are running it inside a docker container\n port: 9999 # do not change this if you are running it inside a docker container\n concurrent_workers: 32\n check_for_changes_every_secs: 30\n\n # misc configs\n retain_folder_name_extension: true # if true, zurg won't modify the filenames from real-debrid\n retain_rd_torrent_name: true # if true, it will strictly follow RD API torrent name property w/c should make this more compatible with rdt-client\n auto_delete_rar_torrents: false # if true, zurg will delete unstreamable rar files (these torrents will always be compressed in a rar archive no matter what files you select)\n use_download_cache: false # if true, during zurg initialization, it will fetch all downloads to unrestrict links faster\n\n enable_repair: true\n repair_every_mins: 60\n\n ###on_library_update: sh plex_update.sh \"$$@\"\n ignore_renames: true\n\n # do a RD speed test on every start\n cache_network_test_results: false\n\n # network configs\n network_buffer_size: 1048576 # 1 MiB\n serve_from_rclone: false\n verify_download_link: true # if true, zurg will check if the link is truly streamable; only relevant if serve_from_rclone is set to true (as it already does this all the time if serve_from_rclone is false)\n force_ipv6: false # force connect to real-debrid ipv6 addresses\n rate_limit_sleep_secs: 6 # wait time after getting a 429 from Real-Debrid API\n realdebrid_timeout_secs: 60 # api timeout\n retries_until_failed: 5 # api failures until considered failed\n get_torrents_count: 5000\n\n rar_action: extract\n\n addl_playable_extensions:\n - avi\n - flac\n - m4b\n - mkv\n - mp3\n - mp4\n\n # List of directory definitions and their filtering rules\n directories:\n audiobooks:\n group_order: 5\n group: media\n filters:\n - and:\n - is_music: true\n - media_info_duration_gte: 600\n\n music:\n group_order: 10\n group: media\n filters:\n - is_music: true\n\n anime:\n group_order: 15\n group: media\n filters:\n - regex: /\\b[a-fA-F0-9]{8}\\b/\n - any_file_inside_regex: /\\b[a-fA-F0-9]{8}\\b/\n\n shows:\n group_order: 20\n group: media\n filters:\n - has_episodes: true\n\n movies:\n group_order: 25\n group: media\n only_show_the_biggest_file: true\n filters:\n - regex: /.*/\n\n restrict_repair_to_cached: true\nx-common-env:\n PGID: \"121\"\n PUID: \"1001\"\n TZ: America/Chicago\n UMASK: \"002\"\nx-common-firecrawl-api:\n BULL_AUTH_KEY: sk_m6u2KpEW_NgijX00A_GnTJY3btGgGh01tSPO4oOpJ1Zk\n HOST: 0.0.0.0\n LOGGING_LEVEL: DEBUG\n MAX_CPU: 0\n MAX_RAM: 0\n NUM_WORKERS_PER_QUEUE: \"8\"\n OPENAI_API_KEY: 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\n PGID: \"121\"\n PLAYWRIGHT_MICROSERVICE_URL: http://firecrawl-playwright:3000/html\n PORT: \"3002\"\n PUID: \"1001\"\n REDIS_RATE_LIMIT_URL: redis://10.76.128.87:6379\n REDIS_URL: redis://10.76.128.87:6379\n SEARXNG_ENDPOINT: http://searxng:8888\n TZ: America/Chicago\n UMASK: \"002\"\n USE_DB_AUTHENTICATION: \"false\"\nx-common-hostname-aliases:\n - host.docker.internal:host-gateway\n - boden-iphone:100.97.148.14\n - beatapostapita:100.99.45.35\n - micklethefickle:100.72.149.123\n - micklethefickle3:100.72.149.123\n - wizard:100.119.187.62\n - wizard-pc:100.119.187.62\n - warp:10.76.128.97\n - comet:10.76.128.97\n - jackett:10.76.128.97\n - jackettio:10.76.128.97\n - localhost:10.76.128.97\n - mediafusion:10.76.128.97\n - prowlarr:10.76.128.97\n - stremio-jackett:10.76.128.97\n - zurg:10.76.128.97\n - mediaflow-proxy:10.76.128.97\n - deluge:10.76.128.97\n - stremio-web:10.76.128.97\n - stremio-https-server:10.76.128.97\n - stremio-fallback:10.76.128.97\n - gluetun-premiumize-nl:10.76.128.119\n - transmission:10.76.128.119\n - qbittorrent:10.76.128.119\nx-common-logging:\n logging:\n driver: local\n options:\n max-file: \"5\"\n max-size: 10m\nx-common-uidgid:\n user: 1001:121\nx-gluetun-hosts-workaround:\n - host.docker.internal:host-gateway\n - boden-iphone:100.97.148.14\n - beatapostapita:100.99.45.35\n - micklethefickle:100.72.149.123\n - micklethefickle3:100.72.149.123\n - wizard:100.119.187.62\n - wizard-pc:100.119.187.62\n - warp:10.76.128.97\n - comet:10.76.128.97\n - jackett:10.76.128.97\n - jackettio:10.76.128.97\n - localhost:10.76.128.97\n - mediafusion:10.76.128.97\n - prowlarr:10.76.128.97\n - stremio-jackett:10.76.128.97\n - zurg:10.76.128.97\n - mediaflow-proxy:10.76.128.97\n - deluge:10.76.128.97\n - stremio-web:10.76.128.97\n - stremio-https-server:10.76.128.97\n - stremio-fallback:10.76.128.97\n - gluetun-premiumize-nl:10.76.128.119\n - transmission:10.76.128.119\n - qbittorrent:10.76.128.119\n - dash:10.76.128.23\n - gpt-researcher:10.76.128.43\n - gptr:10.76.128.43\n - qdrant:10.76.128.44\n - bocloud-nextjs:10.76.128.45\n - lobechat:10.76.128.46\n - mongodb:10.76.0.50\n - code-demo:10.76.128.80\n - whoami:10.76.128.81\n - tinyauth:10.76.128.82\n - watchtower:10.76.128.83\n - maintainerr:10.76.128.84\n - traefik:10.76.128.85\n - speedtest:10.76.128.86\n - redis:10.76.128.87\n - homepage:10.76.128.88\n - dozzle:10.76.128.89\n - searxng:10.76.128.90\n - code-server:10.76.128.92\n - byparr:10.76.128.93\n - flaresolverr:10.76.128.93\n - nginx-auth:10.76.128.94\n - plex:10.76.128.95\n - code:10.76.128.96\n - stremthru:10.76.128.99\n - riven-frontend:10.76.128.100\n - riven:10.76.128.101\n - riven-backend:10.76.128.101\n - riven-db:10.76.128.102\n - tautulli:10.76.128.103\n - crowdsec:10.76.128.104\n - gatus:10.76.128.105\n - homer:10.76.0.106\n - wizarr:10.76.128.107\n - plex-watchlist:10.76.52.97\n - realdebrid-account-monitor:10.76.128.109\n - rclone:10.76.128.111\n - plex-authentication:10.76.128.112\n - plex-request:10.76.128.113\n - jellyseerr:10.76.128.115\n - overseerr:10.76.128.116\n - jellyfin:10.76.128.120\n - radarr:10.76.128.121\n - sonarr:10.76.128.122\n - sonarr-anime:10.76.128.123\n - firecrawl-api:10.76.128.127\n - firecrawl-worker:10.76.128.128\n - firecrawl-playwright:10.76.128.130\n - decluttarr:10.76.128.21\n - whisparr:10.76.0.120\n - aiostreams:10.76.128.200\n - plex-repair:10.76.0.115\n - script-runner:10.76.0.116\n - recyclarr:10.76.0.117\n - open-webui:10.76.128.118\n - autoscan:10.76.0.119\nx-resource-limits:\n labels:\n autoheal: \"true\"\n"}}, "compose/old/old_main_composes/docker-compose.aio.yml": {"a92266f4a4a5ea8c570df86cb1c0141e73bdb537": {"t": 1785747424.6654334, "n": 294239, "h": "05379115f686d006", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\nx-common-hostname-aliases: &common-hostname-aliases\n - host.docker.internal:host-gateway\n\nx-local-ips: &local-ips\n - \"10.0.0.0/8\" # RFC 1918 Private Networks (IPv4)\n - \"172.16.0.0/12\"\n - \"192.168.0.0/16\"\n - \"169.254.0.0/16\" # RFC 3927 Link-Local (IPv4)\n - \"127.0.0.0/8\" # RFC 5735 Loopback (IPv4)\n - \"fc00::/7\" # RFC 4193 Unique Local (IPv6)\n - \"fe80::/10\" # RFC 4291 Link-Local (IPv6)\n - \"::1/128\" # RFC 4291 Loopback (IPv6)\n - \"2002::/16\" # RFC 3056 6to4 (IPv6)\n - \"100.64.0.0/10\" # Tailscale CGNAT range\n\nx-cloudflare-ips: &cloudflare-ips\n - \"103.21.244.0/22\"\n - \"103.22.200.0/22\"\n - \"103.31.4.0/22\"\n - \"104.16.0.0/13\"\n - \"104.24.0.0/14\"\n - \"108.162.192.0/18\"\n - \"131.0.72.0/22\"\n - \"141.101.64.0/18\"\n - \"162.158.0.0/15\"\n - \"172.64.0.0/13\"\n - \"173.245.48.0/20\"\n - \"188.114.96.0/20\"\n - \"190.93.240.0/20\"\n - \"197.234.240.0/22\"\n - \"198.41.128.0/17\"\n - \"2400:cb00::/32\"\n - \"2606:4700::/32\"\n - \"2803:f800::/32\"\n - \"2405:b500::/32\"\n - \"2405:8100::/32\"\n - \"2a06:98c0::/29\"\n - \"2c0f:f248::/32\"\n\nx-trusted-ips: &trusted-ips\n - *local-ips\n - *cloudflare-ips\n\n\nconfigs:\n #######################################################################################\n # Prometheus Configurations\n #######################################################################################\n prometheus.yml:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n # my global config\n global:\n scrape_interval: 15s # By default, scrape targets every 15 seconds.\n evaluation_interval: 15s # By default, scrape targets every 15 seconds.\n # scrape_timeout is set to the global default (10s).\n # Attach these labels to any time series or alerts when communicating with\n # external systems (federation, remote storage, Alertmanager).\n external_labels:\n monitor: 'my-project'\n # Load and evaluate rules in this file every 'evaluation_interval' seconds.\n rule_files:\n - 'alert.rules'\n # - \"first.rules\"\n # - \"second.rules\"\n # alert\n # alerting:\n # alertmanagers:\n # - scheme: http\n # static_configs:\n # - targets:\n # - \"alertmanager:9093\"\n # A scrape configuration containing exactly one endpoint to scrape:\n # Here it's Prometheus itself.\n scrape_configs:\n # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n - job_name: 'prometheus'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:9090']\n - job_name: 'traefik'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n dns_sd_configs:\n - names:\n - 'tasks.traefik'\n type: 'A'\n port: 8080\n alert.rules:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n groups:\n - name: bolabaden\n rules:\n\n # Alert for any instance that is unreachable for >2 minutes.\n - alert: service_down\n expr: up == 0\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} down\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} has been down for more than 2 minutes.\"\n\n - alert: high_load\n expr: node_load1 > 0.5\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} under high load\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} is under high load.\"\n #######################################################################################\n # Gluetun Configurations\n #######################################################################################\n premiumize-auth.txt: # Premiumize authentication file (shared across all Premiumize VPN endpoints)\n content: |\n $PREMIUMIZE_CUSTOMER_ID\n $PREMIUMIZE_API_KEY\n gluetun-auth-config.toml:\n content: |\n [[roles]]\n name = \"public\"\n routes = [\n \"GET /v1/openvpn/status\",\n \"PUT /v1/openvpn/status\",\n \"GET /v1/openvpn/portforwarded\",\n \"GET /v1/openvpn/settings\",\n \"GET /v1/dns/status\",\n \"PUT /v1/dns/status\",\n \"GET /v1/updater/status\",\n \"PUT /v1/updater/status\",\n \"GET /v1/publicip/ip\"\n ]\n auth = \"none\"\n premiumize-ca.cert: # Premiumize CA certificate (shared across all Premiumize VPN endpoints)\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n vpn-nl.premiumize.me:\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n client\n resolv-retry infinite\n nobind\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n remote 185.107.94.249 1194\n persist-tun\n persist-key\n #######################################################################################\n # Stremio Configurations\n #######################################################################################\n mediafusion-nginx-config:\n content: |\n user nginx;\n worker_processes 1;\n\n events {\n worker_connections 1024;\n }\n\n http {\n include mime.types;\n default_type application/octet-stream;\n sendfile on;\n keepalive_timeout 65;\n\n server {\n listen 443 ssl;\n server_name mediafusion.local;\n\n ssl_certificate /etc/ssl/certs/mediafusion.local.pem;\n ssl_certificate_key /etc/ssl/private/mediafusion.local-key.pem;\n\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n\n location / {\n proxy_pass ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000};\n proxy_set_header Host $$host;\n proxy_set_header X-Real-IP $$remote_addr;\n proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $$scheme;\n }\n }\n }\n nginx-proxy-config.conf:\n content: |\n # Custom nginx configuration for nginx-proxy\n client_max_body_size 100m;\n proxy_connect_timeout 600s;\n proxy_send_timeout 600s;\n proxy_read_timeout 600s;\n proxy_buffering off;\n proxy_request_buffering off;\n # Enable gzip compression\n gzip on;\n gzip_vary on;\n gzip_min_length 1024;\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n # Security headers\n add_header X-Frame-Options DENY always;\n add_header X-Content-Type-Options nosniff always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\n prowlarr_indexers.json:\n content: |\n [\n {\n \"indexerUrls\": [\n \"https://bitsearch.to/\"\n ],\n \"legacyUrls\": [\n \"https://bitsearch.nocensor.cloud/\",\n \"https://bitsearch.mrunblock.bond/\"\n ],\n \"definitionName\": \"bitsearch\",\n \"description\": \"BitSearch is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitsearch\",\n \"name\": \"BitSearch\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitsearch\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitsearch\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://thepiratebay.org/\",\n \"https://thepiratebay.unblockninja.com/\",\n \"https://thepiratebay.ninjaproxy1.com/\",\n \"https://tpb.proxyninja.org/\",\n \"https://thepiratebay.torrentbay.st/\",\n \"https://tpb31.ukpass.co/\",\n \"https://tpb.skynetcloud.site/\",\n \"https://piratehaven.xyz/\",\n \"https://mirrorbay.top/\",\n \"https://thepiratebay0.org/\",\n \"https://thepiratebay10.org/\",\n \"https://pirateproxylive.org/\",\n \"https://thehiddenbay.com/\",\n \"https://thepiratebay.zone/\",\n \"https://tpb.party/\",\n \"https://piratebayproxy.live/\",\n \"https://piratebay.live/\",\n \"https://piratebay.party/\",\n \"https://thepiratebay.party/\",\n \"https://pirate-proxy.africa/\",\n \"https://thepiratebaye.org/\",\n \"https://5mins.eu/\",\n \"https://thepiratebay.cloud/\",\n \"https://tpb-proxy.xyz/\",\n \"https://piratebay.army/\",\n \"https://tpb-visit.me/\",\n \"https://tpb.re/\",\n \"https://pirate-proxy.ong/\"\n ],\n \"legacyUrls\": [\n \"https://pirate-proxy.page/\",\n \"https://5mins.shop/\",\n \"https://tpb.surf/\",\n \"https://tpb.monster/\",\n \"https://thepiratebay.host/\",\n \"https://piratetoday.xyz/\",\n \"https://tpb.wtf/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.onion.ly/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.to/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.link/\",\n \"https://tpb25.ukpass.co/\",\n \"https://tpb29.ukpass.co/\",\n \"https://piratenow.xyz/\",\n \"https://pirate-proxy.ink/\",\n \"https://proxifiedpiratebay.org/\",\n \"https://unlockedpiratebay.com/\",\n \"https://tpb.one/\",\n \"https://piratebayorg.net/\",\n \"https://tpbproxy.click/\",\n \"https://pirateproxy.live/\",\n \"https://ukpiratebay.org/\",\n \"https://piratebay.by/\",\n \"https://pirate-proxy.date/\",\n \"https://thepirateproxy.net/\",\n \"https://thepiratebay.abcproxy.org/\"\n ],\n \"definitionName\": \"thepiratebay\",\n \"description\": \"The Pirate Bay (TPB) is the galaxy’s most resilient Public BitTorrent site\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n },\n {\n \"id\": 6040,\n \"name\": \"XXX/x264\",\n \"subCategories\": []\n },\n {\n \"id\": 6045,\n \"name\": \"XXX/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 6070,\n \"name\": \"XXX/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7050,\n \"name\": \"Books/Other\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"pirate bay\",\n \"name\": \"The Pirate Bay\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"thepiratebay\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_api\",\n \"value\": \"This indexer uses the API at https://apibay.org/ to get its official TPB data. Choose any site link that you can access/prefer so that you can view the torrent details page when browsing the search results for this indexer.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#thepiratebay\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://therarbg.to/\",\n \"https://t-rb.org/\",\n \"https://the.rarbg.club/\",\n \"https://trb.archivebay.online/\",\n \"https://trb.t-pb.org/\",\n \"https://trb.themirror.wiki/\",\n \"https://torrentlite.org/\",\n \"https://rarbg.unblockninja.com/\",\n \"https://rarbg.ninjaproxy1.com/\",\n \"https://rarbg.proxyninja.org/\",\n \"https://rarbg.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://therarbg.com/\"\n ],\n \"definitionName\": \"therarbg\",\n \"description\": \"TheRARBG is a Public site inspired by RARBG.to for TV / MOVIES / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"therarbg\",\n \"name\": \"TheRARBG\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"therarbg\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#therarbg\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torlock.com/\",\n \"https://www.torlock2.com/\"\n ],\n \"legacyUrls\": [\n \"https://torlock.com/\",\n \"https://www.torlock.icu/\",\n \"https://torlock.mrunblock.guru/\",\n \"https://torlock.unblockit.click/\",\n \"https://torlock.unblockit.asia/\",\n \"https://torlock.mrunblock.life/\",\n \"https://torlock.unblockit.mov/\",\n \"https://torlock.unblockit.rsvp/\",\n \"https://torlock.unblockit.vegas/\",\n \"https://torlock.unblockit.esq/\",\n \"https://torlock.unblockit.zip/\",\n \"https://torlock.unblockit.foo/\",\n \"https://torlock.unblockit.ing/\",\n \"https://torlock.nocensor.cloud/\",\n \"https://torlock.mrunblock.bond/\",\n \"https://torlock.unblockit.date/\",\n \"https://torlock.unblockit.dad/\",\n \"https://torlock.unblockit.africa/\",\n \"https://torlock.unblockit.casa/\",\n \"https://torlock.unblockit.sbs/\",\n \"https://torlock.unblockit.ong/\"\n ],\n \"definitionName\": \"torlock\",\n \"description\": \"Torlock is a torrent search site that lists verified torrents only for TV series and movies\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torlock\",\n \"name\": \"Torlock\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torlock\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torlock\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownloads.pro/\",\n \"https://torrentdownloads.unblockit.ong/\",\n \"https://torrentdownloads.unblockninja.com/\",\n \"https://torrentdownloads.ninjaproxy1.com/\",\n \"https://torrentdownloads.proxyninja.org/\"\n ],\n \"legacyUrls\": [\n \"https://www.torrentdownloads.me/\",\n \"https://www.torrentdownloads.info/\",\n \"https://torrentdownloads.mrunblock.guru/\",\n \"https://torrentdownloads.unblockit.click/\",\n \"https://torrentdownloads.unblockit.asia/\",\n \"https://torrentdownloads.unblockit.mov/\",\n \"https://torrentdownloads.mrunblock.life/\",\n \"https://torrentdownloads.unblockit.rsvp/\",\n \"https://torrentdownloads.unblockit.vegas/\",\n \"https://torrentdownloads.unblockit.esq/\",\n \"https://torrentdownloads.unblockit.zip/\",\n \"https://torrentdownloads.unblockit.foo/\",\n \"https://torrentdownloads.unblockit.ing/\",\n \"https://torrentdownloads.mrunblock.bond/\",\n \"https://torrentdownloads.nocensor.cloud/\",\n \"https://torrentdownloads.unblockit.date/\",\n \"https://torrentdownloads.unblockit.dad/\",\n \"https://torrentdownloads.unblockit.africa/\",\n \"https://torrentdownloads.unblockit.casa/\",\n \"https://torrentdownloads.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownloads\",\n \"description\": \"Torrent Downloads (TD) is a Public torrent site for all kinds of content\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrent downloads\",\n \"name\": \"Torrent Downloads\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownloads\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownloads\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yourbittorrent.com/\",\n \"https://yourbittorrent2.com/\"\n ],\n \"legacyUrls\": [\n \"https://yourbittorrent.host/\",\n \"https://yourbittorrent.nocensor.space/\",\n \"https://yourbittorrent.nocensor.work/\",\n \"https://yourbittorrent.nocensor.biz/\",\n \"https://yourbittorrent.nocensor.sbs/\",\n \"https://yourbittorrent.nocensor.world/\",\n \"https://yourbittorrent.nocensor.lol/\",\n \"https://yourbittorrent.mrunblock.guru/\",\n \"https://yourbittorrent.mrunblock.life/\",\n \"https://yourbittorrent.nocensor.click/\",\n \"https://yourbittorrent.nocensor.cloud/\",\n \"https://yourbittorrent.mrunblock.bond/\"\n ],\n \"definitionName\": \"yourbittorrent\",\n \"description\": \"YourBittorrent is a Public torrent index\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yourbittorrent\",\n \"name\": \"YourBittorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yourbittorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yourbittorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://1337x.to/\",\n \"https://1337x.st/\",\n \"https://x1337x.ws/\",\n \"https://x1337x.eu/\",\n \"https://x1337x.se/\",\n \"https://1337x.so/\",\n \"https://1337x.abcproxy.org/\",\n \"https://1337x.unblockninja.com/\",\n \"https://1337x.ninjaproxy1.com/\",\n \"https://1337x.proxyninja.org/\",\n \"https://1337x.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://1337x.is/\",\n \"https://1337x.gd/\",\n \"https://1337x.mrunblock.guru/\",\n \"https://1337x.mrunblock.life/\",\n \"https://1337x.unblockit.click/\",\n \"https://1337x.unblockit.asia/\",\n \"https://1337x.unblockit.mov/\",\n \"https://1337x.unblockit.rsvp/\",\n \"https://1337x.unblockit.vegas/\",\n \"https://1337x.unblockit.esq/\",\n \"https://1337x.unblockit.zip/\",\n \"https://1337x.unblockit.foo/\",\n \"https://1337x.unblockit.ing/\",\n \"https://1337x.mrunblock.bond/\",\n \"https://1337x.unblockit.date/\",\n \"https://1337x.unblockit.dad/\",\n \"https://1337x.unblockit.africa/\",\n \"https://1337x.unblockit.casa/\",\n \"https://unblockit.sbs/\",\n \"https://unblockit.ong/\"\n ],\n \"definitionName\": \"1337x\",\n \"description\": \"1337X is a Public torrent site that offers verified torrent downloads\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2010,\n \"name\": \"Movies/Foreign\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1080,\n \"name\": \"Console/PS3\",\n \"subCategories\": []\n },\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1010,\n \"name\": \"Console/NDS\",\n \"subCategories\": []\n },\n {\n \"id\": 1110,\n \"name\": \"Console/3DS\",\n \"subCategories\": []\n },\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"1337x\",\n \"name\": \"1337x\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"1337x\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)\"\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#1337x\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://bitru.org/\"\n ],\n \"legacyUrls\": [\n \"http://bitru.org/\"\n ],\n \"definitionName\": \"bitru\",\n \"description\": \"BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitru\",\n \"name\": \"BitRu\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"adverts\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://badasstorrents.com/\"\n ],\n \"legacyUrls\": [\n \"https://badasstorrents.nocensor.work/\",\n \"https://badasstorrents.nocensor.biz/\",\n \"https://badasstorrents.nocensor.sbs/\",\n \"https://badasstorrents.nocensor.world/\",\n \"https://badasstorrents.nocensor.lol/\",\n \"https://badasstorrents.nocensor.art/\",\n \"https://badasstorrents.mrunblock.guru/\",\n \"https://badasstorrents.mrunblock.life/\",\n \"https://badasstorrents.nocensor.click/\",\n \"https://badasstorrents.mrunblock.bond/\",\n \"https://badasstorrents.nocensor.cloud/\"\n ],\n \"definitionName\": \"badasstorrents\",\n \"description\": \"Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"badass torrents\",\n \"name\": \"Badass Torrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"badasstorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#badasstorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://archive.org/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"internetarchive\",\n \"description\": \"Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"internet archive\",\n \"name\": \"Internet Archive\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"internetarchive\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"titleOnly\",\n \"value\": false\n },\n {\n \"name\": \"noMagnet\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#internetarchive\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.gktorrent.pm/\"\n ],\n \"legacyUrls\": [\n \"https://www.rantop.org/\",\n \"https://www.torrent.ws/\",\n \"https://gktorrent.mrunblock.guru/\",\n \"https://gktorrent.mrunblock.life/\",\n \"https://gktorrent.nocensor.click/\",\n \"https://www.gktorrent.ac/\",\n \"https://www.gktorrent.ph/\",\n \"https://www.gktorrent.vc/\",\n \"https://www.gktorrent.mx/\",\n \"https://www.gktorrent.fi/\",\n \"https://www.gktorrent.wf/\",\n \"https://gktorrent.nocensor.cloud/\",\n \"https://gktorrent.mrunblock.bond/\",\n \"https://www.gktorrent.wtf/\",\n \"https://www.gktorrent.vg/\",\n \"https://www.gktorrent.lol/\",\n \"https://www.gktorrent.sh/\",\n \"https://www.gktorrent.eu/\",\n \"https://www.gktorrent.xyz/\"\n ],\n \"definitionName\": \"gktorrent\",\n \"description\": \"GkTorrent is a French Public site for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"gktorrent\",\n \"name\": \"GkTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"gktorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#gktorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://itorrent.ws/\"\n ],\n \"legacyUrls\": [\n \"https://itorrent.unblockit.pro/\",\n \"https://itorrent.unblockit.one/\",\n \"https://itorrent.unblockit.me/\"\n ],\n \"definitionName\": \"itorrent\",\n \"description\": \"iTorrent is a Public HUNGARIAN site\",\n \"language\": \"hu-HU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"itorrent\",\n \"name\": \"iTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"itorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#itorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.limetorrents.lol/\",\n \"https://limetorrents.unblockit.black/\",\n \"https://limetorrents.unblockninja.com/\",\n \"https://limetorrents.ninjaproxy1.com/\",\n \"https://limetorrents.proxyninja.org/\",\n \"https://limetorrents.proxyninja.net/\",\n \"https://limetorrents.torrentbay.st/\",\n \"https://limetorrents.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://limetorrents.unblockit.asia/\",\n \"https://limetorrents.unblockit.mov/\",\n \"https://limetorrents.unblockit.rsvp/\",\n \"https://limetorrents.unblockit.vegas/\",\n \"https://limetorrents.unblockit.esq/\",\n \"https://limetorrents.unblockit.zip/\",\n \"https://limetorrents.unblockit.foo/\",\n \"https://limetorrents.unblockit.ing/\",\n \"https://limetorrents.mrunblock.bond/\",\n \"https://limetorrents.nocensor.cloud/\",\n \"https://limetorrents.unblockit.date/\",\n \"https://limetorrents.unblockit.dad/\",\n \"https://limetorrents.unblockit.africa/\",\n \"https://limetorrents.unblockit.casa/\",\n \"https://limetorrents.unblockit.sbs/\",\n \"https://limetorrents.unblockit.ong/\",\n \"https://limetorrents.abcproxy.org/\"\n ],\n \"definitionName\": \"limetorrents\",\n \"description\": \"LimeTorrents is a Public general torrent index with mostly verified torrents\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"limetorrents\",\n \"name\": \"LimeTorrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"limetorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#limetorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.oxtorrent.co/\",\n \"https://oxtorrent.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://oxtorrent.unblockit.casa/\",\n \"https://oxtorrent.unblockit.sbs/\"\n ],\n \"definitionName\": \"oxtorrent-co\",\n \"description\": \"OxTorrent is a FRENCH Public Torrent Tracker for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"oxtorrent\",\n \"name\": \"OxTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"oxtorrent-co\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#oxtorrent-co\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://rutor.info/\",\n \"https://rutor.is/\"\n ],\n \"legacyUrls\": [\n \"https://rutor.uk-unblock.xyz/\",\n \"https://rutor.ind-unblock.xyz/\",\n \"https://rutor.unblocked.bar/\",\n \"https://rutor.proxyportal.pw/\",\n \"https://rutor.uk-unblock.pro/\",\n \"https://rutor.root.yt/\",\n \"https://rutor.unblocked.rest/\",\n \"https://rutor.unblocked.monster/\",\n \"https://rutor.nocensor.space/\",\n \"https://rutor.nocensor.work/\",\n \"http://6tor.org/\",\n \"https://rutor.nocensor.world/\",\n \"https://rutor.nocensor.lol/\",\n \"https://rutor.nocensor.art/\",\n \"https://rutor.mrunblock.guru/\",\n \"https://rutor.mrunblock.life/\",\n \"https://rutor.nocensor.click/\",\n \"https://rutor.mrunblock.bond/\",\n \"https://rutor.nocensor.cloud/\",\n \"http://new-rutor.org/\",\n \"http://rutor.info/\",\n \"http://rutor.is/\"\n ],\n \"definitionName\": \"rutor\",\n \"description\": \"RuTor is a RUSSIAN Public site for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\",\n \"imdbId\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutor\",\n \"name\": \"RuTor\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutor\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"info\",\n \"value\": \"RuTor does not display categories in its search results page. This definition is probably only suitable for Prowlarr Dashboard Manual searches.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutor\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"http://rutracker.ru/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"rutracker-ru\",\n \"description\": \"RuTracker.RU is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5010,\n \"name\": \"TV/WEB-DL\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutracker ru\",\n \"name\": \"RuTracker.RU\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutracker-ru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutracker-ru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownload.info/\",\n \"https://torrentdownload.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://torrentdownload.mrunblock.guru/\",\n \"https://torrentdownload.unblockit.click/\",\n \"https://torrentdownload.unblockit.asia/\",\n \"https://torrentdownload.unblockit.mov/\",\n \"https://torrentdownload.mrunblock.life/\",\n \"https://torrentdownload.unblockit.rsvp/\",\n \"https://torrentdownload.unblockit.vegas/\",\n \"https://torrentdownload.unblockit.esq/\",\n \"https://torrentdownload.unblockit.zip/\",\n \"https://torrentdownload.unblockit.foo/\",\n \"https://torrentdownload.unblockit.ing/\",\n \"https://torrentdownload.mrunblock.bond/\",\n \"https://torrentdownload.nocensor.cloud/\",\n \"https://torrentdownload.unblockit.date/\",\n \"https://torrentdownload.unblockit.dad/\",\n \"https://torrentdownload.unblockit.africa/\",\n \"https://torrentdownload.unblockit.casa/\",\n \"https://torrentdownload.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownload\",\n \"description\": \"TorrentDownload is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7010,\n \"name\": \"Books/Mags\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrentdownload\",\n \"name\": \"TorrentDownload\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownload\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownload\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.529052.xyz/\",\n \"https://www.529053.xyz/\"\n ],\n \"legacyUrls\": [\n \"https://529050.xyz/\",\n \"https://529048.xyz/\",\n \"https://529049.xyz/\"\n ],\n \"definitionName\": \"52bt\",\n \"description\": \"52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL\",\n \"language\": \"zh-CN\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"52bt\",\n \"name\": \"52BT\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"52bt\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#52bt\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://eztvx.to/\",\n \"https://eztv.wf/\",\n \"https://eztv.tf/\",\n \"https://eztv.yt/\",\n \"https://eztv1.xyz/\",\n \"https://eztv.unblockit.black/\"\n ],\n \"legacyUrls\": [\n \"https://eztv.ag/\",\n \"https://eztv.it/\",\n \"https://eztv.ch/\",\n \"https://eztv.io/\",\n \"https://eztv.unblockit.asia/\",\n \"https://eztv.unblockit.mov/\",\n \"https://eztv.mrunblock.life/\",\n \"https://eztv.unblockit.rsvp/\",\n \"https://eztv.unblockit.vegas/\",\n \"https://eztv.unblockit.esq/\",\n \"https://eztv.unblockit.zip/\",\n \"https://eztv.re/\",\n \"https://eztv.li/\",\n \"https://eztv.unblockit.foo/\",\n \"https://eztv.unblockit.ing/\",\n \"https://eztv.mrunblock.bond/\",\n \"https://eztv.nocensor.cloud/\",\n \"https://eztv.unblockit.date/\",\n \"https://eztv.unblockit.dad/\",\n \"https://eztv.unblockit.africa/\",\n \"https://eztv.unblockit.casa/\",\n \"https://eztv.unblockit.sbs/\",\n \"https://eztv.unblockninja.com/\",\n \"https://eztv.ninjaproxy1.com/\",\n \"https://eztv.proxyninja.org/\",\n \"https://eztv.abcproxy.org/\",\n \"https://eztv.unblockit.ong/\"\n ],\n \"definitionName\": \"eztv\",\n \"description\": \"EZTV is a Public torrent site for TV shows\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"eztv\",\n \"name\": \"EZTV\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"eztv\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#eztv\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yts.mx/\",\n \"https://yts.unblockit.meme/\",\n \"https://yts.unblockninja.com/\",\n \"https://yts.ninjaproxy1.com/\",\n \"https://yts.proxyninja.org/\",\n \"https://yts.proxyninja.net/\",\n \"https://yts.torrentbay.st/\",\n \"https://yts.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://yts.unblockit.mov/\",\n \"https://yts.unblockit.rsvp/\",\n \"https://yts.unblockit.vegas/\",\n \"https://yts.unblockit.esq/\",\n \"https://yts.unblockit.zip/\",\n \"https://yts.unblockit.foo/\",\n \"https://yts.unblockit.ing/\",\n \"https://yts.mrunblock.bond/\",\n \"https://yts.nocensor.cloud/\",\n \"https://yts.unblockit.date/\",\n \"https://yts.unblockit.dad/\",\n \"https://yts.unblockit.africa/\",\n \"https://yts.unblockit.casa/\",\n \"https://yts.unblockit.sbs/\",\n \"https://yts.unblockit.ong/\",\n \"https://yts.abcproxy.org/\",\n \"https://yts.unblockit.black/\",\n \"https://yts.lt/\",\n \"https://yts.am/\",\n \"https://yts.ag/\"\n ],\n \"definitionName\": \"yts\",\n \"description\": \"YTS is a Public torrent site specialising in HD movies of small size\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yts\",\n \"name\": \"YTS\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yts\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yts\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://nyaa.si/\",\n \"https://nyaa.iss.ink/\",\n \"https://nyaa.land/\",\n \"https://nyaa.unblockninja.com/\"\n ],\n \"legacyUrls\": [\n \"https://nyaa.black-mirror.xyz/\",\n \"https://nyaa.unblocked.casa/\",\n \"https://nyaa.proxyportal.fun/\",\n \"https://nyaa.uk-unblock.xyz/\",\n \"https://nyaa.ind-unblock.xyz/\",\n \"https://nyaa.unblocked.bar/\",\n \"https://nyaa.proxyportal.pw/\",\n \"https://nyaa.uk-unblock.pro/\",\n \"https://nyaa.root.yt/\",\n \"https://nyaa.lol/\",\n \"https://nyaa.mrunblock.bond/\",\n \"https://nyaa.nocensor.cloud/\"\n ],\n \"definitionName\": \"nyaasi\",\n \"description\": \"Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"nyaa si\",\n \"name\": \"Nyaa.si\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"nyaasi\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.preferMagnetUrl\",\n \"value\": false\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sonarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"strip_s01\",\n \"value\": false\n },\n {\n \"name\": \"radarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"filter-id\",\n \"value\": 1\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#nyaasi\",\n \"tags\": []\n }\n ]\n prowlarr_indexer_proxy.json:\n content: |\n {\n \"onHealthIssue\": false,\n \"supportsOnHealthIssue\": false,\n \"includeHealthWarnings\": false,\n \"name\": \"FlareSolverr\",\n \"fields\": [\n {\n \"name\": \"host\",\n \"value\": \"${FLARESOLVERR_INTERNAL_URL:-http://flaresolverr:8191}\"\n },\n {\n \"name\": \"requestTimeout\",\n \"value\": 60\n }\n ],\n \"implementationName\": \"FlareSolverr\",\n \"implementation\": \"FlareSolverr\",\n \"configContract\": \"FlareSolverrSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported#flaresolverr\",\n \"tags\": [\n 1\n ]\n }\n scraper_config.json:\n content: |\n {\n \"start_urls\": {\n \"nowsports\": \"https://neesports.me/\",\n \"nowmetv\": \"https://neelive.com/\",\n \"tgx\": [\n \"torrentgalaxy.mx\",\n \"torrentgalaxy.to\",\n \"tgx.rs\"\n ]\n },\n \"tamil_blasters\": {\n \"homepage\": \"https://www.1tamilblasters.net\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"52-english-movies-hdcam-dvdscr-predvd\",\n \"hdrip\": \"53-english-movies-hdrips-bdrips-dvdrips\",\n \"series\": \"92-english-web-series-tv-shows\"\n }\n }\n },\n \"tamilmv\": {\n \"homepage\": \"https://www.1tamilmv.com\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"46-predvd-dvdscr-cam-tc\",\n \"hdrip\": [\n \"49-web-hd-itunes-hd-bluray\",\n \"50-hd-rips-dvd-rips-br-rips\"\n ],\n \"series\": \"55-web-series-tv-shows\"\n }\n },\n \"supported_search_forums\": {\n \"46-predvd-dvdscr-cam-tc\": {\n \"language\": \"english\",\n \"media_type\": \"tcrip\"\n },\n \"49-web-hd-itunes-hd-bluray\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"50-hd-rips-dvd-rips-br-rips\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"55-web-series-tv-shows\": {\n \"language\": \"english\",\n \"media_type\": \"series\"\n }\n }\n },\n \"dlhd\": {\n \"channels_url\": \"https://daddylive.dad/24-7-channels.php\",\n \"channel_url\": \"https://daddylive.dad/stream/stream-{channel_number}.php\",\n \"schedule_url\": \"https://daddylive.dad/schedule/schedule-generated.php\",\n \"server_lookup_url\": \"https://allupplay.xyz/server_lookup.php?channel_id={server_type}{channel_id}\",\n \"m3u8_base_url\": \"https://{server_key}new.newkso.ru/{server_key}/{server_type}{channel_id}/mono.m3u8\",\n \"key_url\": \"https://key.keylocking.ru\",\n \"referer\": \"https://allupplay.xyz/\",\n \"category_mapping\": {\n \"Tv Shows\": \"Other Sports\",\n \"Soccer\": \"Football\",\n \"Cricket\": \"Cricket\",\n \"Tennis\": \"Tennis\",\n \"Tennis ATP - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP - FRENCH OPEN\": \"Tennis\",\n \"Tennis MIXED DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Motorsport\": \"Motor Sport\",\n \"Boxing\": \"Boxing\",\n \"MMA\": \"MMA\",\n \"Golf\": \"Golf\",\n \"Snooker\": \"Other Sports\",\n \"Am. Football\": \"American Football\",\n \"Athletics\": \"Athletics\",\n \"Aussie rules\": \"Aussie Rules\",\n \"Baseball\": \"Baseball\",\n \"Basketball\": \"Basketball\",\n \"Bowling\": \"Bowling\",\n \"Cycling\": \"Cycling\",\n \"Darts\": \"Dart\",\n \"Floorball\": \"Floorball\",\n \"Futsal\": \"Futsal\",\n \"Gymnastics\": \"Gymnastics\",\n \"Handball\": \"Handball\",\n \"Horse Racing\": \"Horse Racing\",\n \"Ice Hockey\": \"Hockey\",\n \"Lacrosse\": \"Lacrosse\",\n \"Netball\": \"Netball\",\n \"Rugby League\": \"Rugby/AFL\",\n \"Rugby Union\": \"Rugby/AFL\",\n \"Squash\": \"Squash\",\n \"Volleyball\": \"Volleyball\",\n \"GAA\": \"GAA\",\n \"Clubber\": \"Other Sports\"\n }\n },\n \"sport_video\": {\n \"categories\": {\n \"american_football\": \"https://www.sport-video.org.ua/americanfootball.html\",\n \"basketball\": \"https://www.sport-video.org.ua/basketball.html\",\n \"baseball\": \"https://www.sport-video.org.ua/baseball.html\",\n \"football\": \"https://www.sport-video.org.ua/football.html\",\n \"hockey\": \"https://www.sport-video.org.ua/hockey.html\",\n \"rugby\": \"https://www.sport-video.org.ua/rugby.html\",\n \"other_sports\": \"https://www.sport-video.org.ua/other.html\"\n }\n }\n }\n\n litellm_config.yaml:\n content: |\n general_settings:\n proxy_batch_write_at: 60\n\n router_settings:\n redis_host: redis\n redis_port: 6379\n redis_password:\n enable_pre_call_check: true\n allowed_fails: 3\n allowed_fails_policy:\n BadRequestErrorAllowedFails: 1000\n AuthenticationErrorAllowedFails: 10\n TimeoutErrorAllowedFails: 12\n RateLimitErrorAllowedFails: 10000\n ContentPolicyViolationErrorAllowedFails: 15\n InternalServerErrorAllowedFails: 20\n cooldown_time: 30\n disable_cooldowns: false\n enable_pre_call_checks: true\n enable_tag_filtering: true\n retry_policy:\n AuthenticationErrorRetries: 3\n TimeoutErrorRetries: 3\n RateLimitErrorRetries: 3\n ContentPolicyViolationErrorRetries: 4\n InternalServerErrorRetries: 4\n routing_strategy: simple-shuffle\n\n litellm_settings:\n cache: true\n cache_params:\n type: redis\n host: redis\n port: 6379\n password:\n namespace: \"litellm_cache\"\n ttl: 600\n content_policy_fallbacks: []\n context_window_fallbacks: []\n default_fallbacks: []\n set_verbose: false\n force_ipv4: true\n json_logs: true\n log_raw_request_response: true\n turn_off_message_logging: false\n redact_user_api_key_info: true\n drop_params: true\n # max_budget: 100\n # budget_duration: 30d\n num_retries: 3\n request_timeout: 600\n telemetry: false\n model_list:\n - model_name: moonshotai/kimi-k2:free\n litellm_params:\n model: openai/moonshotai/kimi-k2:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for agentic capabilities, including advanced tool use, reasoning, and code synthesis. Kimi K2 excels across a broad range of benchmarks, particularly in coding (LiveCodeBench, SWE-bench), reasoning (ZebraLogic, GPQA), and tool-use (Tau2, AceBench) tasks. It supports long-context inference up to 128K tokens and is designed with a novel training stack that includes the MuonClip optimizer for stable large-scale MoE training.\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving user control over alignment, system prompts, and behavior. Intended for advanced and unrestricted use cases, Venice Uncensored emphasizes steerability and transparent behavior, removing default safety and alignment layers typically found in mainstream assistant models.\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e2b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e2b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based on the MatFormer architecture, it supports nested submodels and modular composition via the Mix-and-Match framework. Gemma 3n models are optimized for low-resource deployment, offering 32K context length and strong multilingual and reasoning performance across common benchmarks. This variant is trained on a diverse corpus including code, math, web, and multimodal data.\n litellm_provider: openrouter\n - model_name: tencent/hunyuan-a13b-instruct:free\n litellm_params:\n model: openai/tencent/hunyuan-a13b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark performance across mathematics, science, coding, and multi-turn reasoning tasks, while maintaining high inference efficiency via Grouped Query Attention (GQA) and quantization support (FP8, GPTQ, etc.).\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t2-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t2-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: DeepSeek-TNG-R1T2-Chimera is the second-generation Chimera model from TNG Tech. It is a 671 B-parameter mixture-of-experts text-generation model assembled from DeepSeek-AI’s R1-0528, R1, and V3-0324 checkpoints with an Assembly-of-Experts merge. The tri-parent design yields strong reasoning performance while running roughly 20 % faster than the original R1 and more than 2× faster than R1-0528 under vLLM, giving a favorable cost-to-intelligence trade-off. The checkpoint supports contexts up to 60 k tokens in standard use (tested to ~130 k) and maintains consistent <think> token behaviour, making it suitable for long-context analysis, dialogue and other open-ended generation tasks.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.2-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.2-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on WildBench and Arena Hard, reduces infinite generations, and delivers gains in tool use and structured output tasks. It supports image and text inputs with structured outputs, function/tool calling, and strong performance across coding (HumanEval+, MBPP), STEM (MMLU, MATH, GPQA), and vision benchmarks (ChartQA, DocVQA).'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-dev-72b:free\n litellm_params:\n model: openai/moonshotai/kimi-dev-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Kimi-Dev-72B is an open-source large language model fine-tuned for software engineering and issue resolution tasks. Based on Qwen2.5-72B, it is optimized using large-scale reinforcement learning that applies code patches in real repositories and validates them via full test suite execution—rewarding only correct, robust completions. The model achieves 60.4% on SWE-bench Verified, setting a new benchmark among open-source models for software bug fixing and code reasoning.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528-qwen3-8b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528-qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepSeek-R1-0528 is a lightly upgraded release of DeepSeek R1 that taps more compute and smarter post-training tricks, pushing its reasoning and inference to the brink of flagship models like O3 and Gemini 2.5 Pro. It now tops math, programming, and logic leaderboards, showcasing a step-change in depth-of-thought. The distilled variant, DeepSeek-R1-0528-Qwen3-8B, transfers this chain-of-thought into an 8 B-parameter form, beating standard Qwen3 8B by +10 pp and tying the 235 B “thinking” giant on AIME 2024.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model.'\n litellm_provider: openrouter\n - model_name: sarvamai/sarvam-m:free\n litellm_params:\n model: openai/sarvamai/sarvam-m:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Sarvam-M is a 24 B-parameter, instruction-tuned derivative of Mistral-Small-3.1-24B-Base-2503, post-trained on English plus eleven major Indic languages (bn, hi, kn, gu, mr, ml, or, pa, ta, te). The model introduces a dual-mode interface: “non-think” for low-latency chat and a optional “think” phase that exposes chain-of-thought tokens for more demanding reasoning, math, and coding tasks. Benchmark reports show solid gains versus similarly sized open models on Indic-language QA, GSM-8K math, and SWE-Bench coding, making Sarvam-M a practical general-purpose choice for multilingual conversational agents as well as analytical workloads that mix English, native Indic scripts, or romanized text.'\n litellm_provider: openrouter\n - model_name: mistralai/devstral-small-2505:free\n litellm_params:\n model: openai/mistralai/devstral-small-2505:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Devstral-Small-2505 is a 24B parameter agentic LLM fine-tuned from Mistral-Small-3.1, jointly developed by Mistral AI and All Hands AI for advanced software engineering tasks. It is optimized for codebase exploration, multi-file editing, and integration into coding agents, achieving state-of-the-art results on SWE-Bench Verified (46.8%). Devstral supports a 128k context window and uses a custom Tekken tokenizer. It is text-only, with the vision encoder removed, and is suitable for local deployment on high-end consumer hardware (e.g., RTX 4090, 32GB RAM Macs). Devstral is best used in agentic workflows via the OpenHands scaffold and is compatible with inference frameworks like vLLM, Transformers, and Ollama. It is released under the Apache 2.0 license.'\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e4b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: 'Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks such as text generation, speech recognition, translation, and image analysis. Leveraging innovations like Per-Layer Embedding (PLE) caching and the MatFormer architecture, Gemma 3n dynamically manages memory usage and computational load by selectively activating model parameters, significantly reducing runtime resource requirements. This model supports a wide linguistic range (trained in over 140 languages) and features a flexible 32K token context window. Gemma 3n can selectively load parameters, optimizing memory and computational efficiency based on the task or device capabilities, making it well-suited for privacy-focused, offline-capable applications and on-device AI solutions. [Read more in the blog post](https://developers.googleblog.com/en/introducing-gemma-3n/)'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-4b:free\n litellm_params:\n model: openai/qwen/qwen3-4b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-4B is a 4 billion parameter dense language model from the Qwen3 series, designed to support both general-purpose and reasoning-intensive tasks. It introduces a dual-mode architecture—thinking and non-thinking—allowing dynamic switching between high-precision logical reasoning and efficient dialogue generation. This makes it well-suited for multi-turn chat, instruction following, and complex agent workflows.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-30b-a3b:free\n litellm_params:\n model: openai/qwen/qwen3-30b-a3b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique ability to switch seamlessly between a thinking mode for complex reasoning and a non-thinking mode for efficient dialogue ensures versatile, high-quality performance. Significantly outperforming prior models like QwQ and Qwen2.5, Qwen3 delivers superior mathematics, coding, commonsense reasoning, creative writing, and interactive dialogue capabilities. The Qwen3-30B-A3B variant includes 30.5 billion parameters (3.3 billion activated), 48 layers, 128 experts (8 activated per task), and supports up to 131K token contexts with YaRN, setting a new standard among open-source models.'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-8b:free\n litellm_params:\n model: openai/qwen/qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n max_output_tokens: 40960\n metadata:\n notes: Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math, coding, and logical inference, and \"non-thinking\" mode for general conversation. The model is fine-tuned for instruction-following, agent integration, creative writing, and multilingual use across 100+ languages and dialects. It natively supports a 32K token context window and can extend to 131K tokens with YaRN scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-14b:free\n litellm_params:\n model: openai/qwen/qwen3-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, programming, and logical inference, and a \"non-thinking\" mode for general-purpose conversation. The model is fine-tuned for instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-32b:free\n litellm_params:\n model: openai/qwen/qwen3-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, coding, and logical inference, and a \"non-thinking\" mode for faster, general-purpose conversation. The model demonstrates strong performance in instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling. '\n litellm_provider: openrouter\n - model_name: qwen/qwen3-235b-a22b:free\n litellm_params:\n model: openai/qwen/qwen3-235b-a22b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and code tasks, and a \"non-thinking\" mode for general conversational efficiency. The model demonstrates strong reasoning ability, multilingual support (100+ languages and dialects), advanced instruction-following, and agent tool-calling capabilities. It natively handles a 32K token context window and extends up to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-R1T-Chimera is created by merging DeepSeek-R1 and DeepSeek-V3 (0324), combining the reasoning capabilities of R1 with the token efficiency improvements of V3. It is based on a DeepSeek-MoE Transformer architecture and is optimized for general text generation tasks. The model merges pretrained weights from both source models to balance performance across reasoning, efficiency, and instruction-following tasks. It is released under the MIT license and intended for research and commercial use.'\n litellm_provider: openrouter\n - model_name: microsoft/mai-ds-r1:free\n litellm_params:\n model: openai/microsoft/mai-ds-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'MAI-DS-R1 is a post-trained variant of DeepSeek-R1 developed by the Microsoft AI team to improve the model’s responsiveness on previously blocked topics while enhancing its safety profile. Built on top of DeepSeek-R1’s reasoning foundation, it integrates 110k examples from the Tulu-3 SFT dataset and 350k internally curated multilingual safety-alignment samples. The model retains strong reasoning, coding, and problem-solving capabilities, while unblocking a wide range of prompts previously restricted in R1. MAI-DS-R1 demonstrates improved performance on harm mitigation benchmarks and maintains competitive results across general reasoning tasks. It surpasses R1-1776 in satisfaction metrics for blocked queries and reduces leakage in harmful content categories. The model is based on a transformer MoE architecture and is suitable for general-purpose use cases, excluding high-stakes domains such as legal, medical, or autonomous systems.'\n litellm_provider: openrouter\n - model_name: thudm/glm-z1-32b:free\n litellm_params:\n model: openai/thudm/glm-z1-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'GLM-Z1-32B-0414 is an enhanced reasoning variant of GLM-4-32B, built for deep mathematical, logical, and code-oriented problem solving. It applies extended reinforcement learning—both task-specific and general pairwise preference-based—to improve performance on complex multi-step tasks. Compared to the base GLM-4-32B model, Z1 significantly boosts capabilities in structured reasoning and formal domains. The model supports enforced “thinking” steps via prompt engineering and offers improved coherence for long-form outputs. It’s optimized for use in agentic workflows, and includes support for long context (via YaRN), JSON tool calling, and fine-grained sampling configuration for stable inference. Ideal for use cases requiring deliberate, multi-step reasoning or formal derivations.'\n litellm_provider: openrouter\n - model_name: thudm/glm-4-32b:free\n litellm_params:\n model: openai/thudm/glm-4-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: GLM-4-32B-0414 is a 32B bilingual (Chinese-English) open-weight language model optimized for code generation, function calling, and agent-style tasks. Pretrained on 15T of high-quality and reasoning-heavy data, it was further refined using human preference alignment, rejection sampling, and reinforcement learning. The model excels in complex reasoning, artifact generation, and structured output tasks, achieving performance comparable to GPT-4o and DeepSeek-V3-0324 across several benchmarks.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: shisa-ai/shisa-v2-llama3.3-70b:free\n litellm_params:\n model: openai/shisa-ai/shisa-v2-llama3.3-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Shisa V2 Llama 3.3 70B is a bilingual Japanese-English chat model fine-tuned by Shisa.AI on Meta’s Llama-3.3-70B-Instruct base. It prioritizes Japanese language performance while retaining strong English capabilities. The model was optimized entirely through post-training, using a refined mix of supervised fine-tuning (SFT) and DPO datasets including regenerated ShareGPT-style data, translation tasks, roleplaying conversations, and instruction-following prompts. Unlike earlier Shisa releases, this version avoids tokenizer modifications or extended pretraining. Shisa V2 70B achieves leading Japanese task performance across a wide range of custom and public benchmarks, including JA MT Bench, ELYZA 100, and Rakuda. It supports a 128K token context length and integrates smoothly with inference frameworks like vLLM and SGLang. While it inherits safety characteristics from its base model, no additional alignment was applied. The model is intended for high-performance bilingual chat, instruction following, and translation tasks across JA/EN.'\n litellm_provider: openrouter\n - model_name: arliai/qwq-32b-arliai-rpr-v1:free\n litellm_params:\n model: openai/arliai/qwq-32b-arliai-rpr-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'QwQ-32B-ArliAI-RpR-v1 is a 32B parameter model fine-tuned from Qwen/QwQ-32B using a curated creative writing and roleplay dataset originally developed for the RPMax series. It is designed to maintain coherence and reasoning across long multi-turn conversations by introducing explicit reasoning steps per dialogue turn, generated and refined using the base model itself. The model was trained using RS-QLORA+ on 8K sequence lengths and supports up to 128K context windows (with practical performance around 32K). It is optimized for creative roleplay and dialogue generation, with an emphasis on minimizing cross-context repetition while preserving stylistic diversity.'\n litellm_provider: openrouter\n - model_name: agentica-org/deepcoder-14b-preview:free\n litellm_params:\n model: openai/agentica-org/deepcoder-14b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n metadata:\n notes: DeepCoder-14B-Preview is a 14B parameter code generation model fine-tuned from DeepSeek-R1-Distill-Qwen-14B using reinforcement learning with GRPO+ and iterative context lengthening. It is optimized for long-context program synthesis and achieves strong performance across coding benchmarks, including 60.6% on LiveCodeBench v5, competitive with models like o3-Mini\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-vl-a3b-thinking:free\n litellm_params:\n model: openai/moonshotai/kimi-vl-a3b-thinking:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n mode: chat\n supports_vision: true\n metadata:\n notes: Kimi-VL is a lightweight Mixture-of-Experts vision-language model that activates only 2.8B parameters per step while delivering strong performance on multimodal reasoning and long-context tasks. The Kimi-VL-A3B-Thinking variant, fine-tuned with chain-of-thought and reinforcement learning, excels in math and visual reasoning benchmarks like MathVision, MMMU, and MathVista, rivaling much larger models such as Qwen2.5-VL-7B and Gemma-3-12B. It supports 128K context and high-resolution input via its MoonViT encoder.\n litellm_provider: openrouter\n - model_name: nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n litellm_params:\n model: openai/nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama-3.1-Nemotron-Ultra-253B-v1 is a large language model (LLM) optimized for advanced reasoning, human-interactive chat, retrieval-augmented generation (RAG), and tool-calling tasks. Derived from Meta’s Llama-3.1-405B-Instruct, it has been significantly customized using Neural Architecture Search (NAS), resulting in enhanced efficiency, reduced memory usage, and improved inference latency. The model supports a context length of up to 128K tokens and can operate efficiently on an 8x NVIDIA H100 node. Note: you must include `detailed thinking on` in the system prompt to enable reasoning. Please see [Usage Recommendations](https://huggingface.co/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1#quick-start-and-usage-recommendations) for more.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-v3-base:free\n litellm_params:\n model: openai/deepseek/deepseek-v3-base:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'Note that this is a base model mostly meant for testing, you need to provide detailed prompts for the model to return useful responses. DeepSeek-V3 Base is a 671B parameter open Mixture-of-Experts (MoE) language model with 37B active parameters per forward pass and a context length of 128K tokens. Trained on 14.8T tokens using FP8 mixed precision, it achieves high training efficiency and stability, with strong performance across language, reasoning, math, and coding tasks. DeepSeek-V3 Base is the pre-trained model behind [DeepSeek V3](/deepseek/deepseek-chat-v3)'\n litellm_provider: openrouter\n - model_name: google/gemini-2.5-pro-exp-03-25\n litellm_params:\n model: openai/google/gemini-2.5-pro-exp-03-25\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 65535\n mode: chat\n supports_vision: true\n metadata:\n notes: 'This model has been deprecated by Google in favor of the (paid Preview model)[google/gemini-2.5-pro-preview] Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy and nuanced context handling. Gemini 2.5 Pro achieves top-tier performance on multiple benchmarks, including first-place positioning on the LMArena leaderboard, reflecting superior human-preference alignment and complex problem-solving abilities.'\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL-32B is a multimodal vision-language model fine-tuned through reinforcement learning for enhanced mathematical reasoning, structured outputs, and visual problem-solving capabilities. It excels at visual analysis tasks, including object recognition, textual interpretation within images, and precise event localization in extended videos. Qwen2.5-VL-32B demonstrates state-of-the-art performance across multimodal benchmarks such as MMMU, MathVista, and VideoMME, while maintaining strong reasoning and clarity in text-based tasks like MMLU, mathematical problem-solving, and code generation.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat-v3-0324:free\n litellm_params:\n model: openai/deepseek/deepseek-chat-v3-0324:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well on a variety of tasks.'\n litellm_provider: openrouter\n - model_name: featherless/qwerky-72b:free\n litellm_params:\n model: openai/featherless/qwerky-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 4096\n metadata:\n notes: Qwerky-72B is a linear-attention RWKV variant of the Qwen 2.5 72B model, optimized to significantly reduce computational cost at scale. Leveraging linear attention, it achieves substantial inference speedups (>1000x) while retaining competitive accuracy on common benchmarks like ARC, HellaSwag, Lambada, and MMLU. It inherits knowledge and language support from Qwen 2.5, supporting approximately 30 languages, making it suitable for efficient inference in large-context applications.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.1-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.1-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 128000\n mode: chat\n supports_vision: true\n metadata:\n notes: Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and vision tasks, including image analysis, programming, mathematical reasoning, and multilingual support across dozens of languages. Equipped with an extensive 128k token context window and optimized for efficient local inference, it supports use cases such as conversational agents, function calling, long-document comprehension, and privacy-sensitive deployments. The updated version is [Mistral Small 3.2](mistralai/mistral-small-3.2-24b-instruct)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-4b-it:free\n litellm_params:\n model: openai/google/gemma-3-4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-12b-it:free\n litellm_params:\n model: openai/google/gemma-3-12b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 12B is the second largest in the family of Gemma 3 models after [Gemma 3 27B](google/gemma-3-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: rekaai/reka-flash-3:free\n litellm_params:\n model: openai/rekaai/reka-flash-3:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a 32K context length and optimized through reinforcement learning (RLOO), it provides competitive performance comparable to proprietary models within a smaller parameter footprint. Ideal for low-latency, local, or on-device deployments, Reka Flash 3 is compact, supports efficient quantization (down to 11GB at 4-bit precision), and employs explicit reasoning tags (\"<reasoning>\") to indicate its internal thought process. Reka Flash 3 is primarily an English model with limited multilingual understanding capabilities. The model weights are released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-27b-it:free\n litellm_params:\n model: openai/google/gemma-3-27b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 27B is Google's latest open source model, successor to [Gemma 2](google/gemma-2-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwq-32b:free\n litellm_params:\n model: openai/qwen/qwq-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: QwQ is the reasoning model of the Qwen series. Compared with conventional instruction-tuned models, QwQ, which is capable of thinking and reasoning, can achieve significantly enhanced performance in downstream tasks, especially hard problems. QwQ-32B is the medium-sized reasoning model, which is capable of achieving competitive performance against state-of-the-art reasoning models, e.g., DeepSeek-R1, o1-mini.\n litellm_provider: openrouter\n - model_name: nousresearch/deephermes-3-llama-3-8b-preview:free\n litellm_params:\n model: openai/nousresearch/deephermes-3-llama-3-8b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepHermes 3 Preview is the latest version of our flagship Hermes series of LLMs by Nous Research, and one of the first models in the world to unify Reasoning (long chains of thought that improve answer accuracy) and normal LLM response modes into one model. We have also improved LLM annotation, judgement, and function calling. DeepHermes 3 Preview is one of the first LLM models to unify both \"intuitive\", traditional mode responses and long chain of thought reasoning responses into a single model, toggled by a system prompt.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 R1 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. The R1 version has been trained for 3 epochs to reason using 800k reasoning traces from the Dolphin-R1 dataset. Dolphin aims to be a general purpose reasoning instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. Dolphin aims to be a general purpose instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-24b-instruct-2501:free\n litellm_params:\n model: openai/mistralai/mistral-small-24b-instruct-2501:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware. [Read the blog post about the model here.](https://mistral.ai/news/mistral-small-3/)'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-qwen-14b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-qwen-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 64000\n metadata:\n notes: 'DeepSeek R1 Distill Qwen 14B is a distilled large language model based on [Qwen 2.5 14B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI''s o1-mini across various benchmarks, achieving new state-of-the-art results for dense models. Other benchmark results include: - AIME 2024 pass@1: 69.7 - MATH-500 pass@1: 93.9 - CodeForces Rating: 1481 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-llama-70b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-llama-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 4096\n metadata:\n notes: 'DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across multiple benchmarks, including: - AIME 2024 pass@1: 70.0 - MATH-500 pass@1: 94.5 - CodeForces Rating: 1633 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1:free\n litellm_params:\n model: openai/deepseek/deepseek-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model & [technical report](https://api-docs.deepseek.com/news/news250120). MIT licensed: Distill & commercialize freely!'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat:free\n litellm_params:\n model: openai/deepseek/deepseek-chat:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations reveal that the model outperforms other open-source models and rivals leading closed-source models. For model details, please visit [the DeepSeek-V3 repo](https://github.com/deepseek-ai/DeepSeek-V3) for more information, or see the [launch announcement](https://api-docs.deepseek.com/news/news1226).'\n litellm_provider: openrouter\n - model_name: google/gemini-2.0-flash-exp:free\n litellm_params:\n model: openai/google/gemini-2.0-flash-exp:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It introduces notable enhancements in multimodal understanding, coding capabilities, complex instruction following, and function calling. These advancements come together to deliver more seamless and robust agentic experiences.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.3-70b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.3-70b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model is optimized for multilingual dialogue use cases and outperforms many of the available open source and closed chat models on common industry benchmarks. Supported languages: English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai. [Model Card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_3/MODEL_CARD.md)'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-coder-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-coder-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning** and **code fixing**. - A more comprehensive foundation for real-world applications such as **Code Agents**. Not only enhancing coding capabilities but also maintaining its strengths in mathematics and general competencies. To read more about its evaluation results, check out [Qwen 2.5 Coder''s blog](https://qwenlm.github.io/blog/qwen2.5-coder-family/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-3b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-3b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages. Trained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-11b-vision-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-11b-vision-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 2048\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and visual question answering, bridging the gap between language generation and visual reasoning. Pre-trained on a massive dataset of image-text pairs, it performs well in complex, high-accuracy image analysis. Its ability to integrate visual understanding with language processing makes it an ideal solution for industries requiring comprehensive visual-linguistic AI applications, such as content creation, AI-driven customer service, and research. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and mathematics, thanks to our specialized expert models in these domains. - Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. - Long-context Support up to 128K tokens and can generate up to 8K tokens. - Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. Usage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.1-405b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.1-405b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs. Meta''s latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations. To read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-nemo:free\n litellm_params:\n model: openai/mistralai/mistral-nemo:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 128000\n metadata:\n notes: 'A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi. It supports function calling and is released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-2-9b-it:free\n litellm_params:\n model: openai/google/gemma-2-9b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 8192\n metadata:\n notes: 'Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size. Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining , safety, and cost-effectiveness. See the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google''s [Gemma Terms of Use](https://ai.google.dev/gemma/terms).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-7b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-7b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length. *Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*'\n litellm_provider: openrouter\n\n #######################################################################################\n # Mattermost Backup Configuration\n #######################################################################################\n mattermost-backup-daily.sh:\n content: |\n #!/bin/sh\n now=$$(date +\"%s_%Y-%m-%d\")\n /usr/bin/mysqldump --opt -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE > \"/backup/$$now_$MYSQL_DATABASE.sql\"\n\n # Container management script\n manage-containers.sh:\n content: |\n #!/bin/bash\n # Container management script for media stack\n\n CONTAINERS=\"plex riven-frontend riven blackhole\"\n\n case \"$$1\" in\n start)\n echo \"Starting media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps -a --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Starting $$container...\"\n docker start $$container\n fi\n done\n ;;\n stop)\n echo \"Stopping media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Stopping $$container...\"\n docker stop $$container\n fi\n done\n ;;\n restart)\n echo \"Restarting media stack containers...\"\n $$0 stop\n sleep 5\n $$0 start\n ;;\n *)\n echo \"Usage: $$0 {start|stop|restart}\"\n exit 1\n ;;\n esac\n\n # Symlink cleanup script\n symlink-cleanup.sh:\n content: |\n #!/bin/bash\n # Cleanup broken symlinks\n\n echo \"Cleaning up broken symlinks...\"\n\n # Find and remove broken symlinks in media directories\n find /mnt/media -type l -exec test ! -e {} \\; -print -delete\n find /mnt/symlinks -type l -exec test ! -e {} \\; -print -delete\n\n echo \"Symlink cleanup complete\"\n\n # Backup configuration script\n backup-configs.sh:\n content: |\n #!/bin/bash\n # Backup configuration files\n\n BACKUP_DIR=\"${BACKUP_PATH:-/mnt/local/backups}/$(date +%Y%m%d_%H%M%S)\"\n CONFIG_PATH=\"${CONFIG_PATH:-./volumes}\"\n\n echo \"Creating backup directory: $BACKUP_DIR\"\n mkdir -p \"$BACKUP_DIR\"\n\n echo \"Backing up configuration files...\"\n if [ -d \"$CONFIG_PATH\" ]; then\n cp -rv \"$CONFIG_PATH\" \"$BACKUP_DIR/\"\n echo \"Backup completed: $BACKUP_DIR\"\n else\n echo \"Config directory not found: $CONFIG_PATH\"\n exit 1\n fi\n\n # Keep only last 7 days of backups\n find ${BACKUP_PATH:-/mnt/local/backups} -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true\n\n echo \"Backup process complete\"\n\n plex_update.sh:\n content: |\n #!/bin/bash\n # PLEX PARTIAL SCAN script or PLEX UPDATE script\n # When zurg detects changes, it can trigger this script IF your config.yml contains\n # on_library_update: sh plex_update.sh \"$$@\"\n # Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh\n token=${PLEX_TOKEN:-replace-me}\n\n # DON'T CHANGE ANYTHING AFTER THIS LINE\n plex_url=\"${PLEX_INTERNAL_URL:-http://plex:32400}\" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400\n zurg_mount=\"${ZURG_MOUNT_PATH:-/mnt/remote/realdebrid}\" # Replace with your zurg mount path, ensure this is what Plex sees\n\n # Get the list of section IDs\n section_ids=$$(curl -sLX GET \"$$plex_url/library/sections\" -H \"X-Plex-Token: $$token\" | xmllint --xpath \"//Directory/@key\" - | sed 's/key=\"//g' | tr '\"' '\\n')\n for arg in \"$$@\"\n do\n modified_arg=\"$$zurg_mount/$$arg\"\n encoded_arg=$$(echo -n \"$$modified_arg\" | python3 -c \"import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))\")\n if [ -z \"$$encoded_arg\" ]; then\n echo \"Error: Encoded argument is empty. Check the input or encoding process.\"\n continue\n fi\n for section_id in $$section_ids\n do\n final_url=\"$$plex_url/library/sections/$$section_id/refresh?path=$$encoded_arg&X-Plex-Token=$$token\"\n echo \"Encoded argument: $$encoded_arg\"\n echo \"Section ID: $$section_id\"\n echo \"Final URL: $$final_url\"\n curl -s \"$$final_url\"\n done\n done\n echo \"All updated sections refreshed\"\n # credits to godver3\n\n headscale-config:\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://myheadscale.example.com:443\n #\n #server_url: https://headscale-server.$DOMAIN:443\n server_url: ${HEADSCALE_INTERNAL_URL:-http://headscale-server:8080}\n\n # Address to listen to / bind to on the server\n #\n listen_addr: 0.0.0.0:8080\n\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n\n grpc_listen_addr: 0.0.0.0:50443\n\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n\n # Private key used encrypt the traffic between headscale\n # and Tailscale clients.\n # The private key file which will be\n # autogenerated if it's missing\n private_key_path: /var/lib/headscale/private.key\n\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: random\n\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: false\n\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"headscale\"\n region_name: \"Headscale Embedded DERP\"\n\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n ipv4: 100.64.0.2\n ipv6: fd7a:115c:a1e0::2\n\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n\n # How often should we check for DERP updates?\n update_frequency: 24h\n\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: ${HEADSCALE_DEBUG:-false}\n\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: ${HEADSCALE_PREPARE_STMT:-true}\n\n # Enable parameterized queries.\n parameterized_queries: ${HEADSCALE_PARAMETERIZED_QUERIES:-true}\n\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: ${HEADSCALE_SKIP_ERR_RECORD_NOT_FOUND:-true}\n\n # Threshold for slow queries in milliseconds.\n slow_threshold: ${HEADSCALE_SLOW_THRESHOLD:-1000}\n\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: ${HEADSCALE_WRITE_AHEAD_LOG:-true}\n\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: ${HEADSCALE_WAL_AUTOCHECKPOINT:-1000}\n\n log:\n # Output formatting for logs: text or json\n format: ${HEADSCALE_LOG_FORMAT:-text}\n level: ${HEADSCALE_LOG_LEVEL:-info}\n\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: ${HEADSCALE_POLICY_MODE:-file}\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: ${HEADSCALE_POLICY_PATH:-\"\"}\n\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: ${HEADSCALE_MAGIC_DNS:-true}\n\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: myscale.$DOMAIN\n\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: ${HEADSCALE_OVERRIDE_LOCAL_DNS:-false}\n\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n # - https://dns.nextdns.io/abc123\n\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {\n # \"headscale.$DOMAIN\": [\n # \"1.1.1.1\",\n # \"1.0.0.1\",\n # \"2606:4700:4700::1111\",\n # \"2606:4700:4700::1001\"\n # ]\n }\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n\n # Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: ${HEADSCALE_LOGTAIL_ENABLED:-false}\n\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: ${HEADSCALE_RANDOMIZE_CLIENT_PORT:-false}\n\n\nx-common-env: &common-env\n TZ: ${TZ:-America/Chicago}\n PUID: ${PUID:-1001}\n PGID: ${PGID:-988}\n UMASK: ${UMASK:-002}\n\nservices:\n headscale-server:\n image: docker.io/headscale/headscale\n container_name: headscale-server\n hostname: headscale-server\n networks:\n - publicnet\n extra_hosts: *common-hostname-aliases\n expose:\n - 3478 # STUN\n - 8080 # HTTP\n - 9090 # Metrics\n - 50443 # gRPC\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yaml\n mode: 0644\n volumes:\n - ${CERTS_PATH:-./certs}/private/bolabaden.org.key:/var/lib/headscale/private.key\n - ${CONFIG_PATH:-./volumes}/headscale/config:/etc/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/lib:/var/lib/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/run:/var/run/headscale\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.headscale-server.service: headscale-server\n traefik.http.routers.headscale-server.rule: Host(`headscale-server.$DOMAIN`) || Host(`headscale-server.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/`) # || HostRegexp(`^(www\\.)?headscale-server\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale-server\\.$TS_HOSTNAME\\.$DOMAIN$`)) && PathPrefix(`/`)\n traefik.http.services.headscale-server.loadbalancer.server.port: 8080\n # Homepage integration\n homepage.group: Networking\n homepage.name: Headscale\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale is a server that manages your Tailscale network.\n command: serve\n restart: always\n headscale:\n depends_on:\n - headscale-server\n image: ghcr.io/gurucomputing/headscale-ui\n container_name: headscale\n hostname: headscale\n extra_hosts: *common-hostname-aliases\n pull_policy: always\n networks:\n - publicnet\n dns:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n - 9.9.9.9\n - 2620:fe::fe\n - 8.8.8.8\n - 2001:4860:4860::8888\n - 2001:4860:4860::8844\n labels:\n traefik.enable: \"true\"\n #traefik.http.routers.headscale.middlewares: nginx-auth@file\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?headscale\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale\\.$TS_HOSTNAME\\.$DOMAIN$`)) # && PathPrefix(`/web`)\n traefik.http.services.headscale.loadbalancer.server.port: 80\n homepage.group: Networking\n homepage.name: Headscale UI\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale UI is a web interface for Headscale, an open source implementation of Tailscale's Admin control panel.\n restart: always\n\n hedgedoc:\n depends_on:\n - hedgedoc-db\n image: quay.io/hedgedoc/hedgedoc\n container_name: hedgedoc\n hostname: hedgedoc\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000\n environment:\n CMD_DB_URL: postgres://hedgedoc:password@hedgedoc-db:5432/hedgedoc\n CMD_DOMAIN: hedgedoc.$DOMAIN\n CMD_URL_ADDPORT: false\n CMD_PROTOCOL_USESSL: true\n CMD_SESSION_SECRET: \"discolor-subtitle-seducing-result-ceramics\" # define secret\n CMD_ALLOW_EMAIL_REGISTER: \"true\" # allow registration\n CMD_EMAIL: \"true\" # allow login; only guest notes\n # ------- OAUTH SSO -------\n # see https://docs.goauthentik.io/integrations/services/hedgedoc/\n #- CMD_ALLOW_ANONYMOUS_EDITS=False\n #- CMD_OAUTH2_USER_PROFILE_URL=https://authentik.$DOMAIN/application/o/userinfo/\n #- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username\n #- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name\n #- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email\n #- CMD_OAUTH2_TOKEN_URL=https://authentik.$DOMAIN/application/o/token/\n #- CMD_OAUTH2_AUTHORIZATION_URL=https://authentik.$DOMAIN/application/o/authorize/\n #- CMD_OAUTH2_CLIENT_ID=<ID>\n #- CMD_OAUTH2_CLIENT_SECRET=<SECRET>\n #- CMD_OAUTH2_PROVIDERNAME=Authentik\n #- CMD_OAUTH2_SCOPE=openid email profile\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/uploads:/hedgedoc/public/uploads\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.hedgedoc.service: hedgedoc\n traefik.http.routers.hedgedoc.middlewares: nginx-auth@file\n traefik.http.routers.hedgedoc.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc.loadbalancer.server.port: 3000\n # prevent unauthorized access to the /metrics endpoint\n traefik.http.routers.hedgedoc-metrics.service: hedgedoc-metrics\n traefik.http.routers.hedgedoc-metrics.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/metrics`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc-metrics.loadbalancer.server.port: 3000\n traefik.http.routers.hedgedoc-metrics.middlewares: nginx-auth@file\n restart: always\n hedgedoc-db:\n image: postgres:16.3-alpine\n container_name: hedgedoc-db\n networks:\n - publicnet\n expose:\n - 5432\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/database:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: hedgedoc\n POSTGRES_PASSWORD: password\n POSTGRES_DB: hedgedoc\n restart: always\n mongodb:\n # 🔹🔹 MongoDB 🔹🔹\n image: mongo\n container_name: mongodb\n hostname: ${MONGODB_HOSTNAME:-mongodb}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 27017\n volumes:\n - ${CONFIG_PATH:-./volumes}/mongodb/data:/data/db\n environment:\n <<: *common-env\n healthcheck:\n test: [\"CMD-SHELL\", \"mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\\\"ping\\\").ok' > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 10s\n retries: 5\n start_period: 40s\n restart: always\n redis:\n # 🔹🔹 Redis 🔹🔹\n # NOTE: If you want to use Valkey (open source) instead of Redis (source available),\n # uncomment the Valkey statement and comment out the Redis statement.\n # Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.\n image: redis:alpine\n # image: valkey/valkey:alpine\n container_name: redis\n hostname: redis\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/redis:/data\n environment:\n <<: *common-env\n REDIS_HOST: ${REDIS_HOST:-redis}\n REDIS_PORT: ${REDIS_PORT:-6379}\n REDIS_DATABASE: ${REDIS_DATABASE:-0}\n REDIS_USERNAME: ${REDIS_USERNAME:-default}\n REDIS_PASSWORD: ${REDIS_PASSWORD:-redis}\n command: redis-server --appendonly yes --save 60 1 --bind 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 5s\n retries: 5\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 200M\n limits:\n cpus: 0.5\n memory: 4G\n restart: always\n open-webui:\n # 🔹🔹 Open WebUI 🔹🔹\n depends_on:\n mcpo:\n condition: service_healthy\n litellm:\n condition: service_healthy\n image: ghcr.io/open-webui/open-webui:main\n container_name: open-webui\n hostname: open-webui\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${OPEN_WEBUI_PORT:-8080}\n volumes:\n - ${CONFIG_PATH:-./volumes}/open-webui:/app/backend/data\n environment:\n # ===== GENERAL CONFIGURATION =====\n # Controls whether admin users can export data\n ENABLE_ADMIN_EXPORT: True\n\n # Enables admin users to access all chats\n ENABLE_ADMIN_CHAT_ACCESS: True\n\n # Bypasses model access control. (default: False)\n BYPASS_MODEL_ACCESS_CONTROL: True\n\n # Environment setting (dev/prod) - Docker default is prod\n ENV: prod\n\n # If set to False, all PersistentConfig variables are treated as regular variables\n ENABLE_PERSISTENT_CONFIG: True\n\n # Sets the port to run Open WebUI from\n PORT: ${OPEN_WEBUI_PORT:-8080}\n\n # When enabled, saves each chunk of streamed chat data to database in real time\n ENABLE_REALTIME_CHAT_SAVE: True\n\n # Used for identifying the Git SHA of the build for releases\n WEBUI_BUILD_HASH: dev-build\n\n # ===== AIOHTTP CLIENT CONFIGURATION =====\n # Specifies the timeout duration in seconds for the AIOHTTP client\n AIOHTTP_CLIENT_TIMEOUT: 300\n\n # Sets the timeout in seconds for fetching the model list\n AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST: 10\n\n # Sets the timeout in seconds for fetching the OpenAI model list\n AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST: 10\n\n # ===== DIRECTORY CONFIGURATION =====\n # Specifies the base directory for data storage\n DATA_DIR: ./data\n\n # Specifies the location of the built frontend files\n FRONTEND_BUILD_DIR: ../build\n\n # Specifies the directory for static files\n STATIC_DIR: ./static\n\n # ===== OLLAMA CONFIGURATION =====\n # Configures the Ollama backend URL\n OLLAMA_BASE_URL: /ollama\n\n # Builds the Docker image with a bundled Ollama instance\n USE_OLLAMA_DOCKER: false\n\n # If set, assumes Helm chart deployment\n K8S_FLAG: False\n\n # ===== SECURITY CONFIGURATION =====\n # Forwards user information as X-headers to OpenAI API and Ollama API\n ENABLE_FORWARD_USER_INFO_HEADERS: False\n\n # Sets the SameSite attribute for session cookies (lax/strict/none)\n WEBUI_SESSION_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for session cookies\n WEBUI_SESSION_COOKIE_SECURE: False\n\n # Sets the SameSite attribute for auth cookies\n WEBUI_AUTH_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for auth cookies\n WEBUI_AUTH_COOKIE_SECURE: False\n\n # Enables or disables authentication\n WEBUI_AUTH: ${WEBUI_AUTH:-True}\n\n # Overrides the randomly generated string used for JSON Web Token\n WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY:?}\n\n # When enabled, makes automatic update checks and notifies about version updates\n ENABLE_VERSION_UPDATE_CHECK: True\n\n # Disables Open WebUI's network connections for update checks and automatic model downloads\n OFFLINE_MODE: False\n\n # Resets the config.json file on startup\n RESET_CONFIG_ON_START: False\n\n # Enables safe mode, which disables potentially unsafe features\n SAFE_MODE: False\n\n # Sets the allowed origins for Cross-Origin Resource Sharing (CORS)\n CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_CORS_ALLOWED_ORIGIN:-*}\n\n # Determines whether to allow custom models defined on the Hub\n RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE: True\n\n # Determines whether to allow custom models for reranking\n RAG_RERANKING_MODEL_TRUST_REMOTE_CODE: True\n\n # Toggles automatic update of the Sentence-Transformer model\n RAG_EMBEDDING_MODEL_AUTO_UPDATE: True\n\n # Toggles automatic update of the reranking model\n RAG_RERANKING_MODEL_AUTO_UPDATE: True\n\n # ===== VECTOR DATABASE CONFIGURATION =====\n # Specifies which vector database system to use\n VECTOR_DB: chroma\n\n # ===== RAG CONFIGURATION =====\n # Sets the directory for TikToken cache\n TIKTOKEN_CACHE_DIR: /app/backend/data/cache/tiktoken\n\n # Sets the batch size for OpenAI embeddings\n RAG_EMBEDDING_OPENAI_BATCH_SIZE: 1\n\n # ===== DOCKER-SPECIFIC CONFIGURATION =====\n # Indicates running in Docker environment\n DOCKER: true\n\n # Home directory for the container\n HOME: /root\n\n # Hugging Face home directory for embedding models\n HF_HOME: /app/backend/data/cache/embedding/models\n\n # Sentence Transformers home directory\n SENTENCE_TRANSFORMERS_HOME: /app/backend/data/cache/embedding/models\n\n # CUDA Docker version to use\n USE_CUDA_DOCKER_VER: cu128\n\n # Embedding model to use in Docker\n USE_EMBEDDING_MODEL_DOCKER: sentence-transformers/all-MiniLM-L6-v2\n\n # ===== TELEMETRY DISABLING =====\n # Disables anonymized telemetry\n ANONYMIZED_TELEMETRY: false\n\n # Disables tracking\n DO_NOT_TRACK: true\n\n # Disables Scarf analytics\n SCARF_NO_ANALYTICS: true\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.open-webui.rule: Host(`open-webui.$DOMAIN`) || Host(`open-webui.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.open-webui.loadbalancer.server.port: \"${OPEN_WEBUI_PORT:-8080}\"\n homepage.group: AI\n homepage.name: Open WebUI\n homepage.icon: open-webui.png\n homepage.href: https://open-webui.$DOMAIN/\n homepage.description: Open WebUI is a feature-rich self-hosted webui for chatting with GenAI.\n command: [\"bash\", \"start.sh\"]\n working_dir: /app/backend\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8080\"]\n interval: 5s\n timeout: 30s\n retries: 10\n restart: always\n mcpo:\n image: ghcr.io/open-webui/mcpo:main\n container_name: mcpo\n hostname: mcpo\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/mcpo/mcp_servers.json:/app/config/mcp_servers.json # TODO: use configs: syntax for configmap here.\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/logs:/app/logs\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/data:/app/data\n environment:\n MCPO_API_KEY: $MCPO_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mcpo.rule: Host(`mcpo.$DOMAIN`) || Host(`mcpo.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.mcpo.loadbalancer.server.port: 8000\n homepage.group: MCPO\n homepage.name: MCPO\n homepage.icon: mcpo.png\n homepage.href: https://mcpo.$DOMAIN/\n homepage.description: MCPO is a tool for managing and interacting with AI models.\n command: --api-key \"$MCPO_API_KEY\" --host 0.0.0.0 --port 8000 --cors-allow-origins \"*\" --config /app/config/mcp_servers.json\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/openapi.json\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n litellm:\n image: 'ghcr.io/berriai/litellm-database:main-stable'\n# image: ghcr.io/berriai/litellm:main-stable\n container_name: litellm\n hostname: litellm\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n depends_on:\n litellm-postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n volumes:\n - ${CONFIG_PATH:-./volumes}/litellm:/app/config\n configs:\n - source: litellm_config.yaml\n target: /app/config/litellm_config.yaml\n mode: 0440\n environment:\n - 'LITELLM_LOG=${LITELLM_LOG:-INFO}'\n - 'LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}'\n - 'UI_USERNAME=${LITELLM_UI_USERNAME:-admin}'\n - 'UI_PASSWORD=$LITELLM_MASTER_KEY'\n - 'DATABASE_URL=postgresql://${LITELLM_POSTGRES_USER:-litellm}:${LITELLM_POSTGRES_PASSWORD:-litellm}@${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}:5432/${LITELLM_POSTGRES_DB:-litellm}'\n - 'REDIS_HOST=${REDIS_HOSTNAME:-redis}'\n - 'REDIS_PORT=${REDIS_PORT:-6379}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'VOYAGE_API_KEY=$VOYAGE_API_KEY'\n - 'AI21_API_KEY=$AI21_API_KEY'\n - 'ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY'\n - 'APIFY_API_TOKEN=$APIFY_API_TOKEN'\n - 'APIPIE_API_KEY=$APIPIE_API_KEY'\n - 'ARLIAI_API_KEY=$ARLIAI_API_KEY'\n - 'AWANLLM_API_KEY=$AWANLLM_API_KEY'\n - 'BASETEN_API_KEY=$BASETEN_API_KEY'\n - 'BITO_ACCESS_KEY=$BITO_ACCESS_KEY'\n - 'BRAVE_API_KEY=$BRAVE_API_KEY'\n - 'CEREBRIUMAI_API_KEY=$CEREBRIUMAI_API_KEY'\n - 'DEEPINFRA_API_KEY=$DEEPINFRA_API_KEY'\n - 'DEEPGRAM_API_KEY=$DEEPGRAM_API_KEY'\n - 'DEEPSEEK_API_KEY=$DEEPSEEK_API_KEY'\n - 'DOCKER_TOKEN=$DOCKER_TOKEN'\n - 'DOCKERHUB_TOKEN=$DOCKERHUB_TOKEN'\n - 'EVERART_API_KEY=$EVERART_API_KEY'\n - 'EXA_API_KEY=$EXA_API_KEY'\n - 'FOREFRONTAI_API_KEY=$FOREFRONTAI_API_KEY'\n - 'GEMINI_API_KEY=$GEMINI_API_KEY'\n - 'GLAMA_API_KEY=$GLAMA_API_KEY'\n - 'GROK_API_KEY=$GROK_API_KEY'\n - 'GROQ_API_KEY=$GROQ_API_KEY'\n - 'HF_TOKEN=$HF_TOKEN'\n - 'HUGGINGFACE_ACCESS_TOKEN=$HUGGINGFACE_ACCESS_TOKEN'\n - 'HUGGINGFACE_API_TOKEN=$HUGGINGFACE_API_TOKEN'\n - 'JINA_API_KEY=$JINA_API_KEY'\n - 'KAGI_API_KEY=$KAGI_API_KEY'\n - 'KLUSTER_API_KEY=$KLUSTER_API_KEY'\n - 'LANGCHAIN_API_KEY=$LANGCHAIN_API_KEY'\n - 'LANGSMITH_API_KEY=$LANGSMITH_API_KEY'\n - 'LITELLM_MASTER_KEY=$LITELLM_MASTER_KEY'\n - 'MISTRAL_API_KEY=$MISTRAL_API_KEY'\n - 'MISTRALAI_API_KEY=$MISTRALAI_API_KEY'\n - 'OPENAI_API_KEY=$OPENAI_API_KEY'\n - 'OPENROUTER_API_KEY=$OPENROUTER_API_KEY'\n - 'PERPLEXITY_API_KEY=$PERPLEXITY_API_KEY'\n - 'PERPLEXITYAI_API_KEY=$PERPLEXITYAI_API_KEY'\n - 'REPLICATE_API_KEY=$REPLICATE_API_KEY'\n - 'SAMBANOVA_API_KEY=$SAMBANOVA_API_KEY'\n - 'SEARCH1API_KEY=$SEARCH1API_KEY'\n - 'SERPAPI_API_KEY=$SERPAPI_API_KEY'\n - 'SMITHERY_API_KEY=$SMITHERY_API_KEY'\n - 'TANDOOR_SECRET_KEY=$TANDOOR_SECRET_KEY'\n - 'TODOIST_API_KEY=$TODOIST_API_KEY'\n - 'TOGETHERAI_API_KEY=$TOGETHERAI_API_KEY'\n - 'UNIFY_API_KEY=$UNIFY_API_KEY'\n - 'UPSTAGE_API_KEY=$UPSTAGE_API_KEY'\n - 'UPSTAGEAI_API_KEY=$UPSTAGEAI_API_KEY'\n - 'VEYRAX_API_KEY=$VEYRAX_API_KEY'\n - 'YANDEX_API_KEY=$YANDEX_API_KEY'\n - 'YOU_API_KEY=$YOU_API_KEY'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.litellm.rule: Host(`litellm.$DOMAIN`) || Host(`litellm.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.litellm.loadbalancer.server.port: ${LITELLM_PORT:-4000}\n homepage.group: AI\n homepage.name: Litellm\n homepage.icon: litellm.png\n homepage.href: https://litellm.$DOMAIN/\n homepage.description: Litellm is a tool for managing and interacting with AI models.\n command: --config /app/config/litellm_config.yaml --port ${LITELLM_PORT:-4000} --host 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://localhost:${LITELLM_PORT:-4000}/health/liveliness\"]\n interval: 30s\n timeout: 15s\n retries: 5\n start_period: 30s\n restart: always\n litellm-postgres:\n# image: 'postgres:16-alpine'\n image: postgres:16.3-alpine3.20\n container_name: litellm-postgres\n hostname: ${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n volumes:\n - '${CONFIG_PATH:-./volumes}/litellm/pgdata:/var/lib/postgresql/data'\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB\"]\n interval: 5s\n timeout: 5s\n retries: 3\n restart: always\n searxng:\n # 🔹🔹 SearxNG 🔹🔹 # https://hub.docker.com/r/searxng/searxng\n # SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n image: docker.io/searxng/searxng\n container_name: searxng\n hostname: ${SEARXNG_HOSTNAME:-searxng}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # touch ${CONFIG_PATH:-./volumes}/searxng/limiter.toml\n - ${CONFIG_PATH:-./volumes}/searxng:/etc/searxng\n environment:\n <<: *common-env\n SEARXNG_BASE_URL: ${SEARXNG_URL:-http://searxng:8080}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: 8080\n homepage.group: Search\n homepage.name: SearxNG\n homepage.icon: searxng.png\n homepage.href: https://searxng.$DOMAIN/\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n healthcheck:\n test: [\"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n restart: always\n code-server:\n # 🔹🔹 Code Server 🔹🔹\n image: docker.io/linuxserver/code-server\n container_name: code-server\n hostname: code-server\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/code-server/dev/config:/config\n - ${CONFIG_PATH:-./volumes}/code-server/dev/workspace:/workspace\n - ${ROOT_PATH:-.}:/workspace\n user: ${PUID:-1001}:${PGID:-988}\n environment:\n <<: *common-env\n CODESERVER_PASSWORD: $SUDO_PASSWORD\n PASSWORD: $SUDO_PASSWORD\n CODESERVER_SUDO_PASSWORD: $SUDO_PASSWORD\n SUDO_PASSWORD: $SUDO_PASSWORD\n CODESERVER_DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.code-server.loadbalancer.server.port: 8443\n homepage.group: Infrastructure\n homepage.name: Code Dev\n homepage.icon: code-server.png\n homepage.href: https://code-server.$DOMAIN/\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0.15\n memory: 200M\n limits:\n cpus: 2\n memory: 4G\n restart: always\n\n init_prometheus:\n image: prom/prometheus\n container_name: init_prometheus\n hostname: init_prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n user: root\n entrypoint: /bin/sh -c \"chown -R 65534:65534 /prometheus\"\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n restart: \"no\"\n\n prometheus:\n depends_on:\n - init_prometheus\n image: prom/prometheus\n container_name: prometheus\n hostname: prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n configs:\n - source: prometheus.yml\n target: /etc/prometheus/prometheus.yml\n mode: 0777\n - source: alert.rules\n target: /etc/prometheus/alert.rules\n mode: 0777\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n - '--web.console.templates=/usr/share/prometheus/consoles'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.prometheus.rule: Host(`prometheus.$DOMAIN`) || Host(`prometheus.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.prometheus.loadbalancer.server.port: 9090\n restart: always\n\n bolabaden-nextjs:\n # 🔹🔹 bolabaden nextJS main website with integrated auth 🔹🔹\n build:\n context: ${SRC_PATH:-./projects}/bolabaden-site\n dockerfile: Dockerfile\n image: th3w1zard1/bolabaden-nextjs\n container_name: bolabaden-nextjs\n hostname: bolabaden-nextjs\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - ${BOLABADEN_NEXTJS_PORT:-3000}:${BOLABADEN_NEXTJS_PORT:-3000}\n volumes:\n - ${CONFIG_PATH:-./volumes}/tinyauth:/data\n environment:\n <<: *common-env\n NODE_ENV: production\n PORT: ${BOLABADEN_NEXTJS_PORT:-3000}\n HOSTNAME: ${BOLABADEN_NEXTJS_HOSTNAME:-0.0.0.0}\n # NextAuth.js Configuration (compatible with TinyAuth)\n SECRET: $TINYAUTH_SECRET?\n NEXTAUTH_URL: https://$DOMAIN\n NEXTAUTH_SECRET: $TINYAUTH_SECRET?\n APP_URL: https://auth.$DOMAIN\n USERS: $TINYAUTH_USERS\n # Google OAuth Configuration\n GOOGLE_CLIENT_ID: $TINYAUTH_GOOGLE_CLIENT_ID\n GOOGLE_CLIENT_SECRET: $TINYAUTH_GOOGLE_CLIENT_SECRET\n # GitHub OAuth Configuration\n GITHUB_CLIENT_ID: $TINYAUTH_GITHUB_CLIENT_ID\n GITHUB_CLIENT_SECRET: $TINYAUTH_GITHUB_CLIENT_SECRET\n # Additional settings (TinyAuth compatible)\n SESSION_EXPIRY: ${TINYAUTH_SESSION_EXPIRY:-604800} # 2 weeks session expiry\n COOKIE_SECURE: ${TINYAUTH_COOKIE_SECURE:-true} # Send cookie only with HTTPS\n APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # Customize login page title\n NEXT_PUBLIC_APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # For client-side access\n LOGIN_MAX_RETRIES: ${TINYAUTH_LOGIN_MAX_RETRIES:-15} # Maximum login attempts before account lockout\n LOGIN_TIMEOUT: ${TINYAUTH_LOGIN_TIMEOUT:-300} # Lock account for 5 minutes after too many failed attempts\n OAUTH_AUTO_REDIRECT: ${TINYAUTH_OAUTH_AUTO_REDIRECT:-none} # Options: none, github, google, or credentials\n OAUTH_WHITELIST: ${TINYAUTH_OAUTH_WHITELIST:-boden.crouch@gmail.com} # e.g. user1,user2,/^admin.*/\n # User level configuration\n ADMIN_ACCOUNTS: ${TINYAUTH_ADMIN_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of admin emails\n OWNER_ACCOUNTS: ${TINYAUTH_OWNER_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of owner emails\n labels:\n traefik.enable: \"true\"\n # Main website router\n traefik.http.routers.bolabaden-nextjs.rule: 'Host(`$DOMAIN`) || Host(`$TS_HOSTNAME.$DOMAIN`) || Host(`$DUCKDNS_DOMAIN`) || Host(`$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.bolabaden-nextjs.service: bolabaden-nextjs\n # Auth router (replaces tinyauth)\n #traefik.http.routers.tinyauth.rule: 'Host(`auth.$DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DOMAIN`) || Host(`auth.$DUCKDNS_DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n #traefik.http.routers.tinyauth.service: bolabaden-nextjs\n # ForwardAuth middleware\n #traefik.http.middlewares.tinyauth.forwardauth.address: http://bolabaden-nextjs:${BOLABADEN_NEXTJS_PORT:-3000}/api/auth/traefik\n # Service configuration\n traefik.http.services.bolabaden-nextjs.loadbalancer.server.port: ${BOLABADEN_NEXTJS_PORT:-3000}\n # Homepage integration\n homepage.group: Web Services\n homepage.name: Bolabaden\n homepage.icon: dashboard.png\n homepage.href: https://$DOMAIN/\n homepage.description: Bolabaden main website with embedded services and authentication\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n\n whoami:\n # 🔹🔹 Whoami 🔹🔹\n image: traefik/whoami\n container_name: whoami\n hostname: whoami\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: 'Host(`whoami.$DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DOMAIN`) || Host(`whoami.$DUCKDNS_DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n homepage.group: Web Services\n homepage.name: Whoami\n homepage.icon: whoami.png\n homepage.href: https://whoami.$DOMAIN\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n restart: always\n\n dokku:\n # 🔹🔹 Dokku 🔹🔹\n image: dokku/dokku:0.35.20\n container_name: dokku\n hostname: dokku\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - \"127.0.0.1:3022:22\" # SSH\n - \"127.0.0.1:8080:80\" # HTTP\n - \"127.0.0.1:8443:443\" # HTTPS\n volumes:\n - \"/var/lib/dokku:/mnt/dokku\" # Dokku data\n - \"/var/run/docker.sock:/var/run/docker.sock\" # Docker socket\n environment:\n DOKKU_HOSTNAME: dokku.$DOMAIN\n DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku\n DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dokku-http.service: dokku-http\n traefik.http.routers.dokku-https.service: dokku-https\n traefik.http.routers.dokku-ssh.service: dokku-ssh\n traefik.http.routers.dokku-http.rule: 'Host(`dokku-http.$DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-http.$DUCKDNS_DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-https.rule: 'Host(`dokku-https.$DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-https.$DUCKDNS_DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-ssh.rule: 'Host(`dokku-ssh.$DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-ssh.$DUCKDNS_DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dokku-http.loadbalancer.server.port: 80\n traefik.http.services.dokku-https.loadbalancer.server.port: 443\n traefik.http.services.dokku-ssh.loadbalancer.server.port: 22\n homepage.group: Infrastructure\n homepage.name: Dokku\n homepage.icon: dokku.png\n homepage.href: https://dokku.$DOMAIN/\n homepage.description: Dokku is a lightweight PaaS that runs on top of Docker.\n restart: always\n\n dozzle:\n # 🔹🔹 Dozzle 🔹🔹\n image: amir20/dozzle\n container_name: dozzle\n hostname: dozzle\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:z\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: 'Host(`dozzle.$DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DOMAIN`) || Host(`dozzle.$DUCKDNS_DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dozzle.loadbalancer.server.port: 8080\n homepage.group: System Monitoring\n homepage.name: Dozzle\n homepage.icon: dozzle.png\n homepage.href: https://dozzle.$DOMAIN/\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n restart: always\n\n homepage:\n # 🔹🔹 Homepage 🔹🔹 # https://github.com/gethomepage/homepage\n image: ghcr.io/gethomepage/homepage\n container_name: homepage\n hostname: homepage\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # DO NOT create a bind mount to the entire /app/public/ directory.\n - /var/run/docker.sock:/var/run/docker.sock:z\n - ${CONFIG_PATH:-./volumes}/homepage:/app/config\n environment:\n <<: *common-env\n HOMEPAGE_ALLOWED_HOSTS: ${HOMEPAGE_ALLOWED_HOSTS:-*}\n HOMEPAGE_VAR_TITLE: ${HOMEPAGE_VAR_TITLE:-Bolabaden}\n HOMEPAGE_VAR_SEARCH_PROVIDER: ${HOMEPAGE_VAR_SEARCH_PROVIDER:-google}\n HOMEPAGE_VAR_HEADER_STYLE: ${HOMEPAGE_VAR_HEADER_STYLE:-}\n HOMEPAGE_VAR_WEATHER_CITY: ${HOMEPAGE_VAR_WEATHER_CITY:-Chicago}\n HOMEPAGE_VAR_WEATHER_LAT: ${HOMEPAGE_VAR_WEATHER_LAT:-41.8781}\n HOMEPAGE_VAR_WEATHER_LONG: ${HOMEPAGE_VAR_WEATHER_LONG:--87.6298}\n # HOMEPAGE_VAR_WEATHER_TIME: ${HOMEPAGE_VAR_WEATHER_TIME:-}\n HOMEPAGE_VAR_WEATHER_UNIT: ${HOMEPAGE_VAR_WEATHER_UNIT:-fahrenheit}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: 'Host(`homepage.$DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DOMAIN`) || Host(`homepage.$DUCKDNS_DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.homepage.loadbalancer.server.port: 3000\n homepage.group: Dashboards\n homepage.name: Homepage\n homepage.icon: homepage.png\n homepage.href: https://homepage.$DOMAIN/\n homepage.description: Homepage is a dashboard that displays all of your services.\n healthcheck: # docker exec homepage ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 0.25 # deliberately hobble the CPU in favor of GPU transcoding\n memory: 1G\n restart: always\n\n watchtower:\n # 🔹🔹 Watchtower 🔹🔹\n image: containrrr/watchtower\n container_name: watchtower\n hostname: watchtower\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n# - ${CONFIG_PATH:-./volumes}/watchtower/data:/data\n environment:\n <<: *common-env\n WATCHTOWER_CLEANUP: ${WATCHTOWER_CLEANUP:-true}\n WATCHTOWER_SCHEDULE: ${WATCHTOWER_SCHEDULE:-0 0 6 * * *} # Run at 6am daily\n WATCHTOWER_NOTIFICATION_URL: ${WATCHTOWER_NOTIFICATION_URL:-}\n WATCHTOWER_NOTIFICATION_REPORT: ${WATCHTOWER_NOTIFICATION_REPORT:-true}\n WATCHTOWER_DEBUG: ${WATCHTOWER_DEBUG:-true}\n WATCHTOWER_LOG_LEVEL: ${WATCHTOWER_LOG_LEVEL:-debug}\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n restart: always\n\n flaresolverr:\n # 🔹🔹 Flaresolverr 🔹🔹 # https://github.com/flaresolverr/flaresolverr\n image: ghcr.io/flaresolverr/flaresolverr\n #image: ghcr.io/thephaseless/byparr\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${FLARESOLVERR_PORT:-8191}\n environment:\n <<: *common-env\n # FlareSolverr Environment Variables\n \n LOG_LEVEL: info # Verbosity of the logging. Use LOG_LEVEL=debug for more information.\n LOG_HTML: false # Only for debugging. If true all HTML that passes through the proxy will be logged to the console in debug level.\n CAPTCHA_SOLVER: none # Captcha solving method. It is used when a captcha is encountered. Note: none of the captcha solvers work with the current version of Flaresolverr.\n PORT: ${FLARESOLVERR_PORT:-8191} # Listening port.\n HOST: 0.0.0.0 # Listening interface.\n HEADLESS: ${FLARESOLVERR_HEADLESS:-true} # Only for debugging. To run the web browser in headless mode or visible.\n BROWSER_TIMEOUT: ${FLARESOLVERR_BROWSER_TIMEOUT:-120000} # If you are experiencing errors/timeouts because your system is slow, you can try to increase this value.\n TEST_URL: ${FLARESOLVERR_TEST_URL:-https://www.google.com} # FlareSolverr makes a request on start to make sure the web browser is working.\n PROMETHEUS_ENABLED: ${FLARESOLVERR_PROMETHEUS_ENABLED:-true} # Enable Prometheus exporter\n PROMETHEUS_PORT: ${PROMETHEUS_PORT:-9090} # Listening port for Prometheus exporter\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: 'Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DOMAIN`) || Host(`flaresolverr.$DUCKDNS_DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.flaresolverr.loadbalancer.server.port: ${FLARESOLVERR_PORT:-8191}\n homepage.group: Infrastructure\n homepage.name: Flaresolverr\n homepage.icon: flaresolverr.png\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:${FLARESOLVERR_PORT:-8191}/health > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n start_period: 60s\n cpus: 0.6\n mem_reservation: 64M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 64M\n limits:\n cpus: 0.6\n memory: 1G\n restart: always\n\n stremio:\n # 🔹🔹 Stremio 🔹🔹\n # Stream Movies/TV over debrid instantly.\n image: th3w1zard1/stremio-docker\n container_name: stremio\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n ports:\n - 11470:11470/tcp\n - 12470:12470/tcp\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/root/.stremio-server:/root/.stremio-server\n environment:\n SERVER_URL: ${STREMIO_SERVER_URL:-https://stremio.$DOMAIN/}\n WEBUI_LOCATION: ${STREMIO_WEBUI_LOCATION:-https://stremio-web.$DOMAIN/shell/}\n NO_CORS: ${STREMIO_NO_CORS:-0}\n CASTING_DISABLED: ${STREMIO_CASTING_DISABLED:-0}\n labels:\n traefik.enable: \"true\"\n # Router for Stremio Web UI (port 8080)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.stremio-web.rule: \"Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-web.$DUCKDNS_DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)\"\n traefik.http.routers.stremio-web.priority: 10\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: 8080\n # Router for Stremio API and Streaming Server (port 11470)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-http-server.rule: 'Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-api.$DUCKDNS_DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-api-http-server.priority: 100\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: 11470\n # Stremio HTTPS Streaming Server (port 12470)\n traefik.http.routers.stremio-https-server.service: stremio-https-server\n traefik.http.routers.stremio-https-server.rule: 'Host(`stremio.$DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio.$DUCKDNS_DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-https-server.priority: 100\n traefik.http.services.stremio-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-https-server.loadbalancer.server.port: 12470\n homepage.group: Media Streaming Platforms\n homepage.name: Stremio\n homepage.icon: stremio.png\n homepage.href: https://stremio.$DOMAIN/\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n healthcheck:\n test: [\"CMD-SHELL\", \"(curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\"]\n interval: 60s\n timeout: 5s\n retries: 3\n start_period: 1m30s\n cpu_shares: 10 # potentially should be 1\n mem_reservation: 256M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 256M\n limits:\n cpus: 2\n memory: 2G\n restart: always\n aiostreams:\n # 🔹🔹 AIOStreams 🔹🔹\n image: ghcr.io/viren070/aiostreams\n container_name: aiostreams\n hostname: ${AIOSTREAMS_HOSTNAME:-aiostreams}\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/aiostreams/data:/app/data\n environment:\n <<: *common-env\n # ==============================================================================\n # ESSENTIAL ADDON SETUP\n # ==============================================================================\n # These are the most important settings you'll need to configure.\n\n # --- Addon Identification ---\n # Descriptive name for your addon instance.\n ADDON_NAME: ${AIOSTREAMS_ADDON_NAME:-BadenAIO}\n # Unique identifier for your addon.\n ADDON_ID: aiostreams.$DOMAIN\n\n # --- Network Configuration ---\n # The port on which the addon will listen.\n # Default: 3000\n PORT: ${AIOSTREAMS_PORT:-3005}\n\n # The base URL of your addon. Highly recommended for proper functioning.\n # Used for generating installation URLs and identifying self-scraping.\n # Example: https://aiostreams.yourdomain.com\n BASE_URL: https://aiostreams.$DOMAIN\n\n # --- Security ---\n # CRITICAL: Secret key for encrypting addon configuration.\n # MUST be a 64-character hex string.\n # Generate one using:\n # Linux/macOS: openssl rand -hex 32\n # Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) })\n # Or: [System.Guid]::NewGuid().ToString(\"N\") + [System.Guid]::NewGuid().ToString(\"N\") (ensure it's 64 chars)\n SECRET_KEY: ${AIOSTREAMS_SECRET_KEY:-207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde}\n\n # API key to protect your addon installation and usage.\n # Leave empty to disable password protection.\n # Can be any string.\n ADDON_PASSWORD: ${AIOSTREAMS_ADDON_PASSWORD:-sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9}\n #\n # PostgreSQL example:\n # DATABASE_URI=postgres://username:password@host:port/database_name\n # (e.g., postgresql://postgres:password@localhost:5432/aiostreams)\n DATABASE_URI: ${AIOSTREAMS_DATABASE_URI:-sqlite://./data/db.sqlite}\n\n\n # ==============================================================================\n # DEBRID & OTHER SERVICE API KEYS\n # ==============================================================================\n\n # Provide a default TMDB access token to be used for the Title Matching filter if a user does not provide any.\n TMDB_ACCESS_TOKEN: $TMDB_ACCESS_TOKEN\n\n # Configure API keys for debrid services and others you plan to use.\n # 'DEFAULT_' values are pre-filled in the user's config page.\n # 'FORCED_' values override user settings and hide the option.\n\n # --- Real-Debrid ---\n DEFAULT_REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n #- FORCED_REALDEBRID_API_KEY=$REALDEBRID_API_KEY\n\n # --- AllDebrid ---\n DEFAULT_ALLDEBRID_API_KEY: $ALLDEBRID_API_KEY\n #- FORCED_ALLDEBRID_API_KEY=$ALLDEBRID_API_KEY\n\n # --- Premiumize ---\n DEFAULT_PREMIUMIZE_API_KEY: $PREMIUMIZE_API_KEY\n #- FORCED_PREMIUMIZE_API_KEY=$PREMIUMIZE_API_KEY\n\n # --- Debrid-Link ---\n DEFAULT_DEBRIDLINK_API_KEY: $DEBRIDLINK_API_KEY\n #- FORCED_DEBRIDLINK_API_KEY=$DEBRIDLINK_API_KEY\n\n # --- Torbox ---\n DEFAULT_TORBOX_API_KEY: $TORBOX_API_KEY\n #- FORCED_TORBOX_API_KEY=$TORBOX_API_KEY\n\n # --- OffCloud ---\n DEFAULT_OFFCLOUD_API_KEY: $OFFCLOUD_API_KEY\n #- FORCED_OFFCLOUD_API_KEY=$OFFCLOUD_API_KEY\n DEFAULT_OFFCLOUD_EMAIL: $OFFCLOUD_EMAIL\n #- FORCED_OFFCLOUD_EMAIL=$OFFCLOUD_EMAIL\n DEFAULT_OFFCLOUD_PASSWORD: $OFFCLOUD_PASSWORD\n #- FORCED_OFFCLOUD_PASSWORD=$OFFCLOUD_PASSWORD\n\n # --- Put.io ---\n DEFAULT_PUTIO_CLIENT_ID: $PUTIO_CLIENT_ID\n #- FORCED_PUTIO_CLIENT_ID=$PUTIO_CLIENT_ID\n DEFAULT_PUTIO_CLIENT_SECRET: $PUTIO_CLIENT_SECRET\n #- FORCED_PUTIO_CLIENT_SECRET=$PUTIO_CLIENT_SECRET\n\n # --- EasyNews ---\n DEFAULT_EASYNEWS_USERNAME: $EASYNEWS_USERNAME\n #- FORCED_EASYNEWS_USERNAME=$EASYNEWS_USERNAME\n DEFAULT_EASYNEWS_PASSWORD: $EASYNEWS_PASSWORD\n #- FORCED_EASYNEWS_PASSWORD=$EASYNEWS_PASSWORD\n\n # --- EasyDebrid ---\n DEFAULT_EASYDEBRID_API_KEY: $EASYDEBRID_API_KEY\n #- FORCED_EASYDEBRID_API_KEY=$EASYDEBRID_API_KEY\n\n # --- PikPak ---\n DEFAULT_PIKPAK_EMAIL: $PIKPAK_EMAIL\n #- FORCED_PIKPAK_EMAIL=$PIKPAK_EMAIL\n DEFAULT_PIKPAK_PASSWORD: $PIKPAK_PASSWORD\n #- FORCED_PIKPAK_PASSWORD=$PIKPAK_PASSWORD\n\n # --- Seedr ---\n DEFAULT_SEEDR_ENCODED_TOKEN: $SEEDR_ENCODED_TOKEN\n #- FORCED_SEEDR_ENCODED_TOKEN=$SEEDR_ENCODED_TOKEN\n\n\n # ==============================================================================\n # CUSTOMIZATION & ACCESS CONTROL\n # ==============================================================================\n\n # --- Custom HTML ---\n # Display custom HTML at the top of the addon's configuration page.\n # Example: CUSTOM_HTML=\"<div>Welcome to my AIOStreams!</div>\"\n CUSTOM_HTML: $AIOSTREAMS_CUSTOM_HTML\n\n # --- Trusted Users ---\n # Comma-separated list of trusted UUIDs.\n # Trusted users can access features like regex filters if REGEX_FILTER_ACCESS is 'trusted'.\n # Example: TRUSTED_UUIDS=ae32f456-1234-5678-9012-345678901234,another-uuid-here\n TRUSTED_UUIDS: $AIOSTREAMS_TRUSTED_UUIDS\n\n # --- Regex Filter Access ---\n # Controls who can use regex filters.\n # 'none': No one can use regex filters.\n # 'trusted': Only users listed in TRUSTED_UUIDS.\n # 'all': All users (only recommended if ADDON_PASSWORD is set).\n # Default: trusted\n REGEX_FILTER_ACCESS: ${AIOSTREAMS_REGEX_FILTER_ACCESS:-trusted}\n\n # ==============================================================================\n # CACHE CONFIGURATION\n # ==============================================================================\n\n # --- Default maximum cache size ----\n # The maximum number of items that can be held in a given cache instance, if not overriden by a specific cache instance\n DEFAULT_MAX_CACHE_SIZE: ${AIOSTREAMS_DEFAULT_MAX_CACHE_SIZE:-100000}\n\n # --- Proxy IP TTL (StremThru/MediaFlow Proxy)\n # The Time-To-Live (in seconds) of items in the Public IP cache.\n # Set to -1 to disable caching\n PROXY_IP_CACHE_TTL: ${AIOSTREAMS_PROXY_IP_CACHE_TTL:-900} # Default is 900\n\n # --- Addon Resource Caching ---\n # Control the Caching of resources fetched from other addons\n # Set to -1 to disable caching.\n MANIFEST_CACHE_TTL: ${AIOSTREAMS_MANIFEST_CACHE_TTL:-300} # Default is 300\n SUBTITLE_CACHE_TTL: ${AIOSTREAMS_SUBTITLE_CACHE_TTL:-300} # Default is 300\n STREAM_CACHE_TTL: ${AIOSTREAMS_STREAM_CACHE_TTL:-1} # Default is 1\n CATALOG_CACHE_TTL: ${AIOSTREAMS_CATALOG_CACHE_TTL:-300} # Default is 300\n META_CACHE_TTL: ${AIOSTREAMS_META_CACHE_TTL:-300} # Default is 300\n ADDON_CATALOG_CACHE_TTL: ${AIOSTREAMS_ADDON_CATALOG_CACHE_TTL:-300} # Default is 300\n\n # --- RPDB API Key Validation Caching ---\n # Control how long a valid API key check is cached for\n # Default: 7 days\n RPDB_API_KEY_VALIDITY_CACHE_TTL: ${AIOSTREAMS_RPDB_API_KEY_VALIDITY_CACHE_TTL:-604800}\n\n # --- Self-Scraping ---\n # Prevent this AIOStreams instance from being added as an addon to itself.\n # Default: true\n DISABLE_SELF_SCRAPING: ${AIOSTREAMS_DISABLE_SELF_SCRAPING:-true}\n\n # --- Log Level ---\n # Set the verbosity of logs. Options: \"error\", \"warn\", \"info\", \"http\", \"verbose\",\"debug\", \"silly\"\n # Default: info\n LOG_LEVEL: ${AIOSTREAMS_LOG_LEVEL:-info}\n\n # --- Log Format ---\n # Output logs in \"json\" or \"text\" format.\n # Default: text\n LOG_FORMAT: ${AIOSTREAMS_LOG_FORMAT:-text}\n\n # --- Log Sensitive Information ---\n # Whether to include potentially sensitive info (like API keys) in logs.\n # Useful for debugging, but disable for production if concerned.\n # Default: true\n LOG_SENSITIVE_INFO: ${AIOSTREAMS_LOG_SENSITIVE_INFO:-true}\n\n # --- Log Timezone ---\n # Adjust the timezone used for logging\n # e.g. Europe/Paris, America/New_York\n LOG_TIMEZONE: ${TZ:-America/Chicago}\n\n # --- Stream Proxy Enabled ---\n # DEFAULT_PROXY_ENABLED: ${AIOSTREAMS_DEFAULT_PROXY_ENABLED:-true} # Default state for enabling a stream proxy.\n FORCE_PROXY_ENABLED: ${AIOSTREAMS_FORCE_PROXY_ENABLED:-true} # Force stream proxy on/off for all users.\n\n # --- Stream Proxy ID ---\n # 'mediaflow' or 'stremthru'\n DEFAULT_PROXY_ID: ${AIOSTREAMS_DEFAULT_PROXY_ID:-stremthru}\n # FORCE_PROXY_ID: stremthru\n\n # --- Stream Proxy URL ---\n # URL of your MediaFlow or StremThru instance.\n DEFAULT_PROXY_URL: http://stremthru:8080\n # FORCE_PROXY_URL: ${STREMTHRU_INTERNAL_URL:-http://stremthru:8080}\n\n # --- Stream Proxy Credentials ---\n # Format: username:password\n DEFAULT_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n # FORCE_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n\n # --- Stream Proxy Public IP ---\n # Public IP for the proxy, if needed.\n # DEFAULT_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n # FORCE_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n\n # --- Proxied Services ---\n # Comma-separated list of services whose streams should be proxied (e.g., realdebrid,alldebrid).\n # DEFAULT_PROXY_PROXIED_SERVICES:\n # FORCE_PROXY_PROXIED_SERVICES:\n\n # --- Disable Proxied Addons Feature ---\n # If true, it disables the 'Proxied Addons' option.\n # FORCE_PROXY_DISABLE_PROXIED_ADDONS: ${AIOSTREAMS_FORCE_PROXY_DISABLE_PROXIED_ADDONS:-false}\n\n # --- Encrypt Streaming URLs ---\n # Encrypt MediaFlow/StremThru URLs for better compatibility with external players.\n ENCRYPT_MEDIAFLOW_URLS: ${AIOSTREAMS_ENCRYPT_MEDIAFLOW_URLS:-true}\n ENCRYPT_STREMTHRU_URLS: ${AIOSTREAMS_ENCRYPT_STREMTHRU_URLS:-true}\n\n\n # --- Forced Public proxy URL adjustments ----\n # If you'd like to force some adjustments to be made to the streaming urls generated by either proxy, you can do that here.\n # This is useful when you want to use a local url for requests but have AIOStreams force the urls to use a specific host, port, and protocol.\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN # Default is stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: 443\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n\n\n # ==============================================================================\n # ADVANCED CONFIGURATION & LIMITS\n # ==============================================================================\n\n # --- General Default Timeout ---\n # Default timeout in milliseconds for all requests if not overridden by a specific timeout.\n # Default: 15000 (15 seconds)\n DEFAULT_TIMEOUT: ${AIOSTREAMS_DEFAULT_TIMEOUT:-15000}\n\n # --- Configuration Limits ---\n # Maximum number of addons allowed per AIOStreams configuration.\n MAX_ADDONS: ${AIOSTREAMS_MAX_ADDONS:-100}\n # Maximum number of groups allowed per AIOStreams configuration\n MAX_GROUPS: ${AIOSTREAMS_MAX_GROUPS:-50}\n # Maximum number of keyword filters per AIOStreams configuration.\n MAX_KEYWORD_FILTERS: ${AIOSTREAMS_MAX_KEYWORD_FILTERS:-50}\n # Maximum number of condition filters per AIOStreams configuration\n MAX_CONDITION_FILTERS: ${AIOSTREAMS_MAX_CONDITION_FILTERS:-200}\n # Maximum timeout (ms) an addon can be set to via override.\n MAX_TIMEOUT: ${AIOSTREAMS_MAX_TIMEOUT:-50000}\n # Minimum timeout (ms) an addon can be set to via override.\n MIN_TIMEOUT: ${AIOSTREAMS_MIN_TIMEOUT:-1000}\n\n\n # ==============================================================================\n # RATE LIMIT CONFIGURATION\n # ==============================================================================\n # Configure rate limits to prevent abuse. Typically, defaults are fine.\n\n # --- Disable Rate Limits ---\n # Set to true to disable all rate limits (NOT RECOMMENDED).\n # Default: false\n DISABLE_RATE_LIMITS: ${AIOSTREAMS_DISABLE_RATE_LIMITS:-false}\n\n # Window and Max requests refer to the maximum number of requests a user can make within a specific timeframe\n\n # --- Static File Serving ---\n STATIC_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STATIC_RATE_LIMIT_WINDOW:-5}\n STATIC_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STATIC_RATE_LIMIT_MAX_REQUESTS:-75}\n\n # --- User API ---\n USER_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_USER_API_RATE_LIMIT_WINDOW:-5}\n USER_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_USER_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stream API ---\n STREAM_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_WINDOW:-5}\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Format API ---\n FORMAT_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_WINDOW:-5}\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Catalog API ---\n CATALOG_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_WINDOW:-5}\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Stream ---\n STREMIO_STREAM_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_WINDOW:-15}\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Catalog ---\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_WINDOW:-5}\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Stremio Manifest ---\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_WINDOW:-5}\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Subtitle ---\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_WINDOW:-5}\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Meta ---\n STREMIO_META_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_WINDOW:-5}\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_MAX_REQUESTS:-15}\n\n\n # ==============================================================================\n # INACTIVE USER PRUNING\n # ==============================================================================\n # Automatically prune (delete) inactive user configurations.\n\n # --- Prune Interval ---\n # How often to check for inactive users, in seconds.\n # Default: 86400 (1 day)\n PRUNE_INTERVAL: 8640000\n\n # --- Prune Max Inactivity Days ---\n # Maximum days of inactivity before a user's configuration is pruned.\n # Set to -1 to disable\n PRUNE_MAX_DAYS: -1\n\n # ==============================================================================\n # EXTERNAL ADDON SERVICE URLs & TIMEOUTS\n # ==============================================================================\n # URLs and default timeouts for various external Stremio addons that AIOStreams can integrate with.\n # Change these if you use self-hosted versions or if defaults become outdated.\n\n # ----------- COMET ------------\n COMET_URL: ${COMET_INTERNAL_URL:-http://comet:3000}\n MEDIAFUSION_URL: ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000}\n MEDIAFUSION_CONFIG_TIMEOUT: ${MEDIAFUSION_CONFIG_TIMEOUT:-5000}\n MEDIAFUSION_API_PASSWORD: $SUDO_PASSWORD\n DEFAULT_JACKETTIO_INDEXERS: '${JACKETTIO_INDEXERS:-[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]}'\n DEFAULT_JACKETTIO_STREMTHRU_URL: ${JACKETTIO_STREMTHRU_URL:-https://stremthru.13377001.xyz}\n STREMTHRU_STORE_URL: ${STREMTHRU_STORE_INTERNAL_URL:-http://stremthru:8080/stremio/store}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: 'Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DOMAIN`) || Host(`aiostreams.$DUCKDNS_DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.aiostreams.loadbalancer.server.port: ${AIOSTREAMS_PORT:-3005}\n homepage.group: Stremio Addons\n homepage.name: AIOStreams\n homepage.icon: aiostreams.png\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n cpu_shares: 10\n mem_reservation: 50M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 50M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n jackett:\n # 🔹🔹 Jackett 🔹🔹\n depends_on:\n flaresolverr:\n condition: service_healthy\n image: linuxserver/jackett\n container_name: jackett\n hostname: jackett\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/jackett/config:/config\n - /mnt/remote/blackhole:/blackhole\n environment:\n <<: *common-env\n AUTO_UPDATE: ${JACKETT_AUTO_UPDATE:-true}\n RUN_OPTS: \"${JACKETT_RUN_OPTS:-}\"\n JACKETT_API_KEY: $JACKETT_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.jackett.rule: 'Host(`jackett.$DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DOMAIN`) || Host(`jackett.$DUCKDNS_DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.jackett.loadbalancer.server.port: 9117\n homepage.group: Source Aggregator\n homepage.name: Jackett Indexer\n homepage.icon: jackett.png\n homepage.href: https://jackett.$DOMAIN/\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.weight: 1\n homepage.widget.type: jackett\n homepage.widget.url: ${JACKETT_INTERNAL_URL:-http://jackett:9117}\n homepage.widget.key: $JACKETT_API_KEY\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=$JACKETT_API_KEY || exit 1\"]\n interval: 30s\n timeout: 10s\n start_period: 60s\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n docker-socket-proxy:\n # 🔹🔹 Docker Socket Proxy 🔹🔹\n image: tecnativa/docker-socket-proxy\n container_name: dockerproxy\n hostname: dockerproxy\n extra_hosts: *common-hostname-aliases\n privileged: true\n networks:\n - publicnet\n ports:\n - 127.0.0.1:2375:2375\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n restart: always\n prowlarr:\n # 🔹🔹 Prowlarr 🔹🔹\n image: linuxserver/prowlarr\n container_name: prowlarr\n hostname: prowlarr\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n configs:\n - source: prowlarr_indexer_proxy.json\n target: /config/prowlarr_indexer_proxy.json\n mode: 0777\n - source: prowlarr_indexers.json\n target: /etc/config/prowlarr_indexers.json\n mode: 0777\n volumes:\n - ${CONFIG_PATH:-./volumes}/prowlarr/config:/config:rw\n - ${CONFIG_PATH:-./volumes}/prowlarr/config/etc/config:/etc/config\n environment:\n <<: *common-env\n PROWLARR_API_KEY: $PROWLARR_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.middlewares.prowlarr.forwardauth.authResponseHeaders: authorization\n tinyauth.basic.username: $PROWLARR_USERNAME\n tinyauth.basic.password.plain: $PROWLARR_PASSWORD\n traefik.http.routers.prowlarr.rule: 'Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DOMAIN`) || Host(`prowlarr.$DUCKDNS_DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.prowlarr.loadbalancer.server.port: 9696\n homepage.group: Indexers\n homepage.name: Prowlarr\n homepage.icon: prowlarr.png\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.weight: 1\n homepage.widget.type: prowlarr\n homepage.widget.url: ${PROWLARR_INTERNAL_URL:-http://prowlarr:9696}\n homepage.widget.key: $PROWLARR_API_KEY\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n limits:\n cpus: '2.0'\n memory: 6G\n reservations:\n cpus: '0.0'\n memory: 128M\n healthcheck: # docker exec prowlarr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"curl -fs -H \\\"Authorization: Bearer $$PROWLARR_API_KEY\\\" http://127.0.0.1:9696/api/v1/system/status || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 120s\n restart: always\n comet:\n image: g0ldyy/comet\n container_name: comet\n hostname: comet\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/comet/data:/data\n environment:\n <<: *common-env\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: ${COMET_PORT:-2020}\n FASTAPI_WORKERS: ${CPU_COUNT:-4}\n USE_GUNICORN: True\n DASHBOARD_ADMIN_PASSWORD: $SUDO_PASSWORD\n DATABASE_TYPE: sqlite\n DATABASE_PATH: /data/comet.db\n METADATA_CACHE_TTL: 2592000\n TORRENT_CACHE_TTL: 1296000\n DEBRID_CACHE_TTL: 86400\n INDEXER_MANAGER_TYPE: prowlarr # jackett, prowlarr, none.\n INDEXER_MANAGER_URL: ${PROWLARR_HOST:-http://prowlarr:9696} # http://jackett:9117, http://prowlarr:9696\n INDEXER_MANAGER_API_KEY: $PROWLARR_API_KEY # $JACKETT_API_KEY, $PROWLARR_API_KEY\n INDEXER_MANAGER_TIMEOUT: 60\n INDEXER_MANAGER_INDEXERS: ${COMET_INDEXERS:-[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]}\n GET_TORRENT_TIMEOUT: 2\n DOWNLOAD_TORRENT_FILES: True\n SCRAPE_COMET: true\n COMET_URL: https://comet.elfhosted.com\n SCRAPE_ZILEAN: true\n ZILEAN_URL: https://zilean.elfhosted.com\n SCRAPE_TORRENTIO: true\n TORRENTIO_URL: https://torrentio.strem.fun\n SCRAPE_MEDIAFUSION: true\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n STREMTHRU_URL: https://stremthru.$DOMAIN\n PROXY_DEBRID_STREAM: True\n PROXY_DEBRID_STREAM_PASSWORD: $STREMTHRU_PROXY_AUTH\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: -1\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: $PREMIUMIZE_API_KEY\n REMOVE_ADULT_CONTENT: True\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: 'Host(`comet.$DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DOMAIN`) || Host(`comet.$DUCKDNS_DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.comet.loadbalancer.server.port: ${COMET_PORT:-2020}\n homepage.group: Stremio Addons\n homepage.name: Comet\n homepage.icon: comet.png\n homepage.href: https://comet.$DOMAIN/\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n healthcheck: # docker exec comet ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:$${FASTAPI_PORT:-2020}/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 5s\n retries: 3\n start_period: 15s\n restart: always\n mediafusion:\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n image: mhdzumair/mediafusion\n container_name: mediafusion\n hostname: mediafusion\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n <<: *common-env\n # CORE APPLICATION SETTINGS\n ADDON_NAME: \"${MEDIAFUSION_ADDON_NAME:-MediaFusion}\" # The name of the MediaFusion addon\n VERSION: \"1.0.0\" # The version of the MediaFusion addon\n DESCRIPTION: \"MediaFusion | $DOMAIN\" # A brief description of the MediaFusion addon to show on Stremio Addon page\n BRANDING_DESCRIPTION: \"${MEDIAFUSION_BRANDING_DESCRIPTION:-}\" # Additional branding description text\n CONTACT_EMAIL: \"webmaster@$DOMAIN\" # The contact email for the MediaFusion addon\n HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where MediaFusion is hosted (required)\n POSTER_HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where poster images are served from (default: Same as host_url)\n SECRET_KEY: \"${MEDIAFUSION_SECRET_KEY:-c75ac92df70c4383c8d1bb37f65454f9}\" # A 32-character secret key for securely signing the session (required)\n API_PASSWORD: \"$SUDO_PASSWORD\" # The password for accessing the API endpoints (required)\n LOGGING_LEVEL: \"INFO\" # The logging level of the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)\n LOGO_URL: \"${MEDIAFUSION_LOGO_URL:-}\" # The URL of the MediaFusion logo\n IS_PUBLIC_INSTANCE: \"${MEDIAFUSION_IS_PUBLIC_INSTANCE:-False}\" # Set to True for community instances that don't require authentication except for /scraper endpoint\n MIN_SCRAPING_VIDEO_SIZE: \"${MEDIAFUSION_MIN_SCRAPING_VIDEO_SIZE:-26214400}\" # Minimum video size in bytes (25 MB) for scraping\n METADATA_PRIMARY_SOURCE: \"${MEDIAFUSION_METADATA_PRIMARY_SOURCE:-tmdb}\" # Primary source for metadata. Options: \"imdb\" or \"tmdb\"\n # STREAMING PROVIDER SETTINGS\n #DISABLED_PROVIDERS: \"\" # List of disabled streaming providers (p2p, realdebrid, seedr, debridlink, alldebrid, offcloud, pikpak, torbox, premiumize, qbittorrent, stremthru, easydebrid)\n # DATABASE AND CACHE SETTINGS\n MONGO_URI: \"${MEDIAFUSION_MONGO_URI:-mongodb://mongodb:27017/mediafusion}\" # MongoDB connection URI (required)\n DB_MAX_CONNECTIONS: \"${MEDIAFUSION_DB_MAX_CONNECTIONS:-50}\" # Maximum database connections\n REDIS_URL: \"${MEDIAFUSION_REDIS_URL:-redis://redis:6379}\" # Redis service URL for caching and tasks\n REDIS_MAX_CONNECTIONS: \"${MEDIAFUSION_REDIS_MAX_CONNECTIONS:-100}\" # Maximum Redis connections\n # EXTERNAL SERVICE SETTINGS\n# REQUESTS_PROXY_URL: \"${MEDIAFUSION_REQUESTS_PROXY_URL:-}\" # Optional proxy URL for requests\n PLAYWRIGHT_CDP_URL: \"${PLAYWRIGHT_CDP_URL:-ws://browserless:3000?blockAds=true&stealth=true}\" # Playwright CDP service URL\n FLARESOLVERR_URL: \"${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}\" # FlareSolverr service URL\n TMDB_API_KEY: \"$TMDB_API_KEY\" # TMDB API key for metadata fetching\n # PROWLARR SETTINGS\n IS_SCRAP_FROM_PROWLARR: \"True\" # Enable/disable Prowlarr scraping\n PROWLARR_API_KEY: \"$PROWLARR_API_KEY\" # Prowlarr API key\n PROWLARR_URL: \"${PROWLARR_HOST:-http://prowlarr:9696}\" # Prowlarr service URL\n PROWLARR_LIVE_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_LIVE_TITLE_SEARCH:-True}\" # Enable live title search in Prowlarr\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_BACKGROUND_TITLE_SEARCH:-True}\" # Enable background title search\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"${MEDIAFUSION_PROWLARR_SEARCH_QUERY_TIMEOUT:-30}\" # Search query timeout in seconds\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS:-10}\" # Max immediate processes\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n PROWLARR_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_FEED_SCRAPE_INTERVAL_HOUR:-3}\" # Feed scraping interval in hours\n # JACKETT SETTINGS\n IS_SCRAP_FROM_JACKETT: \"True\" # Enable/disable Jackett scraping\n JACKETT_URL: \"${JACKETT_HOST:-http://jackett:9117}\" # Jackett service URL\n JACKETT_API_KEY: \"$JACKETT_API_KEY\" # Jackett API key\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\" # Search interval in hours\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\" # Search query timeout in seconds\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\" # Max immediate processes\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\" # Max process time in seconds\n JACKETT_LIVE_TITLE_SEARCH: \"True\" # Enable live title search\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\" # Enable background title search\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\" # Feed scraping interval in hours\n # ZILEAN SETTINGS\n IS_SCRAP_FROM_ZILEAN: \"True\" # Enable/disable Zilean scraping\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\" # Search interval in hours\n ZILEAN_URL: \"${ZILEAN_URL:-https://zilean.elfhosted.com}\" # Zilean service URL (https://zilean.elfhosted.com has zero rate limits)\n # TORRENTIO SETTINGS\n IS_SCRAP_FROM_TORRENTIO: \"True\" # Enable/disable Torrentio scraping\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_TORRENTIO_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n TORRENTIO_URL: \"${TORRENTIO_URL:-https://torrentio.strem.fun}\" # Torrentio service URL\n # MEDIAFUSION SETTINGS\n IS_SCRAP_FROM_MEDIAFUSION: \"True\" # Enable/disable MediaFusion scraping\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_MEDIAFUSION_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n MEDIAFUSION_URL: \"${MEDIAFUSION_URL:-https://mediafusion.elfhosted.com}\" # MediaFusion service URL\n SYNC_DEBRID_CACHE_STREAMS: \"${MEDIAFUSION_SYNC_DEBRID_CACHE_STREAMS:-False}\" # Enable syncing debrid cache streams\n # BT4G SETTINGS\n IS_SCRAP_FROM_BT4G: \"True\" # Enable/disable BT4G scraping\n BT4G_URL: \"${BT4G_URL:-https://bt4gprx.com}\" # BT4G service URL\n BT4G_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_BT4G_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n BT4G_SEARCH_TIMEOUT: \"${MEDIAFUSION_BT4G_SEARCH_TIMEOUT:-10}\" # Search timeout in seconds\n BT4G_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS:-15}\" # Max immediate processes\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n # TELEGRAM SETTINGS\n TELEGRAM_BOT_TOKEN: \"$TELEGRAM_BOT_TOKEN\" # Telegram bot token for notifications about contribution streams\n TELEGRAM_CHAT_ID: \"$TELEGRAM_CHAT_ID\" # Telegram chat ID for notifications\n # CONTENT FILTERING SETTINGS\n ADULT_CONTENT_REGEX_KEYWORDS: \"\\\\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\\\b\" # Regex pattern for filtering adult content\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\" # Enable adult content filtering in torrent titles\n # FEATURE TOGGLES\n IS_SCRAP_FROM_YTS: \"True\" # Enable/disable YTS scraping\n ENABLE_RATE_LIMIT: \"True\" # Enable/disable rate limiting\n VALIDATE_M3U8_URLS_LIVENESS: \"True\" # Validate M3U8 URLs for liveness\n STORE_STREMTHRU_MAGNET_CACHE: \"False\" # Store StremThru magnet cache\n SCRAPE_WITH_AKA_TITLES: \"True\" # Include alternative titles in scraping\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\" # Enable fetching torrent metadata from P2P (Caution: may raise DMCA issues) # TODO: Enable this\n # TIME-RELATED SETTINGS\n META_CACHE_TTL: \"1800\" # Metadata cache TTL in seconds (Default: 1800 seconds = 30 minutes)\n WORKER_MAX_TASKS_PER_CHILD: \"20\" # Max tasks per worker child process\n # SCHEDULER SETTINGS\n DISABLE_ALL_SCHEDULER: \"False\" # Disable all schedulers\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\" # Background search interval in hours\n BACKGROUND_SEARCH_CRONTAB: \"*/5 * * * *\" # Background search schedule\n TAMILMV_SCHEDULER_CRONTAB: \"0 */3 * * *\" # TamilMV scheduler crontab expression\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: \"0 */6 * * *\" # Tamil Blasters scheduler crontab expression\n FORMULA_TGX_SCHEDULER_CRONTAB: \"*/30 * * * *\" # Formula TGX scheduler crontab expression\n NOWMETV_SCHEDULER_CRONTAB: \"0 0 * * *\" # NowMeTV scheduler crontab expression\n NOWSPORTS_SCHEDULER_CRONTAB: \"0 10 * * *\" # NowSports scheduler crontab expression\n TAMILULTRA_SCHEDULER_CRONTAB: \"0 8 * * *\" # TamilUltra scheduler crontab expression\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: \"0 */6 * * *\" # Validate TV streams in DB crontab expression\n SPORT_VIDEO_SCHEDULER_CRONTAB: \"*/20 * * * *\" # Sport video scheduler crontab expression\n DLHD_SCHEDULER_CRONTAB: \"25 * * * *\" # DLHD scheduler crontab expression\n MOTOGP_TGX_SCHEDULER_CRONTAB: \"0 5 * * *\" # MotoGP TGX scheduler crontab expression\n UPDATE_SEEDERS_CRONTAB: \"0 0 * * *\" # Update seeders crontab expression\n ARAB_TORRENTS_SCHEDULER_CRONTAB: \"0 0 * * *\" # Arab Torrents scheduler crontab expression\n WWE_TGX_SCHEDULER_CRONTAB: \"10 */3 * * *\" # WWE TGX scheduler crontab expression\n UFC_TGX_SCHEDULER_CRONTAB: \"30 */3 * * *\" # UFC TGX scheduler crontab expression\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: \"0 * * * *\" # Movies TV TGX scheduler crontab expression\n PROWLARR_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Prowlarr feed scraper crontab expression\n JACKETT_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Jackett feed scraper crontab expression\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: \"0 * * * *\" # Cleanup expired scraper task crontab expression\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: \"0 0 * * *\" # Cleanup expired cache task crontab expression\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediafusion.rule: 'Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DOMAIN`) || Host(`mediafusion.$DUCKDNS_DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediafusion.loadbalancer.server.port: 8000\n homepage.group: Stremio Addons\n homepage.name: MediaFusion\n homepage.icon: mediafusion.png\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n cpu_shares: 10\n mem_reservation: 512M\n deploy:\n resources:\n reservations:\n cpus: 0.01\n memory: 512M\n limits:\n cpus: 1\n memory: 1G\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: \"1m\"\n restart: always\n mediaflow-proxy:\n image: mhdzumair/mediaflow-proxy\n container_name: mediaflow-proxy\n hostname: mediaflow-proxy\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n expose:\n - ${MEDIAFLOW_PROXY_PORT:-8888}\n environment:\n <<: *common-env\n PORT: ${MEDIAFLOW_PROXY_PORT:-8888}\n API_PASSWORD: $MEDIAFLOW_PROXY_API_PASSWORD\n ENABLE_STREAMING_PROGRESS: \"false\"\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediaflow-proxy.middlewares: nginx-auth@file\n traefik.http.routers.mediaflow-proxy.rule: 'Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DOMAIN`) || Host(`mediaflow-proxy.$DUCKDNS_DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: ${MEDIAFLOW_PROXY_PORT:-8888}\n homepage.name: MediaFlow Proxy\n homepage.icon: mediaflow-proxy.png\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n healthcheck:\n test: [\"CMD-SHELL\", \"python3 -c \\\"import socket; s=socket.socket(); s.connect(('127.0.0.1', ${MEDIAFLOW_PROXY_PORT:-8888})); print('Healthcheck passed')\\\"\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: 10s\n restart: always\n\n stremthru:\n depends_on:\n redis:\n condition: service_healthy\n image: muniftanjim/stremthru\n container_name: stremthru\n hostname: stremthru\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/stremthru/app/data:/app/data\n environment:\n <<: *common-env\n STREMTHRU_LOG_LEVEL: ${STREMTHRU_LOG_LEVEL:-INFO} # DEBUG, INFO, WARN, ERROR\n STREMTHRU_LOG_FORMAT: ${STREMTHRU_LOG_FORMAT:-text} # json, text\n STREMTHRU_PROXY_AUTH: ${STREMTHRU_PROXY_AUTH:-admin:admin}\n STREMTHRU_AUTH_ADMIN: ${STREMTHRU_AUTH_ADMIN:-admin}\n\n # A list of store credentials per user. In a comma separated list of username:store_name:store_token.\n # You can also use * as the username to apply to all users.\n # This lets you use different API keys for different users.\n # e.g. something like *:realdebrid:abc...xyz would mean for all users, this API key would be used for Real Debrid.\n # (Not needed if using StremThru as a external proxy within other apps/addons like AIOStreams)\n STREMTHRU_STORE_AUTH: $STREMTHRU_STORE_AUTH\n\n # A list of proxy configurations per store. This lets you control what is proxied based on what store its from.\n # The format is a comma separated list of <store>:<true/false>\n # You can use * to apply to all stores.\n # e.g. *:true,premiumize:false would mean all stores are proxied, except for premiumize.\n # (Does not affect proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_STORE_CONTENT_PROXY: ${STREMTHRU_STORE_CONTENT_PROXY:-*:true,premiumize:false}\n\n # This is the maximum number of connections to the proxy per user.\n # In the format of a comma separated list of <username>:<number of connections> pairs.\n # e.g. user1:10,user2:5 would mean user1 can have 10 connections, and user2 can have 5 connections.\n # If you want to set a limit for all users, use * as the username.\n # A connection limit of 0 means no limit.\n # (This DOES affect the proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: ${STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT:-0}\n # ================================\n # This lets you enable or disable features in StremThru.\n # The format is a comma separated list of features, optionally prefixed with a - to disable them.\n # List of features:\n # - anime\n # - dmm_hashlist - Whether to scrape DMM hashlists for torrents.\n # - imdb_title\n # - stremio_list\n # - stremio_p2p\n # - stremio_sidekick\n # - stremio_store\n # - stremio_torz\n # - stremio_wrap\n # e.g. -dmm_hashlist,-imdb_title would disable the DMM hashlists and IMDB title features.\n # ================================\n STREMTHRU_FEATURE: '${STREMTHRU_FEATURE:-dmm_hashlist,imdb_title,stremio_list,stremio_sidekick,stremio_store,stremio_torz,stremio_wrap}'\n STREMTHRU_DATABASE_URI: ${STREMTHRU_DATABASE_URI:-sqlite://./data/stremthru.db}\n STREMTHRU_REDIS_URI: ${REDIS_HOST:-redis://redis:6379}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: 'Host(`stremthru.$DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DOMAIN`) || Host(`stremthru.$DUCKDNS_DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.stremthru.loadbalancer.server.port: 8080\n homepage.group: Stremio Addons\n homepage.name: StremThru\n homepage.icon: stremthru.png\n homepage.href: https://stremthru.$DOMAIN/\n homepage.description: StremThru is tunnel/proxy for debrid services.\n restart: always\n\n gptr:\n build:\n #context: https://github.com/th3w1zard1/gpt-researcher.git#master # :/frontend/nextjs\n context: ${SRC_PATH:-./projects}/gpt-researcher\n dockerfile: Dockerfile.fullstack\n image: th3w1zard1/ai-researchwizard\n container_name: gptr\n hostname: gptr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000 # Nginx-proxied access to GPTR.\n - 3001 # Internal NextJS GPTR site\n - 8000 # Static GPTR\n - 8080 # MCP Server Port\n volumes:\n - ${CONFIG_PATH:-./volumes}/gptr/logs:/usr/src/app/logs\n - ${CONFIG_PATH:-./volumes}/gptr/outputs:/usr/src/app/outputs\n - ${CONFIG_PATH:-./volumes}/gptr/reports:/usr/src/app/reports\n stdin_open: true\n environment:\n ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY\n BRAVE_API_KEY: $BRAVE_API_KEY\n DEEPSEEK_API_KEY: $DEEPSEEK_API_KEY\n EXA_API_KEY: $EXA_API_KEY\n FIRECRAWL_API_KEY: $FIRECRAWL_API_KEY\n FIRE_CRAWL_API_KEY: $FIRE_CRAWL_API_KEY\n GEMINI_API_KEY: $GEMINI_API_KEY\n GLAMA_API_KEY: $GLAMA_API_KEY\n GROQ_API_KEY: $GROQ_API_KEY\n HF_TOKEN: $HF_TOKEN\n HUGGINGFACE_ACCESS_TOKEN: $HUGGINGFACE_ACCESS_TOKEN\n HUGGINGFACE_API_TOKEN: $HUGGINGFACE_API_TOKEN\n LANGCHAIN_API_KEY: $LANGCHAIN_API_KEY\n MISTRAL_API_KEY: $MISTRAL_API_KEY\n MISTRALAI_API_KEY: $MISTRALAI_API_KEY\n OPENAI_API_KEY: $OPENAI_API_KEY\n OPENROUTER_API_KEY: $OPENROUTER_API_KEY\n PERPLEXITY_API_KEY: $PERPLEXITY_API_KEY\n PERPLEXITYAI_API_KEY: $PERPLEXITYAI_API_KEY\n REPLICATE_API_KEY: $REPLICATE_API_KEY\n REVID_API_KEY: $REVID_API_KEY\n SAMBANOVA_API_KEY: $SAMBANOVA_API_KEY\n SEARCH1API_KEY: $SEARCH1API_KEY\n SERPAPI_API_KEY: $SERPAPI_API_KEY\n TAVILY_API_KEY: $TAVILY_API_KEY\n TOGETHERAI_API_KEY: $TOGETHERAI_API_KEY\n UNIFY_API_KEY: $UNIFY_API_KEY\n UPSTAGE_API_KEY: $UPSTAGE_API_KEY\n UPSTAGEAI_API_KEY: $UPSTAGEAI_API_KEY\n YOU_API_KEY: $YOU_API_KEY\n CHOKIDAR_USEPOLLING: true\n LOGGING_LEVEL: DEBUG\n NEXT_PUBLIC_GA_MEASUREMENT_ID: $NEXT_PUBLIC_GA_MEASUREMENT_ID\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n LANGSMITH_TRACING: true\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_API_KEY: $LANGSMITH_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.gptr.service: gptr\n traefik.http.routers.gptr.rule: 'Host(`gptr-nextjs.$DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-nextjs.$DUCKDNS_DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr.loadbalancer.server.port: 3000\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr-legacy.rule: 'Host(`gptr.$DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr.$DUCKDNS_DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-legacy.loadbalancer.server.port: 8000\n traefik.http.routers.gptr-mcp.service: gptr-mcp\n traefik.http.routers.gptr-mcp.rule: 'Host(`gptr-mcp.$DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-mcp.$DUCKDNS_DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-mcp.loadbalancer.server.port: 8080\n homepage.group: AI\n homepage.name: AI Research Wizard\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.icon: gptr.png\n homepage.href: https://gptr.$DOMAIN/\n healthcheck: # docker exec gptr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"(wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1) || exit 1\"] # && (wget -qO- http://127.0.0.1:8080 > /dev/null 2>&1) || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 2m\n restart: always\n\nnetworks:\n publicnet: # https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge\n external: true # docker network create --driver=bridge --attachable publicnet --subnet=${PUBLICNET_SUBNET:-10.76.0.0/16} --gateway=${PUBLICNET_GATEWAY:-10.76.0.1} --ip-range=${PUBLICNET_IP_RANGE:-10.76.0.0/16} -o com.docker.network.bridge.name=br_publicnet\n attachable: true\n driver: bridge\n # uncomment below part of publicnet if you aren't creating it externally.\n name: publicnet\n driver_opts:\n com.docker.network.bridge.name: \"br_publicnet\"\n ipam:\n config:\n - subnet: ${PUBLICNET_SUBNET:-10.76.0.0/16}\n gateway: ${PUBLICNET_GATEWAY:-10.76.0.1}\n ip_range: ${PUBLICNET_IP_RANGE:-10.76.0.0/16}\n warp-nat-net:\n external: true\n attachable: true\n driver: bridge\n"}, "372323c050fd0833ce2cf3eaaaa58d7bedba451d": {"t": 1785773132.5851371, "n": 294239, "h": "05379115f686d006", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\nx-common-hostname-aliases: &common-hostname-aliases\n - host.docker.internal:host-gateway\n\nx-local-ips: &local-ips\n - \"10.0.0.0/8\" # RFC 1918 Private Networks (IPv4)\n - \"172.16.0.0/12\"\n - \"192.168.0.0/16\"\n - \"169.254.0.0/16\" # RFC 3927 Link-Local (IPv4)\n - \"127.0.0.0/8\" # RFC 5735 Loopback (IPv4)\n - \"fc00::/7\" # RFC 4193 Unique Local (IPv6)\n - \"fe80::/10\" # RFC 4291 Link-Local (IPv6)\n - \"::1/128\" # RFC 4291 Loopback (IPv6)\n - \"2002::/16\" # RFC 3056 6to4 (IPv6)\n - \"100.64.0.0/10\" # Tailscale CGNAT range\n\nx-cloudflare-ips: &cloudflare-ips\n - \"103.21.244.0/22\"\n - \"103.22.200.0/22\"\n - \"103.31.4.0/22\"\n - \"104.16.0.0/13\"\n - \"104.24.0.0/14\"\n - \"108.162.192.0/18\"\n - \"131.0.72.0/22\"\n - \"141.101.64.0/18\"\n - \"162.158.0.0/15\"\n - \"172.64.0.0/13\"\n - \"173.245.48.0/20\"\n - \"188.114.96.0/20\"\n - \"190.93.240.0/20\"\n - \"197.234.240.0/22\"\n - \"198.41.128.0/17\"\n - \"2400:cb00::/32\"\n - \"2606:4700::/32\"\n - \"2803:f800::/32\"\n - \"2405:b500::/32\"\n - \"2405:8100::/32\"\n - \"2a06:98c0::/29\"\n - \"2c0f:f248::/32\"\n\nx-trusted-ips: &trusted-ips\n - *local-ips\n - *cloudflare-ips\n\n\nconfigs:\n #######################################################################################\n # Prometheus Configurations\n #######################################################################################\n prometheus.yml:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n # my global config\n global:\n scrape_interval: 15s # By default, scrape targets every 15 seconds.\n evaluation_interval: 15s # By default, scrape targets every 15 seconds.\n # scrape_timeout is set to the global default (10s).\n # Attach these labels to any time series or alerts when communicating with\n # external systems (federation, remote storage, Alertmanager).\n external_labels:\n monitor: 'my-project'\n # Load and evaluate rules in this file every 'evaluation_interval' seconds.\n rule_files:\n - 'alert.rules'\n # - \"first.rules\"\n # - \"second.rules\"\n # alert\n # alerting:\n # alertmanagers:\n # - scheme: http\n # static_configs:\n # - targets:\n # - \"alertmanager:9093\"\n # A scrape configuration containing exactly one endpoint to scrape:\n # Here it's Prometheus itself.\n scrape_configs:\n # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n - job_name: 'prometheus'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:9090']\n - job_name: 'traefik'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n dns_sd_configs:\n - names:\n - 'tasks.traefik'\n type: 'A'\n port: 8080\n alert.rules:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n groups:\n - name: bolabaden\n rules:\n\n # Alert for any instance that is unreachable for >2 minutes.\n - alert: service_down\n expr: up == 0\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} down\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} has been down for more than 2 minutes.\"\n\n - alert: high_load\n expr: node_load1 > 0.5\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} under high load\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} is under high load.\"\n #######################################################################################\n # Gluetun Configurations\n #######################################################################################\n premiumize-auth.txt: # Premiumize authentication file (shared across all Premiumize VPN endpoints)\n content: |\n $PREMIUMIZE_CUSTOMER_ID\n $PREMIUMIZE_API_KEY\n gluetun-auth-config.toml:\n content: |\n [[roles]]\n name = \"public\"\n routes = [\n \"GET /v1/openvpn/status\",\n \"PUT /v1/openvpn/status\",\n \"GET /v1/openvpn/portforwarded\",\n \"GET /v1/openvpn/settings\",\n \"GET /v1/dns/status\",\n \"PUT /v1/dns/status\",\n \"GET /v1/updater/status\",\n \"PUT /v1/updater/status\",\n \"GET /v1/publicip/ip\"\n ]\n auth = \"none\"\n premiumize-ca.cert: # Premiumize CA certificate (shared across all Premiumize VPN endpoints)\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n vpn-nl.premiumize.me:\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n client\n resolv-retry infinite\n nobind\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n remote 185.107.94.249 1194\n persist-tun\n persist-key\n #######################################################################################\n # Stremio Configurations\n #######################################################################################\n mediafusion-nginx-config:\n content: |\n user nginx;\n worker_processes 1;\n\n events {\n worker_connections 1024;\n }\n\n http {\n include mime.types;\n default_type application/octet-stream;\n sendfile on;\n keepalive_timeout 65;\n\n server {\n listen 443 ssl;\n server_name mediafusion.local;\n\n ssl_certificate /etc/ssl/certs/mediafusion.local.pem;\n ssl_certificate_key /etc/ssl/private/mediafusion.local-key.pem;\n\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n\n location / {\n proxy_pass ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000};\n proxy_set_header Host $$host;\n proxy_set_header X-Real-IP $$remote_addr;\n proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $$scheme;\n }\n }\n }\n nginx-proxy-config.conf:\n content: |\n # Custom nginx configuration for nginx-proxy\n client_max_body_size 100m;\n proxy_connect_timeout 600s;\n proxy_send_timeout 600s;\n proxy_read_timeout 600s;\n proxy_buffering off;\n proxy_request_buffering off;\n # Enable gzip compression\n gzip on;\n gzip_vary on;\n gzip_min_length 1024;\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n # Security headers\n add_header X-Frame-Options DENY always;\n add_header X-Content-Type-Options nosniff always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\n prowlarr_indexers.json:\n content: |\n [\n {\n \"indexerUrls\": [\n \"https://bitsearch.to/\"\n ],\n \"legacyUrls\": [\n \"https://bitsearch.nocensor.cloud/\",\n \"https://bitsearch.mrunblock.bond/\"\n ],\n \"definitionName\": \"bitsearch\",\n \"description\": \"BitSearch is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitsearch\",\n \"name\": \"BitSearch\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitsearch\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitsearch\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://thepiratebay.org/\",\n \"https://thepiratebay.unblockninja.com/\",\n \"https://thepiratebay.ninjaproxy1.com/\",\n \"https://tpb.proxyninja.org/\",\n \"https://thepiratebay.torrentbay.st/\",\n \"https://tpb31.ukpass.co/\",\n \"https://tpb.skynetcloud.site/\",\n \"https://piratehaven.xyz/\",\n \"https://mirrorbay.top/\",\n \"https://thepiratebay0.org/\",\n \"https://thepiratebay10.org/\",\n \"https://pirateproxylive.org/\",\n \"https://thehiddenbay.com/\",\n \"https://thepiratebay.zone/\",\n \"https://tpb.party/\",\n \"https://piratebayproxy.live/\",\n \"https://piratebay.live/\",\n \"https://piratebay.party/\",\n \"https://thepiratebay.party/\",\n \"https://pirate-proxy.africa/\",\n \"https://thepiratebaye.org/\",\n \"https://5mins.eu/\",\n \"https://thepiratebay.cloud/\",\n \"https://tpb-proxy.xyz/\",\n \"https://piratebay.army/\",\n \"https://tpb-visit.me/\",\n \"https://tpb.re/\",\n \"https://pirate-proxy.ong/\"\n ],\n \"legacyUrls\": [\n \"https://pirate-proxy.page/\",\n \"https://5mins.shop/\",\n \"https://tpb.surf/\",\n \"https://tpb.monster/\",\n \"https://thepiratebay.host/\",\n \"https://piratetoday.xyz/\",\n \"https://tpb.wtf/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.onion.ly/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.to/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.link/\",\n \"https://tpb25.ukpass.co/\",\n \"https://tpb29.ukpass.co/\",\n \"https://piratenow.xyz/\",\n \"https://pirate-proxy.ink/\",\n \"https://proxifiedpiratebay.org/\",\n \"https://unlockedpiratebay.com/\",\n \"https://tpb.one/\",\n \"https://piratebayorg.net/\",\n \"https://tpbproxy.click/\",\n \"https://pirateproxy.live/\",\n \"https://ukpiratebay.org/\",\n \"https://piratebay.by/\",\n \"https://pirate-proxy.date/\",\n \"https://thepirateproxy.net/\",\n \"https://thepiratebay.abcproxy.org/\"\n ],\n \"definitionName\": \"thepiratebay\",\n \"description\": \"The Pirate Bay (TPB) is the galaxy’s most resilient Public BitTorrent site\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n },\n {\n \"id\": 6040,\n \"name\": \"XXX/x264\",\n \"subCategories\": []\n },\n {\n \"id\": 6045,\n \"name\": \"XXX/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 6070,\n \"name\": \"XXX/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7050,\n \"name\": \"Books/Other\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"pirate bay\",\n \"name\": \"The Pirate Bay\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"thepiratebay\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_api\",\n \"value\": \"This indexer uses the API at https://apibay.org/ to get its official TPB data. Choose any site link that you can access/prefer so that you can view the torrent details page when browsing the search results for this indexer.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#thepiratebay\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://therarbg.to/\",\n \"https://t-rb.org/\",\n \"https://the.rarbg.club/\",\n \"https://trb.archivebay.online/\",\n \"https://trb.t-pb.org/\",\n \"https://trb.themirror.wiki/\",\n \"https://torrentlite.org/\",\n \"https://rarbg.unblockninja.com/\",\n \"https://rarbg.ninjaproxy1.com/\",\n \"https://rarbg.proxyninja.org/\",\n \"https://rarbg.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://therarbg.com/\"\n ],\n \"definitionName\": \"therarbg\",\n \"description\": \"TheRARBG is a Public site inspired by RARBG.to for TV / MOVIES / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"therarbg\",\n \"name\": \"TheRARBG\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"therarbg\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#therarbg\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torlock.com/\",\n \"https://www.torlock2.com/\"\n ],\n \"legacyUrls\": [\n \"https://torlock.com/\",\n \"https://www.torlock.icu/\",\n \"https://torlock.mrunblock.guru/\",\n \"https://torlock.unblockit.click/\",\n \"https://torlock.unblockit.asia/\",\n \"https://torlock.mrunblock.life/\",\n \"https://torlock.unblockit.mov/\",\n \"https://torlock.unblockit.rsvp/\",\n \"https://torlock.unblockit.vegas/\",\n \"https://torlock.unblockit.esq/\",\n \"https://torlock.unblockit.zip/\",\n \"https://torlock.unblockit.foo/\",\n \"https://torlock.unblockit.ing/\",\n \"https://torlock.nocensor.cloud/\",\n \"https://torlock.mrunblock.bond/\",\n \"https://torlock.unblockit.date/\",\n \"https://torlock.unblockit.dad/\",\n \"https://torlock.unblockit.africa/\",\n \"https://torlock.unblockit.casa/\",\n \"https://torlock.unblockit.sbs/\",\n \"https://torlock.unblockit.ong/\"\n ],\n \"definitionName\": \"torlock\",\n \"description\": \"Torlock is a torrent search site that lists verified torrents only for TV series and movies\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torlock\",\n \"name\": \"Torlock\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torlock\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torlock\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownloads.pro/\",\n \"https://torrentdownloads.unblockit.ong/\",\n \"https://torrentdownloads.unblockninja.com/\",\n \"https://torrentdownloads.ninjaproxy1.com/\",\n \"https://torrentdownloads.proxyninja.org/\"\n ],\n \"legacyUrls\": [\n \"https://www.torrentdownloads.me/\",\n \"https://www.torrentdownloads.info/\",\n \"https://torrentdownloads.mrunblock.guru/\",\n \"https://torrentdownloads.unblockit.click/\",\n \"https://torrentdownloads.unblockit.asia/\",\n \"https://torrentdownloads.unblockit.mov/\",\n \"https://torrentdownloads.mrunblock.life/\",\n \"https://torrentdownloads.unblockit.rsvp/\",\n \"https://torrentdownloads.unblockit.vegas/\",\n \"https://torrentdownloads.unblockit.esq/\",\n \"https://torrentdownloads.unblockit.zip/\",\n \"https://torrentdownloads.unblockit.foo/\",\n \"https://torrentdownloads.unblockit.ing/\",\n \"https://torrentdownloads.mrunblock.bond/\",\n \"https://torrentdownloads.nocensor.cloud/\",\n \"https://torrentdownloads.unblockit.date/\",\n \"https://torrentdownloads.unblockit.dad/\",\n \"https://torrentdownloads.unblockit.africa/\",\n \"https://torrentdownloads.unblockit.casa/\",\n \"https://torrentdownloads.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownloads\",\n \"description\": \"Torrent Downloads (TD) is a Public torrent site for all kinds of content\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrent downloads\",\n \"name\": \"Torrent Downloads\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownloads\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownloads\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yourbittorrent.com/\",\n \"https://yourbittorrent2.com/\"\n ],\n \"legacyUrls\": [\n \"https://yourbittorrent.host/\",\n \"https://yourbittorrent.nocensor.space/\",\n \"https://yourbittorrent.nocensor.work/\",\n \"https://yourbittorrent.nocensor.biz/\",\n \"https://yourbittorrent.nocensor.sbs/\",\n \"https://yourbittorrent.nocensor.world/\",\n \"https://yourbittorrent.nocensor.lol/\",\n \"https://yourbittorrent.mrunblock.guru/\",\n \"https://yourbittorrent.mrunblock.life/\",\n \"https://yourbittorrent.nocensor.click/\",\n \"https://yourbittorrent.nocensor.cloud/\",\n \"https://yourbittorrent.mrunblock.bond/\"\n ],\n \"definitionName\": \"yourbittorrent\",\n \"description\": \"YourBittorrent is a Public torrent index\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yourbittorrent\",\n \"name\": \"YourBittorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yourbittorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yourbittorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://1337x.to/\",\n \"https://1337x.st/\",\n \"https://x1337x.ws/\",\n \"https://x1337x.eu/\",\n \"https://x1337x.se/\",\n \"https://1337x.so/\",\n \"https://1337x.abcproxy.org/\",\n \"https://1337x.unblockninja.com/\",\n \"https://1337x.ninjaproxy1.com/\",\n \"https://1337x.proxyninja.org/\",\n \"https://1337x.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://1337x.is/\",\n \"https://1337x.gd/\",\n \"https://1337x.mrunblock.guru/\",\n \"https://1337x.mrunblock.life/\",\n \"https://1337x.unblockit.click/\",\n \"https://1337x.unblockit.asia/\",\n \"https://1337x.unblockit.mov/\",\n \"https://1337x.unblockit.rsvp/\",\n \"https://1337x.unblockit.vegas/\",\n \"https://1337x.unblockit.esq/\",\n \"https://1337x.unblockit.zip/\",\n \"https://1337x.unblockit.foo/\",\n \"https://1337x.unblockit.ing/\",\n \"https://1337x.mrunblock.bond/\",\n \"https://1337x.unblockit.date/\",\n \"https://1337x.unblockit.dad/\",\n \"https://1337x.unblockit.africa/\",\n \"https://1337x.unblockit.casa/\",\n \"https://unblockit.sbs/\",\n \"https://unblockit.ong/\"\n ],\n \"definitionName\": \"1337x\",\n \"description\": \"1337X is a Public torrent site that offers verified torrent downloads\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2010,\n \"name\": \"Movies/Foreign\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1080,\n \"name\": \"Console/PS3\",\n \"subCategories\": []\n },\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1010,\n \"name\": \"Console/NDS\",\n \"subCategories\": []\n },\n {\n \"id\": 1110,\n \"name\": \"Console/3DS\",\n \"subCategories\": []\n },\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"1337x\",\n \"name\": \"1337x\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"1337x\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)\"\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#1337x\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://bitru.org/\"\n ],\n \"legacyUrls\": [\n \"http://bitru.org/\"\n ],\n \"definitionName\": \"bitru\",\n \"description\": \"BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitru\",\n \"name\": \"BitRu\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"adverts\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://badasstorrents.com/\"\n ],\n \"legacyUrls\": [\n \"https://badasstorrents.nocensor.work/\",\n \"https://badasstorrents.nocensor.biz/\",\n \"https://badasstorrents.nocensor.sbs/\",\n \"https://badasstorrents.nocensor.world/\",\n \"https://badasstorrents.nocensor.lol/\",\n \"https://badasstorrents.nocensor.art/\",\n \"https://badasstorrents.mrunblock.guru/\",\n \"https://badasstorrents.mrunblock.life/\",\n \"https://badasstorrents.nocensor.click/\",\n \"https://badasstorrents.mrunblock.bond/\",\n \"https://badasstorrents.nocensor.cloud/\"\n ],\n \"definitionName\": \"badasstorrents\",\n \"description\": \"Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"badass torrents\",\n \"name\": \"Badass Torrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"badasstorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#badasstorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://archive.org/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"internetarchive\",\n \"description\": \"Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"internet archive\",\n \"name\": \"Internet Archive\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"internetarchive\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"titleOnly\",\n \"value\": false\n },\n {\n \"name\": \"noMagnet\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#internetarchive\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.gktorrent.pm/\"\n ],\n \"legacyUrls\": [\n \"https://www.rantop.org/\",\n \"https://www.torrent.ws/\",\n \"https://gktorrent.mrunblock.guru/\",\n \"https://gktorrent.mrunblock.life/\",\n \"https://gktorrent.nocensor.click/\",\n \"https://www.gktorrent.ac/\",\n \"https://www.gktorrent.ph/\",\n \"https://www.gktorrent.vc/\",\n \"https://www.gktorrent.mx/\",\n \"https://www.gktorrent.fi/\",\n \"https://www.gktorrent.wf/\",\n \"https://gktorrent.nocensor.cloud/\",\n \"https://gktorrent.mrunblock.bond/\",\n \"https://www.gktorrent.wtf/\",\n \"https://www.gktorrent.vg/\",\n \"https://www.gktorrent.lol/\",\n \"https://www.gktorrent.sh/\",\n \"https://www.gktorrent.eu/\",\n \"https://www.gktorrent.xyz/\"\n ],\n \"definitionName\": \"gktorrent\",\n \"description\": \"GkTorrent is a French Public site for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"gktorrent\",\n \"name\": \"GkTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"gktorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#gktorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://itorrent.ws/\"\n ],\n \"legacyUrls\": [\n \"https://itorrent.unblockit.pro/\",\n \"https://itorrent.unblockit.one/\",\n \"https://itorrent.unblockit.me/\"\n ],\n \"definitionName\": \"itorrent\",\n \"description\": \"iTorrent is a Public HUNGARIAN site\",\n \"language\": \"hu-HU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"itorrent\",\n \"name\": \"iTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"itorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#itorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.limetorrents.lol/\",\n \"https://limetorrents.unblockit.black/\",\n \"https://limetorrents.unblockninja.com/\",\n \"https://limetorrents.ninjaproxy1.com/\",\n \"https://limetorrents.proxyninja.org/\",\n \"https://limetorrents.proxyninja.net/\",\n \"https://limetorrents.torrentbay.st/\",\n \"https://limetorrents.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://limetorrents.unblockit.asia/\",\n \"https://limetorrents.unblockit.mov/\",\n \"https://limetorrents.unblockit.rsvp/\",\n \"https://limetorrents.unblockit.vegas/\",\n \"https://limetorrents.unblockit.esq/\",\n \"https://limetorrents.unblockit.zip/\",\n \"https://limetorrents.unblockit.foo/\",\n \"https://limetorrents.unblockit.ing/\",\n \"https://limetorrents.mrunblock.bond/\",\n \"https://limetorrents.nocensor.cloud/\",\n \"https://limetorrents.unblockit.date/\",\n \"https://limetorrents.unblockit.dad/\",\n \"https://limetorrents.unblockit.africa/\",\n \"https://limetorrents.unblockit.casa/\",\n \"https://limetorrents.unblockit.sbs/\",\n \"https://limetorrents.unblockit.ong/\",\n \"https://limetorrents.abcproxy.org/\"\n ],\n \"definitionName\": \"limetorrents\",\n \"description\": \"LimeTorrents is a Public general torrent index with mostly verified torrents\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"limetorrents\",\n \"name\": \"LimeTorrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"limetorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#limetorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.oxtorrent.co/\",\n \"https://oxtorrent.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://oxtorrent.unblockit.casa/\",\n \"https://oxtorrent.unblockit.sbs/\"\n ],\n \"definitionName\": \"oxtorrent-co\",\n \"description\": \"OxTorrent is a FRENCH Public Torrent Tracker for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"oxtorrent\",\n \"name\": \"OxTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"oxtorrent-co\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#oxtorrent-co\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://rutor.info/\",\n \"https://rutor.is/\"\n ],\n \"legacyUrls\": [\n \"https://rutor.uk-unblock.xyz/\",\n \"https://rutor.ind-unblock.xyz/\",\n \"https://rutor.unblocked.bar/\",\n \"https://rutor.proxyportal.pw/\",\n \"https://rutor.uk-unblock.pro/\",\n \"https://rutor.root.yt/\",\n \"https://rutor.unblocked.rest/\",\n \"https://rutor.unblocked.monster/\",\n \"https://rutor.nocensor.space/\",\n \"https://rutor.nocensor.work/\",\n \"http://6tor.org/\",\n \"https://rutor.nocensor.world/\",\n \"https://rutor.nocensor.lol/\",\n \"https://rutor.nocensor.art/\",\n \"https://rutor.mrunblock.guru/\",\n \"https://rutor.mrunblock.life/\",\n \"https://rutor.nocensor.click/\",\n \"https://rutor.mrunblock.bond/\",\n \"https://rutor.nocensor.cloud/\",\n \"http://new-rutor.org/\",\n \"http://rutor.info/\",\n \"http://rutor.is/\"\n ],\n \"definitionName\": \"rutor\",\n \"description\": \"RuTor is a RUSSIAN Public site for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\",\n \"imdbId\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutor\",\n \"name\": \"RuTor\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutor\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"info\",\n \"value\": \"RuTor does not display categories in its search results page. This definition is probably only suitable for Prowlarr Dashboard Manual searches.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutor\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"http://rutracker.ru/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"rutracker-ru\",\n \"description\": \"RuTracker.RU is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5010,\n \"name\": \"TV/WEB-DL\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutracker ru\",\n \"name\": \"RuTracker.RU\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutracker-ru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutracker-ru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownload.info/\",\n \"https://torrentdownload.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://torrentdownload.mrunblock.guru/\",\n \"https://torrentdownload.unblockit.click/\",\n \"https://torrentdownload.unblockit.asia/\",\n \"https://torrentdownload.unblockit.mov/\",\n \"https://torrentdownload.mrunblock.life/\",\n \"https://torrentdownload.unblockit.rsvp/\",\n \"https://torrentdownload.unblockit.vegas/\",\n \"https://torrentdownload.unblockit.esq/\",\n \"https://torrentdownload.unblockit.zip/\",\n \"https://torrentdownload.unblockit.foo/\",\n \"https://torrentdownload.unblockit.ing/\",\n \"https://torrentdownload.mrunblock.bond/\",\n \"https://torrentdownload.nocensor.cloud/\",\n \"https://torrentdownload.unblockit.date/\",\n \"https://torrentdownload.unblockit.dad/\",\n \"https://torrentdownload.unblockit.africa/\",\n \"https://torrentdownload.unblockit.casa/\",\n \"https://torrentdownload.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownload\",\n \"description\": \"TorrentDownload is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7010,\n \"name\": \"Books/Mags\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrentdownload\",\n \"name\": \"TorrentDownload\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownload\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownload\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.529052.xyz/\",\n \"https://www.529053.xyz/\"\n ],\n \"legacyUrls\": [\n \"https://529050.xyz/\",\n \"https://529048.xyz/\",\n \"https://529049.xyz/\"\n ],\n \"definitionName\": \"52bt\",\n \"description\": \"52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL\",\n \"language\": \"zh-CN\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"52bt\",\n \"name\": \"52BT\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"52bt\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#52bt\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://eztvx.to/\",\n \"https://eztv.wf/\",\n \"https://eztv.tf/\",\n \"https://eztv.yt/\",\n \"https://eztv1.xyz/\",\n \"https://eztv.unblockit.black/\"\n ],\n \"legacyUrls\": [\n \"https://eztv.ag/\",\n \"https://eztv.it/\",\n \"https://eztv.ch/\",\n \"https://eztv.io/\",\n \"https://eztv.unblockit.asia/\",\n \"https://eztv.unblockit.mov/\",\n \"https://eztv.mrunblock.life/\",\n \"https://eztv.unblockit.rsvp/\",\n \"https://eztv.unblockit.vegas/\",\n \"https://eztv.unblockit.esq/\",\n \"https://eztv.unblockit.zip/\",\n \"https://eztv.re/\",\n \"https://eztv.li/\",\n \"https://eztv.unblockit.foo/\",\n \"https://eztv.unblockit.ing/\",\n \"https://eztv.mrunblock.bond/\",\n \"https://eztv.nocensor.cloud/\",\n \"https://eztv.unblockit.date/\",\n \"https://eztv.unblockit.dad/\",\n \"https://eztv.unblockit.africa/\",\n \"https://eztv.unblockit.casa/\",\n \"https://eztv.unblockit.sbs/\",\n \"https://eztv.unblockninja.com/\",\n \"https://eztv.ninjaproxy1.com/\",\n \"https://eztv.proxyninja.org/\",\n \"https://eztv.abcproxy.org/\",\n \"https://eztv.unblockit.ong/\"\n ],\n \"definitionName\": \"eztv\",\n \"description\": \"EZTV is a Public torrent site for TV shows\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"eztv\",\n \"name\": \"EZTV\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"eztv\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#eztv\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yts.mx/\",\n \"https://yts.unblockit.meme/\",\n \"https://yts.unblockninja.com/\",\n \"https://yts.ninjaproxy1.com/\",\n \"https://yts.proxyninja.org/\",\n \"https://yts.proxyninja.net/\",\n \"https://yts.torrentbay.st/\",\n \"https://yts.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://yts.unblockit.mov/\",\n \"https://yts.unblockit.rsvp/\",\n \"https://yts.unblockit.vegas/\",\n \"https://yts.unblockit.esq/\",\n \"https://yts.unblockit.zip/\",\n \"https://yts.unblockit.foo/\",\n \"https://yts.unblockit.ing/\",\n \"https://yts.mrunblock.bond/\",\n \"https://yts.nocensor.cloud/\",\n \"https://yts.unblockit.date/\",\n \"https://yts.unblockit.dad/\",\n \"https://yts.unblockit.africa/\",\n \"https://yts.unblockit.casa/\",\n \"https://yts.unblockit.sbs/\",\n \"https://yts.unblockit.ong/\",\n \"https://yts.abcproxy.org/\",\n \"https://yts.unblockit.black/\",\n \"https://yts.lt/\",\n \"https://yts.am/\",\n \"https://yts.ag/\"\n ],\n \"definitionName\": \"yts\",\n \"description\": \"YTS is a Public torrent site specialising in HD movies of small size\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yts\",\n \"name\": \"YTS\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yts\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yts\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://nyaa.si/\",\n \"https://nyaa.iss.ink/\",\n \"https://nyaa.land/\",\n \"https://nyaa.unblockninja.com/\"\n ],\n \"legacyUrls\": [\n \"https://nyaa.black-mirror.xyz/\",\n \"https://nyaa.unblocked.casa/\",\n \"https://nyaa.proxyportal.fun/\",\n \"https://nyaa.uk-unblock.xyz/\",\n \"https://nyaa.ind-unblock.xyz/\",\n \"https://nyaa.unblocked.bar/\",\n \"https://nyaa.proxyportal.pw/\",\n \"https://nyaa.uk-unblock.pro/\",\n \"https://nyaa.root.yt/\",\n \"https://nyaa.lol/\",\n \"https://nyaa.mrunblock.bond/\",\n \"https://nyaa.nocensor.cloud/\"\n ],\n \"definitionName\": \"nyaasi\",\n \"description\": \"Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"nyaa si\",\n \"name\": \"Nyaa.si\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"nyaasi\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.preferMagnetUrl\",\n \"value\": false\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sonarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"strip_s01\",\n \"value\": false\n },\n {\n \"name\": \"radarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"filter-id\",\n \"value\": 1\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#nyaasi\",\n \"tags\": []\n }\n ]\n prowlarr_indexer_proxy.json:\n content: |\n {\n \"onHealthIssue\": false,\n \"supportsOnHealthIssue\": false,\n \"includeHealthWarnings\": false,\n \"name\": \"FlareSolverr\",\n \"fields\": [\n {\n \"name\": \"host\",\n \"value\": \"${FLARESOLVERR_INTERNAL_URL:-http://flaresolverr:8191}\"\n },\n {\n \"name\": \"requestTimeout\",\n \"value\": 60\n }\n ],\n \"implementationName\": \"FlareSolverr\",\n \"implementation\": \"FlareSolverr\",\n \"configContract\": \"FlareSolverrSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported#flaresolverr\",\n \"tags\": [\n 1\n ]\n }\n scraper_config.json:\n content: |\n {\n \"start_urls\": {\n \"nowsports\": \"https://neesports.me/\",\n \"nowmetv\": \"https://neelive.com/\",\n \"tgx\": [\n \"torrentgalaxy.mx\",\n \"torrentgalaxy.to\",\n \"tgx.rs\"\n ]\n },\n \"tamil_blasters\": {\n \"homepage\": \"https://www.1tamilblasters.net\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"52-english-movies-hdcam-dvdscr-predvd\",\n \"hdrip\": \"53-english-movies-hdrips-bdrips-dvdrips\",\n \"series\": \"92-english-web-series-tv-shows\"\n }\n }\n },\n \"tamilmv\": {\n \"homepage\": \"https://www.1tamilmv.com\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"46-predvd-dvdscr-cam-tc\",\n \"hdrip\": [\n \"49-web-hd-itunes-hd-bluray\",\n \"50-hd-rips-dvd-rips-br-rips\"\n ],\n \"series\": \"55-web-series-tv-shows\"\n }\n },\n \"supported_search_forums\": {\n \"46-predvd-dvdscr-cam-tc\": {\n \"language\": \"english\",\n \"media_type\": \"tcrip\"\n },\n \"49-web-hd-itunes-hd-bluray\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"50-hd-rips-dvd-rips-br-rips\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"55-web-series-tv-shows\": {\n \"language\": \"english\",\n \"media_type\": \"series\"\n }\n }\n },\n \"dlhd\": {\n \"channels_url\": \"https://daddylive.dad/24-7-channels.php\",\n \"channel_url\": \"https://daddylive.dad/stream/stream-{channel_number}.php\",\n \"schedule_url\": \"https://daddylive.dad/schedule/schedule-generated.php\",\n \"server_lookup_url\": \"https://allupplay.xyz/server_lookup.php?channel_id={server_type}{channel_id}\",\n \"m3u8_base_url\": \"https://{server_key}new.newkso.ru/{server_key}/{server_type}{channel_id}/mono.m3u8\",\n \"key_url\": \"https://key.keylocking.ru\",\n \"referer\": \"https://allupplay.xyz/\",\n \"category_mapping\": {\n \"Tv Shows\": \"Other Sports\",\n \"Soccer\": \"Football\",\n \"Cricket\": \"Cricket\",\n \"Tennis\": \"Tennis\",\n \"Tennis ATP - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP - FRENCH OPEN\": \"Tennis\",\n \"Tennis MIXED DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Motorsport\": \"Motor Sport\",\n \"Boxing\": \"Boxing\",\n \"MMA\": \"MMA\",\n \"Golf\": \"Golf\",\n \"Snooker\": \"Other Sports\",\n \"Am. Football\": \"American Football\",\n \"Athletics\": \"Athletics\",\n \"Aussie rules\": \"Aussie Rules\",\n \"Baseball\": \"Baseball\",\n \"Basketball\": \"Basketball\",\n \"Bowling\": \"Bowling\",\n \"Cycling\": \"Cycling\",\n \"Darts\": \"Dart\",\n \"Floorball\": \"Floorball\",\n \"Futsal\": \"Futsal\",\n \"Gymnastics\": \"Gymnastics\",\n \"Handball\": \"Handball\",\n \"Horse Racing\": \"Horse Racing\",\n \"Ice Hockey\": \"Hockey\",\n \"Lacrosse\": \"Lacrosse\",\n \"Netball\": \"Netball\",\n \"Rugby League\": \"Rugby/AFL\",\n \"Rugby Union\": \"Rugby/AFL\",\n \"Squash\": \"Squash\",\n \"Volleyball\": \"Volleyball\",\n \"GAA\": \"GAA\",\n \"Clubber\": \"Other Sports\"\n }\n },\n \"sport_video\": {\n \"categories\": {\n \"american_football\": \"https://www.sport-video.org.ua/americanfootball.html\",\n \"basketball\": \"https://www.sport-video.org.ua/basketball.html\",\n \"baseball\": \"https://www.sport-video.org.ua/baseball.html\",\n \"football\": \"https://www.sport-video.org.ua/football.html\",\n \"hockey\": \"https://www.sport-video.org.ua/hockey.html\",\n \"rugby\": \"https://www.sport-video.org.ua/rugby.html\",\n \"other_sports\": \"https://www.sport-video.org.ua/other.html\"\n }\n }\n }\n\n litellm_config.yaml:\n content: |\n general_settings:\n proxy_batch_write_at: 60\n\n router_settings:\n redis_host: redis\n redis_port: 6379\n redis_password:\n enable_pre_call_check: true\n allowed_fails: 3\n allowed_fails_policy:\n BadRequestErrorAllowedFails: 1000\n AuthenticationErrorAllowedFails: 10\n TimeoutErrorAllowedFails: 12\n RateLimitErrorAllowedFails: 10000\n ContentPolicyViolationErrorAllowedFails: 15\n InternalServerErrorAllowedFails: 20\n cooldown_time: 30\n disable_cooldowns: false\n enable_pre_call_checks: true\n enable_tag_filtering: true\n retry_policy:\n AuthenticationErrorRetries: 3\n TimeoutErrorRetries: 3\n RateLimitErrorRetries: 3\n ContentPolicyViolationErrorRetries: 4\n InternalServerErrorRetries: 4\n routing_strategy: simple-shuffle\n\n litellm_settings:\n cache: true\n cache_params:\n type: redis\n host: redis\n port: 6379\n password:\n namespace: \"litellm_cache\"\n ttl: 600\n content_policy_fallbacks: []\n context_window_fallbacks: []\n default_fallbacks: []\n set_verbose: false\n force_ipv4: true\n json_logs: true\n log_raw_request_response: true\n turn_off_message_logging: false\n redact_user_api_key_info: true\n drop_params: true\n # max_budget: 100\n # budget_duration: 30d\n num_retries: 3\n request_timeout: 600\n telemetry: false\n model_list:\n - model_name: moonshotai/kimi-k2:free\n litellm_params:\n model: openai/moonshotai/kimi-k2:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for agentic capabilities, including advanced tool use, reasoning, and code synthesis. Kimi K2 excels across a broad range of benchmarks, particularly in coding (LiveCodeBench, SWE-bench), reasoning (ZebraLogic, GPQA), and tool-use (Tau2, AceBench) tasks. It supports long-context inference up to 128K tokens and is designed with a novel training stack that includes the MuonClip optimizer for stable large-scale MoE training.\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving user control over alignment, system prompts, and behavior. Intended for advanced and unrestricted use cases, Venice Uncensored emphasizes steerability and transparent behavior, removing default safety and alignment layers typically found in mainstream assistant models.\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e2b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e2b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based on the MatFormer architecture, it supports nested submodels and modular composition via the Mix-and-Match framework. Gemma 3n models are optimized for low-resource deployment, offering 32K context length and strong multilingual and reasoning performance across common benchmarks. This variant is trained on a diverse corpus including code, math, web, and multimodal data.\n litellm_provider: openrouter\n - model_name: tencent/hunyuan-a13b-instruct:free\n litellm_params:\n model: openai/tencent/hunyuan-a13b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark performance across mathematics, science, coding, and multi-turn reasoning tasks, while maintaining high inference efficiency via Grouped Query Attention (GQA) and quantization support (FP8, GPTQ, etc.).\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t2-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t2-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: DeepSeek-TNG-R1T2-Chimera is the second-generation Chimera model from TNG Tech. It is a 671 B-parameter mixture-of-experts text-generation model assembled from DeepSeek-AI’s R1-0528, R1, and V3-0324 checkpoints with an Assembly-of-Experts merge. The tri-parent design yields strong reasoning performance while running roughly 20 % faster than the original R1 and more than 2× faster than R1-0528 under vLLM, giving a favorable cost-to-intelligence trade-off. The checkpoint supports contexts up to 60 k tokens in standard use (tested to ~130 k) and maintains consistent <think> token behaviour, making it suitable for long-context analysis, dialogue and other open-ended generation tasks.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.2-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.2-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on WildBench and Arena Hard, reduces infinite generations, and delivers gains in tool use and structured output tasks. It supports image and text inputs with structured outputs, function/tool calling, and strong performance across coding (HumanEval+, MBPP), STEM (MMLU, MATH, GPQA), and vision benchmarks (ChartQA, DocVQA).'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-dev-72b:free\n litellm_params:\n model: openai/moonshotai/kimi-dev-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Kimi-Dev-72B is an open-source large language model fine-tuned for software engineering and issue resolution tasks. Based on Qwen2.5-72B, it is optimized using large-scale reinforcement learning that applies code patches in real repositories and validates them via full test suite execution—rewarding only correct, robust completions. The model achieves 60.4% on SWE-bench Verified, setting a new benchmark among open-source models for software bug fixing and code reasoning.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528-qwen3-8b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528-qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepSeek-R1-0528 is a lightly upgraded release of DeepSeek R1 that taps more compute and smarter post-training tricks, pushing its reasoning and inference to the brink of flagship models like O3 and Gemini 2.5 Pro. It now tops math, programming, and logic leaderboards, showcasing a step-change in depth-of-thought. The distilled variant, DeepSeek-R1-0528-Qwen3-8B, transfers this chain-of-thought into an 8 B-parameter form, beating standard Qwen3 8B by +10 pp and tying the 235 B “thinking” giant on AIME 2024.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model.'\n litellm_provider: openrouter\n - model_name: sarvamai/sarvam-m:free\n litellm_params:\n model: openai/sarvamai/sarvam-m:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Sarvam-M is a 24 B-parameter, instruction-tuned derivative of Mistral-Small-3.1-24B-Base-2503, post-trained on English plus eleven major Indic languages (bn, hi, kn, gu, mr, ml, or, pa, ta, te). The model introduces a dual-mode interface: “non-think” for low-latency chat and a optional “think” phase that exposes chain-of-thought tokens for more demanding reasoning, math, and coding tasks. Benchmark reports show solid gains versus similarly sized open models on Indic-language QA, GSM-8K math, and SWE-Bench coding, making Sarvam-M a practical general-purpose choice for multilingual conversational agents as well as analytical workloads that mix English, native Indic scripts, or romanized text.'\n litellm_provider: openrouter\n - model_name: mistralai/devstral-small-2505:free\n litellm_params:\n model: openai/mistralai/devstral-small-2505:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Devstral-Small-2505 is a 24B parameter agentic LLM fine-tuned from Mistral-Small-3.1, jointly developed by Mistral AI and All Hands AI for advanced software engineering tasks. It is optimized for codebase exploration, multi-file editing, and integration into coding agents, achieving state-of-the-art results on SWE-Bench Verified (46.8%). Devstral supports a 128k context window and uses a custom Tekken tokenizer. It is text-only, with the vision encoder removed, and is suitable for local deployment on high-end consumer hardware (e.g., RTX 4090, 32GB RAM Macs). Devstral is best used in agentic workflows via the OpenHands scaffold and is compatible with inference frameworks like vLLM, Transformers, and Ollama. It is released under the Apache 2.0 license.'\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e4b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: 'Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks such as text generation, speech recognition, translation, and image analysis. Leveraging innovations like Per-Layer Embedding (PLE) caching and the MatFormer architecture, Gemma 3n dynamically manages memory usage and computational load by selectively activating model parameters, significantly reducing runtime resource requirements. This model supports a wide linguistic range (trained in over 140 languages) and features a flexible 32K token context window. Gemma 3n can selectively load parameters, optimizing memory and computational efficiency based on the task or device capabilities, making it well-suited for privacy-focused, offline-capable applications and on-device AI solutions. [Read more in the blog post](https://developers.googleblog.com/en/introducing-gemma-3n/)'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-4b:free\n litellm_params:\n model: openai/qwen/qwen3-4b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-4B is a 4 billion parameter dense language model from the Qwen3 series, designed to support both general-purpose and reasoning-intensive tasks. It introduces a dual-mode architecture—thinking and non-thinking—allowing dynamic switching between high-precision logical reasoning and efficient dialogue generation. This makes it well-suited for multi-turn chat, instruction following, and complex agent workflows.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-30b-a3b:free\n litellm_params:\n model: openai/qwen/qwen3-30b-a3b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique ability to switch seamlessly between a thinking mode for complex reasoning and a non-thinking mode for efficient dialogue ensures versatile, high-quality performance. Significantly outperforming prior models like QwQ and Qwen2.5, Qwen3 delivers superior mathematics, coding, commonsense reasoning, creative writing, and interactive dialogue capabilities. The Qwen3-30B-A3B variant includes 30.5 billion parameters (3.3 billion activated), 48 layers, 128 experts (8 activated per task), and supports up to 131K token contexts with YaRN, setting a new standard among open-source models.'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-8b:free\n litellm_params:\n model: openai/qwen/qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n max_output_tokens: 40960\n metadata:\n notes: Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math, coding, and logical inference, and \"non-thinking\" mode for general conversation. The model is fine-tuned for instruction-following, agent integration, creative writing, and multilingual use across 100+ languages and dialects. It natively supports a 32K token context window and can extend to 131K tokens with YaRN scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-14b:free\n litellm_params:\n model: openai/qwen/qwen3-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, programming, and logical inference, and a \"non-thinking\" mode for general-purpose conversation. The model is fine-tuned for instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-32b:free\n litellm_params:\n model: openai/qwen/qwen3-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, coding, and logical inference, and a \"non-thinking\" mode for faster, general-purpose conversation. The model demonstrates strong performance in instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling. '\n litellm_provider: openrouter\n - model_name: qwen/qwen3-235b-a22b:free\n litellm_params:\n model: openai/qwen/qwen3-235b-a22b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and code tasks, and a \"non-thinking\" mode for general conversational efficiency. The model demonstrates strong reasoning ability, multilingual support (100+ languages and dialects), advanced instruction-following, and agent tool-calling capabilities. It natively handles a 32K token context window and extends up to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-R1T-Chimera is created by merging DeepSeek-R1 and DeepSeek-V3 (0324), combining the reasoning capabilities of R1 with the token efficiency improvements of V3. It is based on a DeepSeek-MoE Transformer architecture and is optimized for general text generation tasks. The model merges pretrained weights from both source models to balance performance across reasoning, efficiency, and instruction-following tasks. It is released under the MIT license and intended for research and commercial use.'\n litellm_provider: openrouter\n - model_name: microsoft/mai-ds-r1:free\n litellm_params:\n model: openai/microsoft/mai-ds-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'MAI-DS-R1 is a post-trained variant of DeepSeek-R1 developed by the Microsoft AI team to improve the model’s responsiveness on previously blocked topics while enhancing its safety profile. Built on top of DeepSeek-R1’s reasoning foundation, it integrates 110k examples from the Tulu-3 SFT dataset and 350k internally curated multilingual safety-alignment samples. The model retains strong reasoning, coding, and problem-solving capabilities, while unblocking a wide range of prompts previously restricted in R1. MAI-DS-R1 demonstrates improved performance on harm mitigation benchmarks and maintains competitive results across general reasoning tasks. It surpasses R1-1776 in satisfaction metrics for blocked queries and reduces leakage in harmful content categories. The model is based on a transformer MoE architecture and is suitable for general-purpose use cases, excluding high-stakes domains such as legal, medical, or autonomous systems.'\n litellm_provider: openrouter\n - model_name: thudm/glm-z1-32b:free\n litellm_params:\n model: openai/thudm/glm-z1-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'GLM-Z1-32B-0414 is an enhanced reasoning variant of GLM-4-32B, built for deep mathematical, logical, and code-oriented problem solving. It applies extended reinforcement learning—both task-specific and general pairwise preference-based—to improve performance on complex multi-step tasks. Compared to the base GLM-4-32B model, Z1 significantly boosts capabilities in structured reasoning and formal domains. The model supports enforced “thinking” steps via prompt engineering and offers improved coherence for long-form outputs. It’s optimized for use in agentic workflows, and includes support for long context (via YaRN), JSON tool calling, and fine-grained sampling configuration for stable inference. Ideal for use cases requiring deliberate, multi-step reasoning or formal derivations.'\n litellm_provider: openrouter\n - model_name: thudm/glm-4-32b:free\n litellm_params:\n model: openai/thudm/glm-4-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: GLM-4-32B-0414 is a 32B bilingual (Chinese-English) open-weight language model optimized for code generation, function calling, and agent-style tasks. Pretrained on 15T of high-quality and reasoning-heavy data, it was further refined using human preference alignment, rejection sampling, and reinforcement learning. The model excels in complex reasoning, artifact generation, and structured output tasks, achieving performance comparable to GPT-4o and DeepSeek-V3-0324 across several benchmarks.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: shisa-ai/shisa-v2-llama3.3-70b:free\n litellm_params:\n model: openai/shisa-ai/shisa-v2-llama3.3-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Shisa V2 Llama 3.3 70B is a bilingual Japanese-English chat model fine-tuned by Shisa.AI on Meta’s Llama-3.3-70B-Instruct base. It prioritizes Japanese language performance while retaining strong English capabilities. The model was optimized entirely through post-training, using a refined mix of supervised fine-tuning (SFT) and DPO datasets including regenerated ShareGPT-style data, translation tasks, roleplaying conversations, and instruction-following prompts. Unlike earlier Shisa releases, this version avoids tokenizer modifications or extended pretraining. Shisa V2 70B achieves leading Japanese task performance across a wide range of custom and public benchmarks, including JA MT Bench, ELYZA 100, and Rakuda. It supports a 128K token context length and integrates smoothly with inference frameworks like vLLM and SGLang. While it inherits safety characteristics from its base model, no additional alignment was applied. The model is intended for high-performance bilingual chat, instruction following, and translation tasks across JA/EN.'\n litellm_provider: openrouter\n - model_name: arliai/qwq-32b-arliai-rpr-v1:free\n litellm_params:\n model: openai/arliai/qwq-32b-arliai-rpr-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'QwQ-32B-ArliAI-RpR-v1 is a 32B parameter model fine-tuned from Qwen/QwQ-32B using a curated creative writing and roleplay dataset originally developed for the RPMax series. It is designed to maintain coherence and reasoning across long multi-turn conversations by introducing explicit reasoning steps per dialogue turn, generated and refined using the base model itself. The model was trained using RS-QLORA+ on 8K sequence lengths and supports up to 128K context windows (with practical performance around 32K). It is optimized for creative roleplay and dialogue generation, with an emphasis on minimizing cross-context repetition while preserving stylistic diversity.'\n litellm_provider: openrouter\n - model_name: agentica-org/deepcoder-14b-preview:free\n litellm_params:\n model: openai/agentica-org/deepcoder-14b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n metadata:\n notes: DeepCoder-14B-Preview is a 14B parameter code generation model fine-tuned from DeepSeek-R1-Distill-Qwen-14B using reinforcement learning with GRPO+ and iterative context lengthening. It is optimized for long-context program synthesis and achieves strong performance across coding benchmarks, including 60.6% on LiveCodeBench v5, competitive with models like o3-Mini\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-vl-a3b-thinking:free\n litellm_params:\n model: openai/moonshotai/kimi-vl-a3b-thinking:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n mode: chat\n supports_vision: true\n metadata:\n notes: Kimi-VL is a lightweight Mixture-of-Experts vision-language model that activates only 2.8B parameters per step while delivering strong performance on multimodal reasoning and long-context tasks. The Kimi-VL-A3B-Thinking variant, fine-tuned with chain-of-thought and reinforcement learning, excels in math and visual reasoning benchmarks like MathVision, MMMU, and MathVista, rivaling much larger models such as Qwen2.5-VL-7B and Gemma-3-12B. It supports 128K context and high-resolution input via its MoonViT encoder.\n litellm_provider: openrouter\n - model_name: nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n litellm_params:\n model: openai/nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama-3.1-Nemotron-Ultra-253B-v1 is a large language model (LLM) optimized for advanced reasoning, human-interactive chat, retrieval-augmented generation (RAG), and tool-calling tasks. Derived from Meta’s Llama-3.1-405B-Instruct, it has been significantly customized using Neural Architecture Search (NAS), resulting in enhanced efficiency, reduced memory usage, and improved inference latency. The model supports a context length of up to 128K tokens and can operate efficiently on an 8x NVIDIA H100 node. Note: you must include `detailed thinking on` in the system prompt to enable reasoning. Please see [Usage Recommendations](https://huggingface.co/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1#quick-start-and-usage-recommendations) for more.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-v3-base:free\n litellm_params:\n model: openai/deepseek/deepseek-v3-base:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'Note that this is a base model mostly meant for testing, you need to provide detailed prompts for the model to return useful responses. DeepSeek-V3 Base is a 671B parameter open Mixture-of-Experts (MoE) language model with 37B active parameters per forward pass and a context length of 128K tokens. Trained on 14.8T tokens using FP8 mixed precision, it achieves high training efficiency and stability, with strong performance across language, reasoning, math, and coding tasks. DeepSeek-V3 Base is the pre-trained model behind [DeepSeek V3](/deepseek/deepseek-chat-v3)'\n litellm_provider: openrouter\n - model_name: google/gemini-2.5-pro-exp-03-25\n litellm_params:\n model: openai/google/gemini-2.5-pro-exp-03-25\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 65535\n mode: chat\n supports_vision: true\n metadata:\n notes: 'This model has been deprecated by Google in favor of the (paid Preview model)[google/gemini-2.5-pro-preview] Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy and nuanced context handling. Gemini 2.5 Pro achieves top-tier performance on multiple benchmarks, including first-place positioning on the LMArena leaderboard, reflecting superior human-preference alignment and complex problem-solving abilities.'\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL-32B is a multimodal vision-language model fine-tuned through reinforcement learning for enhanced mathematical reasoning, structured outputs, and visual problem-solving capabilities. It excels at visual analysis tasks, including object recognition, textual interpretation within images, and precise event localization in extended videos. Qwen2.5-VL-32B demonstrates state-of-the-art performance across multimodal benchmarks such as MMMU, MathVista, and VideoMME, while maintaining strong reasoning and clarity in text-based tasks like MMLU, mathematical problem-solving, and code generation.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat-v3-0324:free\n litellm_params:\n model: openai/deepseek/deepseek-chat-v3-0324:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well on a variety of tasks.'\n litellm_provider: openrouter\n - model_name: featherless/qwerky-72b:free\n litellm_params:\n model: openai/featherless/qwerky-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 4096\n metadata:\n notes: Qwerky-72B is a linear-attention RWKV variant of the Qwen 2.5 72B model, optimized to significantly reduce computational cost at scale. Leveraging linear attention, it achieves substantial inference speedups (>1000x) while retaining competitive accuracy on common benchmarks like ARC, HellaSwag, Lambada, and MMLU. It inherits knowledge and language support from Qwen 2.5, supporting approximately 30 languages, making it suitable for efficient inference in large-context applications.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.1-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.1-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 128000\n mode: chat\n supports_vision: true\n metadata:\n notes: Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and vision tasks, including image analysis, programming, mathematical reasoning, and multilingual support across dozens of languages. Equipped with an extensive 128k token context window and optimized for efficient local inference, it supports use cases such as conversational agents, function calling, long-document comprehension, and privacy-sensitive deployments. The updated version is [Mistral Small 3.2](mistralai/mistral-small-3.2-24b-instruct)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-4b-it:free\n litellm_params:\n model: openai/google/gemma-3-4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-12b-it:free\n litellm_params:\n model: openai/google/gemma-3-12b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 12B is the second largest in the family of Gemma 3 models after [Gemma 3 27B](google/gemma-3-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: rekaai/reka-flash-3:free\n litellm_params:\n model: openai/rekaai/reka-flash-3:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a 32K context length and optimized through reinforcement learning (RLOO), it provides competitive performance comparable to proprietary models within a smaller parameter footprint. Ideal for low-latency, local, or on-device deployments, Reka Flash 3 is compact, supports efficient quantization (down to 11GB at 4-bit precision), and employs explicit reasoning tags (\"<reasoning>\") to indicate its internal thought process. Reka Flash 3 is primarily an English model with limited multilingual understanding capabilities. The model weights are released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-27b-it:free\n litellm_params:\n model: openai/google/gemma-3-27b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 27B is Google's latest open source model, successor to [Gemma 2](google/gemma-2-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwq-32b:free\n litellm_params:\n model: openai/qwen/qwq-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: QwQ is the reasoning model of the Qwen series. Compared with conventional instruction-tuned models, QwQ, which is capable of thinking and reasoning, can achieve significantly enhanced performance in downstream tasks, especially hard problems. QwQ-32B is the medium-sized reasoning model, which is capable of achieving competitive performance against state-of-the-art reasoning models, e.g., DeepSeek-R1, o1-mini.\n litellm_provider: openrouter\n - model_name: nousresearch/deephermes-3-llama-3-8b-preview:free\n litellm_params:\n model: openai/nousresearch/deephermes-3-llama-3-8b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepHermes 3 Preview is the latest version of our flagship Hermes series of LLMs by Nous Research, and one of the first models in the world to unify Reasoning (long chains of thought that improve answer accuracy) and normal LLM response modes into one model. We have also improved LLM annotation, judgement, and function calling. DeepHermes 3 Preview is one of the first LLM models to unify both \"intuitive\", traditional mode responses and long chain of thought reasoning responses into a single model, toggled by a system prompt.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 R1 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. The R1 version has been trained for 3 epochs to reason using 800k reasoning traces from the Dolphin-R1 dataset. Dolphin aims to be a general purpose reasoning instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. Dolphin aims to be a general purpose instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-24b-instruct-2501:free\n litellm_params:\n model: openai/mistralai/mistral-small-24b-instruct-2501:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware. [Read the blog post about the model here.](https://mistral.ai/news/mistral-small-3/)'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-qwen-14b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-qwen-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 64000\n metadata:\n notes: 'DeepSeek R1 Distill Qwen 14B is a distilled large language model based on [Qwen 2.5 14B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI''s o1-mini across various benchmarks, achieving new state-of-the-art results for dense models. Other benchmark results include: - AIME 2024 pass@1: 69.7 - MATH-500 pass@1: 93.9 - CodeForces Rating: 1481 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-llama-70b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-llama-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 4096\n metadata:\n notes: 'DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across multiple benchmarks, including: - AIME 2024 pass@1: 70.0 - MATH-500 pass@1: 94.5 - CodeForces Rating: 1633 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1:free\n litellm_params:\n model: openai/deepseek/deepseek-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model & [technical report](https://api-docs.deepseek.com/news/news250120). MIT licensed: Distill & commercialize freely!'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat:free\n litellm_params:\n model: openai/deepseek/deepseek-chat:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations reveal that the model outperforms other open-source models and rivals leading closed-source models. For model details, please visit [the DeepSeek-V3 repo](https://github.com/deepseek-ai/DeepSeek-V3) for more information, or see the [launch announcement](https://api-docs.deepseek.com/news/news1226).'\n litellm_provider: openrouter\n - model_name: google/gemini-2.0-flash-exp:free\n litellm_params:\n model: openai/google/gemini-2.0-flash-exp:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It introduces notable enhancements in multimodal understanding, coding capabilities, complex instruction following, and function calling. These advancements come together to deliver more seamless and robust agentic experiences.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.3-70b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.3-70b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model is optimized for multilingual dialogue use cases and outperforms many of the available open source and closed chat models on common industry benchmarks. Supported languages: English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai. [Model Card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_3/MODEL_CARD.md)'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-coder-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-coder-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning** and **code fixing**. - A more comprehensive foundation for real-world applications such as **Code Agents**. Not only enhancing coding capabilities but also maintaining its strengths in mathematics and general competencies. To read more about its evaluation results, check out [Qwen 2.5 Coder''s blog](https://qwenlm.github.io/blog/qwen2.5-coder-family/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-3b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-3b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages. Trained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-11b-vision-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-11b-vision-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 2048\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and visual question answering, bridging the gap between language generation and visual reasoning. Pre-trained on a massive dataset of image-text pairs, it performs well in complex, high-accuracy image analysis. Its ability to integrate visual understanding with language processing makes it an ideal solution for industries requiring comprehensive visual-linguistic AI applications, such as content creation, AI-driven customer service, and research. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and mathematics, thanks to our specialized expert models in these domains. - Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. - Long-context Support up to 128K tokens and can generate up to 8K tokens. - Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. Usage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.1-405b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.1-405b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs. Meta''s latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations. To read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-nemo:free\n litellm_params:\n model: openai/mistralai/mistral-nemo:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 128000\n metadata:\n notes: 'A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi. It supports function calling and is released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-2-9b-it:free\n litellm_params:\n model: openai/google/gemma-2-9b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 8192\n metadata:\n notes: 'Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size. Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining , safety, and cost-effectiveness. See the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google''s [Gemma Terms of Use](https://ai.google.dev/gemma/terms).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-7b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-7b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length. *Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*'\n litellm_provider: openrouter\n\n #######################################################################################\n # Mattermost Backup Configuration\n #######################################################################################\n mattermost-backup-daily.sh:\n content: |\n #!/bin/sh\n now=$$(date +\"%s_%Y-%m-%d\")\n /usr/bin/mysqldump --opt -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE > \"/backup/$$now_$MYSQL_DATABASE.sql\"\n\n # Container management script\n manage-containers.sh:\n content: |\n #!/bin/bash\n # Container management script for media stack\n\n CONTAINERS=\"plex riven-frontend riven blackhole\"\n\n case \"$$1\" in\n start)\n echo \"Starting media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps -a --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Starting $$container...\"\n docker start $$container\n fi\n done\n ;;\n stop)\n echo \"Stopping media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Stopping $$container...\"\n docker stop $$container\n fi\n done\n ;;\n restart)\n echo \"Restarting media stack containers...\"\n $$0 stop\n sleep 5\n $$0 start\n ;;\n *)\n echo \"Usage: $$0 {start|stop|restart}\"\n exit 1\n ;;\n esac\n\n # Symlink cleanup script\n symlink-cleanup.sh:\n content: |\n #!/bin/bash\n # Cleanup broken symlinks\n\n echo \"Cleaning up broken symlinks...\"\n\n # Find and remove broken symlinks in media directories\n find /mnt/media -type l -exec test ! -e {} \\; -print -delete\n find /mnt/symlinks -type l -exec test ! -e {} \\; -print -delete\n\n echo \"Symlink cleanup complete\"\n\n # Backup configuration script\n backup-configs.sh:\n content: |\n #!/bin/bash\n # Backup configuration files\n\n BACKUP_DIR=\"${BACKUP_PATH:-/mnt/local/backups}/$(date +%Y%m%d_%H%M%S)\"\n CONFIG_PATH=\"${CONFIG_PATH:-./volumes}\"\n\n echo \"Creating backup directory: $BACKUP_DIR\"\n mkdir -p \"$BACKUP_DIR\"\n\n echo \"Backing up configuration files...\"\n if [ -d \"$CONFIG_PATH\" ]; then\n cp -rv \"$CONFIG_PATH\" \"$BACKUP_DIR/\"\n echo \"Backup completed: $BACKUP_DIR\"\n else\n echo \"Config directory not found: $CONFIG_PATH\"\n exit 1\n fi\n\n # Keep only last 7 days of backups\n find ${BACKUP_PATH:-/mnt/local/backups} -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true\n\n echo \"Backup process complete\"\n\n plex_update.sh:\n content: |\n #!/bin/bash\n # PLEX PARTIAL SCAN script or PLEX UPDATE script\n # When zurg detects changes, it can trigger this script IF your config.yml contains\n # on_library_update: sh plex_update.sh \"$$@\"\n # Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh\n token=${PLEX_TOKEN:-replace-me}\n\n # DON'T CHANGE ANYTHING AFTER THIS LINE\n plex_url=\"${PLEX_INTERNAL_URL:-http://plex:32400}\" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400\n zurg_mount=\"${ZURG_MOUNT_PATH:-/mnt/remote/realdebrid}\" # Replace with your zurg mount path, ensure this is what Plex sees\n\n # Get the list of section IDs\n section_ids=$$(curl -sLX GET \"$$plex_url/library/sections\" -H \"X-Plex-Token: $$token\" | xmllint --xpath \"//Directory/@key\" - | sed 's/key=\"//g' | tr '\"' '\\n')\n for arg in \"$$@\"\n do\n modified_arg=\"$$zurg_mount/$$arg\"\n encoded_arg=$$(echo -n \"$$modified_arg\" | python3 -c \"import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))\")\n if [ -z \"$$encoded_arg\" ]; then\n echo \"Error: Encoded argument is empty. Check the input or encoding process.\"\n continue\n fi\n for section_id in $$section_ids\n do\n final_url=\"$$plex_url/library/sections/$$section_id/refresh?path=$$encoded_arg&X-Plex-Token=$$token\"\n echo \"Encoded argument: $$encoded_arg\"\n echo \"Section ID: $$section_id\"\n echo \"Final URL: $$final_url\"\n curl -s \"$$final_url\"\n done\n done\n echo \"All updated sections refreshed\"\n # credits to godver3\n\n headscale-config:\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://myheadscale.example.com:443\n #\n #server_url: https://headscale-server.$DOMAIN:443\n server_url: ${HEADSCALE_INTERNAL_URL:-http://headscale-server:8080}\n\n # Address to listen to / bind to on the server\n #\n listen_addr: 0.0.0.0:8080\n\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n\n grpc_listen_addr: 0.0.0.0:50443\n\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n\n # Private key used encrypt the traffic between headscale\n # and Tailscale clients.\n # The private key file which will be\n # autogenerated if it's missing\n private_key_path: /var/lib/headscale/private.key\n\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: random\n\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: false\n\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"headscale\"\n region_name: \"Headscale Embedded DERP\"\n\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n ipv4: 100.64.0.2\n ipv6: fd7a:115c:a1e0::2\n\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n\n # How often should we check for DERP updates?\n update_frequency: 24h\n\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: ${HEADSCALE_DEBUG:-false}\n\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: ${HEADSCALE_PREPARE_STMT:-true}\n\n # Enable parameterized queries.\n parameterized_queries: ${HEADSCALE_PARAMETERIZED_QUERIES:-true}\n\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: ${HEADSCALE_SKIP_ERR_RECORD_NOT_FOUND:-true}\n\n # Threshold for slow queries in milliseconds.\n slow_threshold: ${HEADSCALE_SLOW_THRESHOLD:-1000}\n\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: ${HEADSCALE_WRITE_AHEAD_LOG:-true}\n\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: ${HEADSCALE_WAL_AUTOCHECKPOINT:-1000}\n\n log:\n # Output formatting for logs: text or json\n format: ${HEADSCALE_LOG_FORMAT:-text}\n level: ${HEADSCALE_LOG_LEVEL:-info}\n\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: ${HEADSCALE_POLICY_MODE:-file}\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: ${HEADSCALE_POLICY_PATH:-\"\"}\n\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: ${HEADSCALE_MAGIC_DNS:-true}\n\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: myscale.$DOMAIN\n\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: ${HEADSCALE_OVERRIDE_LOCAL_DNS:-false}\n\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n # - https://dns.nextdns.io/abc123\n\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {\n # \"headscale.$DOMAIN\": [\n # \"1.1.1.1\",\n # \"1.0.0.1\",\n # \"2606:4700:4700::1111\",\n # \"2606:4700:4700::1001\"\n # ]\n }\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n\n # Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: ${HEADSCALE_LOGTAIL_ENABLED:-false}\n\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: ${HEADSCALE_RANDOMIZE_CLIENT_PORT:-false}\n\n\nx-common-env: &common-env\n TZ: ${TZ:-America/Chicago}\n PUID: ${PUID:-1001}\n PGID: ${PGID:-988}\n UMASK: ${UMASK:-002}\n\nservices:\n headscale-server:\n image: docker.io/headscale/headscale\n container_name: headscale-server\n hostname: headscale-server\n networks:\n - publicnet\n extra_hosts: *common-hostname-aliases\n expose:\n - 3478 # STUN\n - 8080 # HTTP\n - 9090 # Metrics\n - 50443 # gRPC\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yaml\n mode: 0644\n volumes:\n - ${CERTS_PATH:-./certs}/private/bolabaden.org.key:/var/lib/headscale/private.key\n - ${CONFIG_PATH:-./volumes}/headscale/config:/etc/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/lib:/var/lib/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/run:/var/run/headscale\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.headscale-server.service: headscale-server\n traefik.http.routers.headscale-server.rule: Host(`headscale-server.$DOMAIN`) || Host(`headscale-server.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/`) # || HostRegexp(`^(www\\.)?headscale-server\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale-server\\.$TS_HOSTNAME\\.$DOMAIN$`)) && PathPrefix(`/`)\n traefik.http.services.headscale-server.loadbalancer.server.port: 8080\n # Homepage integration\n homepage.group: Networking\n homepage.name: Headscale\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale is a server that manages your Tailscale network.\n command: serve\n restart: always\n headscale:\n depends_on:\n - headscale-server\n image: ghcr.io/gurucomputing/headscale-ui\n container_name: headscale\n hostname: headscale\n extra_hosts: *common-hostname-aliases\n pull_policy: always\n networks:\n - publicnet\n dns:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n - 9.9.9.9\n - 2620:fe::fe\n - 8.8.8.8\n - 2001:4860:4860::8888\n - 2001:4860:4860::8844\n labels:\n traefik.enable: \"true\"\n #traefik.http.routers.headscale.middlewares: nginx-auth@file\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?headscale\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale\\.$TS_HOSTNAME\\.$DOMAIN$`)) # && PathPrefix(`/web`)\n traefik.http.services.headscale.loadbalancer.server.port: 80\n homepage.group: Networking\n homepage.name: Headscale UI\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale UI is a web interface for Headscale, an open source implementation of Tailscale's Admin control panel.\n restart: always\n\n hedgedoc:\n depends_on:\n - hedgedoc-db\n image: quay.io/hedgedoc/hedgedoc\n container_name: hedgedoc\n hostname: hedgedoc\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000\n environment:\n CMD_DB_URL: postgres://hedgedoc:password@hedgedoc-db:5432/hedgedoc\n CMD_DOMAIN: hedgedoc.$DOMAIN\n CMD_URL_ADDPORT: false\n CMD_PROTOCOL_USESSL: true\n CMD_SESSION_SECRET: \"discolor-subtitle-seducing-result-ceramics\" # define secret\n CMD_ALLOW_EMAIL_REGISTER: \"true\" # allow registration\n CMD_EMAIL: \"true\" # allow login; only guest notes\n # ------- OAUTH SSO -------\n # see https://docs.goauthentik.io/integrations/services/hedgedoc/\n #- CMD_ALLOW_ANONYMOUS_EDITS=False\n #- CMD_OAUTH2_USER_PROFILE_URL=https://authentik.$DOMAIN/application/o/userinfo/\n #- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username\n #- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name\n #- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email\n #- CMD_OAUTH2_TOKEN_URL=https://authentik.$DOMAIN/application/o/token/\n #- CMD_OAUTH2_AUTHORIZATION_URL=https://authentik.$DOMAIN/application/o/authorize/\n #- CMD_OAUTH2_CLIENT_ID=<ID>\n #- CMD_OAUTH2_CLIENT_SECRET=<SECRET>\n #- CMD_OAUTH2_PROVIDERNAME=Authentik\n #- CMD_OAUTH2_SCOPE=openid email profile\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/uploads:/hedgedoc/public/uploads\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.hedgedoc.service: hedgedoc\n traefik.http.routers.hedgedoc.middlewares: nginx-auth@file\n traefik.http.routers.hedgedoc.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc.loadbalancer.server.port: 3000\n # prevent unauthorized access to the /metrics endpoint\n traefik.http.routers.hedgedoc-metrics.service: hedgedoc-metrics\n traefik.http.routers.hedgedoc-metrics.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/metrics`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc-metrics.loadbalancer.server.port: 3000\n traefik.http.routers.hedgedoc-metrics.middlewares: nginx-auth@file\n restart: always\n hedgedoc-db:\n image: postgres:16.3-alpine\n container_name: hedgedoc-db\n networks:\n - publicnet\n expose:\n - 5432\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/database:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: hedgedoc\n POSTGRES_PASSWORD: password\n POSTGRES_DB: hedgedoc\n restart: always\n mongodb:\n # 🔹🔹 MongoDB 🔹🔹\n image: mongo\n container_name: mongodb\n hostname: ${MONGODB_HOSTNAME:-mongodb}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 27017\n volumes:\n - ${CONFIG_PATH:-./volumes}/mongodb/data:/data/db\n environment:\n <<: *common-env\n healthcheck:\n test: [\"CMD-SHELL\", \"mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\\\"ping\\\").ok' > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 10s\n retries: 5\n start_period: 40s\n restart: always\n redis:\n # 🔹🔹 Redis 🔹🔹\n # NOTE: If you want to use Valkey (open source) instead of Redis (source available),\n # uncomment the Valkey statement and comment out the Redis statement.\n # Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.\n image: redis:alpine\n # image: valkey/valkey:alpine\n container_name: redis\n hostname: redis\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/redis:/data\n environment:\n <<: *common-env\n REDIS_HOST: ${REDIS_HOST:-redis}\n REDIS_PORT: ${REDIS_PORT:-6379}\n REDIS_DATABASE: ${REDIS_DATABASE:-0}\n REDIS_USERNAME: ${REDIS_USERNAME:-default}\n REDIS_PASSWORD: ${REDIS_PASSWORD:-redis}\n command: redis-server --appendonly yes --save 60 1 --bind 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 5s\n retries: 5\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 200M\n limits:\n cpus: 0.5\n memory: 4G\n restart: always\n open-webui:\n # 🔹🔹 Open WebUI 🔹🔹\n depends_on:\n mcpo:\n condition: service_healthy\n litellm:\n condition: service_healthy\n image: ghcr.io/open-webui/open-webui:main\n container_name: open-webui\n hostname: open-webui\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${OPEN_WEBUI_PORT:-8080}\n volumes:\n - ${CONFIG_PATH:-./volumes}/open-webui:/app/backend/data\n environment:\n # ===== GENERAL CONFIGURATION =====\n # Controls whether admin users can export data\n ENABLE_ADMIN_EXPORT: True\n\n # Enables admin users to access all chats\n ENABLE_ADMIN_CHAT_ACCESS: True\n\n # Bypasses model access control. (default: False)\n BYPASS_MODEL_ACCESS_CONTROL: True\n\n # Environment setting (dev/prod) - Docker default is prod\n ENV: prod\n\n # If set to False, all PersistentConfig variables are treated as regular variables\n ENABLE_PERSISTENT_CONFIG: True\n\n # Sets the port to run Open WebUI from\n PORT: ${OPEN_WEBUI_PORT:-8080}\n\n # When enabled, saves each chunk of streamed chat data to database in real time\n ENABLE_REALTIME_CHAT_SAVE: True\n\n # Used for identifying the Git SHA of the build for releases\n WEBUI_BUILD_HASH: dev-build\n\n # ===== AIOHTTP CLIENT CONFIGURATION =====\n # Specifies the timeout duration in seconds for the AIOHTTP client\n AIOHTTP_CLIENT_TIMEOUT: 300\n\n # Sets the timeout in seconds for fetching the model list\n AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST: 10\n\n # Sets the timeout in seconds for fetching the OpenAI model list\n AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST: 10\n\n # ===== DIRECTORY CONFIGURATION =====\n # Specifies the base directory for data storage\n DATA_DIR: ./data\n\n # Specifies the location of the built frontend files\n FRONTEND_BUILD_DIR: ../build\n\n # Specifies the directory for static files\n STATIC_DIR: ./static\n\n # ===== OLLAMA CONFIGURATION =====\n # Configures the Ollama backend URL\n OLLAMA_BASE_URL: /ollama\n\n # Builds the Docker image with a bundled Ollama instance\n USE_OLLAMA_DOCKER: false\n\n # If set, assumes Helm chart deployment\n K8S_FLAG: False\n\n # ===== SECURITY CONFIGURATION =====\n # Forwards user information as X-headers to OpenAI API and Ollama API\n ENABLE_FORWARD_USER_INFO_HEADERS: False\n\n # Sets the SameSite attribute for session cookies (lax/strict/none)\n WEBUI_SESSION_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for session cookies\n WEBUI_SESSION_COOKIE_SECURE: False\n\n # Sets the SameSite attribute for auth cookies\n WEBUI_AUTH_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for auth cookies\n WEBUI_AUTH_COOKIE_SECURE: False\n\n # Enables or disables authentication\n WEBUI_AUTH: ${WEBUI_AUTH:-True}\n\n # Overrides the randomly generated string used for JSON Web Token\n WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY:?}\n\n # When enabled, makes automatic update checks and notifies about version updates\n ENABLE_VERSION_UPDATE_CHECK: True\n\n # Disables Open WebUI's network connections for update checks and automatic model downloads\n OFFLINE_MODE: False\n\n # Resets the config.json file on startup\n RESET_CONFIG_ON_START: False\n\n # Enables safe mode, which disables potentially unsafe features\n SAFE_MODE: False\n\n # Sets the allowed origins for Cross-Origin Resource Sharing (CORS)\n CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_CORS_ALLOWED_ORIGIN:-*}\n\n # Determines whether to allow custom models defined on the Hub\n RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE: True\n\n # Determines whether to allow custom models for reranking\n RAG_RERANKING_MODEL_TRUST_REMOTE_CODE: True\n\n # Toggles automatic update of the Sentence-Transformer model\n RAG_EMBEDDING_MODEL_AUTO_UPDATE: True\n\n # Toggles automatic update of the reranking model\n RAG_RERANKING_MODEL_AUTO_UPDATE: True\n\n # ===== VECTOR DATABASE CONFIGURATION =====\n # Specifies which vector database system to use\n VECTOR_DB: chroma\n\n # ===== RAG CONFIGURATION =====\n # Sets the directory for TikToken cache\n TIKTOKEN_CACHE_DIR: /app/backend/data/cache/tiktoken\n\n # Sets the batch size for OpenAI embeddings\n RAG_EMBEDDING_OPENAI_BATCH_SIZE: 1\n\n # ===== DOCKER-SPECIFIC CONFIGURATION =====\n # Indicates running in Docker environment\n DOCKER: true\n\n # Home directory for the container\n HOME: /root\n\n # Hugging Face home directory for embedding models\n HF_HOME: /app/backend/data/cache/embedding/models\n\n # Sentence Transformers home directory\n SENTENCE_TRANSFORMERS_HOME: /app/backend/data/cache/embedding/models\n\n # CUDA Docker version to use\n USE_CUDA_DOCKER_VER: cu128\n\n # Embedding model to use in Docker\n USE_EMBEDDING_MODEL_DOCKER: sentence-transformers/all-MiniLM-L6-v2\n\n # ===== TELEMETRY DISABLING =====\n # Disables anonymized telemetry\n ANONYMIZED_TELEMETRY: false\n\n # Disables tracking\n DO_NOT_TRACK: true\n\n # Disables Scarf analytics\n SCARF_NO_ANALYTICS: true\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.open-webui.rule: Host(`open-webui.$DOMAIN`) || Host(`open-webui.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.open-webui.loadbalancer.server.port: \"${OPEN_WEBUI_PORT:-8080}\"\n homepage.group: AI\n homepage.name: Open WebUI\n homepage.icon: open-webui.png\n homepage.href: https://open-webui.$DOMAIN/\n homepage.description: Open WebUI is a feature-rich self-hosted webui for chatting with GenAI.\n command: [\"bash\", \"start.sh\"]\n working_dir: /app/backend\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8080\"]\n interval: 5s\n timeout: 30s\n retries: 10\n restart: always\n mcpo:\n image: ghcr.io/open-webui/mcpo:main\n container_name: mcpo\n hostname: mcpo\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/mcpo/mcp_servers.json:/app/config/mcp_servers.json # TODO: use configs: syntax for configmap here.\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/logs:/app/logs\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/data:/app/data\n environment:\n MCPO_API_KEY: $MCPO_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mcpo.rule: Host(`mcpo.$DOMAIN`) || Host(`mcpo.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.mcpo.loadbalancer.server.port: 8000\n homepage.group: MCPO\n homepage.name: MCPO\n homepage.icon: mcpo.png\n homepage.href: https://mcpo.$DOMAIN/\n homepage.description: MCPO is a tool for managing and interacting with AI models.\n command: --api-key \"$MCPO_API_KEY\" --host 0.0.0.0 --port 8000 --cors-allow-origins \"*\" --config /app/config/mcp_servers.json\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/openapi.json\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n litellm:\n image: 'ghcr.io/berriai/litellm-database:main-stable'\n# image: ghcr.io/berriai/litellm:main-stable\n container_name: litellm\n hostname: litellm\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n depends_on:\n litellm-postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n volumes:\n - ${CONFIG_PATH:-./volumes}/litellm:/app/config\n configs:\n - source: litellm_config.yaml\n target: /app/config/litellm_config.yaml\n mode: 0440\n environment:\n - 'LITELLM_LOG=${LITELLM_LOG:-INFO}'\n - 'LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}'\n - 'UI_USERNAME=${LITELLM_UI_USERNAME:-admin}'\n - 'UI_PASSWORD=$LITELLM_MASTER_KEY'\n - 'DATABASE_URL=postgresql://${LITELLM_POSTGRES_USER:-litellm}:${LITELLM_POSTGRES_PASSWORD:-litellm}@${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}:5432/${LITELLM_POSTGRES_DB:-litellm}'\n - 'REDIS_HOST=${REDIS_HOSTNAME:-redis}'\n - 'REDIS_PORT=${REDIS_PORT:-6379}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'VOYAGE_API_KEY=$VOYAGE_API_KEY'\n - 'AI21_API_KEY=$AI21_API_KEY'\n - 'ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY'\n - 'APIFY_API_TOKEN=$APIFY_API_TOKEN'\n - 'APIPIE_API_KEY=$APIPIE_API_KEY'\n - 'ARLIAI_API_KEY=$ARLIAI_API_KEY'\n - 'AWANLLM_API_KEY=$AWANLLM_API_KEY'\n - 'BASETEN_API_KEY=$BASETEN_API_KEY'\n - 'BITO_ACCESS_KEY=$BITO_ACCESS_KEY'\n - 'BRAVE_API_KEY=$BRAVE_API_KEY'\n - 'CEREBRIUMAI_API_KEY=$CEREBRIUMAI_API_KEY'\n - 'DEEPINFRA_API_KEY=$DEEPINFRA_API_KEY'\n - 'DEEPGRAM_API_KEY=$DEEPGRAM_API_KEY'\n - 'DEEPSEEK_API_KEY=$DEEPSEEK_API_KEY'\n - 'DOCKER_TOKEN=$DOCKER_TOKEN'\n - 'DOCKERHUB_TOKEN=$DOCKERHUB_TOKEN'\n - 'EVERART_API_KEY=$EVERART_API_KEY'\n - 'EXA_API_KEY=$EXA_API_KEY'\n - 'FOREFRONTAI_API_KEY=$FOREFRONTAI_API_KEY'\n - 'GEMINI_API_KEY=$GEMINI_API_KEY'\n - 'GLAMA_API_KEY=$GLAMA_API_KEY'\n - 'GROK_API_KEY=$GROK_API_KEY'\n - 'GROQ_API_KEY=$GROQ_API_KEY'\n - 'HF_TOKEN=$HF_TOKEN'\n - 'HUGGINGFACE_ACCESS_TOKEN=$HUGGINGFACE_ACCESS_TOKEN'\n - 'HUGGINGFACE_API_TOKEN=$HUGGINGFACE_API_TOKEN'\n - 'JINA_API_KEY=$JINA_API_KEY'\n - 'KAGI_API_KEY=$KAGI_API_KEY'\n - 'KLUSTER_API_KEY=$KLUSTER_API_KEY'\n - 'LANGCHAIN_API_KEY=$LANGCHAIN_API_KEY'\n - 'LANGSMITH_API_KEY=$LANGSMITH_API_KEY'\n - 'LITELLM_MASTER_KEY=$LITELLM_MASTER_KEY'\n - 'MISTRAL_API_KEY=$MISTRAL_API_KEY'\n - 'MISTRALAI_API_KEY=$MISTRALAI_API_KEY'\n - 'OPENAI_API_KEY=$OPENAI_API_KEY'\n - 'OPENROUTER_API_KEY=$OPENROUTER_API_KEY'\n - 'PERPLEXITY_API_KEY=$PERPLEXITY_API_KEY'\n - 'PERPLEXITYAI_API_KEY=$PERPLEXITYAI_API_KEY'\n - 'REPLICATE_API_KEY=$REPLICATE_API_KEY'\n - 'SAMBANOVA_API_KEY=$SAMBANOVA_API_KEY'\n - 'SEARCH1API_KEY=$SEARCH1API_KEY'\n - 'SERPAPI_API_KEY=$SERPAPI_API_KEY'\n - 'SMITHERY_API_KEY=$SMITHERY_API_KEY'\n - 'TANDOOR_SECRET_KEY=$TANDOOR_SECRET_KEY'\n - 'TODOIST_API_KEY=$TODOIST_API_KEY'\n - 'TOGETHERAI_API_KEY=$TOGETHERAI_API_KEY'\n - 'UNIFY_API_KEY=$UNIFY_API_KEY'\n - 'UPSTAGE_API_KEY=$UPSTAGE_API_KEY'\n - 'UPSTAGEAI_API_KEY=$UPSTAGEAI_API_KEY'\n - 'VEYRAX_API_KEY=$VEYRAX_API_KEY'\n - 'YANDEX_API_KEY=$YANDEX_API_KEY'\n - 'YOU_API_KEY=$YOU_API_KEY'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.litellm.rule: Host(`litellm.$DOMAIN`) || Host(`litellm.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.litellm.loadbalancer.server.port: ${LITELLM_PORT:-4000}\n homepage.group: AI\n homepage.name: Litellm\n homepage.icon: litellm.png\n homepage.href: https://litellm.$DOMAIN/\n homepage.description: Litellm is a tool for managing and interacting with AI models.\n command: --config /app/config/litellm_config.yaml --port ${LITELLM_PORT:-4000} --host 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://localhost:${LITELLM_PORT:-4000}/health/liveliness\"]\n interval: 30s\n timeout: 15s\n retries: 5\n start_period: 30s\n restart: always\n litellm-postgres:\n# image: 'postgres:16-alpine'\n image: postgres:16.3-alpine3.20\n container_name: litellm-postgres\n hostname: ${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n volumes:\n - '${CONFIG_PATH:-./volumes}/litellm/pgdata:/var/lib/postgresql/data'\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB\"]\n interval: 5s\n timeout: 5s\n retries: 3\n restart: always\n searxng:\n # 🔹🔹 SearxNG 🔹🔹 # https://hub.docker.com/r/searxng/searxng\n # SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n image: docker.io/searxng/searxng\n container_name: searxng\n hostname: ${SEARXNG_HOSTNAME:-searxng}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # touch ${CONFIG_PATH:-./volumes}/searxng/limiter.toml\n - ${CONFIG_PATH:-./volumes}/searxng:/etc/searxng\n environment:\n <<: *common-env\n SEARXNG_BASE_URL: ${SEARXNG_URL:-http://searxng:8080}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: 8080\n homepage.group: Search\n homepage.name: SearxNG\n homepage.icon: searxng.png\n homepage.href: https://searxng.$DOMAIN/\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n healthcheck:\n test: [\"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n restart: always\n code-server:\n # 🔹🔹 Code Server 🔹🔹\n image: docker.io/linuxserver/code-server\n container_name: code-server\n hostname: code-server\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/code-server/dev/config:/config\n - ${CONFIG_PATH:-./volumes}/code-server/dev/workspace:/workspace\n - ${ROOT_PATH:-.}:/workspace\n user: ${PUID:-1001}:${PGID:-988}\n environment:\n <<: *common-env\n CODESERVER_PASSWORD: $SUDO_PASSWORD\n PASSWORD: $SUDO_PASSWORD\n CODESERVER_SUDO_PASSWORD: $SUDO_PASSWORD\n SUDO_PASSWORD: $SUDO_PASSWORD\n CODESERVER_DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.code-server.loadbalancer.server.port: 8443\n homepage.group: Infrastructure\n homepage.name: Code Dev\n homepage.icon: code-server.png\n homepage.href: https://code-server.$DOMAIN/\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0.15\n memory: 200M\n limits:\n cpus: 2\n memory: 4G\n restart: always\n\n init_prometheus:\n image: prom/prometheus\n container_name: init_prometheus\n hostname: init_prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n user: root\n entrypoint: /bin/sh -c \"chown -R 65534:65534 /prometheus\"\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n restart: \"no\"\n\n prometheus:\n depends_on:\n - init_prometheus\n image: prom/prometheus\n container_name: prometheus\n hostname: prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n configs:\n - source: prometheus.yml\n target: /etc/prometheus/prometheus.yml\n mode: 0777\n - source: alert.rules\n target: /etc/prometheus/alert.rules\n mode: 0777\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n - '--web.console.templates=/usr/share/prometheus/consoles'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.prometheus.rule: Host(`prometheus.$DOMAIN`) || Host(`prometheus.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.prometheus.loadbalancer.server.port: 9090\n restart: always\n\n bolabaden-nextjs:\n # 🔹🔹 bolabaden nextJS main website with integrated auth 🔹🔹\n build:\n context: ${SRC_PATH:-./projects}/bolabaden-site\n dockerfile: Dockerfile\n image: th3w1zard1/bolabaden-nextjs\n container_name: bolabaden-nextjs\n hostname: bolabaden-nextjs\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - ${BOLABADEN_NEXTJS_PORT:-3000}:${BOLABADEN_NEXTJS_PORT:-3000}\n volumes:\n - ${CONFIG_PATH:-./volumes}/tinyauth:/data\n environment:\n <<: *common-env\n NODE_ENV: production\n PORT: ${BOLABADEN_NEXTJS_PORT:-3000}\n HOSTNAME: ${BOLABADEN_NEXTJS_HOSTNAME:-0.0.0.0}\n # NextAuth.js Configuration (compatible with TinyAuth)\n SECRET: $TINYAUTH_SECRET?\n NEXTAUTH_URL: https://$DOMAIN\n NEXTAUTH_SECRET: $TINYAUTH_SECRET?\n APP_URL: https://auth.$DOMAIN\n USERS: $TINYAUTH_USERS\n # Google OAuth Configuration\n GOOGLE_CLIENT_ID: $TINYAUTH_GOOGLE_CLIENT_ID\n GOOGLE_CLIENT_SECRET: $TINYAUTH_GOOGLE_CLIENT_SECRET\n # GitHub OAuth Configuration\n GITHUB_CLIENT_ID: $TINYAUTH_GITHUB_CLIENT_ID\n GITHUB_CLIENT_SECRET: $TINYAUTH_GITHUB_CLIENT_SECRET\n # Additional settings (TinyAuth compatible)\n SESSION_EXPIRY: ${TINYAUTH_SESSION_EXPIRY:-604800} # 2 weeks session expiry\n COOKIE_SECURE: ${TINYAUTH_COOKIE_SECURE:-true} # Send cookie only with HTTPS\n APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # Customize login page title\n NEXT_PUBLIC_APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # For client-side access\n LOGIN_MAX_RETRIES: ${TINYAUTH_LOGIN_MAX_RETRIES:-15} # Maximum login attempts before account lockout\n LOGIN_TIMEOUT: ${TINYAUTH_LOGIN_TIMEOUT:-300} # Lock account for 5 minutes after too many failed attempts\n OAUTH_AUTO_REDIRECT: ${TINYAUTH_OAUTH_AUTO_REDIRECT:-none} # Options: none, github, google, or credentials\n OAUTH_WHITELIST: ${TINYAUTH_OAUTH_WHITELIST:-boden.crouch@gmail.com} # e.g. user1,user2,/^admin.*/\n # User level configuration\n ADMIN_ACCOUNTS: ${TINYAUTH_ADMIN_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of admin emails\n OWNER_ACCOUNTS: ${TINYAUTH_OWNER_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of owner emails\n labels:\n traefik.enable: \"true\"\n # Main website router\n traefik.http.routers.bolabaden-nextjs.rule: 'Host(`$DOMAIN`) || Host(`$TS_HOSTNAME.$DOMAIN`) || Host(`$DUCKDNS_DOMAIN`) || Host(`$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.bolabaden-nextjs.service: bolabaden-nextjs\n # Auth router (replaces tinyauth)\n #traefik.http.routers.tinyauth.rule: 'Host(`auth.$DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DOMAIN`) || Host(`auth.$DUCKDNS_DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n #traefik.http.routers.tinyauth.service: bolabaden-nextjs\n # ForwardAuth middleware\n #traefik.http.middlewares.tinyauth.forwardauth.address: http://bolabaden-nextjs:${BOLABADEN_NEXTJS_PORT:-3000}/api/auth/traefik\n # Service configuration\n traefik.http.services.bolabaden-nextjs.loadbalancer.server.port: ${BOLABADEN_NEXTJS_PORT:-3000}\n # Homepage integration\n homepage.group: Web Services\n homepage.name: Bolabaden\n homepage.icon: dashboard.png\n homepage.href: https://$DOMAIN/\n homepage.description: Bolabaden main website with embedded services and authentication\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n\n whoami:\n # 🔹🔹 Whoami 🔹🔹\n image: traefik/whoami\n container_name: whoami\n hostname: whoami\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: 'Host(`whoami.$DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DOMAIN`) || Host(`whoami.$DUCKDNS_DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n homepage.group: Web Services\n homepage.name: Whoami\n homepage.icon: whoami.png\n homepage.href: https://whoami.$DOMAIN\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n restart: always\n\n dokku:\n # 🔹🔹 Dokku 🔹🔹\n image: dokku/dokku:0.35.20\n container_name: dokku\n hostname: dokku\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - \"127.0.0.1:3022:22\" # SSH\n - \"127.0.0.1:8080:80\" # HTTP\n - \"127.0.0.1:8443:443\" # HTTPS\n volumes:\n - \"/var/lib/dokku:/mnt/dokku\" # Dokku data\n - \"/var/run/docker.sock:/var/run/docker.sock\" # Docker socket\n environment:\n DOKKU_HOSTNAME: dokku.$DOMAIN\n DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku\n DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dokku-http.service: dokku-http\n traefik.http.routers.dokku-https.service: dokku-https\n traefik.http.routers.dokku-ssh.service: dokku-ssh\n traefik.http.routers.dokku-http.rule: 'Host(`dokku-http.$DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-http.$DUCKDNS_DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-https.rule: 'Host(`dokku-https.$DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-https.$DUCKDNS_DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-ssh.rule: 'Host(`dokku-ssh.$DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-ssh.$DUCKDNS_DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dokku-http.loadbalancer.server.port: 80\n traefik.http.services.dokku-https.loadbalancer.server.port: 443\n traefik.http.services.dokku-ssh.loadbalancer.server.port: 22\n homepage.group: Infrastructure\n homepage.name: Dokku\n homepage.icon: dokku.png\n homepage.href: https://dokku.$DOMAIN/\n homepage.description: Dokku is a lightweight PaaS that runs on top of Docker.\n restart: always\n\n dozzle:\n # 🔹🔹 Dozzle 🔹🔹\n image: amir20/dozzle\n container_name: dozzle\n hostname: dozzle\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:z\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: 'Host(`dozzle.$DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DOMAIN`) || Host(`dozzle.$DUCKDNS_DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dozzle.loadbalancer.server.port: 8080\n homepage.group: System Monitoring\n homepage.name: Dozzle\n homepage.icon: dozzle.png\n homepage.href: https://dozzle.$DOMAIN/\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n restart: always\n\n homepage:\n # 🔹🔹 Homepage 🔹🔹 # https://github.com/gethomepage/homepage\n image: ghcr.io/gethomepage/homepage\n container_name: homepage\n hostname: homepage\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # DO NOT create a bind mount to the entire /app/public/ directory.\n - /var/run/docker.sock:/var/run/docker.sock:z\n - ${CONFIG_PATH:-./volumes}/homepage:/app/config\n environment:\n <<: *common-env\n HOMEPAGE_ALLOWED_HOSTS: ${HOMEPAGE_ALLOWED_HOSTS:-*}\n HOMEPAGE_VAR_TITLE: ${HOMEPAGE_VAR_TITLE:-Bolabaden}\n HOMEPAGE_VAR_SEARCH_PROVIDER: ${HOMEPAGE_VAR_SEARCH_PROVIDER:-google}\n HOMEPAGE_VAR_HEADER_STYLE: ${HOMEPAGE_VAR_HEADER_STYLE:-}\n HOMEPAGE_VAR_WEATHER_CITY: ${HOMEPAGE_VAR_WEATHER_CITY:-Chicago}\n HOMEPAGE_VAR_WEATHER_LAT: ${HOMEPAGE_VAR_WEATHER_LAT:-41.8781}\n HOMEPAGE_VAR_WEATHER_LONG: ${HOMEPAGE_VAR_WEATHER_LONG:--87.6298}\n # HOMEPAGE_VAR_WEATHER_TIME: ${HOMEPAGE_VAR_WEATHER_TIME:-}\n HOMEPAGE_VAR_WEATHER_UNIT: ${HOMEPAGE_VAR_WEATHER_UNIT:-fahrenheit}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: 'Host(`homepage.$DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DOMAIN`) || Host(`homepage.$DUCKDNS_DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.homepage.loadbalancer.server.port: 3000\n homepage.group: Dashboards\n homepage.name: Homepage\n homepage.icon: homepage.png\n homepage.href: https://homepage.$DOMAIN/\n homepage.description: Homepage is a dashboard that displays all of your services.\n healthcheck: # docker exec homepage ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 0.25 # deliberately hobble the CPU in favor of GPU transcoding\n memory: 1G\n restart: always\n\n watchtower:\n # 🔹🔹 Watchtower 🔹🔹\n image: containrrr/watchtower\n container_name: watchtower\n hostname: watchtower\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n# - ${CONFIG_PATH:-./volumes}/watchtower/data:/data\n environment:\n <<: *common-env\n WATCHTOWER_CLEANUP: ${WATCHTOWER_CLEANUP:-true}\n WATCHTOWER_SCHEDULE: ${WATCHTOWER_SCHEDULE:-0 0 6 * * *} # Run at 6am daily\n WATCHTOWER_NOTIFICATION_URL: ${WATCHTOWER_NOTIFICATION_URL:-}\n WATCHTOWER_NOTIFICATION_REPORT: ${WATCHTOWER_NOTIFICATION_REPORT:-true}\n WATCHTOWER_DEBUG: ${WATCHTOWER_DEBUG:-true}\n WATCHTOWER_LOG_LEVEL: ${WATCHTOWER_LOG_LEVEL:-debug}\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n restart: always\n\n flaresolverr:\n # 🔹🔹 Flaresolverr 🔹🔹 # https://github.com/flaresolverr/flaresolverr\n image: ghcr.io/flaresolverr/flaresolverr\n #image: ghcr.io/thephaseless/byparr\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${FLARESOLVERR_PORT:-8191}\n environment:\n <<: *common-env\n # FlareSolverr Environment Variables\n \n LOG_LEVEL: info # Verbosity of the logging. Use LOG_LEVEL=debug for more information.\n LOG_HTML: false # Only for debugging. If true all HTML that passes through the proxy will be logged to the console in debug level.\n CAPTCHA_SOLVER: none # Captcha solving method. It is used when a captcha is encountered. Note: none of the captcha solvers work with the current version of Flaresolverr.\n PORT: ${FLARESOLVERR_PORT:-8191} # Listening port.\n HOST: 0.0.0.0 # Listening interface.\n HEADLESS: ${FLARESOLVERR_HEADLESS:-true} # Only for debugging. To run the web browser in headless mode or visible.\n BROWSER_TIMEOUT: ${FLARESOLVERR_BROWSER_TIMEOUT:-120000} # If you are experiencing errors/timeouts because your system is slow, you can try to increase this value.\n TEST_URL: ${FLARESOLVERR_TEST_URL:-https://www.google.com} # FlareSolverr makes a request on start to make sure the web browser is working.\n PROMETHEUS_ENABLED: ${FLARESOLVERR_PROMETHEUS_ENABLED:-true} # Enable Prometheus exporter\n PROMETHEUS_PORT: ${PROMETHEUS_PORT:-9090} # Listening port for Prometheus exporter\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: 'Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DOMAIN`) || Host(`flaresolverr.$DUCKDNS_DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.flaresolverr.loadbalancer.server.port: ${FLARESOLVERR_PORT:-8191}\n homepage.group: Infrastructure\n homepage.name: Flaresolverr\n homepage.icon: flaresolverr.png\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:${FLARESOLVERR_PORT:-8191}/health > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n start_period: 60s\n cpus: 0.6\n mem_reservation: 64M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 64M\n limits:\n cpus: 0.6\n memory: 1G\n restart: always\n\n stremio:\n # 🔹🔹 Stremio 🔹🔹\n # Stream Movies/TV over debrid instantly.\n image: th3w1zard1/stremio-docker\n container_name: stremio\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n ports:\n - 11470:11470/tcp\n - 12470:12470/tcp\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/root/.stremio-server:/root/.stremio-server\n environment:\n SERVER_URL: ${STREMIO_SERVER_URL:-https://stremio.$DOMAIN/}\n WEBUI_LOCATION: ${STREMIO_WEBUI_LOCATION:-https://stremio-web.$DOMAIN/shell/}\n NO_CORS: ${STREMIO_NO_CORS:-0}\n CASTING_DISABLED: ${STREMIO_CASTING_DISABLED:-0}\n labels:\n traefik.enable: \"true\"\n # Router for Stremio Web UI (port 8080)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.stremio-web.rule: \"Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-web.$DUCKDNS_DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)\"\n traefik.http.routers.stremio-web.priority: 10\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: 8080\n # Router for Stremio API and Streaming Server (port 11470)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-http-server.rule: 'Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-api.$DUCKDNS_DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-api-http-server.priority: 100\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: 11470\n # Stremio HTTPS Streaming Server (port 12470)\n traefik.http.routers.stremio-https-server.service: stremio-https-server\n traefik.http.routers.stremio-https-server.rule: 'Host(`stremio.$DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio.$DUCKDNS_DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-https-server.priority: 100\n traefik.http.services.stremio-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-https-server.loadbalancer.server.port: 12470\n homepage.group: Media Streaming Platforms\n homepage.name: Stremio\n homepage.icon: stremio.png\n homepage.href: https://stremio.$DOMAIN/\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n healthcheck:\n test: [\"CMD-SHELL\", \"(curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\"]\n interval: 60s\n timeout: 5s\n retries: 3\n start_period: 1m30s\n cpu_shares: 10 # potentially should be 1\n mem_reservation: 256M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 256M\n limits:\n cpus: 2\n memory: 2G\n restart: always\n aiostreams:\n # 🔹🔹 AIOStreams 🔹🔹\n image: ghcr.io/viren070/aiostreams\n container_name: aiostreams\n hostname: ${AIOSTREAMS_HOSTNAME:-aiostreams}\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/aiostreams/data:/app/data\n environment:\n <<: *common-env\n # ==============================================================================\n # ESSENTIAL ADDON SETUP\n # ==============================================================================\n # These are the most important settings you'll need to configure.\n\n # --- Addon Identification ---\n # Descriptive name for your addon instance.\n ADDON_NAME: ${AIOSTREAMS_ADDON_NAME:-BadenAIO}\n # Unique identifier for your addon.\n ADDON_ID: aiostreams.$DOMAIN\n\n # --- Network Configuration ---\n # The port on which the addon will listen.\n # Default: 3000\n PORT: ${AIOSTREAMS_PORT:-3005}\n\n # The base URL of your addon. Highly recommended for proper functioning.\n # Used for generating installation URLs and identifying self-scraping.\n # Example: https://aiostreams.yourdomain.com\n BASE_URL: https://aiostreams.$DOMAIN\n\n # --- Security ---\n # CRITICAL: Secret key for encrypting addon configuration.\n # MUST be a 64-character hex string.\n # Generate one using:\n # Linux/macOS: openssl rand -hex 32\n # Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) })\n # Or: [System.Guid]::NewGuid().ToString(\"N\") + [System.Guid]::NewGuid().ToString(\"N\") (ensure it's 64 chars)\n SECRET_KEY: ${AIOSTREAMS_SECRET_KEY:-207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde}\n\n # API key to protect your addon installation and usage.\n # Leave empty to disable password protection.\n # Can be any string.\n ADDON_PASSWORD: ${AIOSTREAMS_ADDON_PASSWORD:-sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9}\n #\n # PostgreSQL example:\n # DATABASE_URI=postgres://username:password@host:port/database_name\n # (e.g., postgresql://postgres:password@localhost:5432/aiostreams)\n DATABASE_URI: ${AIOSTREAMS_DATABASE_URI:-sqlite://./data/db.sqlite}\n\n\n # ==============================================================================\n # DEBRID & OTHER SERVICE API KEYS\n # ==============================================================================\n\n # Provide a default TMDB access token to be used for the Title Matching filter if a user does not provide any.\n TMDB_ACCESS_TOKEN: $TMDB_ACCESS_TOKEN\n\n # Configure API keys for debrid services and others you plan to use.\n # 'DEFAULT_' values are pre-filled in the user's config page.\n # 'FORCED_' values override user settings and hide the option.\n\n # --- Real-Debrid ---\n DEFAULT_REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n #- FORCED_REALDEBRID_API_KEY=$REALDEBRID_API_KEY\n\n # --- AllDebrid ---\n DEFAULT_ALLDEBRID_API_KEY: $ALLDEBRID_API_KEY\n #- FORCED_ALLDEBRID_API_KEY=$ALLDEBRID_API_KEY\n\n # --- Premiumize ---\n DEFAULT_PREMIUMIZE_API_KEY: $PREMIUMIZE_API_KEY\n #- FORCED_PREMIUMIZE_API_KEY=$PREMIUMIZE_API_KEY\n\n # --- Debrid-Link ---\n DEFAULT_DEBRIDLINK_API_KEY: $DEBRIDLINK_API_KEY\n #- FORCED_DEBRIDLINK_API_KEY=$DEBRIDLINK_API_KEY\n\n # --- Torbox ---\n DEFAULT_TORBOX_API_KEY: $TORBOX_API_KEY\n #- FORCED_TORBOX_API_KEY=$TORBOX_API_KEY\n\n # --- OffCloud ---\n DEFAULT_OFFCLOUD_API_KEY: $OFFCLOUD_API_KEY\n #- FORCED_OFFCLOUD_API_KEY=$OFFCLOUD_API_KEY\n DEFAULT_OFFCLOUD_EMAIL: $OFFCLOUD_EMAIL\n #- FORCED_OFFCLOUD_EMAIL=$OFFCLOUD_EMAIL\n DEFAULT_OFFCLOUD_PASSWORD: $OFFCLOUD_PASSWORD\n #- FORCED_OFFCLOUD_PASSWORD=$OFFCLOUD_PASSWORD\n\n # --- Put.io ---\n DEFAULT_PUTIO_CLIENT_ID: $PUTIO_CLIENT_ID\n #- FORCED_PUTIO_CLIENT_ID=$PUTIO_CLIENT_ID\n DEFAULT_PUTIO_CLIENT_SECRET: $PUTIO_CLIENT_SECRET\n #- FORCED_PUTIO_CLIENT_SECRET=$PUTIO_CLIENT_SECRET\n\n # --- EasyNews ---\n DEFAULT_EASYNEWS_USERNAME: $EASYNEWS_USERNAME\n #- FORCED_EASYNEWS_USERNAME=$EASYNEWS_USERNAME\n DEFAULT_EASYNEWS_PASSWORD: $EASYNEWS_PASSWORD\n #- FORCED_EASYNEWS_PASSWORD=$EASYNEWS_PASSWORD\n\n # --- EasyDebrid ---\n DEFAULT_EASYDEBRID_API_KEY: $EASYDEBRID_API_KEY\n #- FORCED_EASYDEBRID_API_KEY=$EASYDEBRID_API_KEY\n\n # --- PikPak ---\n DEFAULT_PIKPAK_EMAIL: $PIKPAK_EMAIL\n #- FORCED_PIKPAK_EMAIL=$PIKPAK_EMAIL\n DEFAULT_PIKPAK_PASSWORD: $PIKPAK_PASSWORD\n #- FORCED_PIKPAK_PASSWORD=$PIKPAK_PASSWORD\n\n # --- Seedr ---\n DEFAULT_SEEDR_ENCODED_TOKEN: $SEEDR_ENCODED_TOKEN\n #- FORCED_SEEDR_ENCODED_TOKEN=$SEEDR_ENCODED_TOKEN\n\n\n # ==============================================================================\n # CUSTOMIZATION & ACCESS CONTROL\n # ==============================================================================\n\n # --- Custom HTML ---\n # Display custom HTML at the top of the addon's configuration page.\n # Example: CUSTOM_HTML=\"<div>Welcome to my AIOStreams!</div>\"\n CUSTOM_HTML: $AIOSTREAMS_CUSTOM_HTML\n\n # --- Trusted Users ---\n # Comma-separated list of trusted UUIDs.\n # Trusted users can access features like regex filters if REGEX_FILTER_ACCESS is 'trusted'.\n # Example: TRUSTED_UUIDS=ae32f456-1234-5678-9012-345678901234,another-uuid-here\n TRUSTED_UUIDS: $AIOSTREAMS_TRUSTED_UUIDS\n\n # --- Regex Filter Access ---\n # Controls who can use regex filters.\n # 'none': No one can use regex filters.\n # 'trusted': Only users listed in TRUSTED_UUIDS.\n # 'all': All users (only recommended if ADDON_PASSWORD is set).\n # Default: trusted\n REGEX_FILTER_ACCESS: ${AIOSTREAMS_REGEX_FILTER_ACCESS:-trusted}\n\n # ==============================================================================\n # CACHE CONFIGURATION\n # ==============================================================================\n\n # --- Default maximum cache size ----\n # The maximum number of items that can be held in a given cache instance, if not overriden by a specific cache instance\n DEFAULT_MAX_CACHE_SIZE: ${AIOSTREAMS_DEFAULT_MAX_CACHE_SIZE:-100000}\n\n # --- Proxy IP TTL (StremThru/MediaFlow Proxy)\n # The Time-To-Live (in seconds) of items in the Public IP cache.\n # Set to -1 to disable caching\n PROXY_IP_CACHE_TTL: ${AIOSTREAMS_PROXY_IP_CACHE_TTL:-900} # Default is 900\n\n # --- Addon Resource Caching ---\n # Control the Caching of resources fetched from other addons\n # Set to -1 to disable caching.\n MANIFEST_CACHE_TTL: ${AIOSTREAMS_MANIFEST_CACHE_TTL:-300} # Default is 300\n SUBTITLE_CACHE_TTL: ${AIOSTREAMS_SUBTITLE_CACHE_TTL:-300} # Default is 300\n STREAM_CACHE_TTL: ${AIOSTREAMS_STREAM_CACHE_TTL:-1} # Default is 1\n CATALOG_CACHE_TTL: ${AIOSTREAMS_CATALOG_CACHE_TTL:-300} # Default is 300\n META_CACHE_TTL: ${AIOSTREAMS_META_CACHE_TTL:-300} # Default is 300\n ADDON_CATALOG_CACHE_TTL: ${AIOSTREAMS_ADDON_CATALOG_CACHE_TTL:-300} # Default is 300\n\n # --- RPDB API Key Validation Caching ---\n # Control how long a valid API key check is cached for\n # Default: 7 days\n RPDB_API_KEY_VALIDITY_CACHE_TTL: ${AIOSTREAMS_RPDB_API_KEY_VALIDITY_CACHE_TTL:-604800}\n\n # --- Self-Scraping ---\n # Prevent this AIOStreams instance from being added as an addon to itself.\n # Default: true\n DISABLE_SELF_SCRAPING: ${AIOSTREAMS_DISABLE_SELF_SCRAPING:-true}\n\n # --- Log Level ---\n # Set the verbosity of logs. Options: \"error\", \"warn\", \"info\", \"http\", \"verbose\",\"debug\", \"silly\"\n # Default: info\n LOG_LEVEL: ${AIOSTREAMS_LOG_LEVEL:-info}\n\n # --- Log Format ---\n # Output logs in \"json\" or \"text\" format.\n # Default: text\n LOG_FORMAT: ${AIOSTREAMS_LOG_FORMAT:-text}\n\n # --- Log Sensitive Information ---\n # Whether to include potentially sensitive info (like API keys) in logs.\n # Useful for debugging, but disable for production if concerned.\n # Default: true\n LOG_SENSITIVE_INFO: ${AIOSTREAMS_LOG_SENSITIVE_INFO:-true}\n\n # --- Log Timezone ---\n # Adjust the timezone used for logging\n # e.g. Europe/Paris, America/New_York\n LOG_TIMEZONE: ${TZ:-America/Chicago}\n\n # --- Stream Proxy Enabled ---\n # DEFAULT_PROXY_ENABLED: ${AIOSTREAMS_DEFAULT_PROXY_ENABLED:-true} # Default state for enabling a stream proxy.\n FORCE_PROXY_ENABLED: ${AIOSTREAMS_FORCE_PROXY_ENABLED:-true} # Force stream proxy on/off for all users.\n\n # --- Stream Proxy ID ---\n # 'mediaflow' or 'stremthru'\n DEFAULT_PROXY_ID: ${AIOSTREAMS_DEFAULT_PROXY_ID:-stremthru}\n # FORCE_PROXY_ID: stremthru\n\n # --- Stream Proxy URL ---\n # URL of your MediaFlow or StremThru instance.\n DEFAULT_PROXY_URL: http://stremthru:8080\n # FORCE_PROXY_URL: ${STREMTHRU_INTERNAL_URL:-http://stremthru:8080}\n\n # --- Stream Proxy Credentials ---\n # Format: username:password\n DEFAULT_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n # FORCE_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n\n # --- Stream Proxy Public IP ---\n # Public IP for the proxy, if needed.\n # DEFAULT_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n # FORCE_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n\n # --- Proxied Services ---\n # Comma-separated list of services whose streams should be proxied (e.g., realdebrid,alldebrid).\n # DEFAULT_PROXY_PROXIED_SERVICES:\n # FORCE_PROXY_PROXIED_SERVICES:\n\n # --- Disable Proxied Addons Feature ---\n # If true, it disables the 'Proxied Addons' option.\n # FORCE_PROXY_DISABLE_PROXIED_ADDONS: ${AIOSTREAMS_FORCE_PROXY_DISABLE_PROXIED_ADDONS:-false}\n\n # --- Encrypt Streaming URLs ---\n # Encrypt MediaFlow/StremThru URLs for better compatibility with external players.\n ENCRYPT_MEDIAFLOW_URLS: ${AIOSTREAMS_ENCRYPT_MEDIAFLOW_URLS:-true}\n ENCRYPT_STREMTHRU_URLS: ${AIOSTREAMS_ENCRYPT_STREMTHRU_URLS:-true}\n\n\n # --- Forced Public proxy URL adjustments ----\n # If you'd like to force some adjustments to be made to the streaming urls generated by either proxy, you can do that here.\n # This is useful when you want to use a local url for requests but have AIOStreams force the urls to use a specific host, port, and protocol.\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN # Default is stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: 443\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n\n\n # ==============================================================================\n # ADVANCED CONFIGURATION & LIMITS\n # ==============================================================================\n\n # --- General Default Timeout ---\n # Default timeout in milliseconds for all requests if not overridden by a specific timeout.\n # Default: 15000 (15 seconds)\n DEFAULT_TIMEOUT: ${AIOSTREAMS_DEFAULT_TIMEOUT:-15000}\n\n # --- Configuration Limits ---\n # Maximum number of addons allowed per AIOStreams configuration.\n MAX_ADDONS: ${AIOSTREAMS_MAX_ADDONS:-100}\n # Maximum number of groups allowed per AIOStreams configuration\n MAX_GROUPS: ${AIOSTREAMS_MAX_GROUPS:-50}\n # Maximum number of keyword filters per AIOStreams configuration.\n MAX_KEYWORD_FILTERS: ${AIOSTREAMS_MAX_KEYWORD_FILTERS:-50}\n # Maximum number of condition filters per AIOStreams configuration\n MAX_CONDITION_FILTERS: ${AIOSTREAMS_MAX_CONDITION_FILTERS:-200}\n # Maximum timeout (ms) an addon can be set to via override.\n MAX_TIMEOUT: ${AIOSTREAMS_MAX_TIMEOUT:-50000}\n # Minimum timeout (ms) an addon can be set to via override.\n MIN_TIMEOUT: ${AIOSTREAMS_MIN_TIMEOUT:-1000}\n\n\n # ==============================================================================\n # RATE LIMIT CONFIGURATION\n # ==============================================================================\n # Configure rate limits to prevent abuse. Typically, defaults are fine.\n\n # --- Disable Rate Limits ---\n # Set to true to disable all rate limits (NOT RECOMMENDED).\n # Default: false\n DISABLE_RATE_LIMITS: ${AIOSTREAMS_DISABLE_RATE_LIMITS:-false}\n\n # Window and Max requests refer to the maximum number of requests a user can make within a specific timeframe\n\n # --- Static File Serving ---\n STATIC_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STATIC_RATE_LIMIT_WINDOW:-5}\n STATIC_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STATIC_RATE_LIMIT_MAX_REQUESTS:-75}\n\n # --- User API ---\n USER_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_USER_API_RATE_LIMIT_WINDOW:-5}\n USER_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_USER_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stream API ---\n STREAM_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_WINDOW:-5}\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Format API ---\n FORMAT_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_WINDOW:-5}\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Catalog API ---\n CATALOG_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_WINDOW:-5}\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Stream ---\n STREMIO_STREAM_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_WINDOW:-15}\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Catalog ---\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_WINDOW:-5}\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Stremio Manifest ---\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_WINDOW:-5}\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Subtitle ---\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_WINDOW:-5}\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Meta ---\n STREMIO_META_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_WINDOW:-5}\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_MAX_REQUESTS:-15}\n\n\n # ==============================================================================\n # INACTIVE USER PRUNING\n # ==============================================================================\n # Automatically prune (delete) inactive user configurations.\n\n # --- Prune Interval ---\n # How often to check for inactive users, in seconds.\n # Default: 86400 (1 day)\n PRUNE_INTERVAL: 8640000\n\n # --- Prune Max Inactivity Days ---\n # Maximum days of inactivity before a user's configuration is pruned.\n # Set to -1 to disable\n PRUNE_MAX_DAYS: -1\n\n # ==============================================================================\n # EXTERNAL ADDON SERVICE URLs & TIMEOUTS\n # ==============================================================================\n # URLs and default timeouts for various external Stremio addons that AIOStreams can integrate with.\n # Change these if you use self-hosted versions or if defaults become outdated.\n\n # ----------- COMET ------------\n COMET_URL: ${COMET_INTERNAL_URL:-http://comet:3000}\n MEDIAFUSION_URL: ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000}\n MEDIAFUSION_CONFIG_TIMEOUT: ${MEDIAFUSION_CONFIG_TIMEOUT:-5000}\n MEDIAFUSION_API_PASSWORD: $SUDO_PASSWORD\n DEFAULT_JACKETTIO_INDEXERS: '${JACKETTIO_INDEXERS:-[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]}'\n DEFAULT_JACKETTIO_STREMTHRU_URL: ${JACKETTIO_STREMTHRU_URL:-https://stremthru.13377001.xyz}\n STREMTHRU_STORE_URL: ${STREMTHRU_STORE_INTERNAL_URL:-http://stremthru:8080/stremio/store}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: 'Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DOMAIN`) || Host(`aiostreams.$DUCKDNS_DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.aiostreams.loadbalancer.server.port: ${AIOSTREAMS_PORT:-3005}\n homepage.group: Stremio Addons\n homepage.name: AIOStreams\n homepage.icon: aiostreams.png\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n cpu_shares: 10\n mem_reservation: 50M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 50M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n jackett:\n # 🔹🔹 Jackett 🔹🔹\n depends_on:\n flaresolverr:\n condition: service_healthy\n image: linuxserver/jackett\n container_name: jackett\n hostname: jackett\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/jackett/config:/config\n - /mnt/remote/blackhole:/blackhole\n environment:\n <<: *common-env\n AUTO_UPDATE: ${JACKETT_AUTO_UPDATE:-true}\n RUN_OPTS: \"${JACKETT_RUN_OPTS:-}\"\n JACKETT_API_KEY: $JACKETT_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.jackett.rule: 'Host(`jackett.$DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DOMAIN`) || Host(`jackett.$DUCKDNS_DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.jackett.loadbalancer.server.port: 9117\n homepage.group: Source Aggregator\n homepage.name: Jackett Indexer\n homepage.icon: jackett.png\n homepage.href: https://jackett.$DOMAIN/\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.weight: 1\n homepage.widget.type: jackett\n homepage.widget.url: ${JACKETT_INTERNAL_URL:-http://jackett:9117}\n homepage.widget.key: $JACKETT_API_KEY\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=$JACKETT_API_KEY || exit 1\"]\n interval: 30s\n timeout: 10s\n start_period: 60s\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n docker-socket-proxy:\n # 🔹🔹 Docker Socket Proxy 🔹🔹\n image: tecnativa/docker-socket-proxy\n container_name: dockerproxy\n hostname: dockerproxy\n extra_hosts: *common-hostname-aliases\n privileged: true\n networks:\n - publicnet\n ports:\n - 127.0.0.1:2375:2375\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n restart: always\n prowlarr:\n # 🔹🔹 Prowlarr 🔹🔹\n image: linuxserver/prowlarr\n container_name: prowlarr\n hostname: prowlarr\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n configs:\n - source: prowlarr_indexer_proxy.json\n target: /config/prowlarr_indexer_proxy.json\n mode: 0777\n - source: prowlarr_indexers.json\n target: /etc/config/prowlarr_indexers.json\n mode: 0777\n volumes:\n - ${CONFIG_PATH:-./volumes}/prowlarr/config:/config:rw\n - ${CONFIG_PATH:-./volumes}/prowlarr/config/etc/config:/etc/config\n environment:\n <<: *common-env\n PROWLARR_API_KEY: $PROWLARR_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.middlewares.prowlarr.forwardauth.authResponseHeaders: authorization\n tinyauth.basic.username: $PROWLARR_USERNAME\n tinyauth.basic.password.plain: $PROWLARR_PASSWORD\n traefik.http.routers.prowlarr.rule: 'Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DOMAIN`) || Host(`prowlarr.$DUCKDNS_DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.prowlarr.loadbalancer.server.port: 9696\n homepage.group: Indexers\n homepage.name: Prowlarr\n homepage.icon: prowlarr.png\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.weight: 1\n homepage.widget.type: prowlarr\n homepage.widget.url: ${PROWLARR_INTERNAL_URL:-http://prowlarr:9696}\n homepage.widget.key: $PROWLARR_API_KEY\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n limits:\n cpus: '2.0'\n memory: 6G\n reservations:\n cpus: '0.0'\n memory: 128M\n healthcheck: # docker exec prowlarr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"curl -fs -H \\\"Authorization: Bearer $$PROWLARR_API_KEY\\\" http://127.0.0.1:9696/api/v1/system/status || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 120s\n restart: always\n comet:\n image: g0ldyy/comet\n container_name: comet\n hostname: comet\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/comet/data:/data\n environment:\n <<: *common-env\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: ${COMET_PORT:-2020}\n FASTAPI_WORKERS: ${CPU_COUNT:-4}\n USE_GUNICORN: True\n DASHBOARD_ADMIN_PASSWORD: $SUDO_PASSWORD\n DATABASE_TYPE: sqlite\n DATABASE_PATH: /data/comet.db\n METADATA_CACHE_TTL: 2592000\n TORRENT_CACHE_TTL: 1296000\n DEBRID_CACHE_TTL: 86400\n INDEXER_MANAGER_TYPE: prowlarr # jackett, prowlarr, none.\n INDEXER_MANAGER_URL: ${PROWLARR_HOST:-http://prowlarr:9696} # http://jackett:9117, http://prowlarr:9696\n INDEXER_MANAGER_API_KEY: $PROWLARR_API_KEY # $JACKETT_API_KEY, $PROWLARR_API_KEY\n INDEXER_MANAGER_TIMEOUT: 60\n INDEXER_MANAGER_INDEXERS: ${COMET_INDEXERS:-[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]}\n GET_TORRENT_TIMEOUT: 2\n DOWNLOAD_TORRENT_FILES: True\n SCRAPE_COMET: true\n COMET_URL: https://comet.elfhosted.com\n SCRAPE_ZILEAN: true\n ZILEAN_URL: https://zilean.elfhosted.com\n SCRAPE_TORRENTIO: true\n TORRENTIO_URL: https://torrentio.strem.fun\n SCRAPE_MEDIAFUSION: true\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n STREMTHRU_URL: https://stremthru.$DOMAIN\n PROXY_DEBRID_STREAM: True\n PROXY_DEBRID_STREAM_PASSWORD: $STREMTHRU_PROXY_AUTH\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: -1\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: $PREMIUMIZE_API_KEY\n REMOVE_ADULT_CONTENT: True\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: 'Host(`comet.$DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DOMAIN`) || Host(`comet.$DUCKDNS_DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.comet.loadbalancer.server.port: ${COMET_PORT:-2020}\n homepage.group: Stremio Addons\n homepage.name: Comet\n homepage.icon: comet.png\n homepage.href: https://comet.$DOMAIN/\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n healthcheck: # docker exec comet ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:$${FASTAPI_PORT:-2020}/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 5s\n retries: 3\n start_period: 15s\n restart: always\n mediafusion:\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n image: mhdzumair/mediafusion\n container_name: mediafusion\n hostname: mediafusion\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n <<: *common-env\n # CORE APPLICATION SETTINGS\n ADDON_NAME: \"${MEDIAFUSION_ADDON_NAME:-MediaFusion}\" # The name of the MediaFusion addon\n VERSION: \"1.0.0\" # The version of the MediaFusion addon\n DESCRIPTION: \"MediaFusion | $DOMAIN\" # A brief description of the MediaFusion addon to show on Stremio Addon page\n BRANDING_DESCRIPTION: \"${MEDIAFUSION_BRANDING_DESCRIPTION:-}\" # Additional branding description text\n CONTACT_EMAIL: \"webmaster@$DOMAIN\" # The contact email for the MediaFusion addon\n HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where MediaFusion is hosted (required)\n POSTER_HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where poster images are served from (default: Same as host_url)\n SECRET_KEY: \"${MEDIAFUSION_SECRET_KEY:-c75ac92df70c4383c8d1bb37f65454f9}\" # A 32-character secret key for securely signing the session (required)\n API_PASSWORD: \"$SUDO_PASSWORD\" # The password for accessing the API endpoints (required)\n LOGGING_LEVEL: \"INFO\" # The logging level of the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)\n LOGO_URL: \"${MEDIAFUSION_LOGO_URL:-}\" # The URL of the MediaFusion logo\n IS_PUBLIC_INSTANCE: \"${MEDIAFUSION_IS_PUBLIC_INSTANCE:-False}\" # Set to True for community instances that don't require authentication except for /scraper endpoint\n MIN_SCRAPING_VIDEO_SIZE: \"${MEDIAFUSION_MIN_SCRAPING_VIDEO_SIZE:-26214400}\" # Minimum video size in bytes (25 MB) for scraping\n METADATA_PRIMARY_SOURCE: \"${MEDIAFUSION_METADATA_PRIMARY_SOURCE:-tmdb}\" # Primary source for metadata. Options: \"imdb\" or \"tmdb\"\n # STREAMING PROVIDER SETTINGS\n #DISABLED_PROVIDERS: \"\" # List of disabled streaming providers (p2p, realdebrid, seedr, debridlink, alldebrid, offcloud, pikpak, torbox, premiumize, qbittorrent, stremthru, easydebrid)\n # DATABASE AND CACHE SETTINGS\n MONGO_URI: \"${MEDIAFUSION_MONGO_URI:-mongodb://mongodb:27017/mediafusion}\" # MongoDB connection URI (required)\n DB_MAX_CONNECTIONS: \"${MEDIAFUSION_DB_MAX_CONNECTIONS:-50}\" # Maximum database connections\n REDIS_URL: \"${MEDIAFUSION_REDIS_URL:-redis://redis:6379}\" # Redis service URL for caching and tasks\n REDIS_MAX_CONNECTIONS: \"${MEDIAFUSION_REDIS_MAX_CONNECTIONS:-100}\" # Maximum Redis connections\n # EXTERNAL SERVICE SETTINGS\n# REQUESTS_PROXY_URL: \"${MEDIAFUSION_REQUESTS_PROXY_URL:-}\" # Optional proxy URL for requests\n PLAYWRIGHT_CDP_URL: \"${PLAYWRIGHT_CDP_URL:-ws://browserless:3000?blockAds=true&stealth=true}\" # Playwright CDP service URL\n FLARESOLVERR_URL: \"${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}\" # FlareSolverr service URL\n TMDB_API_KEY: \"$TMDB_API_KEY\" # TMDB API key for metadata fetching\n # PROWLARR SETTINGS\n IS_SCRAP_FROM_PROWLARR: \"True\" # Enable/disable Prowlarr scraping\n PROWLARR_API_KEY: \"$PROWLARR_API_KEY\" # Prowlarr API key\n PROWLARR_URL: \"${PROWLARR_HOST:-http://prowlarr:9696}\" # Prowlarr service URL\n PROWLARR_LIVE_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_LIVE_TITLE_SEARCH:-True}\" # Enable live title search in Prowlarr\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_BACKGROUND_TITLE_SEARCH:-True}\" # Enable background title search\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"${MEDIAFUSION_PROWLARR_SEARCH_QUERY_TIMEOUT:-30}\" # Search query timeout in seconds\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS:-10}\" # Max immediate processes\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n PROWLARR_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_FEED_SCRAPE_INTERVAL_HOUR:-3}\" # Feed scraping interval in hours\n # JACKETT SETTINGS\n IS_SCRAP_FROM_JACKETT: \"True\" # Enable/disable Jackett scraping\n JACKETT_URL: \"${JACKETT_HOST:-http://jackett:9117}\" # Jackett service URL\n JACKETT_API_KEY: \"$JACKETT_API_KEY\" # Jackett API key\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\" # Search interval in hours\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\" # Search query timeout in seconds\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\" # Max immediate processes\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\" # Max process time in seconds\n JACKETT_LIVE_TITLE_SEARCH: \"True\" # Enable live title search\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\" # Enable background title search\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\" # Feed scraping interval in hours\n # ZILEAN SETTINGS\n IS_SCRAP_FROM_ZILEAN: \"True\" # Enable/disable Zilean scraping\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\" # Search interval in hours\n ZILEAN_URL: \"${ZILEAN_URL:-https://zilean.elfhosted.com}\" # Zilean service URL (https://zilean.elfhosted.com has zero rate limits)\n # TORRENTIO SETTINGS\n IS_SCRAP_FROM_TORRENTIO: \"True\" # Enable/disable Torrentio scraping\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_TORRENTIO_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n TORRENTIO_URL: \"${TORRENTIO_URL:-https://torrentio.strem.fun}\" # Torrentio service URL\n # MEDIAFUSION SETTINGS\n IS_SCRAP_FROM_MEDIAFUSION: \"True\" # Enable/disable MediaFusion scraping\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_MEDIAFUSION_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n MEDIAFUSION_URL: \"${MEDIAFUSION_URL:-https://mediafusion.elfhosted.com}\" # MediaFusion service URL\n SYNC_DEBRID_CACHE_STREAMS: \"${MEDIAFUSION_SYNC_DEBRID_CACHE_STREAMS:-False}\" # Enable syncing debrid cache streams\n # BT4G SETTINGS\n IS_SCRAP_FROM_BT4G: \"True\" # Enable/disable BT4G scraping\n BT4G_URL: \"${BT4G_URL:-https://bt4gprx.com}\" # BT4G service URL\n BT4G_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_BT4G_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n BT4G_SEARCH_TIMEOUT: \"${MEDIAFUSION_BT4G_SEARCH_TIMEOUT:-10}\" # Search timeout in seconds\n BT4G_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS:-15}\" # Max immediate processes\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n # TELEGRAM SETTINGS\n TELEGRAM_BOT_TOKEN: \"$TELEGRAM_BOT_TOKEN\" # Telegram bot token for notifications about contribution streams\n TELEGRAM_CHAT_ID: \"$TELEGRAM_CHAT_ID\" # Telegram chat ID for notifications\n # CONTENT FILTERING SETTINGS\n ADULT_CONTENT_REGEX_KEYWORDS: \"\\\\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\\\b\" # Regex pattern for filtering adult content\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\" # Enable adult content filtering in torrent titles\n # FEATURE TOGGLES\n IS_SCRAP_FROM_YTS: \"True\" # Enable/disable YTS scraping\n ENABLE_RATE_LIMIT: \"True\" # Enable/disable rate limiting\n VALIDATE_M3U8_URLS_LIVENESS: \"True\" # Validate M3U8 URLs for liveness\n STORE_STREMTHRU_MAGNET_CACHE: \"False\" # Store StremThru magnet cache\n SCRAPE_WITH_AKA_TITLES: \"True\" # Include alternative titles in scraping\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\" # Enable fetching torrent metadata from P2P (Caution: may raise DMCA issues) # TODO: Enable this\n # TIME-RELATED SETTINGS\n META_CACHE_TTL: \"1800\" # Metadata cache TTL in seconds (Default: 1800 seconds = 30 minutes)\n WORKER_MAX_TASKS_PER_CHILD: \"20\" # Max tasks per worker child process\n # SCHEDULER SETTINGS\n DISABLE_ALL_SCHEDULER: \"False\" # Disable all schedulers\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\" # Background search interval in hours\n BACKGROUND_SEARCH_CRONTAB: \"*/5 * * * *\" # Background search schedule\n TAMILMV_SCHEDULER_CRONTAB: \"0 */3 * * *\" # TamilMV scheduler crontab expression\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: \"0 */6 * * *\" # Tamil Blasters scheduler crontab expression\n FORMULA_TGX_SCHEDULER_CRONTAB: \"*/30 * * * *\" # Formula TGX scheduler crontab expression\n NOWMETV_SCHEDULER_CRONTAB: \"0 0 * * *\" # NowMeTV scheduler crontab expression\n NOWSPORTS_SCHEDULER_CRONTAB: \"0 10 * * *\" # NowSports scheduler crontab expression\n TAMILULTRA_SCHEDULER_CRONTAB: \"0 8 * * *\" # TamilUltra scheduler crontab expression\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: \"0 */6 * * *\" # Validate TV streams in DB crontab expression\n SPORT_VIDEO_SCHEDULER_CRONTAB: \"*/20 * * * *\" # Sport video scheduler crontab expression\n DLHD_SCHEDULER_CRONTAB: \"25 * * * *\" # DLHD scheduler crontab expression\n MOTOGP_TGX_SCHEDULER_CRONTAB: \"0 5 * * *\" # MotoGP TGX scheduler crontab expression\n UPDATE_SEEDERS_CRONTAB: \"0 0 * * *\" # Update seeders crontab expression\n ARAB_TORRENTS_SCHEDULER_CRONTAB: \"0 0 * * *\" # Arab Torrents scheduler crontab expression\n WWE_TGX_SCHEDULER_CRONTAB: \"10 */3 * * *\" # WWE TGX scheduler crontab expression\n UFC_TGX_SCHEDULER_CRONTAB: \"30 */3 * * *\" # UFC TGX scheduler crontab expression\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: \"0 * * * *\" # Movies TV TGX scheduler crontab expression\n PROWLARR_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Prowlarr feed scraper crontab expression\n JACKETT_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Jackett feed scraper crontab expression\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: \"0 * * * *\" # Cleanup expired scraper task crontab expression\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: \"0 0 * * *\" # Cleanup expired cache task crontab expression\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediafusion.rule: 'Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DOMAIN`) || Host(`mediafusion.$DUCKDNS_DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediafusion.loadbalancer.server.port: 8000\n homepage.group: Stremio Addons\n homepage.name: MediaFusion\n homepage.icon: mediafusion.png\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n cpu_shares: 10\n mem_reservation: 512M\n deploy:\n resources:\n reservations:\n cpus: 0.01\n memory: 512M\n limits:\n cpus: 1\n memory: 1G\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: \"1m\"\n restart: always\n mediaflow-proxy:\n image: mhdzumair/mediaflow-proxy\n container_name: mediaflow-proxy\n hostname: mediaflow-proxy\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n expose:\n - ${MEDIAFLOW_PROXY_PORT:-8888}\n environment:\n <<: *common-env\n PORT: ${MEDIAFLOW_PROXY_PORT:-8888}\n API_PASSWORD: $MEDIAFLOW_PROXY_API_PASSWORD\n ENABLE_STREAMING_PROGRESS: \"false\"\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediaflow-proxy.middlewares: nginx-auth@file\n traefik.http.routers.mediaflow-proxy.rule: 'Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DOMAIN`) || Host(`mediaflow-proxy.$DUCKDNS_DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: ${MEDIAFLOW_PROXY_PORT:-8888}\n homepage.name: MediaFlow Proxy\n homepage.icon: mediaflow-proxy.png\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n healthcheck:\n test: [\"CMD-SHELL\", \"python3 -c \\\"import socket; s=socket.socket(); s.connect(('127.0.0.1', ${MEDIAFLOW_PROXY_PORT:-8888})); print('Healthcheck passed')\\\"\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: 10s\n restart: always\n\n stremthru:\n depends_on:\n redis:\n condition: service_healthy\n image: muniftanjim/stremthru\n container_name: stremthru\n hostname: stremthru\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/stremthru/app/data:/app/data\n environment:\n <<: *common-env\n STREMTHRU_LOG_LEVEL: ${STREMTHRU_LOG_LEVEL:-INFO} # DEBUG, INFO, WARN, ERROR\n STREMTHRU_LOG_FORMAT: ${STREMTHRU_LOG_FORMAT:-text} # json, text\n STREMTHRU_PROXY_AUTH: ${STREMTHRU_PROXY_AUTH:-admin:admin}\n STREMTHRU_AUTH_ADMIN: ${STREMTHRU_AUTH_ADMIN:-admin}\n\n # A list of store credentials per user. In a comma separated list of username:store_name:store_token.\n # You can also use * as the username to apply to all users.\n # This lets you use different API keys for different users.\n # e.g. something like *:realdebrid:abc...xyz would mean for all users, this API key would be used for Real Debrid.\n # (Not needed if using StremThru as a external proxy within other apps/addons like AIOStreams)\n STREMTHRU_STORE_AUTH: $STREMTHRU_STORE_AUTH\n\n # A list of proxy configurations per store. This lets you control what is proxied based on what store its from.\n # The format is a comma separated list of <store>:<true/false>\n # You can use * to apply to all stores.\n # e.g. *:true,premiumize:false would mean all stores are proxied, except for premiumize.\n # (Does not affect proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_STORE_CONTENT_PROXY: ${STREMTHRU_STORE_CONTENT_PROXY:-*:true,premiumize:false}\n\n # This is the maximum number of connections to the proxy per user.\n # In the format of a comma separated list of <username>:<number of connections> pairs.\n # e.g. user1:10,user2:5 would mean user1 can have 10 connections, and user2 can have 5 connections.\n # If you want to set a limit for all users, use * as the username.\n # A connection limit of 0 means no limit.\n # (This DOES affect the proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: ${STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT:-0}\n # ================================\n # This lets you enable or disable features in StremThru.\n # The format is a comma separated list of features, optionally prefixed with a - to disable them.\n # List of features:\n # - anime\n # - dmm_hashlist - Whether to scrape DMM hashlists for torrents.\n # - imdb_title\n # - stremio_list\n # - stremio_p2p\n # - stremio_sidekick\n # - stremio_store\n # - stremio_torz\n # - stremio_wrap\n # e.g. -dmm_hashlist,-imdb_title would disable the DMM hashlists and IMDB title features.\n # ================================\n STREMTHRU_FEATURE: '${STREMTHRU_FEATURE:-dmm_hashlist,imdb_title,stremio_list,stremio_sidekick,stremio_store,stremio_torz,stremio_wrap}'\n STREMTHRU_DATABASE_URI: ${STREMTHRU_DATABASE_URI:-sqlite://./data/stremthru.db}\n STREMTHRU_REDIS_URI: ${REDIS_HOST:-redis://redis:6379}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: 'Host(`stremthru.$DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DOMAIN`) || Host(`stremthru.$DUCKDNS_DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.stremthru.loadbalancer.server.port: 8080\n homepage.group: Stremio Addons\n homepage.name: StremThru\n homepage.icon: stremthru.png\n homepage.href: https://stremthru.$DOMAIN/\n homepage.description: StremThru is tunnel/proxy for debrid services.\n restart: always\n\n gptr:\n build:\n #context: https://github.com/th3w1zard1/gpt-researcher.git#master # :/frontend/nextjs\n context: ${SRC_PATH:-./projects}/gpt-researcher\n dockerfile: Dockerfile.fullstack\n image: th3w1zard1/ai-researchwizard\n container_name: gptr\n hostname: gptr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000 # Nginx-proxied access to GPTR.\n - 3001 # Internal NextJS GPTR site\n - 8000 # Static GPTR\n - 8080 # MCP Server Port\n volumes:\n - ${CONFIG_PATH:-./volumes}/gptr/logs:/usr/src/app/logs\n - ${CONFIG_PATH:-./volumes}/gptr/outputs:/usr/src/app/outputs\n - ${CONFIG_PATH:-./volumes}/gptr/reports:/usr/src/app/reports\n stdin_open: true\n environment:\n ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY\n BRAVE_API_KEY: $BRAVE_API_KEY\n DEEPSEEK_API_KEY: $DEEPSEEK_API_KEY\n EXA_API_KEY: $EXA_API_KEY\n FIRECRAWL_API_KEY: $FIRECRAWL_API_KEY\n FIRE_CRAWL_API_KEY: $FIRE_CRAWL_API_KEY\n GEMINI_API_KEY: $GEMINI_API_KEY\n GLAMA_API_KEY: $GLAMA_API_KEY\n GROQ_API_KEY: $GROQ_API_KEY\n HF_TOKEN: $HF_TOKEN\n HUGGINGFACE_ACCESS_TOKEN: $HUGGINGFACE_ACCESS_TOKEN\n HUGGINGFACE_API_TOKEN: $HUGGINGFACE_API_TOKEN\n LANGCHAIN_API_KEY: $LANGCHAIN_API_KEY\n MISTRAL_API_KEY: $MISTRAL_API_KEY\n MISTRALAI_API_KEY: $MISTRALAI_API_KEY\n OPENAI_API_KEY: $OPENAI_API_KEY\n OPENROUTER_API_KEY: $OPENROUTER_API_KEY\n PERPLEXITY_API_KEY: $PERPLEXITY_API_KEY\n PERPLEXITYAI_API_KEY: $PERPLEXITYAI_API_KEY\n REPLICATE_API_KEY: $REPLICATE_API_KEY\n REVID_API_KEY: $REVID_API_KEY\n SAMBANOVA_API_KEY: $SAMBANOVA_API_KEY\n SEARCH1API_KEY: $SEARCH1API_KEY\n SERPAPI_API_KEY: $SERPAPI_API_KEY\n TAVILY_API_KEY: $TAVILY_API_KEY\n TOGETHERAI_API_KEY: $TOGETHERAI_API_KEY\n UNIFY_API_KEY: $UNIFY_API_KEY\n UPSTAGE_API_KEY: $UPSTAGE_API_KEY\n UPSTAGEAI_API_KEY: $UPSTAGEAI_API_KEY\n YOU_API_KEY: $YOU_API_KEY\n CHOKIDAR_USEPOLLING: true\n LOGGING_LEVEL: DEBUG\n NEXT_PUBLIC_GA_MEASUREMENT_ID: $NEXT_PUBLIC_GA_MEASUREMENT_ID\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n LANGSMITH_TRACING: true\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_API_KEY: $LANGSMITH_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.gptr.service: gptr\n traefik.http.routers.gptr.rule: 'Host(`gptr-nextjs.$DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-nextjs.$DUCKDNS_DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr.loadbalancer.server.port: 3000\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr-legacy.rule: 'Host(`gptr.$DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr.$DUCKDNS_DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-legacy.loadbalancer.server.port: 8000\n traefik.http.routers.gptr-mcp.service: gptr-mcp\n traefik.http.routers.gptr-mcp.rule: 'Host(`gptr-mcp.$DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-mcp.$DUCKDNS_DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-mcp.loadbalancer.server.port: 8080\n homepage.group: AI\n homepage.name: AI Research Wizard\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.icon: gptr.png\n homepage.href: https://gptr.$DOMAIN/\n healthcheck: # docker exec gptr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"(wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1) || exit 1\"] # && (wget -qO- http://127.0.0.1:8080 > /dev/null 2>&1) || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 2m\n restart: always\n\nnetworks:\n publicnet: # https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge\n external: true # docker network create --driver=bridge --attachable publicnet --subnet=${PUBLICNET_SUBNET:-10.76.0.0/16} --gateway=${PUBLICNET_GATEWAY:-10.76.0.1} --ip-range=${PUBLICNET_IP_RANGE:-10.76.0.0/16} -o com.docker.network.bridge.name=br_publicnet\n attachable: true\n driver: bridge\n # uncomment below part of publicnet if you aren't creating it externally.\n name: publicnet\n driver_opts:\n com.docker.network.bridge.name: \"br_publicnet\"\n ipam:\n config:\n - subnet: ${PUBLICNET_SUBNET:-10.76.0.0/16}\n gateway: ${PUBLICNET_GATEWAY:-10.76.0.1}\n ip_range: ${PUBLICNET_IP_RANGE:-10.76.0.0/16}\n warp-nat-net:\n external: true\n attachable: true\n driver: bridge\n"}, "f640473b066693c4c956c68600edd176b558167f": {"t": 1785773135.4758582, "n": 294238, "h": "34aae78bcd89d608", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\nx-common-hostname-aliases: &common-hostname-aliases\n - host.docker.internal:host-gateway\n\nx-local-ips: &local-ips\n - \"10.0.0.0/8\" # RFC 1918 Private Networks (IPv4)\n - \"172.16.0.0/12\"\n - \"192.168.0.0/16\"\n - \"169.254.0.0/16\" # RFC 3927 Link-Local (IPv4)\n - \"127.0.0.0/8\" # RFC 5735 Loopback (IPv4)\n - \"fc00::/7\" # RFC 4193 Unique Local (IPv6)\n - \"fe80::/10\" # RFC 4291 Link-Local (IPv6)\n - \"::1/128\" # RFC 4291 Loopback (IPv6)\n - \"2002::/16\" # RFC 3056 6to4 (IPv6)\n - \"100.64.0.0/10\" # Tailscale CGNAT range\n\nx-cloudflare-ips: &cloudflare-ips\n - \"103.21.244.0/22\"\n - \"103.22.200.0/22\"\n - \"103.31.4.0/22\"\n - \"104.16.0.0/13\"\n - \"104.24.0.0/14\"\n - \"108.162.192.0/18\"\n - \"131.0.72.0/22\"\n - \"141.101.64.0/18\"\n - \"162.158.0.0/15\"\n - \"172.64.0.0/13\"\n - \"173.245.48.0/20\"\n - \"188.114.96.0/20\"\n - \"190.93.240.0/20\"\n - \"197.234.240.0/22\"\n - \"198.41.128.0/17\"\n - \"2400:cb00::/32\"\n - \"2606:4700::/32\"\n - \"2803:f800::/32\"\n - \"2405:b500::/32\"\n - \"2405:8100::/32\"\n - \"2a06:98c0::/29\"\n - \"2c0f:f248::/32\"\n\nx-trusted-ips: &trusted-ips\n - *local-ips\n - *cloudflare-ips\n\n\nconfigs:\n #######################################################################################\n # Prometheus Configurations\n #######################################################################################\n prometheus.yml:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n # my global config\n global:\n scrape_interval: 15s # By default, scrape targets every 15 seconds.\n evaluation_interval: 15s # By default, scrape targets every 15 seconds.\n # scrape_timeout is set to the global default (10s).\n # Attach these labels to any time series or alerts when communicating with\n # external systems (federation, remote storage, Alertmanager).\n external_labels:\n monitor: 'my-project'\n # Load and evaluate rules in this file every 'evaluation_interval' seconds.\n rule_files:\n - 'alert.rules'\n # - \"first.rules\"\n # - \"second.rules\"\n # alert\n # alerting:\n # alertmanagers:\n # - scheme: http\n # static_configs:\n # - targets:\n # - \"alertmanager:9093\"\n # A scrape configuration containing exactly one endpoint to scrape:\n # Here it's Prometheus itself.\n scrape_configs:\n # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n - job_name: 'prometheus'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:9090']\n - job_name: 'traefik'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n dns_sd_configs:\n - names:\n - 'tasks.traefik'\n type: 'A'\n port: 8080\n alert.rules:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n groups:\n - name: bolabaden\n rules:\n\n # Alert for any instance that is unreachable for >2 minutes.\n - alert: service_down\n expr: up == 0\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} down\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} has been down for more than 2 minutes.\"\n\n - alert: high_load\n expr: node_load1 > 0.5\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} under high load\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} is under high load.\"\n #######################################################################################\n # Gluetun Configurations\n #######################################################################################\n premiumize-auth.txt: # Premiumize authentication file (shared across all Premiumize VPN endpoints)\n content: |\n $PREMIUMIZE_CUSTOMER_ID\n $PREMIUMIZE_API_KEY\n gluetun-auth-config.toml:\n content: |\n [[roles]]\n name = \"public\"\n routes = [\n \"GET /v1/openvpn/status\",\n \"PUT /v1/openvpn/status\",\n \"GET /v1/openvpn/portforwarded\",\n \"GET /v1/openvpn/settings\",\n \"GET /v1/dns/status\",\n \"PUT /v1/dns/status\",\n \"GET /v1/updater/status\",\n \"PUT /v1/updater/status\",\n \"GET /v1/publicip/ip\"\n ]\n auth = \"none\"\n premiumize-ca.cert: # Premiumize CA certificate (shared across all Premiumize VPN endpoints)\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n vpn-nl.premiumize.me:\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n client\n resolv-retry infinite\n nobind\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n remote 185.107.94.249 1194\n persist-tun\n persist-key\n #######################################################################################\n # Stremio Configurations\n #######################################################################################\n mediafusion-nginx-config:\n content: |\n user nginx;\n worker_processes 1;\n\n events {\n worker_connections 1024;\n }\n\n http {\n include mime.types;\n default_type application/octet-stream;\n sendfile on;\n keepalive_timeout 65;\n\n server {\n listen 443 ssl;\n server_name mediafusion.local;\n\n ssl_certificate /etc/ssl/certs/mediafusion.local.pem;\n ssl_certificate_key /etc/ssl/private/mediafusion.local-key.pem;\n\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n\n location / {\n proxy_pass ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000};\n proxy_set_header Host $$host;\n proxy_set_header X-Real-IP $$remote_addr;\n proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $$scheme;\n }\n }\n }\n nginx-proxy-config.conf:\n content: |\n # Custom nginx configuration for nginx-proxy\n client_max_body_size 100m;\n proxy_connect_timeout 600s;\n proxy_send_timeout 600s;\n proxy_read_timeout 600s;\n proxy_buffering off;\n proxy_request_buffering off;\n # Enable gzip compression\n gzip on;\n gzip_vary on;\n gzip_min_length 1024;\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n # Security headers\n add_header X-Frame-Options DENY always;\n add_header X-Content-Type-Options nosniff always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\n prowlarr_indexers.json:\n content: |\n [\n {\n \"indexerUrls\": [\n \"https://bitsearch.to/\"\n ],\n \"legacyUrls\": [\n \"https://bitsearch.nocensor.cloud/\",\n \"https://bitsearch.mrunblock.bond/\"\n ],\n \"definitionName\": \"bitsearch\",\n \"description\": \"BitSearch is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitsearch\",\n \"name\": \"BitSearch\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitsearch\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitsearch\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://thepiratebay.org/\",\n \"https://thepiratebay.unblockninja.com/\",\n \"https://thepiratebay.ninjaproxy1.com/\",\n \"https://tpb.proxyninja.org/\",\n \"https://thepiratebay.torrentbay.st/\",\n \"https://tpb31.ukpass.co/\",\n \"https://tpb.skynetcloud.site/\",\n \"https://piratehaven.xyz/\",\n \"https://mirrorbay.top/\",\n \"https://thepiratebay0.org/\",\n \"https://thepiratebay10.org/\",\n \"https://pirateproxylive.org/\",\n \"https://thehiddenbay.com/\",\n \"https://thepiratebay.zone/\",\n \"https://tpb.party/\",\n \"https://piratebayproxy.live/\",\n \"https://piratebay.live/\",\n \"https://piratebay.party/\",\n \"https://thepiratebay.party/\",\n \"https://pirate-proxy.africa/\",\n \"https://thepiratebaye.org/\",\n \"https://5mins.eu/\",\n \"https://thepiratebay.cloud/\",\n \"https://tpb-proxy.xyz/\",\n \"https://piratebay.army/\",\n \"https://tpb-visit.me/\",\n \"https://tpb.re/\",\n \"https://pirate-proxy.ong/\"\n ],\n \"legacyUrls\": [\n \"https://pirate-proxy.page/\",\n \"https://5mins.shop/\",\n \"https://tpb.surf/\",\n \"https://tpb.monster/\",\n \"https://thepiratebay.host/\",\n \"https://piratetoday.xyz/\",\n \"https://tpb.wtf/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.onion.ly/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.to/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.link/\",\n \"https://tpb25.ukpass.co/\",\n \"https://tpb29.ukpass.co/\",\n \"https://piratenow.xyz/\",\n \"https://pirate-proxy.ink/\",\n \"https://proxifiedpiratebay.org/\",\n \"https://unlockedpiratebay.com/\",\n \"https://tpb.one/\",\n \"https://piratebayorg.net/\",\n \"https://tpbproxy.click/\",\n \"https://pirateproxy.live/\",\n \"https://ukpiratebay.org/\",\n \"https://piratebay.by/\",\n \"https://pirate-proxy.date/\",\n \"https://thepirateproxy.net/\",\n \"https://thepiratebay.abcproxy.org/\"\n ],\n \"definitionName\": \"thepiratebay\",\n \"description\": \"The Pirate Bay (TPB) is the galaxy’s most resilient Public BitTorrent site\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n },\n {\n \"id\": 6040,\n \"name\": \"XXX/x264\",\n \"subCategories\": []\n },\n {\n \"id\": 6045,\n \"name\": \"XXX/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 6070,\n \"name\": \"XXX/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7050,\n \"name\": \"Books/Other\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"pirate bay\",\n \"name\": \"The Pirate Bay\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"thepiratebay\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_api\",\n \"value\": \"This indexer uses the API at https://apibay.org/ to get its official TPB data. Choose any site link that you can access/prefer so that you can view the torrent details page when browsing the search results for this indexer.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#thepiratebay\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://therarbg.to/\",\n \"https://t-rb.org/\",\n \"https://the.rarbg.club/\",\n \"https://trb.archivebay.online/\",\n \"https://trb.t-pb.org/\",\n \"https://trb.themirror.wiki/\",\n \"https://torrentlite.org/\",\n \"https://rarbg.unblockninja.com/\",\n \"https://rarbg.ninjaproxy1.com/\",\n \"https://rarbg.proxyninja.org/\",\n \"https://rarbg.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://therarbg.com/\"\n ],\n \"definitionName\": \"therarbg\",\n \"description\": \"TheRARBG is a Public site inspired by RARBG.to for TV / MOVIES / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"therarbg\",\n \"name\": \"TheRARBG\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"therarbg\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#therarbg\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torlock.com/\",\n \"https://www.torlock2.com/\"\n ],\n \"legacyUrls\": [\n \"https://torlock.com/\",\n \"https://www.torlock.icu/\",\n \"https://torlock.mrunblock.guru/\",\n \"https://torlock.unblockit.click/\",\n \"https://torlock.unblockit.asia/\",\n \"https://torlock.mrunblock.life/\",\n \"https://torlock.unblockit.mov/\",\n \"https://torlock.unblockit.rsvp/\",\n \"https://torlock.unblockit.vegas/\",\n \"https://torlock.unblockit.esq/\",\n \"https://torlock.unblockit.zip/\",\n \"https://torlock.unblockit.foo/\",\n \"https://torlock.unblockit.ing/\",\n \"https://torlock.nocensor.cloud/\",\n \"https://torlock.mrunblock.bond/\",\n \"https://torlock.unblockit.date/\",\n \"https://torlock.unblockit.dad/\",\n \"https://torlock.unblockit.africa/\",\n \"https://torlock.unblockit.casa/\",\n \"https://torlock.unblockit.sbs/\",\n \"https://torlock.unblockit.ong/\"\n ],\n \"definitionName\": \"torlock\",\n \"description\": \"Torlock is a torrent search site that lists verified torrents only for TV series and movies\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torlock\",\n \"name\": \"Torlock\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torlock\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torlock\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownloads.pro/\",\n \"https://torrentdownloads.unblockit.ong/\",\n \"https://torrentdownloads.unblockninja.com/\",\n \"https://torrentdownloads.ninjaproxy1.com/\",\n \"https://torrentdownloads.proxyninja.org/\"\n ],\n \"legacyUrls\": [\n \"https://www.torrentdownloads.me/\",\n \"https://www.torrentdownloads.info/\",\n \"https://torrentdownloads.mrunblock.guru/\",\n \"https://torrentdownloads.unblockit.click/\",\n \"https://torrentdownloads.unblockit.asia/\",\n \"https://torrentdownloads.unblockit.mov/\",\n \"https://torrentdownloads.mrunblock.life/\",\n \"https://torrentdownloads.unblockit.rsvp/\",\n \"https://torrentdownloads.unblockit.vegas/\",\n \"https://torrentdownloads.unblockit.esq/\",\n \"https://torrentdownloads.unblockit.zip/\",\n \"https://torrentdownloads.unblockit.foo/\",\n \"https://torrentdownloads.unblockit.ing/\",\n \"https://torrentdownloads.mrunblock.bond/\",\n \"https://torrentdownloads.nocensor.cloud/\",\n \"https://torrentdownloads.unblockit.date/\",\n \"https://torrentdownloads.unblockit.dad/\",\n \"https://torrentdownloads.unblockit.africa/\",\n \"https://torrentdownloads.unblockit.casa/\",\n \"https://torrentdownloads.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownloads\",\n \"description\": \"Torrent Downloads (TD) is a Public torrent site for all kinds of content\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrent downloads\",\n \"name\": \"Torrent Downloads\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownloads\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownloads\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yourbittorrent.com/\",\n \"https://yourbittorrent2.com/\"\n ],\n \"legacyUrls\": [\n \"https://yourbittorrent.host/\",\n \"https://yourbittorrent.nocensor.space/\",\n \"https://yourbittorrent.nocensor.work/\",\n \"https://yourbittorrent.nocensor.biz/\",\n \"https://yourbittorrent.nocensor.sbs/\",\n \"https://yourbittorrent.nocensor.world/\",\n \"https://yourbittorrent.nocensor.lol/\",\n \"https://yourbittorrent.mrunblock.guru/\",\n \"https://yourbittorrent.mrunblock.life/\",\n \"https://yourbittorrent.nocensor.click/\",\n \"https://yourbittorrent.nocensor.cloud/\",\n \"https://yourbittorrent.mrunblock.bond/\"\n ],\n \"definitionName\": \"yourbittorrent\",\n \"description\": \"YourBittorrent is a Public torrent index\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yourbittorrent\",\n \"name\": \"YourBittorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yourbittorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yourbittorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://1337x.to/\",\n \"https://1337x.st/\",\n \"https://x1337x.ws/\",\n \"https://x1337x.eu/\",\n \"https://x1337x.se/\",\n \"https://1337x.so/\",\n \"https://1337x.abcproxy.org/\",\n \"https://1337x.unblockninja.com/\",\n \"https://1337x.ninjaproxy1.com/\",\n \"https://1337x.proxyninja.org/\",\n \"https://1337x.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://1337x.is/\",\n \"https://1337x.gd/\",\n \"https://1337x.mrunblock.guru/\",\n \"https://1337x.mrunblock.life/\",\n \"https://1337x.unblockit.click/\",\n \"https://1337x.unblockit.asia/\",\n \"https://1337x.unblockit.mov/\",\n \"https://1337x.unblockit.rsvp/\",\n \"https://1337x.unblockit.vegas/\",\n \"https://1337x.unblockit.esq/\",\n \"https://1337x.unblockit.zip/\",\n \"https://1337x.unblockit.foo/\",\n \"https://1337x.unblockit.ing/\",\n \"https://1337x.mrunblock.bond/\",\n \"https://1337x.unblockit.date/\",\n \"https://1337x.unblockit.dad/\",\n \"https://1337x.unblockit.africa/\",\n \"https://1337x.unblockit.casa/\",\n \"https://unblockit.sbs/\",\n \"https://unblockit.ong/\"\n ],\n \"definitionName\": \"1337x\",\n \"description\": \"1337X is a Public torrent site that offers verified torrent downloads\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2010,\n \"name\": \"Movies/Foreign\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1080,\n \"name\": \"Console/PS3\",\n \"subCategories\": []\n },\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1010,\n \"name\": \"Console/NDS\",\n \"subCategories\": []\n },\n {\n \"id\": 1110,\n \"name\": \"Console/3DS\",\n \"subCategories\": []\n },\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"1337x\",\n \"name\": \"1337x\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"1337x\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)\"\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#1337x\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://bitru.org/\"\n ],\n \"legacyUrls\": [\n \"http://bitru.org/\"\n ],\n \"definitionName\": \"bitru\",\n \"description\": \"BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitru\",\n \"name\": \"BitRu\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"adverts\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://badasstorrents.com/\"\n ],\n \"legacyUrls\": [\n \"https://badasstorrents.nocensor.work/\",\n \"https://badasstorrents.nocensor.biz/\",\n \"https://badasstorrents.nocensor.sbs/\",\n \"https://badasstorrents.nocensor.world/\",\n \"https://badasstorrents.nocensor.lol/\",\n \"https://badasstorrents.nocensor.art/\",\n \"https://badasstorrents.mrunblock.guru/\",\n \"https://badasstorrents.mrunblock.life/\",\n \"https://badasstorrents.nocensor.click/\",\n \"https://badasstorrents.mrunblock.bond/\",\n \"https://badasstorrents.nocensor.cloud/\"\n ],\n \"definitionName\": \"badasstorrents\",\n \"description\": \"Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"badass torrents\",\n \"name\": \"Badass Torrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"badasstorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#badasstorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://archive.org/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"internetarchive\",\n \"description\": \"Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"internet archive\",\n \"name\": \"Internet Archive\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"internetarchive\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"titleOnly\",\n \"value\": false\n },\n {\n \"name\": \"noMagnet\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#internetarchive\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.gktorrent.pm/\"\n ],\n \"legacyUrls\": [\n \"https://www.rantop.org/\",\n \"https://www.torrent.ws/\",\n \"https://gktorrent.mrunblock.guru/\",\n \"https://gktorrent.mrunblock.life/\",\n \"https://gktorrent.nocensor.click/\",\n \"https://www.gktorrent.ac/\",\n \"https://www.gktorrent.ph/\",\n \"https://www.gktorrent.vc/\",\n \"https://www.gktorrent.mx/\",\n \"https://www.gktorrent.fi/\",\n \"https://www.gktorrent.wf/\",\n \"https://gktorrent.nocensor.cloud/\",\n \"https://gktorrent.mrunblock.bond/\",\n \"https://www.gktorrent.wtf/\",\n \"https://www.gktorrent.vg/\",\n \"https://www.gktorrent.lol/\",\n \"https://www.gktorrent.sh/\",\n \"https://www.gktorrent.eu/\",\n \"https://www.gktorrent.xyz/\"\n ],\n \"definitionName\": \"gktorrent\",\n \"description\": \"GkTorrent is a French Public site for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"gktorrent\",\n \"name\": \"GkTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"gktorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#gktorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://itorrent.ws/\"\n ],\n \"legacyUrls\": [\n \"https://itorrent.unblockit.pro/\",\n \"https://itorrent.unblockit.one/\",\n \"https://itorrent.unblockit.me/\"\n ],\n \"definitionName\": \"itorrent\",\n \"description\": \"iTorrent is a Public HUNGARIAN site\",\n \"language\": \"hu-HU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"itorrent\",\n \"name\": \"iTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"itorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#itorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.limetorrents.lol/\",\n \"https://limetorrents.unblockit.black/\",\n \"https://limetorrents.unblockninja.com/\",\n \"https://limetorrents.ninjaproxy1.com/\",\n \"https://limetorrents.proxyninja.org/\",\n \"https://limetorrents.proxyninja.net/\",\n \"https://limetorrents.torrentbay.st/\",\n \"https://limetorrents.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://limetorrents.unblockit.asia/\",\n \"https://limetorrents.unblockit.mov/\",\n \"https://limetorrents.unblockit.rsvp/\",\n \"https://limetorrents.unblockit.vegas/\",\n \"https://limetorrents.unblockit.esq/\",\n \"https://limetorrents.unblockit.zip/\",\n \"https://limetorrents.unblockit.foo/\",\n \"https://limetorrents.unblockit.ing/\",\n \"https://limetorrents.mrunblock.bond/\",\n \"https://limetorrents.nocensor.cloud/\",\n \"https://limetorrents.unblockit.date/\",\n \"https://limetorrents.unblockit.dad/\",\n \"https://limetorrents.unblockit.africa/\",\n \"https://limetorrents.unblockit.casa/\",\n \"https://limetorrents.unblockit.sbs/\",\n \"https://limetorrents.unblockit.ong/\",\n \"https://limetorrents.abcproxy.org/\"\n ],\n \"definitionName\": \"limetorrents\",\n \"description\": \"LimeTorrents is a Public general torrent index with mostly verified torrents\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"limetorrents\",\n \"name\": \"LimeTorrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"limetorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#limetorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.oxtorrent.co/\",\n \"https://oxtorrent.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://oxtorrent.unblockit.casa/\",\n \"https://oxtorrent.unblockit.sbs/\"\n ],\n \"definitionName\": \"oxtorrent-co\",\n \"description\": \"OxTorrent is a FRENCH Public Torrent Tracker for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"oxtorrent\",\n \"name\": \"OxTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"oxtorrent-co\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#oxtorrent-co\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://rutor.info/\",\n \"https://rutor.is/\"\n ],\n \"legacyUrls\": [\n \"https://rutor.uk-unblock.xyz/\",\n \"https://rutor.ind-unblock.xyz/\",\n \"https://rutor.unblocked.bar/\",\n \"https://rutor.proxyportal.pw/\",\n \"https://rutor.uk-unblock.pro/\",\n \"https://rutor.root.yt/\",\n \"https://rutor.unblocked.rest/\",\n \"https://rutor.unblocked.monster/\",\n \"https://rutor.nocensor.space/\",\n \"https://rutor.nocensor.work/\",\n \"http://6tor.org/\",\n \"https://rutor.nocensor.world/\",\n \"https://rutor.nocensor.lol/\",\n \"https://rutor.nocensor.art/\",\n \"https://rutor.mrunblock.guru/\",\n \"https://rutor.mrunblock.life/\",\n \"https://rutor.nocensor.click/\",\n \"https://rutor.mrunblock.bond/\",\n \"https://rutor.nocensor.cloud/\",\n \"http://new-rutor.org/\",\n \"http://rutor.info/\",\n \"http://rutor.is/\"\n ],\n \"definitionName\": \"rutor\",\n \"description\": \"RuTor is a RUSSIAN Public site for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\",\n \"imdbId\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutor\",\n \"name\": \"RuTor\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutor\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"info\",\n \"value\": \"RuTor does not display categories in its search results page. This definition is probably only suitable for Prowlarr Dashboard Manual searches.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutor\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"http://rutracker.ru/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"rutracker-ru\",\n \"description\": \"RuTracker.RU is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5010,\n \"name\": \"TV/WEB-DL\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutracker ru\",\n \"name\": \"RuTracker.RU\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutracker-ru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutracker-ru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownload.info/\",\n \"https://torrentdownload.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://torrentdownload.mrunblock.guru/\",\n \"https://torrentdownload.unblockit.click/\",\n \"https://torrentdownload.unblockit.asia/\",\n \"https://torrentdownload.unblockit.mov/\",\n \"https://torrentdownload.mrunblock.life/\",\n \"https://torrentdownload.unblockit.rsvp/\",\n \"https://torrentdownload.unblockit.vegas/\",\n \"https://torrentdownload.unblockit.esq/\",\n \"https://torrentdownload.unblockit.zip/\",\n \"https://torrentdownload.unblockit.foo/\",\n \"https://torrentdownload.unblockit.ing/\",\n \"https://torrentdownload.mrunblock.bond/\",\n \"https://torrentdownload.nocensor.cloud/\",\n \"https://torrentdownload.unblockit.date/\",\n \"https://torrentdownload.unblockit.dad/\",\n \"https://torrentdownload.unblockit.africa/\",\n \"https://torrentdownload.unblockit.casa/\",\n \"https://torrentdownload.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownload\",\n \"description\": \"TorrentDownload is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7010,\n \"name\": \"Books/Mags\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrentdownload\",\n \"name\": \"TorrentDownload\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownload\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownload\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.529052.xyz/\",\n \"https://www.529053.xyz/\"\n ],\n \"legacyUrls\": [\n \"https://529050.xyz/\",\n \"https://529048.xyz/\",\n \"https://529049.xyz/\"\n ],\n \"definitionName\": \"52bt\",\n \"description\": \"52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL\",\n \"language\": \"zh-CN\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"52bt\",\n \"name\": \"52BT\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"52bt\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#52bt\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://eztvx.to/\",\n \"https://eztv.wf/\",\n \"https://eztv.tf/\",\n \"https://eztv.yt/\",\n \"https://eztv1.xyz/\",\n \"https://eztv.unblockit.black/\"\n ],\n \"legacyUrls\": [\n \"https://eztv.ag/\",\n \"https://eztv.it/\",\n \"https://eztv.ch/\",\n \"https://eztv.io/\",\n \"https://eztv.unblockit.asia/\",\n \"https://eztv.unblockit.mov/\",\n \"https://eztv.mrunblock.life/\",\n \"https://eztv.unblockit.rsvp/\",\n \"https://eztv.unblockit.vegas/\",\n \"https://eztv.unblockit.esq/\",\n \"https://eztv.unblockit.zip/\",\n \"https://eztv.re/\",\n \"https://eztv.li/\",\n \"https://eztv.unblockit.foo/\",\n \"https://eztv.unblockit.ing/\",\n \"https://eztv.mrunblock.bond/\",\n \"https://eztv.nocensor.cloud/\",\n \"https://eztv.unblockit.date/\",\n \"https://eztv.unblockit.dad/\",\n \"https://eztv.unblockit.africa/\",\n \"https://eztv.unblockit.casa/\",\n \"https://eztv.unblockit.sbs/\",\n \"https://eztv.unblockninja.com/\",\n \"https://eztv.ninjaproxy1.com/\",\n \"https://eztv.proxyninja.org/\",\n \"https://eztv.abcproxy.org/\",\n \"https://eztv.unblockit.ong/\"\n ],\n \"definitionName\": \"eztv\",\n \"description\": \"EZTV is a Public torrent site for TV shows\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"eztv\",\n \"name\": \"EZTV\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"eztv\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#eztv\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yts.mx/\",\n \"https://yts.unblockit.meme/\",\n \"https://yts.unblockninja.com/\",\n \"https://yts.ninjaproxy1.com/\",\n \"https://yts.proxyninja.org/\",\n \"https://yts.proxyninja.net/\",\n \"https://yts.torrentbay.st/\",\n \"https://yts.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://yts.unblockit.mov/\",\n \"https://yts.unblockit.rsvp/\",\n \"https://yts.unblockit.vegas/\",\n \"https://yts.unblockit.esq/\",\n \"https://yts.unblockit.zip/\",\n \"https://yts.unblockit.foo/\",\n \"https://yts.unblockit.ing/\",\n \"https://yts.mrunblock.bond/\",\n \"https://yts.nocensor.cloud/\",\n \"https://yts.unblockit.date/\",\n \"https://yts.unblockit.dad/\",\n \"https://yts.unblockit.africa/\",\n \"https://yts.unblockit.casa/\",\n \"https://yts.unblockit.sbs/\",\n \"https://yts.unblockit.ong/\",\n \"https://yts.abcproxy.org/\",\n \"https://yts.unblockit.black/\",\n \"https://yts.lt/\",\n \"https://yts.am/\",\n \"https://yts.ag/\"\n ],\n \"definitionName\": \"yts\",\n \"description\": \"YTS is a Public torrent site specialising in HD movies of small size\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yts\",\n \"name\": \"YTS\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yts\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yts\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://nyaa.si/\",\n \"https://nyaa.iss.ink/\",\n \"https://nyaa.land/\",\n \"https://nyaa.unblockninja.com/\"\n ],\n \"legacyUrls\": [\n \"https://nyaa.black-mirror.xyz/\",\n \"https://nyaa.unblocked.casa/\",\n \"https://nyaa.proxyportal.fun/\",\n \"https://nyaa.uk-unblock.xyz/\",\n \"https://nyaa.ind-unblock.xyz/\",\n \"https://nyaa.unblocked.bar/\",\n \"https://nyaa.proxyportal.pw/\",\n \"https://nyaa.uk-unblock.pro/\",\n \"https://nyaa.root.yt/\",\n \"https://nyaa.lol/\",\n \"https://nyaa.mrunblock.bond/\",\n \"https://nyaa.nocensor.cloud/\"\n ],\n \"definitionName\": \"nyaasi\",\n \"description\": \"Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"nyaa si\",\n \"name\": \"Nyaa.si\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"nyaasi\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.preferMagnetUrl\",\n \"value\": false\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sonarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"strip_s01\",\n \"value\": false\n },\n {\n \"name\": \"radarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"filter-id\",\n \"value\": 1\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#nyaasi\",\n \"tags\": []\n }\n ]\n prowlarr_indexer_proxy.json:\n content: |\n {\n \"onHealthIssue\": false,\n \"supportsOnHealthIssue\": false,\n \"includeHealthWarnings\": false,\n \"name\": \"FlareSolverr\",\n \"fields\": [\n {\n \"name\": \"host\",\n \"value\": \"${FLARESOLVERR_INTERNAL_URL:-http://flaresolverr:8191}\"\n },\n {\n \"name\": \"requestTimeout\",\n \"value\": 60\n }\n ],\n \"implementationName\": \"FlareSolverr\",\n \"implementation\": \"FlareSolverr\",\n \"configContract\": \"FlareSolverrSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported#flaresolverr\",\n \"tags\": [\n 1\n ]\n }\n scraper_config.json:\n content: |\n {\n \"start_urls\": {\n \"nowsports\": \"https://neesports.me/\",\n \"nowmetv\": \"https://neelive.com/\",\n \"tgx\": [\n \"torrentgalaxy.mx\",\n \"torrentgalaxy.to\",\n \"tgx.rs\"\n ]\n },\n \"tamil_blasters\": {\n \"homepage\": \"https://www.1tamilblasters.net\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"52-english-movies-hdcam-dvdscr-predvd\",\n \"hdrip\": \"53-english-movies-hdrips-bdrips-dvdrips\",\n \"series\": \"92-english-web-series-tv-shows\"\n }\n }\n },\n \"tamilmv\": {\n \"homepage\": \"https://www.1tamilmv.com\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"46-predvd-dvdscr-cam-tc\",\n \"hdrip\": [\n \"49-web-hd-itunes-hd-bluray\",\n \"50-hd-rips-dvd-rips-br-rips\"\n ],\n \"series\": \"55-web-series-tv-shows\"\n }\n },\n \"supported_search_forums\": {\n \"46-predvd-dvdscr-cam-tc\": {\n \"language\": \"english\",\n \"media_type\": \"tcrip\"\n },\n \"49-web-hd-itunes-hd-bluray\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"50-hd-rips-dvd-rips-br-rips\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"55-web-series-tv-shows\": {\n \"language\": \"english\",\n \"media_type\": \"series\"\n }\n }\n },\n \"dlhd\": {\n \"channels_url\": \"https://daddylive.dad/24-7-channels.php\",\n \"channel_url\": \"https://daddylive.dad/stream/stream-{channel_number}.php\",\n \"schedule_url\": \"https://daddylive.dad/schedule/schedule-generated.php\",\n \"server_lookup_url\": \"https://allupplay.xyz/server_lookup.php?channel_id={server_type}{channel_id}\",\n \"m3u8_base_url\": \"https://{server_key}new.newkso.ru/{server_key}/{server_type}{channel_id}/mono.m3u8\",\n \"key_url\": \"https://key.keylocking.ru\",\n \"referer\": \"https://allupplay.xyz/\",\n \"category_mapping\": {\n \"Tv Shows\": \"Other Sports\",\n \"Soccer\": \"Football\",\n \"Cricket\": \"Cricket\",\n \"Tennis\": \"Tennis\",\n \"Tennis ATP - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP - FRENCH OPEN\": \"Tennis\",\n \"Tennis MIXED DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Motorsport\": \"Motor Sport\",\n \"Boxing\": \"Boxing\",\n \"MMA\": \"MMA\",\n \"Golf\": \"Golf\",\n \"Snooker\": \"Other Sports\",\n \"Am. Football\": \"American Football\",\n \"Athletics\": \"Athletics\",\n \"Aussie rules\": \"Aussie Rules\",\n \"Baseball\": \"Baseball\",\n \"Basketball\": \"Basketball\",\n \"Bowling\": \"Bowling\",\n \"Cycling\": \"Cycling\",\n \"Darts\": \"Dart\",\n \"Floorball\": \"Floorball\",\n \"Futsal\": \"Futsal\",\n \"Gymnastics\": \"Gymnastics\",\n \"Handball\": \"Handball\",\n \"Horse Racing\": \"Horse Racing\",\n \"Ice Hockey\": \"Hockey\",\n \"Lacrosse\": \"Lacrosse\",\n \"Netball\": \"Netball\",\n \"Rugby League\": \"Rugby/AFL\",\n \"Rugby Union\": \"Rugby/AFL\",\n \"Squash\": \"Squash\",\n \"Volleyball\": \"Volleyball\",\n \"GAA\": \"GAA\",\n \"Clubber\": \"Other Sports\"\n }\n },\n \"sport_video\": {\n \"categories\": {\n \"american_football\": \"https://www.sport-video.org.ua/americanfootball.html\",\n \"basketball\": \"https://www.sport-video.org.ua/basketball.html\",\n \"baseball\": \"https://www.sport-video.org.ua/baseball.html\",\n \"football\": \"https://www.sport-video.org.ua/football.html\",\n \"hockey\": \"https://www.sport-video.org.ua/hockey.html\",\n \"rugby\": \"https://www.sport-video.org.ua/rugby.html\",\n \"other_sports\": \"https://www.sport-video.org.ua/other.html\"\n }\n }\n }\n\n litellm_config.yaml:\n content: |\n general_settings:\n proxy_batch_write_at: 60\n\n router_settings:\n redis_host: redis\n redis_port: 6379\n redis_password:\n enable_pre_call_check: true\n allowed_fails: 3\n allowed_fails_policy:\n BadRequestErrorAllowedFails: 1000\n AuthenticationErrorAllowedFails: 10\n TimeoutErrorAllowedFails: 12\n RateLimitErrorAllowedFails: 10000\n ContentPolicyViolationErrorAllowedFails: 15\n InternalServerErrorAllowedFails: 20\n cooldown_time: 30\n disable_cooldowns: false\n enable_pre_call_checks: true\n enable_tag_filtering: true\n retry_policy:\n AuthenticationErrorRetries: 3\n TimeoutErrorRetries: 3\n RateLimitErrorRetries: 3\n ContentPolicyViolationErrorRetries: 4\n InternalServerErrorRetries: 4\n routing_strategy: simple-shuffle\n\n litellm_settings:\n cache: true\n cache_params:\n type: redis\n host: redis\n port: 6379\n password:\n namespace: \"litellm_cache\"\n ttl: 600\n content_policy_fallbacks: []\n context_window_fallbacks: []\n default_fallbacks: []\n set_verbose: false\n force_ipv4: true\n json_logs: true\n log_raw_request_response: true\n turn_off_message_logging: false\n redact_user_api_key_info: true\n drop_params: true\n # max_budget: 100\n # budget_duration: 30d\n num_retries: 3\n request_timeout: 600\n telemetry: false\n model_list:\n - model_name: moonshotai/kimi-k2:free\n litellm_params:\n model: openai/moonshotai/kimi-k2:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for agentic capabilities, including advanced tool use, reasoning, and code synthesis. Kimi K2 excels across a broad range of benchmarks, particularly in coding (LiveCodeBench, SWE-bench), reasoning (ZebraLogic, GPQA), and tool-use (Tau2, AceBench) tasks. It supports long-context inference up to 128K tokens and is designed with a novel training stack that includes the MuonClip optimizer for stable large-scale MoE training.\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving user control over alignment, system prompts, and behavior. Intended for advanced and unrestricted use cases, Venice Uncensored emphasizes steerability and transparent behavior, removing default safety and alignment layers typically found in mainstream assistant models.\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e2b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e2b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based on the MatFormer architecture, it supports nested submodels and modular composition via the Mix-and-Match framework. Gemma 3n models are optimized for low-resource deployment, offering 32K context length and strong multilingual and reasoning performance across common benchmarks. This variant is trained on a diverse corpus including code, math, web, and multimodal data.\n litellm_provider: openrouter\n - model_name: tencent/hunyuan-a13b-instruct:free\n litellm_params:\n model: openai/tencent/hunyuan-a13b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark performance across mathematics, science, coding, and multi-turn reasoning tasks, while maintaining high inference efficiency via Grouped Query Attention (GQA) and quantization support (FP8, GPTQ, etc.).\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t2-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t2-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: DeepSeek-TNG-R1T2-Chimera is the second-generation Chimera model from TNG Tech. It is a 671 B-parameter mixture-of-experts text-generation model assembled from DeepSeek-AI’s R1-0528, R1, and V3-0324 checkpoints with an Assembly-of-Experts merge. The tri-parent design yields strong reasoning performance while running roughly 20 % faster than the original R1 and more than 2× faster than R1-0528 under vLLM, giving a favorable cost-to-intelligence trade-off. The checkpoint supports contexts up to 60 k tokens in standard use (tested to ~130 k) and maintains consistent <think> token behaviour, making it suitable for long-context analysis, dialogue and other open-ended generation tasks.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.2-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.2-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on WildBench and Arena Hard, reduces infinite generations, and delivers gains in tool use and structured output tasks. It supports image and text inputs with structured outputs, function/tool calling, and strong performance across coding (HumanEval+, MBPP), STEM (MMLU, MATH, GPQA), and vision benchmarks (ChartQA, DocVQA).'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-dev-72b:free\n litellm_params:\n model: openai/moonshotai/kimi-dev-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Kimi-Dev-72B is an open-source large language model fine-tuned for software engineering and issue resolution tasks. Based on Qwen2.5-72B, it is optimized using large-scale reinforcement learning that applies code patches in real repositories and validates them via full test suite execution—rewarding only correct, robust completions. The model achieves 60.4% on SWE-bench Verified, setting a new benchmark among open-source models for software bug fixing and code reasoning.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528-qwen3-8b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528-qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepSeek-R1-0528 is a lightly upgraded release of DeepSeek R1 that taps more compute and smarter post-training tricks, pushing its reasoning and inference to the brink of flagship models like O3 and Gemini 2.5 Pro. It now tops math, programming, and logic leaderboards, showcasing a step-change in depth-of-thought. The distilled variant, DeepSeek-R1-0528-Qwen3-8B, transfers this chain-of-thought into an 8 B-parameter form, beating standard Qwen3 8B by +10 pp and tying the 235 B “thinking” giant on AIME 2024.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model.'\n litellm_provider: openrouter\n - model_name: sarvamai/sarvam-m:free\n litellm_params:\n model: openai/sarvamai/sarvam-m:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Sarvam-M is a 24 B-parameter, instruction-tuned derivative of Mistral-Small-3.1-24B-Base-2503, post-trained on English plus eleven major Indic languages (bn, hi, kn, gu, mr, ml, or, pa, ta, te). The model introduces a dual-mode interface: “non-think” for low-latency chat and a optional “think” phase that exposes chain-of-thought tokens for more demanding reasoning, math, and coding tasks. Benchmark reports show solid gains versus similarly sized open models on Indic-language QA, GSM-8K math, and SWE-Bench coding, making Sarvam-M a practical general-purpose choice for multilingual conversational agents as well as analytical workloads that mix English, native Indic scripts, or romanized text.'\n litellm_provider: openrouter\n - model_name: mistralai/devstral-small-2505:free\n litellm_params:\n model: openai/mistralai/devstral-small-2505:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Devstral-Small-2505 is a 24B parameter agentic LLM fine-tuned from Mistral-Small-3.1, jointly developed by Mistral AI and All Hands AI for advanced software engineering tasks. It is optimized for codebase exploration, multi-file editing, and integration into coding agents, achieving state-of-the-art results on SWE-Bench Verified (46.8%). Devstral supports a 128k context window and uses a custom Tekken tokenizer. It is text-only, with the vision encoder removed, and is suitable for local deployment on high-end consumer hardware (e.g., RTX 4090, 32GB RAM Macs). Devstral is best used in agentic workflows via the OpenHands scaffold and is compatible with inference frameworks like vLLM, Transformers, and Ollama. It is released under the Apache 2.0 license.'\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e4b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: 'Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks such as text generation, speech recognition, translation, and image analysis. Leveraging innovations like Per-Layer Embedding (PLE) caching and the MatFormer architecture, Gemma 3n dynamically manages memory usage and computational load by selectively activating model parameters, significantly reducing runtime resource requirements. This model supports a wide linguistic range (trained in over 140 languages) and features a flexible 32K token context window. Gemma 3n can selectively load parameters, optimizing memory and computational efficiency based on the task or device capabilities, making it well-suited for privacy-focused, offline-capable applications and on-device AI solutions. [Read more in the blog post](https://developers.googleblog.com/en/introducing-gemma-3n/)'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-4b:free\n litellm_params:\n model: openai/qwen/qwen3-4b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-4B is a 4 billion parameter dense language model from the Qwen3 series, designed to support both general-purpose and reasoning-intensive tasks. It introduces a dual-mode architecture—thinking and non-thinking—allowing dynamic switching between high-precision logical reasoning and efficient dialogue generation. This makes it well-suited for multi-turn chat, instruction following, and complex agent workflows.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-30b-a3b:free\n litellm_params:\n model: openai/qwen/qwen3-30b-a3b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique ability to switch seamlessly between a thinking mode for complex reasoning and a non-thinking mode for efficient dialogue ensures versatile, high-quality performance. Significantly outperforming prior models like QwQ and Qwen2.5, Qwen3 delivers superior mathematics, coding, commonsense reasoning, creative writing, and interactive dialogue capabilities. The Qwen3-30B-A3B variant includes 30.5 billion parameters (3.3 billion activated), 48 layers, 128 experts (8 activated per task), and supports up to 131K token contexts with YaRN, setting a new standard among open-source models.'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-8b:free\n litellm_params:\n model: openai/qwen/qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n max_output_tokens: 40960\n metadata:\n notes: Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math, coding, and logical inference, and \"non-thinking\" mode for general conversation. The model is fine-tuned for instruction-following, agent integration, creative writing, and multilingual use across 100+ languages and dialects. It natively supports a 32K token context window and can extend to 131K tokens with YaRN scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-14b:free\n litellm_params:\n model: openai/qwen/qwen3-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, programming, and logical inference, and a \"non-thinking\" mode for general-purpose conversation. The model is fine-tuned for instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-32b:free\n litellm_params:\n model: openai/qwen/qwen3-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, coding, and logical inference, and a \"non-thinking\" mode for faster, general-purpose conversation. The model demonstrates strong performance in instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling. '\n litellm_provider: openrouter\n - model_name: qwen/qwen3-235b-a22b:free\n litellm_params:\n model: openai/qwen/qwen3-235b-a22b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and code tasks, and a \"non-thinking\" mode for general conversational efficiency. The model demonstrates strong reasoning ability, multilingual support (100+ languages and dialects), advanced instruction-following, and agent tool-calling capabilities. It natively handles a 32K token context window and extends up to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-R1T-Chimera is created by merging DeepSeek-R1 and DeepSeek-V3 (0324), combining the reasoning capabilities of R1 with the token efficiency improvements of V3. It is based on a DeepSeek-MoE Transformer architecture and is optimized for general text generation tasks. The model merges pretrained weights from both source models to balance performance across reasoning, efficiency, and instruction-following tasks. It is released under the MIT license and intended for research and commercial use.'\n litellm_provider: openrouter\n - model_name: microsoft/mai-ds-r1:free\n litellm_params:\n model: openai/microsoft/mai-ds-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'MAI-DS-R1 is a post-trained variant of DeepSeek-R1 developed by the Microsoft AI team to improve the model’s responsiveness on previously blocked topics while enhancing its safety profile. Built on top of DeepSeek-R1’s reasoning foundation, it integrates 110k examples from the Tulu-3 SFT dataset and 350k internally curated multilingual safety-alignment samples. The model retains strong reasoning, coding, and problem-solving capabilities, while unblocking a wide range of prompts previously restricted in R1. MAI-DS-R1 demonstrates improved performance on harm mitigation benchmarks and maintains competitive results across general reasoning tasks. It surpasses R1-1776 in satisfaction metrics for blocked queries and reduces leakage in harmful content categories. The model is based on a transformer MoE architecture and is suitable for general-purpose use cases, excluding high-stakes domains such as legal, medical, or autonomous systems.'\n litellm_provider: openrouter\n - model_name: thudm/glm-z1-32b:free\n litellm_params:\n model: openai/thudm/glm-z1-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'GLM-Z1-32B-0414 is an enhanced reasoning variant of GLM-4-32B, built for deep mathematical, logical, and code-oriented problem solving. It applies extended reinforcement learning—both task-specific and general pairwise preference-based—to improve performance on complex multi-step tasks. Compared to the base GLM-4-32B model, Z1 significantly boosts capabilities in structured reasoning and formal domains. The model supports enforced “thinking” steps via prompt engineering and offers improved coherence for long-form outputs. It’s optimized for use in agentic workflows, and includes support for long context (via YaRN), JSON tool calling, and fine-grained sampling configuration for stable inference. Ideal for use cases requiring deliberate, multi-step reasoning or formal derivations.'\n litellm_provider: openrouter\n - model_name: thudm/glm-4-32b:free\n litellm_params:\n model: openai/thudm/glm-4-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: GLM-4-32B-0414 is a 32B bilingual (Chinese-English) open-weight language model optimized for code generation, function calling, and agent-style tasks. Pretrained on 15T of high-quality and reasoning-heavy data, it was further refined using human preference alignment, rejection sampling, and reinforcement learning. The model excels in complex reasoning, artifact generation, and structured output tasks, achieving performance comparable to GPT-4o and DeepSeek-V3-0324 across several benchmarks.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: shisa-ai/shisa-v2-llama3.3-70b:free\n litellm_params:\n model: openai/shisa-ai/shisa-v2-llama3.3-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Shisa V2 Llama 3.3 70B is a bilingual Japanese-English chat model fine-tuned by Shisa.AI on Meta’s Llama-3.3-70B-Instruct base. It prioritizes Japanese language performance while retaining strong English capabilities. The model was optimized entirely through post-training, using a refined mix of supervised fine-tuning (SFT) and DPO datasets including regenerated ShareGPT-style data, translation tasks, roleplaying conversations, and instruction-following prompts. Unlike earlier Shisa releases, this version avoids tokenizer modifications or extended pretraining. Shisa V2 70B achieves leading Japanese task performance across a wide range of custom and public benchmarks, including JA MT Bench, ELYZA 100, and Rakuda. It supports a 128K token context length and integrates smoothly with inference frameworks like vLLM and SGLang. While it inherits safety characteristics from its base model, no additional alignment was applied. The model is intended for high-performance bilingual chat, instruction following, and translation tasks across JA/EN.'\n litellm_provider: openrouter\n - model_name: arliai/qwq-32b-arliai-rpr-v1:free\n litellm_params:\n model: openai/arliai/qwq-32b-arliai-rpr-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'QwQ-32B-ArliAI-RpR-v1 is a 32B parameter model fine-tuned from Qwen/QwQ-32B using a curated creative writing and roleplay dataset originally developed for the RPMax series. It is designed to maintain coherence and reasoning across long multi-turn conversations by introducing explicit reasoning steps per dialogue turn, generated and refined using the base model itself. The model was trained using RS-QLORA+ on 8K sequence lengths and supports up to 128K context windows (with practical performance around 32K). It is optimized for creative roleplay and dialogue generation, with an emphasis on minimizing cross-context repetition while preserving stylistic diversity.'\n litellm_provider: openrouter\n - model_name: agentica-org/deepcoder-14b-preview:free\n litellm_params:\n model: openai/agentica-org/deepcoder-14b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n metadata:\n notes: DeepCoder-14B-Preview is a 14B parameter code generation model fine-tuned from DeepSeek-R1-Distill-Qwen-14B using reinforcement learning with GRPO+ and iterative context lengthening. It is optimized for long-context program synthesis and achieves strong performance across coding benchmarks, including 60.6% on LiveCodeBench v5, competitive with models like o3-Mini\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-vl-a3b-thinking:free\n litellm_params:\n model: openai/moonshotai/kimi-vl-a3b-thinking:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n mode: chat\n supports_vision: true\n metadata:\n notes: Kimi-VL is a lightweight Mixture-of-Experts vision-language model that activates only 2.8B parameters per step while delivering strong performance on multimodal reasoning and long-context tasks. The Kimi-VL-A3B-Thinking variant, fine-tuned with chain-of-thought and reinforcement learning, excels in math and visual reasoning benchmarks like MathVision, MMMU, and MathVista, rivaling much larger models such as Qwen2.5-VL-7B and Gemma-3-12B. It supports 128K context and high-resolution input via its MoonViT encoder.\n litellm_provider: openrouter\n - model_name: nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n litellm_params:\n model: openai/nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama-3.1-Nemotron-Ultra-253B-v1 is a large language model (LLM) optimized for advanced reasoning, human-interactive chat, retrieval-augmented generation (RAG), and tool-calling tasks. Derived from Meta’s Llama-3.1-405B-Instruct, it has been significantly customized using Neural Architecture Search (NAS), resulting in enhanced efficiency, reduced memory usage, and improved inference latency. The model supports a context length of up to 128K tokens and can operate efficiently on an 8x NVIDIA H100 node. Note: you must include `detailed thinking on` in the system prompt to enable reasoning. Please see [Usage Recommendations](https://huggingface.co/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1#quick-start-and-usage-recommendations) for more.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-v3-base:free\n litellm_params:\n model: openai/deepseek/deepseek-v3-base:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'Note that this is a base model mostly meant for testing, you need to provide detailed prompts for the model to return useful responses. DeepSeek-V3 Base is a 671B parameter open Mixture-of-Experts (MoE) language model with 37B active parameters per forward pass and a context length of 128K tokens. Trained on 14.8T tokens using FP8 mixed precision, it achieves high training efficiency and stability, with strong performance across language, reasoning, math, and coding tasks. DeepSeek-V3 Base is the pre-trained model behind [DeepSeek V3](/deepseek/deepseek-chat-v3)'\n litellm_provider: openrouter\n - model_name: google/gemini-2.5-pro-exp-03-25\n litellm_params:\n model: openai/google/gemini-2.5-pro-exp-03-25\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 65535\n mode: chat\n supports_vision: true\n metadata:\n notes: 'This model has been deprecated by Google in favor of the (paid Preview model)[google/gemini-2.5-pro-preview] Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy and nuanced context handling. Gemini 2.5 Pro achieves top-tier performance on multiple benchmarks, including first-place positioning on the LMArena leaderboard, reflecting superior human-preference alignment and complex problem-solving abilities.'\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL-32B is a multimodal vision-language model fine-tuned through reinforcement learning for enhanced mathematical reasoning, structured outputs, and visual problem-solving capabilities. It excels at visual analysis tasks, including object recognition, textual interpretation within images, and precise event localization in extended videos. Qwen2.5-VL-32B demonstrates state-of-the-art performance across multimodal benchmarks such as MMMU, MathVista, and VideoMME, while maintaining strong reasoning and clarity in text-based tasks like MMLU, mathematical problem-solving, and code generation.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat-v3-0324:free\n litellm_params:\n model: openai/deepseek/deepseek-chat-v3-0324:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well on a variety of tasks.'\n litellm_provider: openrouter\n - model_name: featherless/qwerky-72b:free\n litellm_params:\n model: openai/featherless/qwerky-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 4096\n metadata:\n notes: Qwerky-72B is a linear-attention RWKV variant of the Qwen 2.5 72B model, optimized to significantly reduce computational cost at scale. Leveraging linear attention, it achieves substantial inference speedups (>1000x) while retaining competitive accuracy on common benchmarks like ARC, HellaSwag, Lambada, and MMLU. It inherits knowledge and language support from Qwen 2.5, supporting approximately 30 languages, making it suitable for efficient inference in large-context applications.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.1-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.1-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 128000\n mode: chat\n supports_vision: true\n metadata:\n notes: Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and vision tasks, including image analysis, programming, mathematical reasoning, and multilingual support across dozens of languages. Equipped with an extensive 128k token context window and optimized for efficient local inference, it supports use cases such as conversational agents, function calling, long-document comprehension, and privacy-sensitive deployments. The updated version is [Mistral Small 3.2](mistralai/mistral-small-3.2-24b-instruct)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-4b-it:free\n litellm_params:\n model: openai/google/gemma-3-4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-12b-it:free\n litellm_params:\n model: openai/google/gemma-3-12b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 12B is the second largest in the family of Gemma 3 models after [Gemma 3 27B](google/gemma-3-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: rekaai/reka-flash-3:free\n litellm_params:\n model: openai/rekaai/reka-flash-3:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a 32K context length and optimized through reinforcement learning (RLOO), it provides competitive performance comparable to proprietary models within a smaller parameter footprint. Ideal for low-latency, local, or on-device deployments, Reka Flash 3 is compact, supports efficient quantization (down to 11GB at 4-bit precision), and employs explicit reasoning tags (\"<reasoning>\") to indicate its internal thought process. Reka Flash 3 is primarily an English model with limited multilingual understanding capabilities. The model weights are released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-27b-it:free\n litellm_params:\n model: openai/google/gemma-3-27b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 27B is Google's latest open source model, successor to [Gemma 2](google/gemma-2-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwq-32b:free\n litellm_params:\n model: openai/qwen/qwq-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: QwQ is the reasoning model of the Qwen series. Compared with conventional instruction-tuned models, QwQ, which is capable of thinking and reasoning, can achieve significantly enhanced performance in downstream tasks, especially hard problems. QwQ-32B is the medium-sized reasoning model, which is capable of achieving competitive performance against state-of-the-art reasoning models, e.g., DeepSeek-R1, o1-mini.\n litellm_provider: openrouter\n - model_name: nousresearch/deephermes-3-llama-3-8b-preview:free\n litellm_params:\n model: openai/nousresearch/deephermes-3-llama-3-8b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepHermes 3 Preview is the latest version of our flagship Hermes series of LLMs by Nous Research, and one of the first models in the world to unify Reasoning (long chains of thought that improve answer accuracy) and normal LLM response modes into one model. We have also improved LLM annotation, judgement, and function calling. DeepHermes 3 Preview is one of the first LLM models to unify both \"intuitive\", traditional mode responses and long chain of thought reasoning responses into a single model, toggled by a system prompt.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 R1 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. The R1 version has been trained for 3 epochs to reason using 800k reasoning traces from the Dolphin-R1 dataset. Dolphin aims to be a general purpose reasoning instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. Dolphin aims to be a general purpose instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-24b-instruct-2501:free\n litellm_params:\n model: openai/mistralai/mistral-small-24b-instruct-2501:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware. [Read the blog post about the model here.](https://mistral.ai/news/mistral-small-3/)'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-qwen-14b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-qwen-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 64000\n metadata:\n notes: 'DeepSeek R1 Distill Qwen 14B is a distilled large language model based on [Qwen 2.5 14B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI''s o1-mini across various benchmarks, achieving new state-of-the-art results for dense models. Other benchmark results include: - AIME 2024 pass@1: 69.7 - MATH-500 pass@1: 93.9 - CodeForces Rating: 1481 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-llama-70b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-llama-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 4096\n metadata:\n notes: 'DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across multiple benchmarks, including: - AIME 2024 pass@1: 70.0 - MATH-500 pass@1: 94.5 - CodeForces Rating: 1633 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1:free\n litellm_params:\n model: openai/deepseek/deepseek-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model & [technical report](https://api-docs.deepseek.com/news/news250120). MIT licensed: Distill & commercialize freely!'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat:free\n litellm_params:\n model: openai/deepseek/deepseek-chat:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations reveal that the model outperforms other open-source models and rivals leading closed-source models. For model details, please visit [the DeepSeek-V3 repo](https://github.com/deepseek-ai/DeepSeek-V3) for more information, or see the [launch announcement](https://api-docs.deepseek.com/news/news1226).'\n litellm_provider: openrouter\n - model_name: google/gemini-2.0-flash-exp:free\n litellm_params:\n model: openai/google/gemini-2.0-flash-exp:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It introduces notable enhancements in multimodal understanding, coding capabilities, complex instruction following, and function calling. These advancements come together to deliver more seamless and robust agentic experiences.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.3-70b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.3-70b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model is optimized for multilingual dialogue use cases and outperforms many of the available open source and closed chat models on common industry benchmarks. Supported languages: English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai. [Model Card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_3/MODEL_CARD.md)'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-coder-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-coder-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning** and **code fixing**. - A more comprehensive foundation for real-world applications such as **Code Agents**. Not only enhancing coding capabilities but also maintaining its strengths in mathematics and general competencies. To read more about its evaluation results, check out [Qwen 2.5 Coder''s blog](https://qwenlm.github.io/blog/qwen2.5-coder-family/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-3b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-3b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages. Trained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-11b-vision-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-11b-vision-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 2048\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and visual question answering, bridging the gap between language generation and visual reasoning. Pre-trained on a massive dataset of image-text pairs, it performs well in complex, high-accuracy image analysis. Its ability to integrate visual understanding with language processing makes it an ideal solution for industries requiring comprehensive visual-linguistic AI applications, such as content creation, AI-driven customer service, and research. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and mathematics, thanks to our specialized expert models in these domains. - Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. - Long-context Support up to 128K tokens and can generate up to 8K tokens. - Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. Usage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.1-405b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.1-405b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs. Meta''s latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations. To read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-nemo:free\n litellm_params:\n model: openai/mistralai/mistral-nemo:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 128000\n metadata:\n notes: 'A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi. It supports function calling and is released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-2-9b-it:free\n litellm_params:\n model: openai/google/gemma-2-9b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 8192\n metadata:\n notes: 'Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size. Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining , safety, and cost-effectiveness. See the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google''s [Gemma Terms of Use](https://ai.google.dev/gemma/terms).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-7b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-7b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length. *Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*'\n litellm_provider: openrouter\n\n #######################################################################################\n # Mattermost Backup Configuration\n #######################################################################################\n mattermost-backup-daily.sh:\n content: |\n #!/bin/sh\n now=$$(date +\"%s_%Y-%m-%d\")\n /usr/bin/mysqldump --opt -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE > \"/backup/$now_$MYSQL_DATABASE.sql\"\n\n # Container management script\n manage-containers.sh:\n content: |\n #!/bin/bash\n # Container management script for media stack\n\n CONTAINERS=\"plex riven-frontend riven blackhole\"\n\n case \"$$1\" in\n start)\n echo \"Starting media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps -a --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Starting $$container...\"\n docker start $$container\n fi\n done\n ;;\n stop)\n echo \"Stopping media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Stopping $$container...\"\n docker stop $$container\n fi\n done\n ;;\n restart)\n echo \"Restarting media stack containers...\"\n $$0 stop\n sleep 5\n $$0 start\n ;;\n *)\n echo \"Usage: $$0 {start|stop|restart}\"\n exit 1\n ;;\n esac\n\n # Symlink cleanup script\n symlink-cleanup.sh:\n content: |\n #!/bin/bash\n # Cleanup broken symlinks\n\n echo \"Cleaning up broken symlinks...\"\n\n # Find and remove broken symlinks in media directories\n find /mnt/media -type l -exec test ! -e {} \\; -print -delete\n find /mnt/symlinks -type l -exec test ! -e {} \\; -print -delete\n\n echo \"Symlink cleanup complete\"\n\n # Backup configuration script\n backup-configs.sh:\n content: |\n #!/bin/bash\n # Backup configuration files\n\n BACKUP_DIR=\"${BACKUP_PATH:-/mnt/local/backups}/$(date +%Y%m%d_%H%M%S)\"\n CONFIG_PATH=\"${CONFIG_PATH:-./volumes}\"\n\n echo \"Creating backup directory: $BACKUP_DIR\"\n mkdir -p \"$BACKUP_DIR\"\n\n echo \"Backing up configuration files...\"\n if [ -d \"$CONFIG_PATH\" ]; then\n cp -rv \"$CONFIG_PATH\" \"$BACKUP_DIR/\"\n echo \"Backup completed: $BACKUP_DIR\"\n else\n echo \"Config directory not found: $CONFIG_PATH\"\n exit 1\n fi\n\n # Keep only last 7 days of backups\n find ${BACKUP_PATH:-/mnt/local/backups} -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true\n\n echo \"Backup process complete\"\n\n plex_update.sh:\n content: |\n #!/bin/bash\n # PLEX PARTIAL SCAN script or PLEX UPDATE script\n # When zurg detects changes, it can trigger this script IF your config.yml contains\n # on_library_update: sh plex_update.sh \"$$@\"\n # Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh\n token=${PLEX_TOKEN:-replace-me}\n\n # DON'T CHANGE ANYTHING AFTER THIS LINE\n plex_url=\"${PLEX_INTERNAL_URL:-http://plex:32400}\" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400\n zurg_mount=\"${ZURG_MOUNT_PATH:-/mnt/remote/realdebrid}\" # Replace with your zurg mount path, ensure this is what Plex sees\n\n # Get the list of section IDs\n section_ids=$$(curl -sLX GET \"$$plex_url/library/sections\" -H \"X-Plex-Token: $$token\" | xmllint --xpath \"//Directory/@key\" - | sed 's/key=\"//g' | tr '\"' '\\n')\n for arg in \"$$@\"\n do\n modified_arg=\"$$zurg_mount/$$arg\"\n encoded_arg=$$(echo -n \"$$modified_arg\" | python3 -c \"import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))\")\n if [ -z \"$$encoded_arg\" ]; then\n echo \"Error: Encoded argument is empty. Check the input or encoding process.\"\n continue\n fi\n for section_id in $$section_ids\n do\n final_url=\"$$plex_url/library/sections/$$section_id/refresh?path=$$encoded_arg&X-Plex-Token=$$token\"\n echo \"Encoded argument: $$encoded_arg\"\n echo \"Section ID: $$section_id\"\n echo \"Final URL: $$final_url\"\n curl -s \"$$final_url\"\n done\n done\n echo \"All updated sections refreshed\"\n # credits to godver3\n\n headscale-config:\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://myheadscale.example.com:443\n #\n #server_url: https://headscale-server.$DOMAIN:443\n server_url: ${HEADSCALE_INTERNAL_URL:-http://headscale-server:8080}\n\n # Address to listen to / bind to on the server\n #\n listen_addr: 0.0.0.0:8080\n\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n\n grpc_listen_addr: 0.0.0.0:50443\n\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n\n # Private key used encrypt the traffic between headscale\n # and Tailscale clients.\n # The private key file which will be\n # autogenerated if it's missing\n private_key_path: /var/lib/headscale/private.key\n\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: random\n\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: false\n\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"headscale\"\n region_name: \"Headscale Embedded DERP\"\n\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n ipv4: 100.64.0.2\n ipv6: fd7a:115c:a1e0::2\n\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n\n # How often should we check for DERP updates?\n update_frequency: 24h\n\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: ${HEADSCALE_DEBUG:-false}\n\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: ${HEADSCALE_PREPARE_STMT:-true}\n\n # Enable parameterized queries.\n parameterized_queries: ${HEADSCALE_PARAMETERIZED_QUERIES:-true}\n\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: ${HEADSCALE_SKIP_ERR_RECORD_NOT_FOUND:-true}\n\n # Threshold for slow queries in milliseconds.\n slow_threshold: ${HEADSCALE_SLOW_THRESHOLD:-1000}\n\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: ${HEADSCALE_WRITE_AHEAD_LOG:-true}\n\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: ${HEADSCALE_WAL_AUTOCHECKPOINT:-1000}\n\n log:\n # Output formatting for logs: text or json\n format: ${HEADSCALE_LOG_FORMAT:-text}\n level: ${HEADSCALE_LOG_LEVEL:-info}\n\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: ${HEADSCALE_POLICY_MODE:-file}\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: ${HEADSCALE_POLICY_PATH:-\"\"}\n\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: ${HEADSCALE_MAGIC_DNS:-true}\n\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: myscale.$DOMAIN\n\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: ${HEADSCALE_OVERRIDE_LOCAL_DNS:-false}\n\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n # - https://dns.nextdns.io/abc123\n\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {\n # \"headscale.$DOMAIN\": [\n # \"1.1.1.1\",\n # \"1.0.0.1\",\n # \"2606:4700:4700::1111\",\n # \"2606:4700:4700::1001\"\n # ]\n }\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n\n # Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: ${HEADSCALE_LOGTAIL_ENABLED:-false}\n\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: ${HEADSCALE_RANDOMIZE_CLIENT_PORT:-false}\n\n\nx-common-env: &common-env\n TZ: ${TZ:-America/Chicago}\n PUID: ${PUID:-1001}\n PGID: ${PGID:-988}\n UMASK: ${UMASK:-002}\n\nservices:\n headscale-server:\n image: docker.io/headscale/headscale\n container_name: headscale-server\n hostname: headscale-server\n networks:\n - publicnet\n extra_hosts: *common-hostname-aliases\n expose:\n - 3478 # STUN\n - 8080 # HTTP\n - 9090 # Metrics\n - 50443 # gRPC\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yaml\n mode: 0644\n volumes:\n - ${CERTS_PATH:-./certs}/private/bolabaden.org.key:/var/lib/headscale/private.key\n - ${CONFIG_PATH:-./volumes}/headscale/config:/etc/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/lib:/var/lib/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/run:/var/run/headscale\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.headscale-server.service: headscale-server\n traefik.http.routers.headscale-server.rule: Host(`headscale-server.$DOMAIN`) || Host(`headscale-server.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/`) # || HostRegexp(`^(www\\.)?headscale-server\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale-server\\.$TS_HOSTNAME\\.$DOMAIN$`)) && PathPrefix(`/`)\n traefik.http.services.headscale-server.loadbalancer.server.port: 8080\n # Homepage integration\n homepage.group: Networking\n homepage.name: Headscale\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale is a server that manages your Tailscale network.\n command: serve\n restart: always\n headscale:\n depends_on:\n - headscale-server\n image: ghcr.io/gurucomputing/headscale-ui\n container_name: headscale\n hostname: headscale\n extra_hosts: *common-hostname-aliases\n pull_policy: always\n networks:\n - publicnet\n dns:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n - 9.9.9.9\n - 2620:fe::fe\n - 8.8.8.8\n - 2001:4860:4860::8888\n - 2001:4860:4860::8844\n labels:\n traefik.enable: \"true\"\n #traefik.http.routers.headscale.middlewares: nginx-auth@file\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?headscale\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale\\.$TS_HOSTNAME\\.$DOMAIN$`)) # && PathPrefix(`/web`)\n traefik.http.services.headscale.loadbalancer.server.port: 80\n homepage.group: Networking\n homepage.name: Headscale UI\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale UI is a web interface for Headscale, an open source implementation of Tailscale's Admin control panel.\n restart: always\n\n hedgedoc:\n depends_on:\n - hedgedoc-db\n image: quay.io/hedgedoc/hedgedoc\n container_name: hedgedoc\n hostname: hedgedoc\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000\n environment:\n CMD_DB_URL: postgres://hedgedoc:password@hedgedoc-db:5432/hedgedoc\n CMD_DOMAIN: hedgedoc.$DOMAIN\n CMD_URL_ADDPORT: false\n CMD_PROTOCOL_USESSL: true\n CMD_SESSION_SECRET: \"discolor-subtitle-seducing-result-ceramics\" # define secret\n CMD_ALLOW_EMAIL_REGISTER: \"true\" # allow registration\n CMD_EMAIL: \"true\" # allow login; only guest notes\n # ------- OAUTH SSO -------\n # see https://docs.goauthentik.io/integrations/services/hedgedoc/\n #- CMD_ALLOW_ANONYMOUS_EDITS=False\n #- CMD_OAUTH2_USER_PROFILE_URL=https://authentik.$DOMAIN/application/o/userinfo/\n #- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username\n #- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name\n #- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email\n #- CMD_OAUTH2_TOKEN_URL=https://authentik.$DOMAIN/application/o/token/\n #- CMD_OAUTH2_AUTHORIZATION_URL=https://authentik.$DOMAIN/application/o/authorize/\n #- CMD_OAUTH2_CLIENT_ID=<ID>\n #- CMD_OAUTH2_CLIENT_SECRET=<SECRET>\n #- CMD_OAUTH2_PROVIDERNAME=Authentik\n #- CMD_OAUTH2_SCOPE=openid email profile\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/uploads:/hedgedoc/public/uploads\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.hedgedoc.service: hedgedoc\n traefik.http.routers.hedgedoc.middlewares: nginx-auth@file\n traefik.http.routers.hedgedoc.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc.loadbalancer.server.port: 3000\n # prevent unauthorized access to the /metrics endpoint\n traefik.http.routers.hedgedoc-metrics.service: hedgedoc-metrics\n traefik.http.routers.hedgedoc-metrics.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/metrics`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc-metrics.loadbalancer.server.port: 3000\n traefik.http.routers.hedgedoc-metrics.middlewares: nginx-auth@file\n restart: always\n hedgedoc-db:\n image: postgres:16.3-alpine\n container_name: hedgedoc-db\n networks:\n - publicnet\n expose:\n - 5432\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/database:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: hedgedoc\n POSTGRES_PASSWORD: password\n POSTGRES_DB: hedgedoc\n restart: always\n mongodb:\n # 🔹🔹 MongoDB 🔹🔹\n image: mongo\n container_name: mongodb\n hostname: ${MONGODB_HOSTNAME:-mongodb}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 27017\n volumes:\n - ${CONFIG_PATH:-./volumes}/mongodb/data:/data/db\n environment:\n <<: *common-env\n healthcheck:\n test: [\"CMD-SHELL\", \"mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\\\"ping\\\").ok' > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 10s\n retries: 5\n start_period: 40s\n restart: always\n redis:\n # 🔹🔹 Redis 🔹🔹\n # NOTE: If you want to use Valkey (open source) instead of Redis (source available),\n # uncomment the Valkey statement and comment out the Redis statement.\n # Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.\n image: redis:alpine\n # image: valkey/valkey:alpine\n container_name: redis\n hostname: redis\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/redis:/data\n environment:\n <<: *common-env\n REDIS_HOST: ${REDIS_HOST:-redis}\n REDIS_PORT: ${REDIS_PORT:-6379}\n REDIS_DATABASE: ${REDIS_DATABASE:-0}\n REDIS_USERNAME: ${REDIS_USERNAME:-default}\n REDIS_PASSWORD: ${REDIS_PASSWORD:-redis}\n command: redis-server --appendonly yes --save 60 1 --bind 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 5s\n retries: 5\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 200M\n limits:\n cpus: 0.5\n memory: 4G\n restart: always\n open-webui:\n # 🔹🔹 Open WebUI 🔹🔹\n depends_on:\n mcpo:\n condition: service_healthy\n litellm:\n condition: service_healthy\n image: ghcr.io/open-webui/open-webui:main\n container_name: open-webui\n hostname: open-webui\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${OPEN_WEBUI_PORT:-8080}\n volumes:\n - ${CONFIG_PATH:-./volumes}/open-webui:/app/backend/data\n environment:\n # ===== GENERAL CONFIGURATION =====\n # Controls whether admin users can export data\n ENABLE_ADMIN_EXPORT: True\n\n # Enables admin users to access all chats\n ENABLE_ADMIN_CHAT_ACCESS: True\n\n # Bypasses model access control. (default: False)\n BYPASS_MODEL_ACCESS_CONTROL: True\n\n # Environment setting (dev/prod) - Docker default is prod\n ENV: prod\n\n # If set to False, all PersistentConfig variables are treated as regular variables\n ENABLE_PERSISTENT_CONFIG: True\n\n # Sets the port to run Open WebUI from\n PORT: ${OPEN_WEBUI_PORT:-8080}\n\n # When enabled, saves each chunk of streamed chat data to database in real time\n ENABLE_REALTIME_CHAT_SAVE: True\n\n # Used for identifying the Git SHA of the build for releases\n WEBUI_BUILD_HASH: dev-build\n\n # ===== AIOHTTP CLIENT CONFIGURATION =====\n # Specifies the timeout duration in seconds for the AIOHTTP client\n AIOHTTP_CLIENT_TIMEOUT: 300\n\n # Sets the timeout in seconds for fetching the model list\n AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST: 10\n\n # Sets the timeout in seconds for fetching the OpenAI model list\n AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST: 10\n\n # ===== DIRECTORY CONFIGURATION =====\n # Specifies the base directory for data storage\n DATA_DIR: ./data\n\n # Specifies the location of the built frontend files\n FRONTEND_BUILD_DIR: ../build\n\n # Specifies the directory for static files\n STATIC_DIR: ./static\n\n # ===== OLLAMA CONFIGURATION =====\n # Configures the Ollama backend URL\n OLLAMA_BASE_URL: /ollama\n\n # Builds the Docker image with a bundled Ollama instance\n USE_OLLAMA_DOCKER: false\n\n # If set, assumes Helm chart deployment\n K8S_FLAG: False\n\n # ===== SECURITY CONFIGURATION =====\n # Forwards user information as X-headers to OpenAI API and Ollama API\n ENABLE_FORWARD_USER_INFO_HEADERS: False\n\n # Sets the SameSite attribute for session cookies (lax/strict/none)\n WEBUI_SESSION_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for session cookies\n WEBUI_SESSION_COOKIE_SECURE: False\n\n # Sets the SameSite attribute for auth cookies\n WEBUI_AUTH_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for auth cookies\n WEBUI_AUTH_COOKIE_SECURE: False\n\n # Enables or disables authentication\n WEBUI_AUTH: ${WEBUI_AUTH:-True}\n\n # Overrides the randomly generated string used for JSON Web Token\n WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY:?}\n\n # When enabled, makes automatic update checks and notifies about version updates\n ENABLE_VERSION_UPDATE_CHECK: True\n\n # Disables Open WebUI's network connections for update checks and automatic model downloads\n OFFLINE_MODE: False\n\n # Resets the config.json file on startup\n RESET_CONFIG_ON_START: False\n\n # Enables safe mode, which disables potentially unsafe features\n SAFE_MODE: False\n\n # Sets the allowed origins for Cross-Origin Resource Sharing (CORS)\n CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_CORS_ALLOWED_ORIGIN:-*}\n\n # Determines whether to allow custom models defined on the Hub\n RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE: True\n\n # Determines whether to allow custom models for reranking\n RAG_RERANKING_MODEL_TRUST_REMOTE_CODE: True\n\n # Toggles automatic update of the Sentence-Transformer model\n RAG_EMBEDDING_MODEL_AUTO_UPDATE: True\n\n # Toggles automatic update of the reranking model\n RAG_RERANKING_MODEL_AUTO_UPDATE: True\n\n # ===== VECTOR DATABASE CONFIGURATION =====\n # Specifies which vector database system to use\n VECTOR_DB: chroma\n\n # ===== RAG CONFIGURATION =====\n # Sets the directory for TikToken cache\n TIKTOKEN_CACHE_DIR: /app/backend/data/cache/tiktoken\n\n # Sets the batch size for OpenAI embeddings\n RAG_EMBEDDING_OPENAI_BATCH_SIZE: 1\n\n # ===== DOCKER-SPECIFIC CONFIGURATION =====\n # Indicates running in Docker environment\n DOCKER: true\n\n # Home directory for the container\n HOME: /root\n\n # Hugging Face home directory for embedding models\n HF_HOME: /app/backend/data/cache/embedding/models\n\n # Sentence Transformers home directory\n SENTENCE_TRANSFORMERS_HOME: /app/backend/data/cache/embedding/models\n\n # CUDA Docker version to use\n USE_CUDA_DOCKER_VER: cu128\n\n # Embedding model to use in Docker\n USE_EMBEDDING_MODEL_DOCKER: sentence-transformers/all-MiniLM-L6-v2\n\n # ===== TELEMETRY DISABLING =====\n # Disables anonymized telemetry\n ANONYMIZED_TELEMETRY: false\n\n # Disables tracking\n DO_NOT_TRACK: true\n\n # Disables Scarf analytics\n SCARF_NO_ANALYTICS: true\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.open-webui.rule: Host(`open-webui.$DOMAIN`) || Host(`open-webui.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.open-webui.loadbalancer.server.port: \"${OPEN_WEBUI_PORT:-8080}\"\n homepage.group: AI\n homepage.name: Open WebUI\n homepage.icon: open-webui.png\n homepage.href: https://open-webui.$DOMAIN/\n homepage.description: Open WebUI is a feature-rich self-hosted webui for chatting with GenAI.\n command: [\"bash\", \"start.sh\"]\n working_dir: /app/backend\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8080\"]\n interval: 5s\n timeout: 30s\n retries: 10\n restart: always\n mcpo:\n image: ghcr.io/open-webui/mcpo:main\n container_name: mcpo\n hostname: mcpo\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/mcpo/mcp_servers.json:/app/config/mcp_servers.json # TODO: use configs: syntax for configmap here.\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/logs:/app/logs\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/data:/app/data\n environment:\n MCPO_API_KEY: $MCPO_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mcpo.rule: Host(`mcpo.$DOMAIN`) || Host(`mcpo.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.mcpo.loadbalancer.server.port: 8000\n homepage.group: MCPO\n homepage.name: MCPO\n homepage.icon: mcpo.png\n homepage.href: https://mcpo.$DOMAIN/\n homepage.description: MCPO is a tool for managing and interacting with AI models.\n command: --api-key \"$MCPO_API_KEY\" --host 0.0.0.0 --port 8000 --cors-allow-origins \"*\" --config /app/config/mcp_servers.json\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/openapi.json\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n litellm:\n image: 'ghcr.io/berriai/litellm-database:main-stable'\n# image: ghcr.io/berriai/litellm:main-stable\n container_name: litellm\n hostname: litellm\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n depends_on:\n litellm-postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n volumes:\n - ${CONFIG_PATH:-./volumes}/litellm:/app/config\n configs:\n - source: litellm_config.yaml\n target: /app/config/litellm_config.yaml\n mode: 0440\n environment:\n - 'LITELLM_LOG=${LITELLM_LOG:-INFO}'\n - 'LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}'\n - 'UI_USERNAME=${LITELLM_UI_USERNAME:-admin}'\n - 'UI_PASSWORD=$LITELLM_MASTER_KEY'\n - 'DATABASE_URL=postgresql://${LITELLM_POSTGRES_USER:-litellm}:${LITELLM_POSTGRES_PASSWORD:-litellm}@${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}:5432/${LITELLM_POSTGRES_DB:-litellm}'\n - 'REDIS_HOST=${REDIS_HOSTNAME:-redis}'\n - 'REDIS_PORT=${REDIS_PORT:-6379}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'VOYAGE_API_KEY=$VOYAGE_API_KEY'\n - 'AI21_API_KEY=$AI21_API_KEY'\n - 'ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY'\n - 'APIFY_API_TOKEN=$APIFY_API_TOKEN'\n - 'APIPIE_API_KEY=$APIPIE_API_KEY'\n - 'ARLIAI_API_KEY=$ARLIAI_API_KEY'\n - 'AWANLLM_API_KEY=$AWANLLM_API_KEY'\n - 'BASETEN_API_KEY=$BASETEN_API_KEY'\n - 'BITO_ACCESS_KEY=$BITO_ACCESS_KEY'\n - 'BRAVE_API_KEY=$BRAVE_API_KEY'\n - 'CEREBRIUMAI_API_KEY=$CEREBRIUMAI_API_KEY'\n - 'DEEPINFRA_API_KEY=$DEEPINFRA_API_KEY'\n - 'DEEPGRAM_API_KEY=$DEEPGRAM_API_KEY'\n - 'DEEPSEEK_API_KEY=$DEEPSEEK_API_KEY'\n - 'DOCKER_TOKEN=$DOCKER_TOKEN'\n - 'DOCKERHUB_TOKEN=$DOCKERHUB_TOKEN'\n - 'EVERART_API_KEY=$EVERART_API_KEY'\n - 'EXA_API_KEY=$EXA_API_KEY'\n - 'FOREFRONTAI_API_KEY=$FOREFRONTAI_API_KEY'\n - 'GEMINI_API_KEY=$GEMINI_API_KEY'\n - 'GLAMA_API_KEY=$GLAMA_API_KEY'\n - 'GROK_API_KEY=$GROK_API_KEY'\n - 'GROQ_API_KEY=$GROQ_API_KEY'\n - 'HF_TOKEN=$HF_TOKEN'\n - 'HUGGINGFACE_ACCESS_TOKEN=$HUGGINGFACE_ACCESS_TOKEN'\n - 'HUGGINGFACE_API_TOKEN=$HUGGINGFACE_API_TOKEN'\n - 'JINA_API_KEY=$JINA_API_KEY'\n - 'KAGI_API_KEY=$KAGI_API_KEY'\n - 'KLUSTER_API_KEY=$KLUSTER_API_KEY'\n - 'LANGCHAIN_API_KEY=$LANGCHAIN_API_KEY'\n - 'LANGSMITH_API_KEY=$LANGSMITH_API_KEY'\n - 'LITELLM_MASTER_KEY=$LITELLM_MASTER_KEY'\n - 'MISTRAL_API_KEY=$MISTRAL_API_KEY'\n - 'MISTRALAI_API_KEY=$MISTRALAI_API_KEY'\n - 'OPENAI_API_KEY=$OPENAI_API_KEY'\n - 'OPENROUTER_API_KEY=$OPENROUTER_API_KEY'\n - 'PERPLEXITY_API_KEY=$PERPLEXITY_API_KEY'\n - 'PERPLEXITYAI_API_KEY=$PERPLEXITYAI_API_KEY'\n - 'REPLICATE_API_KEY=$REPLICATE_API_KEY'\n - 'SAMBANOVA_API_KEY=$SAMBANOVA_API_KEY'\n - 'SEARCH1API_KEY=$SEARCH1API_KEY'\n - 'SERPAPI_API_KEY=$SERPAPI_API_KEY'\n - 'SMITHERY_API_KEY=$SMITHERY_API_KEY'\n - 'TANDOOR_SECRET_KEY=$TANDOOR_SECRET_KEY'\n - 'TODOIST_API_KEY=$TODOIST_API_KEY'\n - 'TOGETHERAI_API_KEY=$TOGETHERAI_API_KEY'\n - 'UNIFY_API_KEY=$UNIFY_API_KEY'\n - 'UPSTAGE_API_KEY=$UPSTAGE_API_KEY'\n - 'UPSTAGEAI_API_KEY=$UPSTAGEAI_API_KEY'\n - 'VEYRAX_API_KEY=$VEYRAX_API_KEY'\n - 'YANDEX_API_KEY=$YANDEX_API_KEY'\n - 'YOU_API_KEY=$YOU_API_KEY'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.litellm.rule: Host(`litellm.$DOMAIN`) || Host(`litellm.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.litellm.loadbalancer.server.port: ${LITELLM_PORT:-4000}\n homepage.group: AI\n homepage.name: Litellm\n homepage.icon: litellm.png\n homepage.href: https://litellm.$DOMAIN/\n homepage.description: Litellm is a tool for managing and interacting with AI models.\n command: --config /app/config/litellm_config.yaml --port ${LITELLM_PORT:-4000} --host 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://localhost:${LITELLM_PORT:-4000}/health/liveliness\"]\n interval: 30s\n timeout: 15s\n retries: 5\n start_period: 30s\n restart: always\n litellm-postgres:\n# image: 'postgres:16-alpine'\n image: postgres:16.3-alpine3.20\n container_name: litellm-postgres\n hostname: ${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n volumes:\n - '${CONFIG_PATH:-./volumes}/litellm/pgdata:/var/lib/postgresql/data'\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB\"]\n interval: 5s\n timeout: 5s\n retries: 3\n restart: always\n searxng:\n # 🔹🔹 SearxNG 🔹🔹 # https://hub.docker.com/r/searxng/searxng\n # SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n image: docker.io/searxng/searxng\n container_name: searxng\n hostname: ${SEARXNG_HOSTNAME:-searxng}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # touch ${CONFIG_PATH:-./volumes}/searxng/limiter.toml\n - ${CONFIG_PATH:-./volumes}/searxng:/etc/searxng\n environment:\n <<: *common-env\n SEARXNG_BASE_URL: ${SEARXNG_URL:-http://searxng:8080}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: 8080\n homepage.group: Search\n homepage.name: SearxNG\n homepage.icon: searxng.png\n homepage.href: https://searxng.$DOMAIN/\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n healthcheck:\n test: [\"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n restart: always\n code-server:\n # 🔹🔹 Code Server 🔹🔹\n image: docker.io/linuxserver/code-server\n container_name: code-server\n hostname: code-server\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/code-server/dev/config:/config\n - ${CONFIG_PATH:-./volumes}/code-server/dev/workspace:/workspace\n - ${ROOT_PATH:-.}:/workspace\n user: ${PUID:-1001}:${PGID:-988}\n environment:\n <<: *common-env\n CODESERVER_PASSWORD: $SUDO_PASSWORD\n PASSWORD: $SUDO_PASSWORD\n CODESERVER_SUDO_PASSWORD: $SUDO_PASSWORD\n SUDO_PASSWORD: $SUDO_PASSWORD\n CODESERVER_DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.code-server.loadbalancer.server.port: 8443\n homepage.group: Infrastructure\n homepage.name: Code Dev\n homepage.icon: code-server.png\n homepage.href: https://code-server.$DOMAIN/\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0.15\n memory: 200M\n limits:\n cpus: 2\n memory: 4G\n restart: always\n\n init_prometheus:\n image: prom/prometheus\n container_name: init_prometheus\n hostname: init_prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n user: root\n entrypoint: /bin/sh -c \"chown -R 65534:65534 /prometheus\"\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n restart: \"no\"\n\n prometheus:\n depends_on:\n - init_prometheus\n image: prom/prometheus\n container_name: prometheus\n hostname: prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n configs:\n - source: prometheus.yml\n target: /etc/prometheus/prometheus.yml\n mode: 0777\n - source: alert.rules\n target: /etc/prometheus/alert.rules\n mode: 0777\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n - '--web.console.templates=/usr/share/prometheus/consoles'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.prometheus.rule: Host(`prometheus.$DOMAIN`) || Host(`prometheus.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.prometheus.loadbalancer.server.port: 9090\n restart: always\n\n bolabaden-nextjs:\n # 🔹🔹 bolabaden nextJS main website with integrated auth 🔹🔹\n build:\n context: ${SRC_PATH:-./projects}/bolabaden-site\n dockerfile: Dockerfile\n image: th3w1zard1/bolabaden-nextjs\n container_name: bolabaden-nextjs\n hostname: bolabaden-nextjs\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - ${BOLABADEN_NEXTJS_PORT:-3000}:${BOLABADEN_NEXTJS_PORT:-3000}\n volumes:\n - ${CONFIG_PATH:-./volumes}/tinyauth:/data\n environment:\n <<: *common-env\n NODE_ENV: production\n PORT: ${BOLABADEN_NEXTJS_PORT:-3000}\n HOSTNAME: ${BOLABADEN_NEXTJS_HOSTNAME:-0.0.0.0}\n # NextAuth.js Configuration (compatible with TinyAuth)\n SECRET: $TINYAUTH_SECRET?\n NEXTAUTH_URL: https://$DOMAIN\n NEXTAUTH_SECRET: $TINYAUTH_SECRET?\n APP_URL: https://auth.$DOMAIN\n USERS: $TINYAUTH_USERS\n # Google OAuth Configuration\n GOOGLE_CLIENT_ID: $TINYAUTH_GOOGLE_CLIENT_ID\n GOOGLE_CLIENT_SECRET: $TINYAUTH_GOOGLE_CLIENT_SECRET\n # GitHub OAuth Configuration\n GITHUB_CLIENT_ID: $TINYAUTH_GITHUB_CLIENT_ID\n GITHUB_CLIENT_SECRET: $TINYAUTH_GITHUB_CLIENT_SECRET\n # Additional settings (TinyAuth compatible)\n SESSION_EXPIRY: ${TINYAUTH_SESSION_EXPIRY:-604800} # 2 weeks session expiry\n COOKIE_SECURE: ${TINYAUTH_COOKIE_SECURE:-true} # Send cookie only with HTTPS\n APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # Customize login page title\n NEXT_PUBLIC_APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # For client-side access\n LOGIN_MAX_RETRIES: ${TINYAUTH_LOGIN_MAX_RETRIES:-15} # Maximum login attempts before account lockout\n LOGIN_TIMEOUT: ${TINYAUTH_LOGIN_TIMEOUT:-300} # Lock account for 5 minutes after too many failed attempts\n OAUTH_AUTO_REDIRECT: ${TINYAUTH_OAUTH_AUTO_REDIRECT:-none} # Options: none, github, google, or credentials\n OAUTH_WHITELIST: ${TINYAUTH_OAUTH_WHITELIST:-boden.crouch@gmail.com} # e.g. user1,user2,/^admin.*/\n # User level configuration\n ADMIN_ACCOUNTS: ${TINYAUTH_ADMIN_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of admin emails\n OWNER_ACCOUNTS: ${TINYAUTH_OWNER_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of owner emails\n labels:\n traefik.enable: \"true\"\n # Main website router\n traefik.http.routers.bolabaden-nextjs.rule: 'Host(`$DOMAIN`) || Host(`$TS_HOSTNAME.$DOMAIN`) || Host(`$DUCKDNS_DOMAIN`) || Host(`$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.bolabaden-nextjs.service: bolabaden-nextjs\n # Auth router (replaces tinyauth)\n #traefik.http.routers.tinyauth.rule: 'Host(`auth.$DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DOMAIN`) || Host(`auth.$DUCKDNS_DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n #traefik.http.routers.tinyauth.service: bolabaden-nextjs\n # ForwardAuth middleware\n #traefik.http.middlewares.tinyauth.forwardauth.address: http://bolabaden-nextjs:${BOLABADEN_NEXTJS_PORT:-3000}/api/auth/traefik\n # Service configuration\n traefik.http.services.bolabaden-nextjs.loadbalancer.server.port: ${BOLABADEN_NEXTJS_PORT:-3000}\n # Homepage integration\n homepage.group: Web Services\n homepage.name: Bolabaden\n homepage.icon: dashboard.png\n homepage.href: https://$DOMAIN/\n homepage.description: Bolabaden main website with embedded services and authentication\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n\n whoami:\n # 🔹🔹 Whoami 🔹🔹\n image: traefik/whoami\n container_name: whoami\n hostname: whoami\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: 'Host(`whoami.$DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DOMAIN`) || Host(`whoami.$DUCKDNS_DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n homepage.group: Web Services\n homepage.name: Whoami\n homepage.icon: whoami.png\n homepage.href: https://whoami.$DOMAIN\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n restart: always\n\n dokku:\n # 🔹🔹 Dokku 🔹🔹\n image: dokku/dokku:0.35.20\n container_name: dokku\n hostname: dokku\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - \"127.0.0.1:3022:22\" # SSH\n - \"127.0.0.1:8080:80\" # HTTP\n - \"127.0.0.1:8443:443\" # HTTPS\n volumes:\n - \"/var/lib/dokku:/mnt/dokku\" # Dokku data\n - \"/var/run/docker.sock:/var/run/docker.sock\" # Docker socket\n environment:\n DOKKU_HOSTNAME: dokku.$DOMAIN\n DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku\n DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dokku-http.service: dokku-http\n traefik.http.routers.dokku-https.service: dokku-https\n traefik.http.routers.dokku-ssh.service: dokku-ssh\n traefik.http.routers.dokku-http.rule: 'Host(`dokku-http.$DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-http.$DUCKDNS_DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-https.rule: 'Host(`dokku-https.$DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-https.$DUCKDNS_DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-ssh.rule: 'Host(`dokku-ssh.$DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-ssh.$DUCKDNS_DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dokku-http.loadbalancer.server.port: 80\n traefik.http.services.dokku-https.loadbalancer.server.port: 443\n traefik.http.services.dokku-ssh.loadbalancer.server.port: 22\n homepage.group: Infrastructure\n homepage.name: Dokku\n homepage.icon: dokku.png\n homepage.href: https://dokku.$DOMAIN/\n homepage.description: Dokku is a lightweight PaaS that runs on top of Docker.\n restart: always\n\n dozzle:\n # 🔹🔹 Dozzle 🔹🔹\n image: amir20/dozzle\n container_name: dozzle\n hostname: dozzle\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:z\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: 'Host(`dozzle.$DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DOMAIN`) || Host(`dozzle.$DUCKDNS_DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dozzle.loadbalancer.server.port: 8080\n homepage.group: System Monitoring\n homepage.name: Dozzle\n homepage.icon: dozzle.png\n homepage.href: https://dozzle.$DOMAIN/\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n restart: always\n\n homepage:\n # 🔹🔹 Homepage 🔹🔹 # https://github.com/gethomepage/homepage\n image: ghcr.io/gethomepage/homepage\n container_name: homepage\n hostname: homepage\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # DO NOT create a bind mount to the entire /app/public/ directory.\n - /var/run/docker.sock:/var/run/docker.sock:z\n - ${CONFIG_PATH:-./volumes}/homepage:/app/config\n environment:\n <<: *common-env\n HOMEPAGE_ALLOWED_HOSTS: ${HOMEPAGE_ALLOWED_HOSTS:-*}\n HOMEPAGE_VAR_TITLE: ${HOMEPAGE_VAR_TITLE:-Bolabaden}\n HOMEPAGE_VAR_SEARCH_PROVIDER: ${HOMEPAGE_VAR_SEARCH_PROVIDER:-google}\n HOMEPAGE_VAR_HEADER_STYLE: ${HOMEPAGE_VAR_HEADER_STYLE:-}\n HOMEPAGE_VAR_WEATHER_CITY: ${HOMEPAGE_VAR_WEATHER_CITY:-Chicago}\n HOMEPAGE_VAR_WEATHER_LAT: ${HOMEPAGE_VAR_WEATHER_LAT:-41.8781}\n HOMEPAGE_VAR_WEATHER_LONG: ${HOMEPAGE_VAR_WEATHER_LONG:--87.6298}\n # HOMEPAGE_VAR_WEATHER_TIME: ${HOMEPAGE_VAR_WEATHER_TIME:-}\n HOMEPAGE_VAR_WEATHER_UNIT: ${HOMEPAGE_VAR_WEATHER_UNIT:-fahrenheit}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: 'Host(`homepage.$DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DOMAIN`) || Host(`homepage.$DUCKDNS_DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.homepage.loadbalancer.server.port: 3000\n homepage.group: Dashboards\n homepage.name: Homepage\n homepage.icon: homepage.png\n homepage.href: https://homepage.$DOMAIN/\n homepage.description: Homepage is a dashboard that displays all of your services.\n healthcheck: # docker exec homepage ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 0.25 # deliberately hobble the CPU in favor of GPU transcoding\n memory: 1G\n restart: always\n\n watchtower:\n # 🔹🔹 Watchtower 🔹🔹\n image: containrrr/watchtower\n container_name: watchtower\n hostname: watchtower\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n# - ${CONFIG_PATH:-./volumes}/watchtower/data:/data\n environment:\n <<: *common-env\n WATCHTOWER_CLEANUP: ${WATCHTOWER_CLEANUP:-true}\n WATCHTOWER_SCHEDULE: ${WATCHTOWER_SCHEDULE:-0 0 6 * * *} # Run at 6am daily\n WATCHTOWER_NOTIFICATION_URL: ${WATCHTOWER_NOTIFICATION_URL:-}\n WATCHTOWER_NOTIFICATION_REPORT: ${WATCHTOWER_NOTIFICATION_REPORT:-true}\n WATCHTOWER_DEBUG: ${WATCHTOWER_DEBUG:-true}\n WATCHTOWER_LOG_LEVEL: ${WATCHTOWER_LOG_LEVEL:-debug}\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n restart: always\n\n flaresolverr:\n # 🔹🔹 Flaresolverr 🔹🔹 # https://github.com/flaresolverr/flaresolverr\n image: ghcr.io/flaresolverr/flaresolverr\n #image: ghcr.io/thephaseless/byparr\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${FLARESOLVERR_PORT:-8191}\n environment:\n <<: *common-env\n # FlareSolverr Environment Variables\n \n LOG_LEVEL: info # Verbosity of the logging. Use LOG_LEVEL=debug for more information.\n LOG_HTML: false # Only for debugging. If true all HTML that passes through the proxy will be logged to the console in debug level.\n CAPTCHA_SOLVER: none # Captcha solving method. It is used when a captcha is encountered. Note: none of the captcha solvers work with the current version of Flaresolverr.\n PORT: ${FLARESOLVERR_PORT:-8191} # Listening port.\n HOST: 0.0.0.0 # Listening interface.\n HEADLESS: ${FLARESOLVERR_HEADLESS:-true} # Only for debugging. To run the web browser in headless mode or visible.\n BROWSER_TIMEOUT: ${FLARESOLVERR_BROWSER_TIMEOUT:-120000} # If you are experiencing errors/timeouts because your system is slow, you can try to increase this value.\n TEST_URL: ${FLARESOLVERR_TEST_URL:-https://www.google.com} # FlareSolverr makes a request on start to make sure the web browser is working.\n PROMETHEUS_ENABLED: ${FLARESOLVERR_PROMETHEUS_ENABLED:-true} # Enable Prometheus exporter\n PROMETHEUS_PORT: ${PROMETHEUS_PORT:-9090} # Listening port for Prometheus exporter\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: 'Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DOMAIN`) || Host(`flaresolverr.$DUCKDNS_DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.flaresolverr.loadbalancer.server.port: ${FLARESOLVERR_PORT:-8191}\n homepage.group: Infrastructure\n homepage.name: Flaresolverr\n homepage.icon: flaresolverr.png\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:${FLARESOLVERR_PORT:-8191}/health > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n start_period: 60s\n cpus: 0.6\n mem_reservation: 64M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 64M\n limits:\n cpus: 0.6\n memory: 1G\n restart: always\n\n stremio:\n # 🔹🔹 Stremio 🔹🔹\n # Stream Movies/TV over debrid instantly.\n image: th3w1zard1/stremio-docker\n container_name: stremio\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n ports:\n - 11470:11470/tcp\n - 12470:12470/tcp\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/root/.stremio-server:/root/.stremio-server\n environment:\n SERVER_URL: ${STREMIO_SERVER_URL:-https://stremio.$DOMAIN/}\n WEBUI_LOCATION: ${STREMIO_WEBUI_LOCATION:-https://stremio-web.$DOMAIN/shell/}\n NO_CORS: ${STREMIO_NO_CORS:-0}\n CASTING_DISABLED: ${STREMIO_CASTING_DISABLED:-0}\n labels:\n traefik.enable: \"true\"\n # Router for Stremio Web UI (port 8080)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.stremio-web.rule: \"Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-web.$DUCKDNS_DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)\"\n traefik.http.routers.stremio-web.priority: 10\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: 8080\n # Router for Stremio API and Streaming Server (port 11470)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-http-server.rule: 'Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-api.$DUCKDNS_DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-api-http-server.priority: 100\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: 11470\n # Stremio HTTPS Streaming Server (port 12470)\n traefik.http.routers.stremio-https-server.service: stremio-https-server\n traefik.http.routers.stremio-https-server.rule: 'Host(`stremio.$DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio.$DUCKDNS_DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-https-server.priority: 100\n traefik.http.services.stremio-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-https-server.loadbalancer.server.port: 12470\n homepage.group: Media Streaming Platforms\n homepage.name: Stremio\n homepage.icon: stremio.png\n homepage.href: https://stremio.$DOMAIN/\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n healthcheck:\n test: [\"CMD-SHELL\", \"(curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\"]\n interval: 60s\n timeout: 5s\n retries: 3\n start_period: 1m30s\n cpu_shares: 10 # potentially should be 1\n mem_reservation: 256M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 256M\n limits:\n cpus: 2\n memory: 2G\n restart: always\n aiostreams:\n # 🔹🔹 AIOStreams 🔹🔹\n image: ghcr.io/viren070/aiostreams\n container_name: aiostreams\n hostname: ${AIOSTREAMS_HOSTNAME:-aiostreams}\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/aiostreams/data:/app/data\n environment:\n <<: *common-env\n # ==============================================================================\n # ESSENTIAL ADDON SETUP\n # ==============================================================================\n # These are the most important settings you'll need to configure.\n\n # --- Addon Identification ---\n # Descriptive name for your addon instance.\n ADDON_NAME: ${AIOSTREAMS_ADDON_NAME:-BadenAIO}\n # Unique identifier for your addon.\n ADDON_ID: aiostreams.$DOMAIN\n\n # --- Network Configuration ---\n # The port on which the addon will listen.\n # Default: 3000\n PORT: ${AIOSTREAMS_PORT:-3005}\n\n # The base URL of your addon. Highly recommended for proper functioning.\n # Used for generating installation URLs and identifying self-scraping.\n # Example: https://aiostreams.yourdomain.com\n BASE_URL: https://aiostreams.$DOMAIN\n\n # --- Security ---\n # CRITICAL: Secret key for encrypting addon configuration.\n # MUST be a 64-character hex string.\n # Generate one using:\n # Linux/macOS: openssl rand -hex 32\n # Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) })\n # Or: [System.Guid]::NewGuid().ToString(\"N\") + [System.Guid]::NewGuid().ToString(\"N\") (ensure it's 64 chars)\n SECRET_KEY: ${AIOSTREAMS_SECRET_KEY:-207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde}\n\n # API key to protect your addon installation and usage.\n # Leave empty to disable password protection.\n # Can be any string.\n ADDON_PASSWORD: ${AIOSTREAMS_ADDON_PASSWORD:-sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9}\n #\n # PostgreSQL example:\n # DATABASE_URI=postgres://username:password@host:port/database_name\n # (e.g., postgresql://postgres:password@localhost:5432/aiostreams)\n DATABASE_URI: ${AIOSTREAMS_DATABASE_URI:-sqlite://./data/db.sqlite}\n\n\n # ==============================================================================\n # DEBRID & OTHER SERVICE API KEYS\n # ==============================================================================\n\n # Provide a default TMDB access token to be used for the Title Matching filter if a user does not provide any.\n TMDB_ACCESS_TOKEN: $TMDB_ACCESS_TOKEN\n\n # Configure API keys for debrid services and others you plan to use.\n # 'DEFAULT_' values are pre-filled in the user's config page.\n # 'FORCED_' values override user settings and hide the option.\n\n # --- Real-Debrid ---\n DEFAULT_REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n #- FORCED_REALDEBRID_API_KEY=$REALDEBRID_API_KEY\n\n # --- AllDebrid ---\n DEFAULT_ALLDEBRID_API_KEY: $ALLDEBRID_API_KEY\n #- FORCED_ALLDEBRID_API_KEY=$ALLDEBRID_API_KEY\n\n # --- Premiumize ---\n DEFAULT_PREMIUMIZE_API_KEY: $PREMIUMIZE_API_KEY\n #- FORCED_PREMIUMIZE_API_KEY=$PREMIUMIZE_API_KEY\n\n # --- Debrid-Link ---\n DEFAULT_DEBRIDLINK_API_KEY: $DEBRIDLINK_API_KEY\n #- FORCED_DEBRIDLINK_API_KEY=$DEBRIDLINK_API_KEY\n\n # --- Torbox ---\n DEFAULT_TORBOX_API_KEY: $TORBOX_API_KEY\n #- FORCED_TORBOX_API_KEY=$TORBOX_API_KEY\n\n # --- OffCloud ---\n DEFAULT_OFFCLOUD_API_KEY: $OFFCLOUD_API_KEY\n #- FORCED_OFFCLOUD_API_KEY=$OFFCLOUD_API_KEY\n DEFAULT_OFFCLOUD_EMAIL: $OFFCLOUD_EMAIL\n #- FORCED_OFFCLOUD_EMAIL=$OFFCLOUD_EMAIL\n DEFAULT_OFFCLOUD_PASSWORD: $OFFCLOUD_PASSWORD\n #- FORCED_OFFCLOUD_PASSWORD=$OFFCLOUD_PASSWORD\n\n # --- Put.io ---\n DEFAULT_PUTIO_CLIENT_ID: $PUTIO_CLIENT_ID\n #- FORCED_PUTIO_CLIENT_ID=$PUTIO_CLIENT_ID\n DEFAULT_PUTIO_CLIENT_SECRET: $PUTIO_CLIENT_SECRET\n #- FORCED_PUTIO_CLIENT_SECRET=$PUTIO_CLIENT_SECRET\n\n # --- EasyNews ---\n DEFAULT_EASYNEWS_USERNAME: $EASYNEWS_USERNAME\n #- FORCED_EASYNEWS_USERNAME=$EASYNEWS_USERNAME\n DEFAULT_EASYNEWS_PASSWORD: $EASYNEWS_PASSWORD\n #- FORCED_EASYNEWS_PASSWORD=$EASYNEWS_PASSWORD\n\n # --- EasyDebrid ---\n DEFAULT_EASYDEBRID_API_KEY: $EASYDEBRID_API_KEY\n #- FORCED_EASYDEBRID_API_KEY=$EASYDEBRID_API_KEY\n\n # --- PikPak ---\n DEFAULT_PIKPAK_EMAIL: $PIKPAK_EMAIL\n #- FORCED_PIKPAK_EMAIL=$PIKPAK_EMAIL\n DEFAULT_PIKPAK_PASSWORD: $PIKPAK_PASSWORD\n #- FORCED_PIKPAK_PASSWORD=$PIKPAK_PASSWORD\n\n # --- Seedr ---\n DEFAULT_SEEDR_ENCODED_TOKEN: $SEEDR_ENCODED_TOKEN\n #- FORCED_SEEDR_ENCODED_TOKEN=$SEEDR_ENCODED_TOKEN\n\n\n # ==============================================================================\n # CUSTOMIZATION & ACCESS CONTROL\n # ==============================================================================\n\n # --- Custom HTML ---\n # Display custom HTML at the top of the addon's configuration page.\n # Example: CUSTOM_HTML=\"<div>Welcome to my AIOStreams!</div>\"\n CUSTOM_HTML: $AIOSTREAMS_CUSTOM_HTML\n\n # --- Trusted Users ---\n # Comma-separated list of trusted UUIDs.\n # Trusted users can access features like regex filters if REGEX_FILTER_ACCESS is 'trusted'.\n # Example: TRUSTED_UUIDS=ae32f456-1234-5678-9012-345678901234,another-uuid-here\n TRUSTED_UUIDS: $AIOSTREAMS_TRUSTED_UUIDS\n\n # --- Regex Filter Access ---\n # Controls who can use regex filters.\n # 'none': No one can use regex filters.\n # 'trusted': Only users listed in TRUSTED_UUIDS.\n # 'all': All users (only recommended if ADDON_PASSWORD is set).\n # Default: trusted\n REGEX_FILTER_ACCESS: ${AIOSTREAMS_REGEX_FILTER_ACCESS:-trusted}\n\n # ==============================================================================\n # CACHE CONFIGURATION\n # ==============================================================================\n\n # --- Default maximum cache size ----\n # The maximum number of items that can be held in a given cache instance, if not overriden by a specific cache instance\n DEFAULT_MAX_CACHE_SIZE: ${AIOSTREAMS_DEFAULT_MAX_CACHE_SIZE:-100000}\n\n # --- Proxy IP TTL (StremThru/MediaFlow Proxy)\n # The Time-To-Live (in seconds) of items in the Public IP cache.\n # Set to -1 to disable caching\n PROXY_IP_CACHE_TTL: ${AIOSTREAMS_PROXY_IP_CACHE_TTL:-900} # Default is 900\n\n # --- Addon Resource Caching ---\n # Control the Caching of resources fetched from other addons\n # Set to -1 to disable caching.\n MANIFEST_CACHE_TTL: ${AIOSTREAMS_MANIFEST_CACHE_TTL:-300} # Default is 300\n SUBTITLE_CACHE_TTL: ${AIOSTREAMS_SUBTITLE_CACHE_TTL:-300} # Default is 300\n STREAM_CACHE_TTL: ${AIOSTREAMS_STREAM_CACHE_TTL:-1} # Default is 1\n CATALOG_CACHE_TTL: ${AIOSTREAMS_CATALOG_CACHE_TTL:-300} # Default is 300\n META_CACHE_TTL: ${AIOSTREAMS_META_CACHE_TTL:-300} # Default is 300\n ADDON_CATALOG_CACHE_TTL: ${AIOSTREAMS_ADDON_CATALOG_CACHE_TTL:-300} # Default is 300\n\n # --- RPDB API Key Validation Caching ---\n # Control how long a valid API key check is cached for\n # Default: 7 days\n RPDB_API_KEY_VALIDITY_CACHE_TTL: ${AIOSTREAMS_RPDB_API_KEY_VALIDITY_CACHE_TTL:-604800}\n\n # --- Self-Scraping ---\n # Prevent this AIOStreams instance from being added as an addon to itself.\n # Default: true\n DISABLE_SELF_SCRAPING: ${AIOSTREAMS_DISABLE_SELF_SCRAPING:-true}\n\n # --- Log Level ---\n # Set the verbosity of logs. Options: \"error\", \"warn\", \"info\", \"http\", \"verbose\",\"debug\", \"silly\"\n # Default: info\n LOG_LEVEL: ${AIOSTREAMS_LOG_LEVEL:-info}\n\n # --- Log Format ---\n # Output logs in \"json\" or \"text\" format.\n # Default: text\n LOG_FORMAT: ${AIOSTREAMS_LOG_FORMAT:-text}\n\n # --- Log Sensitive Information ---\n # Whether to include potentially sensitive info (like API keys) in logs.\n # Useful for debugging, but disable for production if concerned.\n # Default: true\n LOG_SENSITIVE_INFO: ${AIOSTREAMS_LOG_SENSITIVE_INFO:-true}\n\n # --- Log Timezone ---\n # Adjust the timezone used for logging\n # e.g. Europe/Paris, America/New_York\n LOG_TIMEZONE: ${TZ:-America/Chicago}\n\n # --- Stream Proxy Enabled ---\n # DEFAULT_PROXY_ENABLED: ${AIOSTREAMS_DEFAULT_PROXY_ENABLED:-true} # Default state for enabling a stream proxy.\n FORCE_PROXY_ENABLED: ${AIOSTREAMS_FORCE_PROXY_ENABLED:-true} # Force stream proxy on/off for all users.\n\n # --- Stream Proxy ID ---\n # 'mediaflow' or 'stremthru'\n DEFAULT_PROXY_ID: ${AIOSTREAMS_DEFAULT_PROXY_ID:-stremthru}\n # FORCE_PROXY_ID: stremthru\n\n # --- Stream Proxy URL ---\n # URL of your MediaFlow or StremThru instance.\n DEFAULT_PROXY_URL: http://stremthru:8080\n # FORCE_PROXY_URL: ${STREMTHRU_INTERNAL_URL:-http://stremthru:8080}\n\n # --- Stream Proxy Credentials ---\n # Format: username:password\n DEFAULT_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n # FORCE_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n\n # --- Stream Proxy Public IP ---\n # Public IP for the proxy, if needed.\n # DEFAULT_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n # FORCE_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n\n # --- Proxied Services ---\n # Comma-separated list of services whose streams should be proxied (e.g., realdebrid,alldebrid).\n # DEFAULT_PROXY_PROXIED_SERVICES:\n # FORCE_PROXY_PROXIED_SERVICES:\n\n # --- Disable Proxied Addons Feature ---\n # If true, it disables the 'Proxied Addons' option.\n # FORCE_PROXY_DISABLE_PROXIED_ADDONS: ${AIOSTREAMS_FORCE_PROXY_DISABLE_PROXIED_ADDONS:-false}\n\n # --- Encrypt Streaming URLs ---\n # Encrypt MediaFlow/StremThru URLs for better compatibility with external players.\n ENCRYPT_MEDIAFLOW_URLS: ${AIOSTREAMS_ENCRYPT_MEDIAFLOW_URLS:-true}\n ENCRYPT_STREMTHRU_URLS: ${AIOSTREAMS_ENCRYPT_STREMTHRU_URLS:-true}\n\n\n # --- Forced Public proxy URL adjustments ----\n # If you'd like to force some adjustments to be made to the streaming urls generated by either proxy, you can do that here.\n # This is useful when you want to use a local url for requests but have AIOStreams force the urls to use a specific host, port, and protocol.\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN # Default is stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: 443\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n\n\n # ==============================================================================\n # ADVANCED CONFIGURATION & LIMITS\n # ==============================================================================\n\n # --- General Default Timeout ---\n # Default timeout in milliseconds for all requests if not overridden by a specific timeout.\n # Default: 15000 (15 seconds)\n DEFAULT_TIMEOUT: ${AIOSTREAMS_DEFAULT_TIMEOUT:-15000}\n\n # --- Configuration Limits ---\n # Maximum number of addons allowed per AIOStreams configuration.\n MAX_ADDONS: ${AIOSTREAMS_MAX_ADDONS:-100}\n # Maximum number of groups allowed per AIOStreams configuration\n MAX_GROUPS: ${AIOSTREAMS_MAX_GROUPS:-50}\n # Maximum number of keyword filters per AIOStreams configuration.\n MAX_KEYWORD_FILTERS: ${AIOSTREAMS_MAX_KEYWORD_FILTERS:-50}\n # Maximum number of condition filters per AIOStreams configuration\n MAX_CONDITION_FILTERS: ${AIOSTREAMS_MAX_CONDITION_FILTERS:-200}\n # Maximum timeout (ms) an addon can be set to via override.\n MAX_TIMEOUT: ${AIOSTREAMS_MAX_TIMEOUT:-50000}\n # Minimum timeout (ms) an addon can be set to via override.\n MIN_TIMEOUT: ${AIOSTREAMS_MIN_TIMEOUT:-1000}\n\n\n # ==============================================================================\n # RATE LIMIT CONFIGURATION\n # ==============================================================================\n # Configure rate limits to prevent abuse. Typically, defaults are fine.\n\n # --- Disable Rate Limits ---\n # Set to true to disable all rate limits (NOT RECOMMENDED).\n # Default: false\n DISABLE_RATE_LIMITS: ${AIOSTREAMS_DISABLE_RATE_LIMITS:-false}\n\n # Window and Max requests refer to the maximum number of requests a user can make within a specific timeframe\n\n # --- Static File Serving ---\n STATIC_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STATIC_RATE_LIMIT_WINDOW:-5}\n STATIC_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STATIC_RATE_LIMIT_MAX_REQUESTS:-75}\n\n # --- User API ---\n USER_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_USER_API_RATE_LIMIT_WINDOW:-5}\n USER_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_USER_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stream API ---\n STREAM_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_WINDOW:-5}\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Format API ---\n FORMAT_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_WINDOW:-5}\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Catalog API ---\n CATALOG_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_WINDOW:-5}\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Stream ---\n STREMIO_STREAM_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_WINDOW:-15}\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Catalog ---\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_WINDOW:-5}\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Stremio Manifest ---\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_WINDOW:-5}\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Subtitle ---\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_WINDOW:-5}\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Meta ---\n STREMIO_META_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_WINDOW:-5}\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_MAX_REQUESTS:-15}\n\n\n # ==============================================================================\n # INACTIVE USER PRUNING\n # ==============================================================================\n # Automatically prune (delete) inactive user configurations.\n\n # --- Prune Interval ---\n # How often to check for inactive users, in seconds.\n # Default: 86400 (1 day)\n PRUNE_INTERVAL: 8640000\n\n # --- Prune Max Inactivity Days ---\n # Maximum days of inactivity before a user's configuration is pruned.\n # Set to -1 to disable\n PRUNE_MAX_DAYS: -1\n\n # ==============================================================================\n # EXTERNAL ADDON SERVICE URLs & TIMEOUTS\n # ==============================================================================\n # URLs and default timeouts for various external Stremio addons that AIOStreams can integrate with.\n # Change these if you use self-hosted versions or if defaults become outdated.\n\n # ----------- COMET ------------\n COMET_URL: ${COMET_INTERNAL_URL:-http://comet:3000}\n MEDIAFUSION_URL: ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000}\n MEDIAFUSION_CONFIG_TIMEOUT: ${MEDIAFUSION_CONFIG_TIMEOUT:-5000}\n MEDIAFUSION_API_PASSWORD: $SUDO_PASSWORD\n DEFAULT_JACKETTIO_INDEXERS: '${JACKETTIO_INDEXERS:-[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]}'\n DEFAULT_JACKETTIO_STREMTHRU_URL: ${JACKETTIO_STREMTHRU_URL:-https://stremthru.13377001.xyz}\n STREMTHRU_STORE_URL: ${STREMTHRU_STORE_INTERNAL_URL:-http://stremthru:8080/stremio/store}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: 'Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DOMAIN`) || Host(`aiostreams.$DUCKDNS_DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.aiostreams.loadbalancer.server.port: ${AIOSTREAMS_PORT:-3005}\n homepage.group: Stremio Addons\n homepage.name: AIOStreams\n homepage.icon: aiostreams.png\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n cpu_shares: 10\n mem_reservation: 50M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 50M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n jackett:\n # 🔹🔹 Jackett 🔹🔹\n depends_on:\n flaresolverr:\n condition: service_healthy\n image: linuxserver/jackett\n container_name: jackett\n hostname: jackett\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/jackett/config:/config\n - /mnt/remote/blackhole:/blackhole\n environment:\n <<: *common-env\n AUTO_UPDATE: ${JACKETT_AUTO_UPDATE:-true}\n RUN_OPTS: \"${JACKETT_RUN_OPTS:-}\"\n JACKETT_API_KEY: $JACKETT_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.jackett.rule: 'Host(`jackett.$DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DOMAIN`) || Host(`jackett.$DUCKDNS_DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.jackett.loadbalancer.server.port: 9117\n homepage.group: Source Aggregator\n homepage.name: Jackett Indexer\n homepage.icon: jackett.png\n homepage.href: https://jackett.$DOMAIN/\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.weight: 1\n homepage.widget.type: jackett\n homepage.widget.url: ${JACKETT_INTERNAL_URL:-http://jackett:9117}\n homepage.widget.key: $JACKETT_API_KEY\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=$JACKETT_API_KEY || exit 1\"]\n interval: 30s\n timeout: 10s\n start_period: 60s\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n docker-socket-proxy:\n # 🔹🔹 Docker Socket Proxy 🔹🔹\n image: tecnativa/docker-socket-proxy\n container_name: dockerproxy\n hostname: dockerproxy\n extra_hosts: *common-hostname-aliases\n privileged: true\n networks:\n - publicnet\n ports:\n - 127.0.0.1:2375:2375\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n restart: always\n prowlarr:\n # 🔹🔹 Prowlarr 🔹🔹\n image: linuxserver/prowlarr\n container_name: prowlarr\n hostname: prowlarr\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n configs:\n - source: prowlarr_indexer_proxy.json\n target: /config/prowlarr_indexer_proxy.json\n mode: 0777\n - source: prowlarr_indexers.json\n target: /etc/config/prowlarr_indexers.json\n mode: 0777\n volumes:\n - ${CONFIG_PATH:-./volumes}/prowlarr/config:/config:rw\n - ${CONFIG_PATH:-./volumes}/prowlarr/config/etc/config:/etc/config\n environment:\n <<: *common-env\n PROWLARR_API_KEY: $PROWLARR_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.middlewares.prowlarr.forwardauth.authResponseHeaders: authorization\n tinyauth.basic.username: $PROWLARR_USERNAME\n tinyauth.basic.password.plain: $PROWLARR_PASSWORD\n traefik.http.routers.prowlarr.rule: 'Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DOMAIN`) || Host(`prowlarr.$DUCKDNS_DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.prowlarr.loadbalancer.server.port: 9696\n homepage.group: Indexers\n homepage.name: Prowlarr\n homepage.icon: prowlarr.png\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.weight: 1\n homepage.widget.type: prowlarr\n homepage.widget.url: ${PROWLARR_INTERNAL_URL:-http://prowlarr:9696}\n homepage.widget.key: $PROWLARR_API_KEY\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n limits:\n cpus: '2.0'\n memory: 6G\n reservations:\n cpus: '0.0'\n memory: 128M\n healthcheck: # docker exec prowlarr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"curl -fs -H \\\"Authorization: Bearer $$PROWLARR_API_KEY\\\" http://127.0.0.1:9696/api/v1/system/status || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 120s\n restart: always\n comet:\n image: g0ldyy/comet\n container_name: comet\n hostname: comet\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/comet/data:/data\n environment:\n <<: *common-env\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: ${COMET_PORT:-2020}\n FASTAPI_WORKERS: ${CPU_COUNT:-4}\n USE_GUNICORN: True\n DASHBOARD_ADMIN_PASSWORD: $SUDO_PASSWORD\n DATABASE_TYPE: sqlite\n DATABASE_PATH: /data/comet.db\n METADATA_CACHE_TTL: 2592000\n TORRENT_CACHE_TTL: 1296000\n DEBRID_CACHE_TTL: 86400\n INDEXER_MANAGER_TYPE: prowlarr # jackett, prowlarr, none.\n INDEXER_MANAGER_URL: ${PROWLARR_HOST:-http://prowlarr:9696} # http://jackett:9117, http://prowlarr:9696\n INDEXER_MANAGER_API_KEY: $PROWLARR_API_KEY # $JACKETT_API_KEY, $PROWLARR_API_KEY\n INDEXER_MANAGER_TIMEOUT: 60\n INDEXER_MANAGER_INDEXERS: ${COMET_INDEXERS:-[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]}\n GET_TORRENT_TIMEOUT: 2\n DOWNLOAD_TORRENT_FILES: True\n SCRAPE_COMET: true\n COMET_URL: https://comet.elfhosted.com\n SCRAPE_ZILEAN: true\n ZILEAN_URL: https://zilean.elfhosted.com\n SCRAPE_TORRENTIO: true\n TORRENTIO_URL: https://torrentio.strem.fun\n SCRAPE_MEDIAFUSION: true\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n STREMTHRU_URL: https://stremthru.$DOMAIN\n PROXY_DEBRID_STREAM: True\n PROXY_DEBRID_STREAM_PASSWORD: $STREMTHRU_PROXY_AUTH\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: -1\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: $PREMIUMIZE_API_KEY\n REMOVE_ADULT_CONTENT: True\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: 'Host(`comet.$DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DOMAIN`) || Host(`comet.$DUCKDNS_DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.comet.loadbalancer.server.port: ${COMET_PORT:-2020}\n homepage.group: Stremio Addons\n homepage.name: Comet\n homepage.icon: comet.png\n homepage.href: https://comet.$DOMAIN/\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n healthcheck: # docker exec comet ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:$${FASTAPI_PORT:-2020}/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 5s\n retries: 3\n start_period: 15s\n restart: always\n mediafusion:\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n image: mhdzumair/mediafusion\n container_name: mediafusion\n hostname: mediafusion\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n <<: *common-env\n # CORE APPLICATION SETTINGS\n ADDON_NAME: \"${MEDIAFUSION_ADDON_NAME:-MediaFusion}\" # The name of the MediaFusion addon\n VERSION: \"1.0.0\" # The version of the MediaFusion addon\n DESCRIPTION: \"MediaFusion | $DOMAIN\" # A brief description of the MediaFusion addon to show on Stremio Addon page\n BRANDING_DESCRIPTION: \"${MEDIAFUSION_BRANDING_DESCRIPTION:-}\" # Additional branding description text\n CONTACT_EMAIL: \"webmaster@$DOMAIN\" # The contact email for the MediaFusion addon\n HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where MediaFusion is hosted (required)\n POSTER_HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where poster images are served from (default: Same as host_url)\n SECRET_KEY: \"${MEDIAFUSION_SECRET_KEY:-c75ac92df70c4383c8d1bb37f65454f9}\" # A 32-character secret key for securely signing the session (required)\n API_PASSWORD: \"$SUDO_PASSWORD\" # The password for accessing the API endpoints (required)\n LOGGING_LEVEL: \"INFO\" # The logging level of the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)\n LOGO_URL: \"${MEDIAFUSION_LOGO_URL:-}\" # The URL of the MediaFusion logo\n IS_PUBLIC_INSTANCE: \"${MEDIAFUSION_IS_PUBLIC_INSTANCE:-False}\" # Set to True for community instances that don't require authentication except for /scraper endpoint\n MIN_SCRAPING_VIDEO_SIZE: \"${MEDIAFUSION_MIN_SCRAPING_VIDEO_SIZE:-26214400}\" # Minimum video size in bytes (25 MB) for scraping\n METADATA_PRIMARY_SOURCE: \"${MEDIAFUSION_METADATA_PRIMARY_SOURCE:-tmdb}\" # Primary source for metadata. Options: \"imdb\" or \"tmdb\"\n # STREAMING PROVIDER SETTINGS\n #DISABLED_PROVIDERS: \"\" # List of disabled streaming providers (p2p, realdebrid, seedr, debridlink, alldebrid, offcloud, pikpak, torbox, premiumize, qbittorrent, stremthru, easydebrid)\n # DATABASE AND CACHE SETTINGS\n MONGO_URI: \"${MEDIAFUSION_MONGO_URI:-mongodb://mongodb:27017/mediafusion}\" # MongoDB connection URI (required)\n DB_MAX_CONNECTIONS: \"${MEDIAFUSION_DB_MAX_CONNECTIONS:-50}\" # Maximum database connections\n REDIS_URL: \"${MEDIAFUSION_REDIS_URL:-redis://redis:6379}\" # Redis service URL for caching and tasks\n REDIS_MAX_CONNECTIONS: \"${MEDIAFUSION_REDIS_MAX_CONNECTIONS:-100}\" # Maximum Redis connections\n # EXTERNAL SERVICE SETTINGS\n# REQUESTS_PROXY_URL: \"${MEDIAFUSION_REQUESTS_PROXY_URL:-}\" # Optional proxy URL for requests\n PLAYWRIGHT_CDP_URL: \"${PLAYWRIGHT_CDP_URL:-ws://browserless:3000?blockAds=true&stealth=true}\" # Playwright CDP service URL\n FLARESOLVERR_URL: \"${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}\" # FlareSolverr service URL\n TMDB_API_KEY: \"$TMDB_API_KEY\" # TMDB API key for metadata fetching\n # PROWLARR SETTINGS\n IS_SCRAP_FROM_PROWLARR: \"True\" # Enable/disable Prowlarr scraping\n PROWLARR_API_KEY: \"$PROWLARR_API_KEY\" # Prowlarr API key\n PROWLARR_URL: \"${PROWLARR_HOST:-http://prowlarr:9696}\" # Prowlarr service URL\n PROWLARR_LIVE_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_LIVE_TITLE_SEARCH:-True}\" # Enable live title search in Prowlarr\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_BACKGROUND_TITLE_SEARCH:-True}\" # Enable background title search\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"${MEDIAFUSION_PROWLARR_SEARCH_QUERY_TIMEOUT:-30}\" # Search query timeout in seconds\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS:-10}\" # Max immediate processes\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n PROWLARR_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_FEED_SCRAPE_INTERVAL_HOUR:-3}\" # Feed scraping interval in hours\n # JACKETT SETTINGS\n IS_SCRAP_FROM_JACKETT: \"True\" # Enable/disable Jackett scraping\n JACKETT_URL: \"${JACKETT_HOST:-http://jackett:9117}\" # Jackett service URL\n JACKETT_API_KEY: \"$JACKETT_API_KEY\" # Jackett API key\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\" # Search interval in hours\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\" # Search query timeout in seconds\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\" # Max immediate processes\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\" # Max process time in seconds\n JACKETT_LIVE_TITLE_SEARCH: \"True\" # Enable live title search\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\" # Enable background title search\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\" # Feed scraping interval in hours\n # ZILEAN SETTINGS\n IS_SCRAP_FROM_ZILEAN: \"True\" # Enable/disable Zilean scraping\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\" # Search interval in hours\n ZILEAN_URL: \"${ZILEAN_URL:-https://zilean.elfhosted.com}\" # Zilean service URL (https://zilean.elfhosted.com has zero rate limits)\n # TORRENTIO SETTINGS\n IS_SCRAP_FROM_TORRENTIO: \"True\" # Enable/disable Torrentio scraping\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_TORRENTIO_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n TORRENTIO_URL: \"${TORRENTIO_URL:-https://torrentio.strem.fun}\" # Torrentio service URL\n # MEDIAFUSION SETTINGS\n IS_SCRAP_FROM_MEDIAFUSION: \"True\" # Enable/disable MediaFusion scraping\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_MEDIAFUSION_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n MEDIAFUSION_URL: \"${MEDIAFUSION_URL:-https://mediafusion.elfhosted.com}\" # MediaFusion service URL\n SYNC_DEBRID_CACHE_STREAMS: \"${MEDIAFUSION_SYNC_DEBRID_CACHE_STREAMS:-False}\" # Enable syncing debrid cache streams\n # BT4G SETTINGS\n IS_SCRAP_FROM_BT4G: \"True\" # Enable/disable BT4G scraping\n BT4G_URL: \"${BT4G_URL:-https://bt4gprx.com}\" # BT4G service URL\n BT4G_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_BT4G_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n BT4G_SEARCH_TIMEOUT: \"${MEDIAFUSION_BT4G_SEARCH_TIMEOUT:-10}\" # Search timeout in seconds\n BT4G_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS:-15}\" # Max immediate processes\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n # TELEGRAM SETTINGS\n TELEGRAM_BOT_TOKEN: \"$TELEGRAM_BOT_TOKEN\" # Telegram bot token for notifications about contribution streams\n TELEGRAM_CHAT_ID: \"$TELEGRAM_CHAT_ID\" # Telegram chat ID for notifications\n # CONTENT FILTERING SETTINGS\n ADULT_CONTENT_REGEX_KEYWORDS: \"\\\\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\\\b\" # Regex pattern for filtering adult content\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\" # Enable adult content filtering in torrent titles\n # FEATURE TOGGLES\n IS_SCRAP_FROM_YTS: \"True\" # Enable/disable YTS scraping\n ENABLE_RATE_LIMIT: \"True\" # Enable/disable rate limiting\n VALIDATE_M3U8_URLS_LIVENESS: \"True\" # Validate M3U8 URLs for liveness\n STORE_STREMTHRU_MAGNET_CACHE: \"False\" # Store StremThru magnet cache\n SCRAPE_WITH_AKA_TITLES: \"True\" # Include alternative titles in scraping\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\" # Enable fetching torrent metadata from P2P (Caution: may raise DMCA issues) # TODO: Enable this\n # TIME-RELATED SETTINGS\n META_CACHE_TTL: \"1800\" # Metadata cache TTL in seconds (Default: 1800 seconds = 30 minutes)\n WORKER_MAX_TASKS_PER_CHILD: \"20\" # Max tasks per worker child process\n # SCHEDULER SETTINGS\n DISABLE_ALL_SCHEDULER: \"False\" # Disable all schedulers\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\" # Background search interval in hours\n BACKGROUND_SEARCH_CRONTAB: \"*/5 * * * *\" # Background search schedule\n TAMILMV_SCHEDULER_CRONTAB: \"0 */3 * * *\" # TamilMV scheduler crontab expression\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: \"0 */6 * * *\" # Tamil Blasters scheduler crontab expression\n FORMULA_TGX_SCHEDULER_CRONTAB: \"*/30 * * * *\" # Formula TGX scheduler crontab expression\n NOWMETV_SCHEDULER_CRONTAB: \"0 0 * * *\" # NowMeTV scheduler crontab expression\n NOWSPORTS_SCHEDULER_CRONTAB: \"0 10 * * *\" # NowSports scheduler crontab expression\n TAMILULTRA_SCHEDULER_CRONTAB: \"0 8 * * *\" # TamilUltra scheduler crontab expression\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: \"0 */6 * * *\" # Validate TV streams in DB crontab expression\n SPORT_VIDEO_SCHEDULER_CRONTAB: \"*/20 * * * *\" # Sport video scheduler crontab expression\n DLHD_SCHEDULER_CRONTAB: \"25 * * * *\" # DLHD scheduler crontab expression\n MOTOGP_TGX_SCHEDULER_CRONTAB: \"0 5 * * *\" # MotoGP TGX scheduler crontab expression\n UPDATE_SEEDERS_CRONTAB: \"0 0 * * *\" # Update seeders crontab expression\n ARAB_TORRENTS_SCHEDULER_CRONTAB: \"0 0 * * *\" # Arab Torrents scheduler crontab expression\n WWE_TGX_SCHEDULER_CRONTAB: \"10 */3 * * *\" # WWE TGX scheduler crontab expression\n UFC_TGX_SCHEDULER_CRONTAB: \"30 */3 * * *\" # UFC TGX scheduler crontab expression\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: \"0 * * * *\" # Movies TV TGX scheduler crontab expression\n PROWLARR_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Prowlarr feed scraper crontab expression\n JACKETT_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Jackett feed scraper crontab expression\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: \"0 * * * *\" # Cleanup expired scraper task crontab expression\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: \"0 0 * * *\" # Cleanup expired cache task crontab expression\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediafusion.rule: 'Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DOMAIN`) || Host(`mediafusion.$DUCKDNS_DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediafusion.loadbalancer.server.port: 8000\n homepage.group: Stremio Addons\n homepage.name: MediaFusion\n homepage.icon: mediafusion.png\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n cpu_shares: 10\n mem_reservation: 512M\n deploy:\n resources:\n reservations:\n cpus: 0.01\n memory: 512M\n limits:\n cpus: 1\n memory: 1G\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: \"1m\"\n restart: always\n mediaflow-proxy:\n image: mhdzumair/mediaflow-proxy\n container_name: mediaflow-proxy\n hostname: mediaflow-proxy\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n expose:\n - ${MEDIAFLOW_PROXY_PORT:-8888}\n environment:\n <<: *common-env\n PORT: ${MEDIAFLOW_PROXY_PORT:-8888}\n API_PASSWORD: $MEDIAFLOW_PROXY_API_PASSWORD\n ENABLE_STREAMING_PROGRESS: \"false\"\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediaflow-proxy.middlewares: nginx-auth@file\n traefik.http.routers.mediaflow-proxy.rule: 'Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DOMAIN`) || Host(`mediaflow-proxy.$DUCKDNS_DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: ${MEDIAFLOW_PROXY_PORT:-8888}\n homepage.name: MediaFlow Proxy\n homepage.icon: mediaflow-proxy.png\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n healthcheck:\n test: [\"CMD-SHELL\", \"python3 -c \\\"import socket; s=socket.socket(); s.connect(('127.0.0.1', ${MEDIAFLOW_PROXY_PORT:-8888})); print('Healthcheck passed')\\\"\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: 10s\n restart: always\n\n stremthru:\n depends_on:\n redis:\n condition: service_healthy\n image: muniftanjim/stremthru\n container_name: stremthru\n hostname: stremthru\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/stremthru/app/data:/app/data\n environment:\n <<: *common-env\n STREMTHRU_LOG_LEVEL: ${STREMTHRU_LOG_LEVEL:-INFO} # DEBUG, INFO, WARN, ERROR\n STREMTHRU_LOG_FORMAT: ${STREMTHRU_LOG_FORMAT:-text} # json, text\n STREMTHRU_PROXY_AUTH: ${STREMTHRU_PROXY_AUTH:-admin:admin}\n STREMTHRU_AUTH_ADMIN: ${STREMTHRU_AUTH_ADMIN:-admin}\n\n # A list of store credentials per user. In a comma separated list of username:store_name:store_token.\n # You can also use * as the username to apply to all users.\n # This lets you use different API keys for different users.\n # e.g. something like *:realdebrid:abc...xyz would mean for all users, this API key would be used for Real Debrid.\n # (Not needed if using StremThru as a external proxy within other apps/addons like AIOStreams)\n STREMTHRU_STORE_AUTH: $STREMTHRU_STORE_AUTH\n\n # A list of proxy configurations per store. This lets you control what is proxied based on what store its from.\n # The format is a comma separated list of <store>:<true/false>\n # You can use * to apply to all stores.\n # e.g. *:true,premiumize:false would mean all stores are proxied, except for premiumize.\n # (Does not affect proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_STORE_CONTENT_PROXY: ${STREMTHRU_STORE_CONTENT_PROXY:-*:true,premiumize:false}\n\n # This is the maximum number of connections to the proxy per user.\n # In the format of a comma separated list of <username>:<number of connections> pairs.\n # e.g. user1:10,user2:5 would mean user1 can have 10 connections, and user2 can have 5 connections.\n # If you want to set a limit for all users, use * as the username.\n # A connection limit of 0 means no limit.\n # (This DOES affect the proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: ${STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT:-0}\n # ================================\n # This lets you enable or disable features in StremThru.\n # The format is a comma separated list of features, optionally prefixed with a - to disable them.\n # List of features:\n # - anime\n # - dmm_hashlist - Whether to scrape DMM hashlists for torrents.\n # - imdb_title\n # - stremio_list\n # - stremio_p2p\n # - stremio_sidekick\n # - stremio_store\n # - stremio_torz\n # - stremio_wrap\n # e.g. -dmm_hashlist,-imdb_title would disable the DMM hashlists and IMDB title features.\n # ================================\n STREMTHRU_FEATURE: '${STREMTHRU_FEATURE:-dmm_hashlist,imdb_title,stremio_list,stremio_sidekick,stremio_store,stremio_torz,stremio_wrap}'\n STREMTHRU_DATABASE_URI: ${STREMTHRU_DATABASE_URI:-sqlite://./data/stremthru.db}\n STREMTHRU_REDIS_URI: ${REDIS_HOST:-redis://redis:6379}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: 'Host(`stremthru.$DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DOMAIN`) || Host(`stremthru.$DUCKDNS_DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.stremthru.loadbalancer.server.port: 8080\n homepage.group: Stremio Addons\n homepage.name: StremThru\n homepage.icon: stremthru.png\n homepage.href: https://stremthru.$DOMAIN/\n homepage.description: StremThru is tunnel/proxy for debrid services.\n restart: always\n\n gptr:\n build:\n #context: https://github.com/th3w1zard1/gpt-researcher.git#master # :/frontend/nextjs\n context: ${SRC_PATH:-./projects}/gpt-researcher\n dockerfile: Dockerfile.fullstack\n image: th3w1zard1/ai-researchwizard\n container_name: gptr\n hostname: gptr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000 # Nginx-proxied access to GPTR.\n - 3001 # Internal NextJS GPTR site\n - 8000 # Static GPTR\n - 8080 # MCP Server Port\n volumes:\n - ${CONFIG_PATH:-./volumes}/gptr/logs:/usr/src/app/logs\n - ${CONFIG_PATH:-./volumes}/gptr/outputs:/usr/src/app/outputs\n - ${CONFIG_PATH:-./volumes}/gptr/reports:/usr/src/app/reports\n stdin_open: true\n environment:\n ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY\n BRAVE_API_KEY: $BRAVE_API_KEY\n DEEPSEEK_API_KEY: $DEEPSEEK_API_KEY\n EXA_API_KEY: $EXA_API_KEY\n FIRECRAWL_API_KEY: $FIRECRAWL_API_KEY\n FIRE_CRAWL_API_KEY: $FIRE_CRAWL_API_KEY\n GEMINI_API_KEY: $GEMINI_API_KEY\n GLAMA_API_KEY: $GLAMA_API_KEY\n GROQ_API_KEY: $GROQ_API_KEY\n HF_TOKEN: $HF_TOKEN\n HUGGINGFACE_ACCESS_TOKEN: $HUGGINGFACE_ACCESS_TOKEN\n HUGGINGFACE_API_TOKEN: $HUGGINGFACE_API_TOKEN\n LANGCHAIN_API_KEY: $LANGCHAIN_API_KEY\n MISTRAL_API_KEY: $MISTRAL_API_KEY\n MISTRALAI_API_KEY: $MISTRALAI_API_KEY\n OPENAI_API_KEY: $OPENAI_API_KEY\n OPENROUTER_API_KEY: $OPENROUTER_API_KEY\n PERPLEXITY_API_KEY: $PERPLEXITY_API_KEY\n PERPLEXITYAI_API_KEY: $PERPLEXITYAI_API_KEY\n REPLICATE_API_KEY: $REPLICATE_API_KEY\n REVID_API_KEY: $REVID_API_KEY\n SAMBANOVA_API_KEY: $SAMBANOVA_API_KEY\n SEARCH1API_KEY: $SEARCH1API_KEY\n SERPAPI_API_KEY: $SERPAPI_API_KEY\n TAVILY_API_KEY: $TAVILY_API_KEY\n TOGETHERAI_API_KEY: $TOGETHERAI_API_KEY\n UNIFY_API_KEY: $UNIFY_API_KEY\n UPSTAGE_API_KEY: $UPSTAGE_API_KEY\n UPSTAGEAI_API_KEY: $UPSTAGEAI_API_KEY\n YOU_API_KEY: $YOU_API_KEY\n CHOKIDAR_USEPOLLING: true\n LOGGING_LEVEL: DEBUG\n NEXT_PUBLIC_GA_MEASUREMENT_ID: $NEXT_PUBLIC_GA_MEASUREMENT_ID\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n LANGSMITH_TRACING: true\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_API_KEY: $LANGSMITH_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.gptr.service: gptr\n traefik.http.routers.gptr.rule: 'Host(`gptr-nextjs.$DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-nextjs.$DUCKDNS_DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr.loadbalancer.server.port: 3000\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr-legacy.rule: 'Host(`gptr.$DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr.$DUCKDNS_DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-legacy.loadbalancer.server.port: 8000\n traefik.http.routers.gptr-mcp.service: gptr-mcp\n traefik.http.routers.gptr-mcp.rule: 'Host(`gptr-mcp.$DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-mcp.$DUCKDNS_DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-mcp.loadbalancer.server.port: 8080\n homepage.group: AI\n homepage.name: AI Research Wizard\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.icon: gptr.png\n homepage.href: https://gptr.$DOMAIN/\n healthcheck: # docker exec gptr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"(wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1) || exit 1\"] # && (wget -qO- http://127.0.0.1:8080 > /dev/null 2>&1) || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 2m\n restart: always\n\nnetworks:\n publicnet: # https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge\n external: true # docker network create --driver=bridge --attachable publicnet --subnet=${PUBLICNET_SUBNET:-10.76.0.0/16} --gateway=${PUBLICNET_GATEWAY:-10.76.0.1} --ip-range=${PUBLICNET_IP_RANGE:-10.76.0.0/16} -o com.docker.network.bridge.name=br_publicnet\n attachable: true\n driver: bridge\n # uncomment below part of publicnet if you aren't creating it externally.\n name: publicnet\n driver_opts:\n com.docker.network.bridge.name: \"br_publicnet\"\n ipam:\n config:\n - subnet: ${PUBLICNET_SUBNET:-10.76.0.0/16}\n gateway: ${PUBLICNET_GATEWAY:-10.76.0.1}\n ip_range: ${PUBLICNET_IP_RANGE:-10.76.0.0/16}\n warp-nat-net:\n external: true\n attachable: true\n driver: bridge\n"}, "4c1b14a33076e9a31c2b9e64378ee95bde9cfbff": {"t": 1785773137.5530293, "n": 294327, "h": "d733a5f1a3ced04a", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\nx-common-hostname-aliases: &common-hostname-aliases\n - host.docker.internal:host-gateway\n\nx-local-ips: &local-ips\n - \"10.0.0.0/8\" # RFC 1918 Private Networks (IPv4)\n - \"172.16.0.0/12\"\n - \"192.168.0.0/16\"\n - \"169.254.0.0/16\" # RFC 3927 Link-Local (IPv4)\n - \"127.0.0.0/8\" # RFC 5735 Loopback (IPv4)\n - \"fc00::/7\" # RFC 4193 Unique Local (IPv6)\n - \"fe80::/10\" # RFC 4291 Link-Local (IPv6)\n - \"::1/128\" # RFC 4291 Loopback (IPv6)\n - \"2002::/16\" # RFC 3056 6to4 (IPv6)\n - \"100.64.0.0/10\" # Tailscale CGNAT range\n\nx-cloudflare-ips: &cloudflare-ips\n - \"103.21.244.0/22\"\n - \"103.22.200.0/22\"\n - \"103.31.4.0/22\"\n - \"104.16.0.0/13\"\n - \"104.24.0.0/14\"\n - \"108.162.192.0/18\"\n - \"131.0.72.0/22\"\n - \"141.101.64.0/18\"\n - \"162.158.0.0/15\"\n - \"172.64.0.0/13\"\n - \"173.245.48.0/20\"\n - \"188.114.96.0/20\"\n - \"190.93.240.0/20\"\n - \"197.234.240.0/22\"\n - \"198.41.128.0/17\"\n - \"2400:cb00::/32\"\n - \"2606:4700::/32\"\n - \"2803:f800::/32\"\n - \"2405:b500::/32\"\n - \"2405:8100::/32\"\n - \"2a06:98c0::/29\"\n - \"2c0f:f248::/32\"\n\nx-trusted-ips: &trusted-ips\n - *local-ips\n - *cloudflare-ips\n\n\nconfigs:\n #######################################################################################\n # Prometheus Configurations\n #######################################################################################\n prometheus.yml:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n # my global config\n global:\n scrape_interval: 15s # By default, scrape targets every 15 seconds.\n evaluation_interval: 15s # By default, scrape targets every 15 seconds.\n # scrape_timeout is set to the global default (10s).\n # Attach these labels to any time series or alerts when communicating with\n # external systems (federation, remote storage, Alertmanager).\n external_labels:\n monitor: 'my-project'\n # Load and evaluate rules in this file every 'evaluation_interval' seconds.\n rule_files:\n - 'alert.rules'\n # - \"first.rules\"\n # - \"second.rules\"\n # alert\n # alerting:\n # alertmanagers:\n # - scheme: http\n # static_configs:\n # - targets:\n # - \"alertmanager:9093\"\n # A scrape configuration containing exactly one endpoint to scrape:\n # Here it's Prometheus itself.\n scrape_configs:\n # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n - job_name: 'prometheus'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:9090']\n - job_name: 'traefik'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n dns_sd_configs:\n - names:\n - 'tasks.traefik'\n type: 'A'\n port: 8080\n alert.rules:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n groups:\n - name: bolabaden\n rules:\n\n # Alert for any instance that is unreachable for >2 minutes.\n - alert: service_down\n expr: up == 0\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} down\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} has been down for more than 2 minutes.\"\n\n - alert: high_load\n expr: node_load1 > 0.5\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} under high load\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} is under high load.\"\n #######################################################################################\n # Gluetun Configurations\n #######################################################################################\n premiumize-auth.txt: # Premiumize authentication file (shared across all Premiumize VPN endpoints)\n content: |\n $PREMIUMIZE_CUSTOMER_ID\n $PREMIUMIZE_API_KEY\n gluetun-auth-config.toml:\n content: |\n [[roles]]\n name = \"public\"\n routes = [\n \"GET /v1/openvpn/status\",\n \"PUT /v1/openvpn/status\",\n \"GET /v1/openvpn/portforwarded\",\n \"GET /v1/openvpn/settings\",\n \"GET /v1/dns/status\",\n \"PUT /v1/dns/status\",\n \"GET /v1/updater/status\",\n \"PUT /v1/updater/status\",\n \"GET /v1/publicip/ip\"\n ]\n auth = \"none\"\n premiumize-ca.cert: # Premiumize CA certificate (shared across all Premiumize VPN endpoints)\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n vpn-nl.premiumize.me:\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n client\n resolv-retry infinite\n nobind\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n remote 185.107.94.249 1194\n persist-tun\n persist-key\n #######################################################################################\n # Stremio Configurations\n #######################################################################################\n mediafusion-nginx-config:\n content: |\n user nginx;\n worker_processes 1;\n\n events {\n worker_connections 1024;\n }\n\n http {\n include mime.types;\n default_type application/octet-stream;\n sendfile on;\n keepalive_timeout 65;\n\n server {\n listen 443 ssl;\n server_name mediafusion.local;\n\n ssl_certificate /etc/ssl/certs/mediafusion.local.pem;\n ssl_certificate_key /etc/ssl/private/mediafusion.local-key.pem;\n\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n\n location / {\n proxy_pass ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000};\n proxy_set_header Host $$host;\n proxy_set_header X-Real-IP $$remote_addr;\n proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $$scheme;\n }\n }\n }\n nginx-proxy-config.conf:\n content: |\n # Custom nginx configuration for nginx-proxy\n client_max_body_size 100m;\n proxy_connect_timeout 600s;\n proxy_send_timeout 600s;\n proxy_read_timeout 600s;\n proxy_buffering off;\n proxy_request_buffering off;\n # Enable gzip compression\n gzip on;\n gzip_vary on;\n gzip_min_length 1024;\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n # Security headers\n add_header X-Frame-Options DENY always;\n add_header X-Content-Type-Options nosniff always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\n prowlarr_indexers.json:\n content: |\n [\n {\n \"indexerUrls\": [\n \"https://bitsearch.to/\"\n ],\n \"legacyUrls\": [\n \"https://bitsearch.nocensor.cloud/\",\n \"https://bitsearch.mrunblock.bond/\"\n ],\n \"definitionName\": \"bitsearch\",\n \"description\": \"BitSearch is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitsearch\",\n \"name\": \"BitSearch\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitsearch\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitsearch\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://thepiratebay.org/\",\n \"https://thepiratebay.unblockninja.com/\",\n \"https://thepiratebay.ninjaproxy1.com/\",\n \"https://tpb.proxyninja.org/\",\n \"https://thepiratebay.torrentbay.st/\",\n \"https://tpb31.ukpass.co/\",\n \"https://tpb.skynetcloud.site/\",\n \"https://piratehaven.xyz/\",\n \"https://mirrorbay.top/\",\n \"https://thepiratebay0.org/\",\n \"https://thepiratebay10.org/\",\n \"https://pirateproxylive.org/\",\n \"https://thehiddenbay.com/\",\n \"https://thepiratebay.zone/\",\n \"https://tpb.party/\",\n \"https://piratebayproxy.live/\",\n \"https://piratebay.live/\",\n \"https://piratebay.party/\",\n \"https://thepiratebay.party/\",\n \"https://pirate-proxy.africa/\",\n \"https://thepiratebaye.org/\",\n \"https://5mins.eu/\",\n \"https://thepiratebay.cloud/\",\n \"https://tpb-proxy.xyz/\",\n \"https://piratebay.army/\",\n \"https://tpb-visit.me/\",\n \"https://tpb.re/\",\n \"https://pirate-proxy.ong/\"\n ],\n \"legacyUrls\": [\n \"https://pirate-proxy.page/\",\n \"https://5mins.shop/\",\n \"https://tpb.surf/\",\n \"https://tpb.monster/\",\n \"https://thepiratebay.host/\",\n \"https://piratetoday.xyz/\",\n \"https://tpb.wtf/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.onion.ly/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.to/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.link/\",\n \"https://tpb25.ukpass.co/\",\n \"https://tpb29.ukpass.co/\",\n \"https://piratenow.xyz/\",\n \"https://pirate-proxy.ink/\",\n \"https://proxifiedpiratebay.org/\",\n \"https://unlockedpiratebay.com/\",\n \"https://tpb.one/\",\n \"https://piratebayorg.net/\",\n \"https://tpbproxy.click/\",\n \"https://pirateproxy.live/\",\n \"https://ukpiratebay.org/\",\n \"https://piratebay.by/\",\n \"https://pirate-proxy.date/\",\n \"https://thepirateproxy.net/\",\n \"https://thepiratebay.abcproxy.org/\"\n ],\n \"definitionName\": \"thepiratebay\",\n \"description\": \"The Pirate Bay (TPB) is the galaxy’s most resilient Public BitTorrent site\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n },\n {\n \"id\": 6040,\n \"name\": \"XXX/x264\",\n \"subCategories\": []\n },\n {\n \"id\": 6045,\n \"name\": \"XXX/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 6070,\n \"name\": \"XXX/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7050,\n \"name\": \"Books/Other\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"pirate bay\",\n \"name\": \"The Pirate Bay\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"thepiratebay\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_api\",\n \"value\": \"This indexer uses the API at https://apibay.org/ to get its official TPB data. Choose any site link that you can access/prefer so that you can view the torrent details page when browsing the search results for this indexer.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#thepiratebay\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://therarbg.to/\",\n \"https://t-rb.org/\",\n \"https://the.rarbg.club/\",\n \"https://trb.archivebay.online/\",\n \"https://trb.t-pb.org/\",\n \"https://trb.themirror.wiki/\",\n \"https://torrentlite.org/\",\n \"https://rarbg.unblockninja.com/\",\n \"https://rarbg.ninjaproxy1.com/\",\n \"https://rarbg.proxyninja.org/\",\n \"https://rarbg.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://therarbg.com/\"\n ],\n \"definitionName\": \"therarbg\",\n \"description\": \"TheRARBG is a Public site inspired by RARBG.to for TV / MOVIES / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"therarbg\",\n \"name\": \"TheRARBG\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"therarbg\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#therarbg\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torlock.com/\",\n \"https://www.torlock2.com/\"\n ],\n \"legacyUrls\": [\n \"https://torlock.com/\",\n \"https://www.torlock.icu/\",\n \"https://torlock.mrunblock.guru/\",\n \"https://torlock.unblockit.click/\",\n \"https://torlock.unblockit.asia/\",\n \"https://torlock.mrunblock.life/\",\n \"https://torlock.unblockit.mov/\",\n \"https://torlock.unblockit.rsvp/\",\n \"https://torlock.unblockit.vegas/\",\n \"https://torlock.unblockit.esq/\",\n \"https://torlock.unblockit.zip/\",\n \"https://torlock.unblockit.foo/\",\n \"https://torlock.unblockit.ing/\",\n \"https://torlock.nocensor.cloud/\",\n \"https://torlock.mrunblock.bond/\",\n \"https://torlock.unblockit.date/\",\n \"https://torlock.unblockit.dad/\",\n \"https://torlock.unblockit.africa/\",\n \"https://torlock.unblockit.casa/\",\n \"https://torlock.unblockit.sbs/\",\n \"https://torlock.unblockit.ong/\"\n ],\n \"definitionName\": \"torlock\",\n \"description\": \"Torlock is a torrent search site that lists verified torrents only for TV series and movies\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torlock\",\n \"name\": \"Torlock\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torlock\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torlock\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownloads.pro/\",\n \"https://torrentdownloads.unblockit.ong/\",\n \"https://torrentdownloads.unblockninja.com/\",\n \"https://torrentdownloads.ninjaproxy1.com/\",\n \"https://torrentdownloads.proxyninja.org/\"\n ],\n \"legacyUrls\": [\n \"https://www.torrentdownloads.me/\",\n \"https://www.torrentdownloads.info/\",\n \"https://torrentdownloads.mrunblock.guru/\",\n \"https://torrentdownloads.unblockit.click/\",\n \"https://torrentdownloads.unblockit.asia/\",\n \"https://torrentdownloads.unblockit.mov/\",\n \"https://torrentdownloads.mrunblock.life/\",\n \"https://torrentdownloads.unblockit.rsvp/\",\n \"https://torrentdownloads.unblockit.vegas/\",\n \"https://torrentdownloads.unblockit.esq/\",\n \"https://torrentdownloads.unblockit.zip/\",\n \"https://torrentdownloads.unblockit.foo/\",\n \"https://torrentdownloads.unblockit.ing/\",\n \"https://torrentdownloads.mrunblock.bond/\",\n \"https://torrentdownloads.nocensor.cloud/\",\n \"https://torrentdownloads.unblockit.date/\",\n \"https://torrentdownloads.unblockit.dad/\",\n \"https://torrentdownloads.unblockit.africa/\",\n \"https://torrentdownloads.unblockit.casa/\",\n \"https://torrentdownloads.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownloads\",\n \"description\": \"Torrent Downloads (TD) is a Public torrent site for all kinds of content\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrent downloads\",\n \"name\": \"Torrent Downloads\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownloads\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownloads\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yourbittorrent.com/\",\n \"https://yourbittorrent2.com/\"\n ],\n \"legacyUrls\": [\n \"https://yourbittorrent.host/\",\n \"https://yourbittorrent.nocensor.space/\",\n \"https://yourbittorrent.nocensor.work/\",\n \"https://yourbittorrent.nocensor.biz/\",\n \"https://yourbittorrent.nocensor.sbs/\",\n \"https://yourbittorrent.nocensor.world/\",\n \"https://yourbittorrent.nocensor.lol/\",\n \"https://yourbittorrent.mrunblock.guru/\",\n \"https://yourbittorrent.mrunblock.life/\",\n \"https://yourbittorrent.nocensor.click/\",\n \"https://yourbittorrent.nocensor.cloud/\",\n \"https://yourbittorrent.mrunblock.bond/\"\n ],\n \"definitionName\": \"yourbittorrent\",\n \"description\": \"YourBittorrent is a Public torrent index\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yourbittorrent\",\n \"name\": \"YourBittorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yourbittorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yourbittorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://1337x.to/\",\n \"https://1337x.st/\",\n \"https://x1337x.ws/\",\n \"https://x1337x.eu/\",\n \"https://x1337x.se/\",\n \"https://1337x.so/\",\n \"https://1337x.abcproxy.org/\",\n \"https://1337x.unblockninja.com/\",\n \"https://1337x.ninjaproxy1.com/\",\n \"https://1337x.proxyninja.org/\",\n \"https://1337x.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://1337x.is/\",\n \"https://1337x.gd/\",\n \"https://1337x.mrunblock.guru/\",\n \"https://1337x.mrunblock.life/\",\n \"https://1337x.unblockit.click/\",\n \"https://1337x.unblockit.asia/\",\n \"https://1337x.unblockit.mov/\",\n \"https://1337x.unblockit.rsvp/\",\n \"https://1337x.unblockit.vegas/\",\n \"https://1337x.unblockit.esq/\",\n \"https://1337x.unblockit.zip/\",\n \"https://1337x.unblockit.foo/\",\n \"https://1337x.unblockit.ing/\",\n \"https://1337x.mrunblock.bond/\",\n \"https://1337x.unblockit.date/\",\n \"https://1337x.unblockit.dad/\",\n \"https://1337x.unblockit.africa/\",\n \"https://1337x.unblockit.casa/\",\n \"https://unblockit.sbs/\",\n \"https://unblockit.ong/\"\n ],\n \"definitionName\": \"1337x\",\n \"description\": \"1337X is a Public torrent site that offers verified torrent downloads\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2010,\n \"name\": \"Movies/Foreign\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1080,\n \"name\": \"Console/PS3\",\n \"subCategories\": []\n },\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1010,\n \"name\": \"Console/NDS\",\n \"subCategories\": []\n },\n {\n \"id\": 1110,\n \"name\": \"Console/3DS\",\n \"subCategories\": []\n },\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"1337x\",\n \"name\": \"1337x\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"1337x\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)\"\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#1337x\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://bitru.org/\"\n ],\n \"legacyUrls\": [\n \"http://bitru.org/\"\n ],\n \"definitionName\": \"bitru\",\n \"description\": \"BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitru\",\n \"name\": \"BitRu\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"adverts\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://badasstorrents.com/\"\n ],\n \"legacyUrls\": [\n \"https://badasstorrents.nocensor.work/\",\n \"https://badasstorrents.nocensor.biz/\",\n \"https://badasstorrents.nocensor.sbs/\",\n \"https://badasstorrents.nocensor.world/\",\n \"https://badasstorrents.nocensor.lol/\",\n \"https://badasstorrents.nocensor.art/\",\n \"https://badasstorrents.mrunblock.guru/\",\n \"https://badasstorrents.mrunblock.life/\",\n \"https://badasstorrents.nocensor.click/\",\n \"https://badasstorrents.mrunblock.bond/\",\n \"https://badasstorrents.nocensor.cloud/\"\n ],\n \"definitionName\": \"badasstorrents\",\n \"description\": \"Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"badass torrents\",\n \"name\": \"Badass Torrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"badasstorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#badasstorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://archive.org/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"internetarchive\",\n \"description\": \"Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"internet archive\",\n \"name\": \"Internet Archive\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"internetarchive\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"titleOnly\",\n \"value\": false\n },\n {\n \"name\": \"noMagnet\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#internetarchive\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.gktorrent.pm/\"\n ],\n \"legacyUrls\": [\n \"https://www.rantop.org/\",\n \"https://www.torrent.ws/\",\n \"https://gktorrent.mrunblock.guru/\",\n \"https://gktorrent.mrunblock.life/\",\n \"https://gktorrent.nocensor.click/\",\n \"https://www.gktorrent.ac/\",\n \"https://www.gktorrent.ph/\",\n \"https://www.gktorrent.vc/\",\n \"https://www.gktorrent.mx/\",\n \"https://www.gktorrent.fi/\",\n \"https://www.gktorrent.wf/\",\n \"https://gktorrent.nocensor.cloud/\",\n \"https://gktorrent.mrunblock.bond/\",\n \"https://www.gktorrent.wtf/\",\n \"https://www.gktorrent.vg/\",\n \"https://www.gktorrent.lol/\",\n \"https://www.gktorrent.sh/\",\n \"https://www.gktorrent.eu/\",\n \"https://www.gktorrent.xyz/\"\n ],\n \"definitionName\": \"gktorrent\",\n \"description\": \"GkTorrent is a French Public site for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"gktorrent\",\n \"name\": \"GkTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"gktorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#gktorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://itorrent.ws/\"\n ],\n \"legacyUrls\": [\n \"https://itorrent.unblockit.pro/\",\n \"https://itorrent.unblockit.one/\",\n \"https://itorrent.unblockit.me/\"\n ],\n \"definitionName\": \"itorrent\",\n \"description\": \"iTorrent is a Public HUNGARIAN site\",\n \"language\": \"hu-HU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"itorrent\",\n \"name\": \"iTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"itorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#itorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.limetorrents.lol/\",\n \"https://limetorrents.unblockit.black/\",\n \"https://limetorrents.unblockninja.com/\",\n \"https://limetorrents.ninjaproxy1.com/\",\n \"https://limetorrents.proxyninja.org/\",\n \"https://limetorrents.proxyninja.net/\",\n \"https://limetorrents.torrentbay.st/\",\n \"https://limetorrents.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://limetorrents.unblockit.asia/\",\n \"https://limetorrents.unblockit.mov/\",\n \"https://limetorrents.unblockit.rsvp/\",\n \"https://limetorrents.unblockit.vegas/\",\n \"https://limetorrents.unblockit.esq/\",\n \"https://limetorrents.unblockit.zip/\",\n \"https://limetorrents.unblockit.foo/\",\n \"https://limetorrents.unblockit.ing/\",\n \"https://limetorrents.mrunblock.bond/\",\n \"https://limetorrents.nocensor.cloud/\",\n \"https://limetorrents.unblockit.date/\",\n \"https://limetorrents.unblockit.dad/\",\n \"https://limetorrents.unblockit.africa/\",\n \"https://limetorrents.unblockit.casa/\",\n \"https://limetorrents.unblockit.sbs/\",\n \"https://limetorrents.unblockit.ong/\",\n \"https://limetorrents.abcproxy.org/\"\n ],\n \"definitionName\": \"limetorrents\",\n \"description\": \"LimeTorrents is a Public general torrent index with mostly verified torrents\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"limetorrents\",\n \"name\": \"LimeTorrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"limetorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#limetorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.oxtorrent.co/\",\n \"https://oxtorrent.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://oxtorrent.unblockit.casa/\",\n \"https://oxtorrent.unblockit.sbs/\"\n ],\n \"definitionName\": \"oxtorrent-co\",\n \"description\": \"OxTorrent is a FRENCH Public Torrent Tracker for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"oxtorrent\",\n \"name\": \"OxTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"oxtorrent-co\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#oxtorrent-co\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://rutor.info/\",\n \"https://rutor.is/\"\n ],\n \"legacyUrls\": [\n \"https://rutor.uk-unblock.xyz/\",\n \"https://rutor.ind-unblock.xyz/\",\n \"https://rutor.unblocked.bar/\",\n \"https://rutor.proxyportal.pw/\",\n \"https://rutor.uk-unblock.pro/\",\n \"https://rutor.root.yt/\",\n \"https://rutor.unblocked.rest/\",\n \"https://rutor.unblocked.monster/\",\n \"https://rutor.nocensor.space/\",\n \"https://rutor.nocensor.work/\",\n \"http://6tor.org/\",\n \"https://rutor.nocensor.world/\",\n \"https://rutor.nocensor.lol/\",\n \"https://rutor.nocensor.art/\",\n \"https://rutor.mrunblock.guru/\",\n \"https://rutor.mrunblock.life/\",\n \"https://rutor.nocensor.click/\",\n \"https://rutor.mrunblock.bond/\",\n \"https://rutor.nocensor.cloud/\",\n \"http://new-rutor.org/\",\n \"http://rutor.info/\",\n \"http://rutor.is/\"\n ],\n \"definitionName\": \"rutor\",\n \"description\": \"RuTor is a RUSSIAN Public site for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\",\n \"imdbId\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutor\",\n \"name\": \"RuTor\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutor\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"info\",\n \"value\": \"RuTor does not display categories in its search results page. This definition is probably only suitable for Prowlarr Dashboard Manual searches.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutor\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"http://rutracker.ru/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"rutracker-ru\",\n \"description\": \"RuTracker.RU is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5010,\n \"name\": \"TV/WEB-DL\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutracker ru\",\n \"name\": \"RuTracker.RU\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutracker-ru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutracker-ru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownload.info/\",\n \"https://torrentdownload.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://torrentdownload.mrunblock.guru/\",\n \"https://torrentdownload.unblockit.click/\",\n \"https://torrentdownload.unblockit.asia/\",\n \"https://torrentdownload.unblockit.mov/\",\n \"https://torrentdownload.mrunblock.life/\",\n \"https://torrentdownload.unblockit.rsvp/\",\n \"https://torrentdownload.unblockit.vegas/\",\n \"https://torrentdownload.unblockit.esq/\",\n \"https://torrentdownload.unblockit.zip/\",\n \"https://torrentdownload.unblockit.foo/\",\n \"https://torrentdownload.unblockit.ing/\",\n \"https://torrentdownload.mrunblock.bond/\",\n \"https://torrentdownload.nocensor.cloud/\",\n \"https://torrentdownload.unblockit.date/\",\n \"https://torrentdownload.unblockit.dad/\",\n \"https://torrentdownload.unblockit.africa/\",\n \"https://torrentdownload.unblockit.casa/\",\n \"https://torrentdownload.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownload\",\n \"description\": \"TorrentDownload is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7010,\n \"name\": \"Books/Mags\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrentdownload\",\n \"name\": \"TorrentDownload\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownload\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownload\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.529052.xyz/\",\n \"https://www.529053.xyz/\"\n ],\n \"legacyUrls\": [\n \"https://529050.xyz/\",\n \"https://529048.xyz/\",\n \"https://529049.xyz/\"\n ],\n \"definitionName\": \"52bt\",\n \"description\": \"52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL\",\n \"language\": \"zh-CN\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"52bt\",\n \"name\": \"52BT\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"52bt\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#52bt\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://eztvx.to/\",\n \"https://eztv.wf/\",\n \"https://eztv.tf/\",\n \"https://eztv.yt/\",\n \"https://eztv1.xyz/\",\n \"https://eztv.unblockit.black/\"\n ],\n \"legacyUrls\": [\n \"https://eztv.ag/\",\n \"https://eztv.it/\",\n \"https://eztv.ch/\",\n \"https://eztv.io/\",\n \"https://eztv.unblockit.asia/\",\n \"https://eztv.unblockit.mov/\",\n \"https://eztv.mrunblock.life/\",\n \"https://eztv.unblockit.rsvp/\",\n \"https://eztv.unblockit.vegas/\",\n \"https://eztv.unblockit.esq/\",\n \"https://eztv.unblockit.zip/\",\n \"https://eztv.re/\",\n \"https://eztv.li/\",\n \"https://eztv.unblockit.foo/\",\n \"https://eztv.unblockit.ing/\",\n \"https://eztv.mrunblock.bond/\",\n \"https://eztv.nocensor.cloud/\",\n \"https://eztv.unblockit.date/\",\n \"https://eztv.unblockit.dad/\",\n \"https://eztv.unblockit.africa/\",\n \"https://eztv.unblockit.casa/\",\n \"https://eztv.unblockit.sbs/\",\n \"https://eztv.unblockninja.com/\",\n \"https://eztv.ninjaproxy1.com/\",\n \"https://eztv.proxyninja.org/\",\n \"https://eztv.abcproxy.org/\",\n \"https://eztv.unblockit.ong/\"\n ],\n \"definitionName\": \"eztv\",\n \"description\": \"EZTV is a Public torrent site for TV shows\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"eztv\",\n \"name\": \"EZTV\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"eztv\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#eztv\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yts.mx/\",\n \"https://yts.unblockit.meme/\",\n \"https://yts.unblockninja.com/\",\n \"https://yts.ninjaproxy1.com/\",\n \"https://yts.proxyninja.org/\",\n \"https://yts.proxyninja.net/\",\n \"https://yts.torrentbay.st/\",\n \"https://yts.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://yts.unblockit.mov/\",\n \"https://yts.unblockit.rsvp/\",\n \"https://yts.unblockit.vegas/\",\n \"https://yts.unblockit.esq/\",\n \"https://yts.unblockit.zip/\",\n \"https://yts.unblockit.foo/\",\n \"https://yts.unblockit.ing/\",\n \"https://yts.mrunblock.bond/\",\n \"https://yts.nocensor.cloud/\",\n \"https://yts.unblockit.date/\",\n \"https://yts.unblockit.dad/\",\n \"https://yts.unblockit.africa/\",\n \"https://yts.unblockit.casa/\",\n \"https://yts.unblockit.sbs/\",\n \"https://yts.unblockit.ong/\",\n \"https://yts.abcproxy.org/\",\n \"https://yts.unblockit.black/\",\n \"https://yts.lt/\",\n \"https://yts.am/\",\n \"https://yts.ag/\"\n ],\n \"definitionName\": \"yts\",\n \"description\": \"YTS is a Public torrent site specialising in HD movies of small size\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yts\",\n \"name\": \"YTS\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yts\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yts\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://nyaa.si/\",\n \"https://nyaa.iss.ink/\",\n \"https://nyaa.land/\",\n \"https://nyaa.unblockninja.com/\"\n ],\n \"legacyUrls\": [\n \"https://nyaa.black-mirror.xyz/\",\n \"https://nyaa.unblocked.casa/\",\n \"https://nyaa.proxyportal.fun/\",\n \"https://nyaa.uk-unblock.xyz/\",\n \"https://nyaa.ind-unblock.xyz/\",\n \"https://nyaa.unblocked.bar/\",\n \"https://nyaa.proxyportal.pw/\",\n \"https://nyaa.uk-unblock.pro/\",\n \"https://nyaa.root.yt/\",\n \"https://nyaa.lol/\",\n \"https://nyaa.mrunblock.bond/\",\n \"https://nyaa.nocensor.cloud/\"\n ],\n \"definitionName\": \"nyaasi\",\n \"description\": \"Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"nyaa si\",\n \"name\": \"Nyaa.si\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"nyaasi\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.preferMagnetUrl\",\n \"value\": false\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sonarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"strip_s01\",\n \"value\": false\n },\n {\n \"name\": \"radarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"filter-id\",\n \"value\": 1\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#nyaasi\",\n \"tags\": []\n }\n ]\n prowlarr_indexer_proxy.json:\n content: |\n {\n \"onHealthIssue\": false,\n \"supportsOnHealthIssue\": false,\n \"includeHealthWarnings\": false,\n \"name\": \"FlareSolverr\",\n \"fields\": [\n {\n \"name\": \"host\",\n \"value\": \"${FLARESOLVERR_INTERNAL_URL:-http://flaresolverr:8191}\"\n },\n {\n \"name\": \"requestTimeout\",\n \"value\": 60\n }\n ],\n \"implementationName\": \"FlareSolverr\",\n \"implementation\": \"FlareSolverr\",\n \"configContract\": \"FlareSolverrSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported#flaresolverr\",\n \"tags\": [\n 1\n ]\n }\n scraper_config.json:\n content: |\n {\n \"start_urls\": {\n \"nowsports\": \"https://neesports.me/\",\n \"nowmetv\": \"https://neelive.com/\",\n \"tgx\": [\n \"torrentgalaxy.mx\",\n \"torrentgalaxy.to\",\n \"tgx.rs\"\n ]\n },\n \"tamil_blasters\": {\n \"homepage\": \"https://www.1tamilblasters.net\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"52-english-movies-hdcam-dvdscr-predvd\",\n \"hdrip\": \"53-english-movies-hdrips-bdrips-dvdrips\",\n \"series\": \"92-english-web-series-tv-shows\"\n }\n }\n },\n \"tamilmv\": {\n \"homepage\": \"https://www.1tamilmv.com\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"46-predvd-dvdscr-cam-tc\",\n \"hdrip\": [\n \"49-web-hd-itunes-hd-bluray\",\n \"50-hd-rips-dvd-rips-br-rips\"\n ],\n \"series\": \"55-web-series-tv-shows\"\n }\n },\n \"supported_search_forums\": {\n \"46-predvd-dvdscr-cam-tc\": {\n \"language\": \"english\",\n \"media_type\": \"tcrip\"\n },\n \"49-web-hd-itunes-hd-bluray\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"50-hd-rips-dvd-rips-br-rips\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"55-web-series-tv-shows\": {\n \"language\": \"english\",\n \"media_type\": \"series\"\n }\n }\n },\n \"dlhd\": {\n \"channels_url\": \"https://daddylive.dad/24-7-channels.php\",\n \"channel_url\": \"https://daddylive.dad/stream/stream-{channel_number}.php\",\n \"schedule_url\": \"https://daddylive.dad/schedule/schedule-generated.php\",\n \"server_lookup_url\": \"https://allupplay.xyz/server_lookup.php?channel_id={server_type}{channel_id}\",\n \"m3u8_base_url\": \"https://{server_key}new.newkso.ru/{server_key}/{server_type}{channel_id}/mono.m3u8\",\n \"key_url\": \"https://key.keylocking.ru\",\n \"referer\": \"https://allupplay.xyz/\",\n \"category_mapping\": {\n \"Tv Shows\": \"Other Sports\",\n \"Soccer\": \"Football\",\n \"Cricket\": \"Cricket\",\n \"Tennis\": \"Tennis\",\n \"Tennis ATP - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP - FRENCH OPEN\": \"Tennis\",\n \"Tennis MIXED DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Motorsport\": \"Motor Sport\",\n \"Boxing\": \"Boxing\",\n \"MMA\": \"MMA\",\n \"Golf\": \"Golf\",\n \"Snooker\": \"Other Sports\",\n \"Am. Football\": \"American Football\",\n \"Athletics\": \"Athletics\",\n \"Aussie rules\": \"Aussie Rules\",\n \"Baseball\": \"Baseball\",\n \"Basketball\": \"Basketball\",\n \"Bowling\": \"Bowling\",\n \"Cycling\": \"Cycling\",\n \"Darts\": \"Dart\",\n \"Floorball\": \"Floorball\",\n \"Futsal\": \"Futsal\",\n \"Gymnastics\": \"Gymnastics\",\n \"Handball\": \"Handball\",\n \"Horse Racing\": \"Horse Racing\",\n \"Ice Hockey\": \"Hockey\",\n \"Lacrosse\": \"Lacrosse\",\n \"Netball\": \"Netball\",\n \"Rugby League\": \"Rugby/AFL\",\n \"Rugby Union\": \"Rugby/AFL\",\n \"Squash\": \"Squash\",\n \"Volleyball\": \"Volleyball\",\n \"GAA\": \"GAA\",\n \"Clubber\": \"Other Sports\"\n }\n },\n \"sport_video\": {\n \"categories\": {\n \"american_football\": \"https://www.sport-video.org.ua/americanfootball.html\",\n \"basketball\": \"https://www.sport-video.org.ua/basketball.html\",\n \"baseball\": \"https://www.sport-video.org.ua/baseball.html\",\n \"football\": \"https://www.sport-video.org.ua/football.html\",\n \"hockey\": \"https://www.sport-video.org.ua/hockey.html\",\n \"rugby\": \"https://www.sport-video.org.ua/rugby.html\",\n \"other_sports\": \"https://www.sport-video.org.ua/other.html\"\n }\n }\n }\n\n litellm_config.yaml:\n content: |\n general_settings:\n proxy_batch_write_at: 60\n\n router_settings:\n redis_host: redis\n redis_port: 6379\n redis_password:\n enable_pre_call_check: true\n allowed_fails: 3\n allowed_fails_policy:\n BadRequestErrorAllowedFails: 1000\n AuthenticationErrorAllowedFails: 10\n TimeoutErrorAllowedFails: 12\n RateLimitErrorAllowedFails: 10000\n ContentPolicyViolationErrorAllowedFails: 15\n InternalServerErrorAllowedFails: 20\n cooldown_time: 30\n disable_cooldowns: false\n enable_pre_call_checks: true\n enable_tag_filtering: true\n retry_policy:\n AuthenticationErrorRetries: 3\n TimeoutErrorRetries: 3\n RateLimitErrorRetries: 3\n ContentPolicyViolationErrorRetries: 4\n InternalServerErrorRetries: 4\n routing_strategy: simple-shuffle\n\n litellm_settings:\n cache: true\n cache_params:\n type: redis\n host: redis\n port: 6379\n password:\n namespace: \"litellm_cache\"\n ttl: 600\n content_policy_fallbacks: []\n context_window_fallbacks: []\n default_fallbacks: []\n set_verbose: false\n force_ipv4: true\n json_logs: true\n log_raw_request_response: true\n turn_off_message_logging: false\n redact_user_api_key_info: true\n drop_params: true\n # max_budget: 100\n # budget_duration: 30d\n num_retries: 3\n request_timeout: 600\n telemetry: false\n model_list:\n - model_name: moonshotai/kimi-k2:free\n litellm_params:\n model: openai/moonshotai/kimi-k2:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for agentic capabilities, including advanced tool use, reasoning, and code synthesis. Kimi K2 excels across a broad range of benchmarks, particularly in coding (LiveCodeBench, SWE-bench), reasoning (ZebraLogic, GPQA), and tool-use (Tau2, AceBench) tasks. It supports long-context inference up to 128K tokens and is designed with a novel training stack that includes the MuonClip optimizer for stable large-scale MoE training.\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving user control over alignment, system prompts, and behavior. Intended for advanced and unrestricted use cases, Venice Uncensored emphasizes steerability and transparent behavior, removing default safety and alignment layers typically found in mainstream assistant models.\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e2b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e2b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based on the MatFormer architecture, it supports nested submodels and modular composition via the Mix-and-Match framework. Gemma 3n models are optimized for low-resource deployment, offering 32K context length and strong multilingual and reasoning performance across common benchmarks. This variant is trained on a diverse corpus including code, math, web, and multimodal data.\n litellm_provider: openrouter\n - model_name: tencent/hunyuan-a13b-instruct:free\n litellm_params:\n model: openai/tencent/hunyuan-a13b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark performance across mathematics, science, coding, and multi-turn reasoning tasks, while maintaining high inference efficiency via Grouped Query Attention (GQA) and quantization support (FP8, GPTQ, etc.).\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t2-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t2-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: DeepSeek-TNG-R1T2-Chimera is the second-generation Chimera model from TNG Tech. It is a 671 B-parameter mixture-of-experts text-generation model assembled from DeepSeek-AI’s R1-0528, R1, and V3-0324 checkpoints with an Assembly-of-Experts merge. The tri-parent design yields strong reasoning performance while running roughly 20 % faster than the original R1 and more than 2× faster than R1-0528 under vLLM, giving a favorable cost-to-intelligence trade-off. The checkpoint supports contexts up to 60 k tokens in standard use (tested to ~130 k) and maintains consistent <think> token behaviour, making it suitable for long-context analysis, dialogue and other open-ended generation tasks.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.2-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.2-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on WildBench and Arena Hard, reduces infinite generations, and delivers gains in tool use and structured output tasks. It supports image and text inputs with structured outputs, function/tool calling, and strong performance across coding (HumanEval+, MBPP), STEM (MMLU, MATH, GPQA), and vision benchmarks (ChartQA, DocVQA).'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-dev-72b:free\n litellm_params:\n model: openai/moonshotai/kimi-dev-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Kimi-Dev-72B is an open-source large language model fine-tuned for software engineering and issue resolution tasks. Based on Qwen2.5-72B, it is optimized using large-scale reinforcement learning that applies code patches in real repositories and validates them via full test suite execution—rewarding only correct, robust completions. The model achieves 60.4% on SWE-bench Verified, setting a new benchmark among open-source models for software bug fixing and code reasoning.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528-qwen3-8b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528-qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepSeek-R1-0528 is a lightly upgraded release of DeepSeek R1 that taps more compute and smarter post-training tricks, pushing its reasoning and inference to the brink of flagship models like O3 and Gemini 2.5 Pro. It now tops math, programming, and logic leaderboards, showcasing a step-change in depth-of-thought. The distilled variant, DeepSeek-R1-0528-Qwen3-8B, transfers this chain-of-thought into an 8 B-parameter form, beating standard Qwen3 8B by +10 pp and tying the 235 B “thinking” giant on AIME 2024.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model.'\n litellm_provider: openrouter\n - model_name: sarvamai/sarvam-m:free\n litellm_params:\n model: openai/sarvamai/sarvam-m:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Sarvam-M is a 24 B-parameter, instruction-tuned derivative of Mistral-Small-3.1-24B-Base-2503, post-trained on English plus eleven major Indic languages (bn, hi, kn, gu, mr, ml, or, pa, ta, te). The model introduces a dual-mode interface: “non-think” for low-latency chat and a optional “think” phase that exposes chain-of-thought tokens for more demanding reasoning, math, and coding tasks. Benchmark reports show solid gains versus similarly sized open models on Indic-language QA, GSM-8K math, and SWE-Bench coding, making Sarvam-M a practical general-purpose choice for multilingual conversational agents as well as analytical workloads that mix English, native Indic scripts, or romanized text.'\n litellm_provider: openrouter\n - model_name: mistralai/devstral-small-2505:free\n litellm_params:\n model: openai/mistralai/devstral-small-2505:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Devstral-Small-2505 is a 24B parameter agentic LLM fine-tuned from Mistral-Small-3.1, jointly developed by Mistral AI and All Hands AI for advanced software engineering tasks. It is optimized for codebase exploration, multi-file editing, and integration into coding agents, achieving state-of-the-art results on SWE-Bench Verified (46.8%). Devstral supports a 128k context window and uses a custom Tekken tokenizer. It is text-only, with the vision encoder removed, and is suitable for local deployment on high-end consumer hardware (e.g., RTX 4090, 32GB RAM Macs). Devstral is best used in agentic workflows via the OpenHands scaffold and is compatible with inference frameworks like vLLM, Transformers, and Ollama. It is released under the Apache 2.0 license.'\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e4b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: 'Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks such as text generation, speech recognition, translation, and image analysis. Leveraging innovations like Per-Layer Embedding (PLE) caching and the MatFormer architecture, Gemma 3n dynamically manages memory usage and computational load by selectively activating model parameters, significantly reducing runtime resource requirements. This model supports a wide linguistic range (trained in over 140 languages) and features a flexible 32K token context window. Gemma 3n can selectively load parameters, optimizing memory and computational efficiency based on the task or device capabilities, making it well-suited for privacy-focused, offline-capable applications and on-device AI solutions. [Read more in the blog post](https://developers.googleblog.com/en/introducing-gemma-3n/)'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-4b:free\n litellm_params:\n model: openai/qwen/qwen3-4b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-4B is a 4 billion parameter dense language model from the Qwen3 series, designed to support both general-purpose and reasoning-intensive tasks. It introduces a dual-mode architecture—thinking and non-thinking—allowing dynamic switching between high-precision logical reasoning and efficient dialogue generation. This makes it well-suited for multi-turn chat, instruction following, and complex agent workflows.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-30b-a3b:free\n litellm_params:\n model: openai/qwen/qwen3-30b-a3b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique ability to switch seamlessly between a thinking mode for complex reasoning and a non-thinking mode for efficient dialogue ensures versatile, high-quality performance. Significantly outperforming prior models like QwQ and Qwen2.5, Qwen3 delivers superior mathematics, coding, commonsense reasoning, creative writing, and interactive dialogue capabilities. The Qwen3-30B-A3B variant includes 30.5 billion parameters (3.3 billion activated), 48 layers, 128 experts (8 activated per task), and supports up to 131K token contexts with YaRN, setting a new standard among open-source models.'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-8b:free\n litellm_params:\n model: openai/qwen/qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n max_output_tokens: 40960\n metadata:\n notes: Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math, coding, and logical inference, and \"non-thinking\" mode for general conversation. The model is fine-tuned for instruction-following, agent integration, creative writing, and multilingual use across 100+ languages and dialects. It natively supports a 32K token context window and can extend to 131K tokens with YaRN scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-14b:free\n litellm_params:\n model: openai/qwen/qwen3-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, programming, and logical inference, and a \"non-thinking\" mode for general-purpose conversation. The model is fine-tuned for instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-32b:free\n litellm_params:\n model: openai/qwen/qwen3-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, coding, and logical inference, and a \"non-thinking\" mode for faster, general-purpose conversation. The model demonstrates strong performance in instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling. '\n litellm_provider: openrouter\n - model_name: qwen/qwen3-235b-a22b:free\n litellm_params:\n model: openai/qwen/qwen3-235b-a22b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and code tasks, and a \"non-thinking\" mode for general conversational efficiency. The model demonstrates strong reasoning ability, multilingual support (100+ languages and dialects), advanced instruction-following, and agent tool-calling capabilities. It natively handles a 32K token context window and extends up to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-R1T-Chimera is created by merging DeepSeek-R1 and DeepSeek-V3 (0324), combining the reasoning capabilities of R1 with the token efficiency improvements of V3. It is based on a DeepSeek-MoE Transformer architecture and is optimized for general text generation tasks. The model merges pretrained weights from both source models to balance performance across reasoning, efficiency, and instruction-following tasks. It is released under the MIT license and intended for research and commercial use.'\n litellm_provider: openrouter\n - model_name: microsoft/mai-ds-r1:free\n litellm_params:\n model: openai/microsoft/mai-ds-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'MAI-DS-R1 is a post-trained variant of DeepSeek-R1 developed by the Microsoft AI team to improve the model’s responsiveness on previously blocked topics while enhancing its safety profile. Built on top of DeepSeek-R1’s reasoning foundation, it integrates 110k examples from the Tulu-3 SFT dataset and 350k internally curated multilingual safety-alignment samples. The model retains strong reasoning, coding, and problem-solving capabilities, while unblocking a wide range of prompts previously restricted in R1. MAI-DS-R1 demonstrates improved performance on harm mitigation benchmarks and maintains competitive results across general reasoning tasks. It surpasses R1-1776 in satisfaction metrics for blocked queries and reduces leakage in harmful content categories. The model is based on a transformer MoE architecture and is suitable for general-purpose use cases, excluding high-stakes domains such as legal, medical, or autonomous systems.'\n litellm_provider: openrouter\n - model_name: thudm/glm-z1-32b:free\n litellm_params:\n model: openai/thudm/glm-z1-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'GLM-Z1-32B-0414 is an enhanced reasoning variant of GLM-4-32B, built for deep mathematical, logical, and code-oriented problem solving. It applies extended reinforcement learning—both task-specific and general pairwise preference-based—to improve performance on complex multi-step tasks. Compared to the base GLM-4-32B model, Z1 significantly boosts capabilities in structured reasoning and formal domains. The model supports enforced “thinking” steps via prompt engineering and offers improved coherence for long-form outputs. It’s optimized for use in agentic workflows, and includes support for long context (via YaRN), JSON tool calling, and fine-grained sampling configuration for stable inference. Ideal for use cases requiring deliberate, multi-step reasoning or formal derivations.'\n litellm_provider: openrouter\n - model_name: thudm/glm-4-32b:free\n litellm_params:\n model: openai/thudm/glm-4-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: GLM-4-32B-0414 is a 32B bilingual (Chinese-English) open-weight language model optimized for code generation, function calling, and agent-style tasks. Pretrained on 15T of high-quality and reasoning-heavy data, it was further refined using human preference alignment, rejection sampling, and reinforcement learning. The model excels in complex reasoning, artifact generation, and structured output tasks, achieving performance comparable to GPT-4o and DeepSeek-V3-0324 across several benchmarks.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: shisa-ai/shisa-v2-llama3.3-70b:free\n litellm_params:\n model: openai/shisa-ai/shisa-v2-llama3.3-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Shisa V2 Llama 3.3 70B is a bilingual Japanese-English chat model fine-tuned by Shisa.AI on Meta’s Llama-3.3-70B-Instruct base. It prioritizes Japanese language performance while retaining strong English capabilities. The model was optimized entirely through post-training, using a refined mix of supervised fine-tuning (SFT) and DPO datasets including regenerated ShareGPT-style data, translation tasks, roleplaying conversations, and instruction-following prompts. Unlike earlier Shisa releases, this version avoids tokenizer modifications or extended pretraining. Shisa V2 70B achieves leading Japanese task performance across a wide range of custom and public benchmarks, including JA MT Bench, ELYZA 100, and Rakuda. It supports a 128K token context length and integrates smoothly with inference frameworks like vLLM and SGLang. While it inherits safety characteristics from its base model, no additional alignment was applied. The model is intended for high-performance bilingual chat, instruction following, and translation tasks across JA/EN.'\n litellm_provider: openrouter\n - model_name: arliai/qwq-32b-arliai-rpr-v1:free\n litellm_params:\n model: openai/arliai/qwq-32b-arliai-rpr-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'QwQ-32B-ArliAI-RpR-v1 is a 32B parameter model fine-tuned from Qwen/QwQ-32B using a curated creative writing and roleplay dataset originally developed for the RPMax series. It is designed to maintain coherence and reasoning across long multi-turn conversations by introducing explicit reasoning steps per dialogue turn, generated and refined using the base model itself. The model was trained using RS-QLORA+ on 8K sequence lengths and supports up to 128K context windows (with practical performance around 32K). It is optimized for creative roleplay and dialogue generation, with an emphasis on minimizing cross-context repetition while preserving stylistic diversity.'\n litellm_provider: openrouter\n - model_name: agentica-org/deepcoder-14b-preview:free\n litellm_params:\n model: openai/agentica-org/deepcoder-14b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n metadata:\n notes: DeepCoder-14B-Preview is a 14B parameter code generation model fine-tuned from DeepSeek-R1-Distill-Qwen-14B using reinforcement learning with GRPO+ and iterative context lengthening. It is optimized for long-context program synthesis and achieves strong performance across coding benchmarks, including 60.6% on LiveCodeBench v5, competitive with models like o3-Mini\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-vl-a3b-thinking:free\n litellm_params:\n model: openai/moonshotai/kimi-vl-a3b-thinking:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n mode: chat\n supports_vision: true\n metadata:\n notes: Kimi-VL is a lightweight Mixture-of-Experts vision-language model that activates only 2.8B parameters per step while delivering strong performance on multimodal reasoning and long-context tasks. The Kimi-VL-A3B-Thinking variant, fine-tuned with chain-of-thought and reinforcement learning, excels in math and visual reasoning benchmarks like MathVision, MMMU, and MathVista, rivaling much larger models such as Qwen2.5-VL-7B and Gemma-3-12B. It supports 128K context and high-resolution input via its MoonViT encoder.\n litellm_provider: openrouter\n - model_name: nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n litellm_params:\n model: openai/nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama-3.1-Nemotron-Ultra-253B-v1 is a large language model (LLM) optimized for advanced reasoning, human-interactive chat, retrieval-augmented generation (RAG), and tool-calling tasks. Derived from Meta’s Llama-3.1-405B-Instruct, it has been significantly customized using Neural Architecture Search (NAS), resulting in enhanced efficiency, reduced memory usage, and improved inference latency. The model supports a context length of up to 128K tokens and can operate efficiently on an 8x NVIDIA H100 node. Note: you must include `detailed thinking on` in the system prompt to enable reasoning. Please see [Usage Recommendations](https://huggingface.co/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1#quick-start-and-usage-recommendations) for more.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-v3-base:free\n litellm_params:\n model: openai/deepseek/deepseek-v3-base:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'Note that this is a base model mostly meant for testing, you need to provide detailed prompts for the model to return useful responses. DeepSeek-V3 Base is a 671B parameter open Mixture-of-Experts (MoE) language model with 37B active parameters per forward pass and a context length of 128K tokens. Trained on 14.8T tokens using FP8 mixed precision, it achieves high training efficiency and stability, with strong performance across language, reasoning, math, and coding tasks. DeepSeek-V3 Base is the pre-trained model behind [DeepSeek V3](/deepseek/deepseek-chat-v3)'\n litellm_provider: openrouter\n - model_name: google/gemini-2.5-pro-exp-03-25\n litellm_params:\n model: openai/google/gemini-2.5-pro-exp-03-25\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 65535\n mode: chat\n supports_vision: true\n metadata:\n notes: 'This model has been deprecated by Google in favor of the (paid Preview model)[google/gemini-2.5-pro-preview] Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy and nuanced context handling. Gemini 2.5 Pro achieves top-tier performance on multiple benchmarks, including first-place positioning on the LMArena leaderboard, reflecting superior human-preference alignment and complex problem-solving abilities.'\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL-32B is a multimodal vision-language model fine-tuned through reinforcement learning for enhanced mathematical reasoning, structured outputs, and visual problem-solving capabilities. It excels at visual analysis tasks, including object recognition, textual interpretation within images, and precise event localization in extended videos. Qwen2.5-VL-32B demonstrates state-of-the-art performance across multimodal benchmarks such as MMMU, MathVista, and VideoMME, while maintaining strong reasoning and clarity in text-based tasks like MMLU, mathematical problem-solving, and code generation.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat-v3-0324:free\n litellm_params:\n model: openai/deepseek/deepseek-chat-v3-0324:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well on a variety of tasks.'\n litellm_provider: openrouter\n - model_name: featherless/qwerky-72b:free\n litellm_params:\n model: openai/featherless/qwerky-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 4096\n metadata:\n notes: Qwerky-72B is a linear-attention RWKV variant of the Qwen 2.5 72B model, optimized to significantly reduce computational cost at scale. Leveraging linear attention, it achieves substantial inference speedups (>1000x) while retaining competitive accuracy on common benchmarks like ARC, HellaSwag, Lambada, and MMLU. It inherits knowledge and language support from Qwen 2.5, supporting approximately 30 languages, making it suitable for efficient inference in large-context applications.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.1-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.1-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 128000\n mode: chat\n supports_vision: true\n metadata:\n notes: Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and vision tasks, including image analysis, programming, mathematical reasoning, and multilingual support across dozens of languages. Equipped with an extensive 128k token context window and optimized for efficient local inference, it supports use cases such as conversational agents, function calling, long-document comprehension, and privacy-sensitive deployments. The updated version is [Mistral Small 3.2](mistralai/mistral-small-3.2-24b-instruct)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-4b-it:free\n litellm_params:\n model: openai/google/gemma-3-4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-12b-it:free\n litellm_params:\n model: openai/google/gemma-3-12b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 12B is the second largest in the family of Gemma 3 models after [Gemma 3 27B](google/gemma-3-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: rekaai/reka-flash-3:free\n litellm_params:\n model: openai/rekaai/reka-flash-3:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a 32K context length and optimized through reinforcement learning (RLOO), it provides competitive performance comparable to proprietary models within a smaller parameter footprint. Ideal for low-latency, local, or on-device deployments, Reka Flash 3 is compact, supports efficient quantization (down to 11GB at 4-bit precision), and employs explicit reasoning tags (\"<reasoning>\") to indicate its internal thought process. Reka Flash 3 is primarily an English model with limited multilingual understanding capabilities. The model weights are released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-27b-it:free\n litellm_params:\n model: openai/google/gemma-3-27b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 27B is Google's latest open source model, successor to [Gemma 2](google/gemma-2-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwq-32b:free\n litellm_params:\n model: openai/qwen/qwq-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: QwQ is the reasoning model of the Qwen series. Compared with conventional instruction-tuned models, QwQ, which is capable of thinking and reasoning, can achieve significantly enhanced performance in downstream tasks, especially hard problems. QwQ-32B is the medium-sized reasoning model, which is capable of achieving competitive performance against state-of-the-art reasoning models, e.g., DeepSeek-R1, o1-mini.\n litellm_provider: openrouter\n - model_name: nousresearch/deephermes-3-llama-3-8b-preview:free\n litellm_params:\n model: openai/nousresearch/deephermes-3-llama-3-8b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepHermes 3 Preview is the latest version of our flagship Hermes series of LLMs by Nous Research, and one of the first models in the world to unify Reasoning (long chains of thought that improve answer accuracy) and normal LLM response modes into one model. We have also improved LLM annotation, judgement, and function calling. DeepHermes 3 Preview is one of the first LLM models to unify both \"intuitive\", traditional mode responses and long chain of thought reasoning responses into a single model, toggled by a system prompt.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 R1 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. The R1 version has been trained for 3 epochs to reason using 800k reasoning traces from the Dolphin-R1 dataset. Dolphin aims to be a general purpose reasoning instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. Dolphin aims to be a general purpose instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-24b-instruct-2501:free\n litellm_params:\n model: openai/mistralai/mistral-small-24b-instruct-2501:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware. [Read the blog post about the model here.](https://mistral.ai/news/mistral-small-3/)'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-qwen-14b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-qwen-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 64000\n metadata:\n notes: 'DeepSeek R1 Distill Qwen 14B is a distilled large language model based on [Qwen 2.5 14B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI''s o1-mini across various benchmarks, achieving new state-of-the-art results for dense models. Other benchmark results include: - AIME 2024 pass@1: 69.7 - MATH-500 pass@1: 93.9 - CodeForces Rating: 1481 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-llama-70b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-llama-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 4096\n metadata:\n notes: 'DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across multiple benchmarks, including: - AIME 2024 pass@1: 70.0 - MATH-500 pass@1: 94.5 - CodeForces Rating: 1633 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1:free\n litellm_params:\n model: openai/deepseek/deepseek-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model & [technical report](https://api-docs.deepseek.com/news/news250120). MIT licensed: Distill & commercialize freely!'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat:free\n litellm_params:\n model: openai/deepseek/deepseek-chat:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations reveal that the model outperforms other open-source models and rivals leading closed-source models. For model details, please visit [the DeepSeek-V3 repo](https://github.com/deepseek-ai/DeepSeek-V3) for more information, or see the [launch announcement](https://api-docs.deepseek.com/news/news1226).'\n litellm_provider: openrouter\n - model_name: google/gemini-2.0-flash-exp:free\n litellm_params:\n model: openai/google/gemini-2.0-flash-exp:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It introduces notable enhancements in multimodal understanding, coding capabilities, complex instruction following, and function calling. These advancements come together to deliver more seamless and robust agentic experiences.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.3-70b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.3-70b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model is optimized for multilingual dialogue use cases and outperforms many of the available open source and closed chat models on common industry benchmarks. Supported languages: English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai. [Model Card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_3/MODEL_CARD.md)'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-coder-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-coder-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning** and **code fixing**. - A more comprehensive foundation for real-world applications such as **Code Agents**. Not only enhancing coding capabilities but also maintaining its strengths in mathematics and general competencies. To read more about its evaluation results, check out [Qwen 2.5 Coder''s blog](https://qwenlm.github.io/blog/qwen2.5-coder-family/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-3b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-3b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages. Trained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-11b-vision-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-11b-vision-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 2048\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and visual question answering, bridging the gap between language generation and visual reasoning. Pre-trained on a massive dataset of image-text pairs, it performs well in complex, high-accuracy image analysis. Its ability to integrate visual understanding with language processing makes it an ideal solution for industries requiring comprehensive visual-linguistic AI applications, such as content creation, AI-driven customer service, and research. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and mathematics, thanks to our specialized expert models in these domains. - Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. - Long-context Support up to 128K tokens and can generate up to 8K tokens. - Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. Usage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.1-405b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.1-405b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs. Meta''s latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations. To read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-nemo:free\n litellm_params:\n model: openai/mistralai/mistral-nemo:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 128000\n metadata:\n notes: 'A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi. It supports function calling and is released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-2-9b-it:free\n litellm_params:\n model: openai/google/gemma-2-9b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 8192\n metadata:\n notes: 'Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size. Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining , safety, and cost-effectiveness. See the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google''s [Gemma Terms of Use](https://ai.google.dev/gemma/terms).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-7b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-7b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length. *Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*'\n litellm_provider: openrouter\n\n #######################################################################################\n # Mattermost Backup Configuration\n #######################################################################################\n mattermost-backup-daily.sh:\n content: |\n #!/bin/sh\n now=$$(date +\"%s_%Y-%m-%d\")\n /usr/bin/mysqldump --opt -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE > \"/backup/$now_$MYSQL_DATABASE.sql\"\n\n # Container management script\n manage-containers.sh:\n content: |\n #!/bin/bash\n # Container management script for media stack\n\n CONTAINERS=\"plex riven-frontend riven blackhole\"\n\n case \"$$1\" in\n start)\n echo \"Starting media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps -a --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Starting $$container...\"\n docker start $$container\n fi\n done\n ;;\n stop)\n echo \"Stopping media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Stopping $$container...\"\n docker stop $$container\n fi\n done\n ;;\n restart)\n echo \"Restarting media stack containers...\"\n $$0 stop\n sleep 5\n $$0 start\n ;;\n *)\n echo \"Usage: $$0 {start|stop|restart}\"\n exit 1\n ;;\n esac\n\n # Symlink cleanup script\n symlink-cleanup.sh:\n content: |\n #!/bin/bash\n # Cleanup broken symlinks\n\n echo \"Cleaning up broken symlinks...\"\n\n # Find and remove broken symlinks in media directories\n find /mnt/media -type l -exec test ! -e {} \\; -print -delete\n find /mnt/symlinks -type l -exec test ! -e {} \\; -print -delete\n\n echo \"Symlink cleanup complete\"\n\n # Backup configuration script\n backup-configs.sh:\n content: |\n #!/bin/bash\n # Backup configuration files\n\n BACKUP_DIR=\"${BACKUP_PATH:-/mnt/local/backups}/$(date +%Y%m%d_%H%M%S)\"\n CONFIG_PATH=\"${CONFIG_PATH:-./volumes}\"\n\n echo \"Creating backup directory: $BACKUP_DIR\"\n mkdir -p \"$BACKUP_DIR\"\n\n echo \"Backing up configuration files...\"\n if [ -d \"$CONFIG_PATH\" ]; then\n cp -rv \"$CONFIG_PATH\" \"$BACKUP_DIR/\"\n echo \"Backup completed: $BACKUP_DIR\"\n else\n echo \"Config directory not found: $CONFIG_PATH\"\n exit 1\n fi\n\n # Keep only last 7 days of backups\n find ${BACKUP_PATH:-/mnt/local/backups} -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true\n\n echo \"Backup process complete\"\n\n plex_update.sh:\n content: |\n #!/bin/bash\n # PLEX PARTIAL SCAN script or PLEX UPDATE script\n # When zurg detects changes, it can trigger this script IF your config.yml contains\n # on_library_update: sh plex_update.sh \"$$@\"\n # Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh\n token=${PLEX_TOKEN:-replace-me}\n\n # DON'T CHANGE ANYTHING AFTER THIS LINE\n plex_url=\"${PLEX_INTERNAL_URL:-http://plex:32400}\" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400\n zurg_mount=\"${ZURG_MOUNT_PATH:-/mnt/remote/realdebrid}\" # Replace with your zurg mount path, ensure this is what Plex sees\n\n # Get the list of section IDs\n section_ids=$$(curl -sLX GET \"$$plex_url/library/sections\" -H \"X-Plex-Token: $$token\" | xmllint --xpath \"//Directory/@key\" - | sed 's/key=\"//g' | tr '\"' '\\n')\n for arg in \"$$@\"\n do\n modified_arg=\"$$zurg_mount/$$arg\"\n encoded_arg=$$(echo -n \"$$modified_arg\" | python3 -c \"import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))\")\n if [ -z \"$$encoded_arg\" ]; then\n echo \"Error: Encoded argument is empty. Check the input or encoding process.\"\n continue\n fi\n for section_id in $$section_ids\n do\n final_url=\"$$plex_url/library/sections/$$section_id/refresh?path=$$encoded_arg&X-Plex-Token=$$token\"\n echo \"Encoded argument: $$encoded_arg\"\n echo \"Section ID: $$section_id\"\n echo \"Final URL: $$final_url\"\n curl -s \"$$final_url\"\n done\n done\n echo \"All updated sections refreshed\"\n # credits to godver3\n\n headscale-config:\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://myheadscale.example.com:443\n #\n #server_url: https://headscale-server.$DOMAIN:443\n server_url: ${HEADSCALE_INTERNAL_URL:-http://headscale-server:8080}\n\n # Address to listen to / bind to on the server\n #\n listen_addr: 0.0.0.0:8080\n\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n\n grpc_listen_addr: 0.0.0.0:50443\n\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n\n # Private key used encrypt the traffic between headscale\n # and Tailscale clients.\n # The private key file which will be\n # autogenerated if it's missing\n private_key_path: /var/lib/headscale/private.key\n\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: random\n\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: false\n\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"headscale\"\n region_name: \"Headscale Embedded DERP\"\n\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n ipv4: 100.64.0.2\n ipv6: fd7a:115c:a1e0::2\n\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n\n # How often should we check for DERP updates?\n update_frequency: 24h\n\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: ${HEADSCALE_DEBUG:-false}\n\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: ${HEADSCALE_PREPARE_STMT:-true}\n\n # Enable parameterized queries.\n parameterized_queries: ${HEADSCALE_PARAMETERIZED_QUERIES:-true}\n\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: ${HEADSCALE_SKIP_ERR_RECORD_NOT_FOUND:-true}\n\n # Threshold for slow queries in milliseconds.\n slow_threshold: ${HEADSCALE_SLOW_THRESHOLD:-1000}\n\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: ${HEADSCALE_WRITE_AHEAD_LOG:-true}\n\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: ${HEADSCALE_WAL_AUTOCHECKPOINT:-1000}\n\n log:\n # Output formatting for logs: text or json\n format: ${HEADSCALE_LOG_FORMAT:-text}\n level: ${HEADSCALE_LOG_LEVEL:-info}\n\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: ${HEADSCALE_POLICY_MODE:-file}\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: ${HEADSCALE_POLICY_PATH:-\"\"}\n\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: ${HEADSCALE_MAGIC_DNS:-true}\n\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: myscale.$DOMAIN\n\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: ${HEADSCALE_OVERRIDE_LOCAL_DNS:-false}\n\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n # - https://dns.nextdns.io/abc123\n\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {\n # \"headscale.$DOMAIN\": [\n # \"1.1.1.1\",\n # \"1.0.0.1\",\n # \"2606:4700:4700::1111\",\n # \"2606:4700:4700::1001\"\n # ]\n }\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n\n # Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: ${HEADSCALE_LOGTAIL_ENABLED:-false}\n\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: ${HEADSCALE_RANDOMIZE_CLIENT_PORT:-false}\n\n\nx-common-env: &common-env\n TZ: ${TZ:-America/Chicago}\n PUID: ${PUID:-1001}\n PGID: ${PGID:-988}\n UMASK: ${UMASK:-002}\n\nservices:\n headscale-server:\n image: docker.io/headscale/headscale:latest\n container_name: headscale-server\n hostname: headscale-server\n networks:\n - publicnet\n extra_hosts: *common-hostname-aliases\n expose:\n - 3478 # STUN\n - 8080 # HTTP\n - 9090 # Metrics\n - 50443 # gRPC\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yaml\n mode: 0644\n volumes:\n - ${CERTS_PATH:-./certs}/private/bolabaden.org.key:/var/lib/headscale/private.key\n - ${CONFIG_PATH:-./volumes}/headscale/config:/etc/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/lib:/var/lib/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/run:/var/run/headscale\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.headscale-server.service: headscale-server\n traefik.http.routers.headscale-server.rule: Host(`headscale-server.$DOMAIN`) || Host(`headscale-server.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/`) # || HostRegexp(`^(www\\.)?headscale-server\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale-server\\.$TS_HOSTNAME\\.$DOMAIN$`)) && PathPrefix(`/`)\n traefik.http.services.headscale-server.loadbalancer.server.port: 8080\n # Homepage integration\n homepage.group: Networking\n homepage.name: Headscale\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale is a server that manages your Tailscale network.\n command: serve\n restart: always\n headscale:\n depends_on:\n - headscale-server\n image: ghcr.io/gurucomputing/headscale-ui:latest\n container_name: headscale\n hostname: headscale\n extra_hosts: *common-hostname-aliases\n pull_policy: always\n networks:\n - publicnet\n dns:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n - 9.9.9.9\n - 2620:fe::fe\n - 8.8.8.8\n - 2001:4860:4860::8888\n - 2001:4860:4860::8844\n labels:\n traefik.enable: \"true\"\n #traefik.http.routers.headscale.middlewares: nginx-auth@file\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?headscale\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale\\.$TS_HOSTNAME\\.$DOMAIN$`)) # && PathPrefix(`/web`)\n traefik.http.services.headscale.loadbalancer.server.port: 80\n homepage.group: Networking\n homepage.name: Headscale UI\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale UI is a web interface for Headscale, an open source implementation of Tailscale's Admin control panel.\n restart: always\n\n hedgedoc:\n depends_on:\n - hedgedoc-db\n image: quay.io/hedgedoc/hedgedoc:latest\n container_name: hedgedoc\n hostname: hedgedoc\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000\n environment:\n CMD_DB_URL: postgres://hedgedoc:password@hedgedoc-db:5432/hedgedoc\n CMD_DOMAIN: hedgedoc.$DOMAIN\n CMD_URL_ADDPORT: false\n CMD_PROTOCOL_USESSL: true\n CMD_SESSION_SECRET: \"discolor-subtitle-seducing-result-ceramics\" # define secret\n CMD_ALLOW_EMAIL_REGISTER: \"true\" # allow registration\n CMD_EMAIL: \"true\" # allow login; only guest notes\n # ------- OAUTH SSO -------\n # see https://docs.goauthentik.io/integrations/services/hedgedoc/\n #- CMD_ALLOW_ANONYMOUS_EDITS=False\n #- CMD_OAUTH2_USER_PROFILE_URL=https://authentik.$DOMAIN/application/o/userinfo/\n #- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username\n #- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name\n #- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email\n #- CMD_OAUTH2_TOKEN_URL=https://authentik.$DOMAIN/application/o/token/\n #- CMD_OAUTH2_AUTHORIZATION_URL=https://authentik.$DOMAIN/application/o/authorize/\n #- CMD_OAUTH2_CLIENT_ID=<ID>\n #- CMD_OAUTH2_CLIENT_SECRET=<SECRET>\n #- CMD_OAUTH2_PROVIDERNAME=Authentik\n #- CMD_OAUTH2_SCOPE=openid email profile\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/uploads:/hedgedoc/public/uploads\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.hedgedoc.service: hedgedoc\n traefik.http.routers.hedgedoc.middlewares: nginx-auth@file\n traefik.http.routers.hedgedoc.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc.loadbalancer.server.port: 3000\n # prevent unauthorized access to the /metrics endpoint\n traefik.http.routers.hedgedoc-metrics.service: hedgedoc-metrics\n traefik.http.routers.hedgedoc-metrics.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/metrics`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc-metrics.loadbalancer.server.port: 3000\n traefik.http.routers.hedgedoc-metrics.middlewares: nginx-auth@file\n restart: always\n hedgedoc-db:\n image: postgres:16.3-alpine\n container_name: hedgedoc-db\n networks:\n - publicnet\n expose:\n - 5432\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/database:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: hedgedoc\n POSTGRES_PASSWORD: password\n POSTGRES_DB: hedgedoc\n restart: always\n mongodb:\n # 🔹🔹 MongoDB 🔹🔹\n image: mongo:latest\n container_name: mongodb\n hostname: ${MONGODB_HOSTNAME:-mongodb}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 27017\n volumes:\n - ${CONFIG_PATH:-./volumes}/mongodb/data:/data/db\n environment:\n <<: *common-env\n healthcheck:\n test: [\"CMD-SHELL\", \"mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\\\"ping\\\").ok' > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 10s\n retries: 5\n start_period: 40s\n restart: always\n redis:\n # 🔹🔹 Redis 🔹🔹\n # NOTE: If you want to use Valkey (open source) instead of Redis (source available),\n # uncomment the Valkey statement and comment out the Redis statement.\n # Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.\n image: redis:alpine\n # image: valkey/valkey:alpine\n container_name: redis\n hostname: redis\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/redis:/data\n environment:\n <<: *common-env\n REDIS_HOST: ${REDIS_HOST:-redis}\n REDIS_PORT: ${REDIS_PORT:-6379}\n REDIS_DATABASE: ${REDIS_DATABASE:-0}\n REDIS_USERNAME: ${REDIS_USERNAME:-default}\n REDIS_PASSWORD: ${REDIS_PASSWORD:-redis}\n command: redis-server --appendonly yes --save 60 1 --bind 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 5s\n retries: 5\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 200M\n limits:\n cpus: 0.5\n memory: 4G\n restart: always\n open-webui:\n # 🔹🔹 Open WebUI 🔹🔹\n depends_on:\n mcpo:\n condition: service_healthy\n litellm:\n condition: service_healthy\n image: ghcr.io/open-webui/open-webui:main\n container_name: open-webui\n hostname: open-webui\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${OPEN_WEBUI_PORT:-8080}\n volumes:\n - ${CONFIG_PATH:-./volumes}/open-webui:/app/backend/data\n environment:\n # ===== GENERAL CONFIGURATION =====\n # Controls whether admin users can export data\n ENABLE_ADMIN_EXPORT: True\n\n # Enables admin users to access all chats\n ENABLE_ADMIN_CHAT_ACCESS: True\n\n # Bypasses model access control. (default: False)\n BYPASS_MODEL_ACCESS_CONTROL: True\n\n # Environment setting (dev/prod) - Docker default is prod\n ENV: prod\n\n # If set to False, all PersistentConfig variables are treated as regular variables\n ENABLE_PERSISTENT_CONFIG: True\n\n # Sets the port to run Open WebUI from\n PORT: ${OPEN_WEBUI_PORT:-8080}\n\n # When enabled, saves each chunk of streamed chat data to database in real time\n ENABLE_REALTIME_CHAT_SAVE: True\n\n # Used for identifying the Git SHA of the build for releases\n WEBUI_BUILD_HASH: dev-build\n\n # ===== AIOHTTP CLIENT CONFIGURATION =====\n # Specifies the timeout duration in seconds for the AIOHTTP client\n AIOHTTP_CLIENT_TIMEOUT: 300\n\n # Sets the timeout in seconds for fetching the model list\n AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST: 10\n\n # Sets the timeout in seconds for fetching the OpenAI model list\n AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST: 10\n\n # ===== DIRECTORY CONFIGURATION =====\n # Specifies the base directory for data storage\n DATA_DIR: ./data\n\n # Specifies the location of the built frontend files\n FRONTEND_BUILD_DIR: ../build\n\n # Specifies the directory for static files\n STATIC_DIR: ./static\n\n # ===== OLLAMA CONFIGURATION =====\n # Configures the Ollama backend URL\n OLLAMA_BASE_URL: /ollama\n\n # Builds the Docker image with a bundled Ollama instance\n USE_OLLAMA_DOCKER: false\n\n # If set, assumes Helm chart deployment\n K8S_FLAG: False\n\n # ===== SECURITY CONFIGURATION =====\n # Forwards user information as X-headers to OpenAI API and Ollama API\n ENABLE_FORWARD_USER_INFO_HEADERS: False\n\n # Sets the SameSite attribute for session cookies (lax/strict/none)\n WEBUI_SESSION_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for session cookies\n WEBUI_SESSION_COOKIE_SECURE: False\n\n # Sets the SameSite attribute for auth cookies\n WEBUI_AUTH_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for auth cookies\n WEBUI_AUTH_COOKIE_SECURE: False\n\n # Enables or disables authentication\n WEBUI_AUTH: ${WEBUI_AUTH:-True}\n\n # Overrides the randomly generated string used for JSON Web Token\n WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY:?}\n\n # When enabled, makes automatic update checks and notifies about version updates\n ENABLE_VERSION_UPDATE_CHECK: True\n\n # Disables Open WebUI's network connections for update checks and automatic model downloads\n OFFLINE_MODE: False\n\n # Resets the config.json file on startup\n RESET_CONFIG_ON_START: False\n\n # Enables safe mode, which disables potentially unsafe features\n SAFE_MODE: False\n\n # Sets the allowed origins for Cross-Origin Resource Sharing (CORS)\n CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_CORS_ALLOWED_ORIGIN:-*}\n\n # Determines whether to allow custom models defined on the Hub\n RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE: True\n\n # Determines whether to allow custom models for reranking\n RAG_RERANKING_MODEL_TRUST_REMOTE_CODE: True\n\n # Toggles automatic update of the Sentence-Transformer model\n RAG_EMBEDDING_MODEL_AUTO_UPDATE: True\n\n # Toggles automatic update of the reranking model\n RAG_RERANKING_MODEL_AUTO_UPDATE: True\n\n # ===== VECTOR DATABASE CONFIGURATION =====\n # Specifies which vector database system to use\n VECTOR_DB: chroma\n\n # ===== RAG CONFIGURATION =====\n # Sets the directory for TikToken cache\n TIKTOKEN_CACHE_DIR: /app/backend/data/cache/tiktoken\n\n # Sets the batch size for OpenAI embeddings\n RAG_EMBEDDING_OPENAI_BATCH_SIZE: 1\n\n # ===== DOCKER-SPECIFIC CONFIGURATION =====\n # Indicates running in Docker environment\n DOCKER: true\n\n # Home directory for the container\n HOME: /root\n\n # Hugging Face home directory for embedding models\n HF_HOME: /app/backend/data/cache/embedding/models\n\n # Sentence Transformers home directory\n SENTENCE_TRANSFORMERS_HOME: /app/backend/data/cache/embedding/models\n\n # CUDA Docker version to use\n USE_CUDA_DOCKER_VER: cu128\n\n # Embedding model to use in Docker\n USE_EMBEDDING_MODEL_DOCKER: sentence-transformers/all-MiniLM-L6-v2\n\n # ===== TELEMETRY DISABLING =====\n # Disables anonymized telemetry\n ANONYMIZED_TELEMETRY: false\n\n # Disables tracking\n DO_NOT_TRACK: true\n\n # Disables Scarf analytics\n SCARF_NO_ANALYTICS: true\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.open-webui.rule: Host(`open-webui.$DOMAIN`) || Host(`open-webui.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.open-webui.loadbalancer.server.port: \"${OPEN_WEBUI_PORT:-8080}\"\n homepage.group: AI\n homepage.name: Open WebUI\n homepage.icon: open-webui.png\n homepage.href: https://open-webui.$DOMAIN/\n homepage.description: Open WebUI is a feature-rich self-hosted webui for chatting with GenAI.\n command: [\"bash\", \"start.sh\"]\n working_dir: /app/backend\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8080\"]\n interval: 5s\n timeout: 30s\n retries: 10\n restart: always\n mcpo:\n image: ghcr.io/open-webui/mcpo:main\n container_name: mcpo\n hostname: mcpo\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/mcpo/mcp_servers.json:/app/config/mcp_servers.json # TODO: use configs: syntax for configmap here.\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/logs:/app/logs\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/data:/app/data\n environment:\n MCPO_API_KEY: $MCPO_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mcpo.rule: Host(`mcpo.$DOMAIN`) || Host(`mcpo.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.mcpo.loadbalancer.server.port: 8000\n homepage.group: MCPO\n homepage.name: MCPO\n homepage.icon: mcpo.png\n homepage.href: https://mcpo.$DOMAIN/\n homepage.description: MCPO is a tool for managing and interacting with AI models.\n command: --api-key \"$MCPO_API_KEY\" --host 0.0.0.0 --port 8000 --cors-allow-origins \"*\" --config /app/config/mcp_servers.json\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/openapi.json\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n litellm:\n image: 'ghcr.io/berriai/litellm-database:main-stable'\n# image: ghcr.io/berriai/litellm:main-stable\n container_name: litellm\n hostname: litellm\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n depends_on:\n litellm-postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n volumes:\n - ${CONFIG_PATH:-./volumes}/litellm:/app/config\n configs:\n - source: litellm_config.yaml\n target: /app/config/litellm_config.yaml\n mode: 0440\n environment:\n - 'LITELLM_LOG=${LITELLM_LOG:-INFO}'\n - 'LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}'\n - 'UI_USERNAME=${LITELLM_UI_USERNAME:-admin}'\n - 'UI_PASSWORD=$LITELLM_MASTER_KEY'\n - 'DATABASE_URL=postgresql://${LITELLM_POSTGRES_USER:-litellm}:${LITELLM_POSTGRES_PASSWORD:-litellm}@${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}:5432/${LITELLM_POSTGRES_DB:-litellm}'\n - 'REDIS_HOST=${REDIS_HOSTNAME:-redis}'\n - 'REDIS_PORT=${REDIS_PORT:-6379}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'VOYAGE_API_KEY=$VOYAGE_API_KEY'\n - 'AI21_API_KEY=$AI21_API_KEY'\n - 'ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY'\n - 'APIFY_API_TOKEN=$APIFY_API_TOKEN'\n - 'APIPIE_API_KEY=$APIPIE_API_KEY'\n - 'ARLIAI_API_KEY=$ARLIAI_API_KEY'\n - 'AWANLLM_API_KEY=$AWANLLM_API_KEY'\n - 'BASETEN_API_KEY=$BASETEN_API_KEY'\n - 'BITO_ACCESS_KEY=$BITO_ACCESS_KEY'\n - 'BRAVE_API_KEY=$BRAVE_API_KEY'\n - 'CEREBRIUMAI_API_KEY=$CEREBRIUMAI_API_KEY'\n - 'DEEPINFRA_API_KEY=$DEEPINFRA_API_KEY'\n - 'DEEPGRAM_API_KEY=$DEEPGRAM_API_KEY'\n - 'DEEPSEEK_API_KEY=$DEEPSEEK_API_KEY'\n - 'DOCKER_TOKEN=$DOCKER_TOKEN'\n - 'DOCKERHUB_TOKEN=$DOCKERHUB_TOKEN'\n - 'EVERART_API_KEY=$EVERART_API_KEY'\n - 'EXA_API_KEY=$EXA_API_KEY'\n - 'FOREFRONTAI_API_KEY=$FOREFRONTAI_API_KEY'\n - 'GEMINI_API_KEY=$GEMINI_API_KEY'\n - 'GLAMA_API_KEY=$GLAMA_API_KEY'\n - 'GROK_API_KEY=$GROK_API_KEY'\n - 'GROQ_API_KEY=$GROQ_API_KEY'\n - 'HF_TOKEN=$HF_TOKEN'\n - 'HUGGINGFACE_ACCESS_TOKEN=$HUGGINGFACE_ACCESS_TOKEN'\n - 'HUGGINGFACE_API_TOKEN=$HUGGINGFACE_API_TOKEN'\n - 'JINA_API_KEY=$JINA_API_KEY'\n - 'KAGI_API_KEY=$KAGI_API_KEY'\n - 'KLUSTER_API_KEY=$KLUSTER_API_KEY'\n - 'LANGCHAIN_API_KEY=$LANGCHAIN_API_KEY'\n - 'LANGSMITH_API_KEY=$LANGSMITH_API_KEY'\n - 'LITELLM_MASTER_KEY=$LITELLM_MASTER_KEY'\n - 'MISTRAL_API_KEY=$MISTRAL_API_KEY'\n - 'MISTRALAI_API_KEY=$MISTRALAI_API_KEY'\n - 'OPENAI_API_KEY=$OPENAI_API_KEY'\n - 'OPENROUTER_API_KEY=$OPENROUTER_API_KEY'\n - 'PERPLEXITY_API_KEY=$PERPLEXITY_API_KEY'\n - 'PERPLEXITYAI_API_KEY=$PERPLEXITYAI_API_KEY'\n - 'REPLICATE_API_KEY=$REPLICATE_API_KEY'\n - 'SAMBANOVA_API_KEY=$SAMBANOVA_API_KEY'\n - 'SEARCH1API_KEY=$SEARCH1API_KEY'\n - 'SERPAPI_API_KEY=$SERPAPI_API_KEY'\n - 'SMITHERY_API_KEY=$SMITHERY_API_KEY'\n - 'TANDOOR_SECRET_KEY=$TANDOOR_SECRET_KEY'\n - 'TODOIST_API_KEY=$TODOIST_API_KEY'\n - 'TOGETHERAI_API_KEY=$TOGETHERAI_API_KEY'\n - 'UNIFY_API_KEY=$UNIFY_API_KEY'\n - 'UPSTAGE_API_KEY=$UPSTAGE_API_KEY'\n - 'UPSTAGEAI_API_KEY=$UPSTAGEAI_API_KEY'\n - 'VEYRAX_API_KEY=$VEYRAX_API_KEY'\n - 'YANDEX_API_KEY=$YANDEX_API_KEY'\n - 'YOU_API_KEY=$YOU_API_KEY'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.litellm.rule: Host(`litellm.$DOMAIN`) || Host(`litellm.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.litellm.loadbalancer.server.port: 4000\n homepage.group: AI\n homepage.name: Litellm\n homepage.icon: litellm.png\n homepage.href: https://litellm.$DOMAIN/\n homepage.description: Litellm is a tool for managing and interacting with AI models.\n command: --config /app/config/litellm_config.yaml --port 4000 --host 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://localhost:4000/health/liveliness\"]\n interval: 30s\n timeout: 15s\n retries: 5\n start_period: 30s\n restart: always\n litellm-postgres:\n# image: 'postgres:16-alpine'\n image: postgres:16.3-alpine3.20\n container_name: litellm-postgres\n hostname: ${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n volumes:\n - '${CONFIG_PATH:-./volumes}/litellm/pgdata:/var/lib/postgresql/data'\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB\"]\n interval: 5s\n timeout: 5s\n retries: 3\n restart: always\n searxng:\n # 🔹🔹 SearxNG 🔹🔹 # https://hub.docker.com/r/searxng/searxng\n # SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n image: docker.io/searxng/searxng:latest\n container_name: searxng\n hostname: ${SEARXNG_HOSTNAME:-searxng}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # touch ${CONFIG_PATH:-./volumes}/searxng/limiter.toml\n - ${CONFIG_PATH:-./volumes}/searxng:/etc/searxng\n environment:\n <<: *common-env\n SEARXNG_BASE_URL: ${SEARXNG_URL:-http://searxng:8080}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: 8080\n homepage.group: Search\n homepage.name: SearxNG\n homepage.icon: searxng.png\n homepage.href: https://searxng.$DOMAIN/\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n healthcheck:\n test: [\"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n restart: always\n code-server:\n # 🔹🔹 Code Server 🔹🔹\n image: docker.io/linuxserver/code-server:latest\n container_name: code-server\n hostname: code-server\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/code-server/dev/config:/config\n - ${CONFIG_PATH:-./volumes}/code-server/dev/workspace:/workspace\n - ${ROOT_PATH:-.}:/workspace\n user: ${PUID:-1001}:${PGID:-988}\n environment:\n <<: *common-env\n CODESERVER_PASSWORD: $SUDO_PASSWORD\n PASSWORD: $SUDO_PASSWORD\n CODESERVER_SUDO_PASSWORD: $SUDO_PASSWORD\n SUDO_PASSWORD: $SUDO_PASSWORD\n CODESERVER_DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.code-server.loadbalancer.server.port: 8443\n homepage.group: Infrastructure\n homepage.name: Code Dev\n homepage.icon: code-server.png\n homepage.href: https://code-server.$DOMAIN/\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0.15\n memory: 200M\n limits:\n cpus: 2\n memory: 4G\n restart: always\n\n init_prometheus:\n image: prom/prometheus:latest\n container_name: init_prometheus\n hostname: init_prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n user: root\n entrypoint: /bin/sh -c \"chown -R 65534:65534 /prometheus\"\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n restart: \"no\"\n\n prometheus:\n depends_on:\n - init_prometheus\n image: prom/prometheus:latest\n container_name: prometheus\n hostname: prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n configs:\n - source: prometheus.yml\n target: /etc/prometheus/prometheus.yml\n mode: 0777\n - source: alert.rules\n target: /etc/prometheus/alert.rules\n mode: 0777\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n - '--web.console.templates=/usr/share/prometheus/consoles'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.prometheus.rule: Host(`prometheus.$DOMAIN`) || Host(`prometheus.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.prometheus.loadbalancer.server.port: 9090\n restart: always\n\n bolabaden-nextjs:\n # 🔹🔹 bolabaden nextJS main website with integrated auth 🔹🔹\n build:\n context: ${SRC_PATH:-./projects}/bolabaden-site\n dockerfile: Dockerfile\n image: th3w1zard1/bolabaden-nextjs:latest\n container_name: bolabaden-nextjs\n hostname: bolabaden-nextjs\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - ${BOLABADEN_NEXTJS_PORT:-3000}:${BOLABADEN_NEXTJS_PORT:-3000}\n volumes:\n - ${CONFIG_PATH:-./volumes}/tinyauth:/data\n environment:\n <<: *common-env\n NODE_ENV: production\n PORT: ${BOLABADEN_NEXTJS_PORT:-3000}\n HOSTNAME: ${BOLABADEN_NEXTJS_HOSTNAME:-0.0.0.0}\n # NextAuth.js Configuration (compatible with TinyAuth)\n SECRET: $TINYAUTH_SECRET?\n NEXTAUTH_URL: https://$DOMAIN\n NEXTAUTH_SECRET: $TINYAUTH_SECRET?\n APP_URL: https://auth.$DOMAIN\n USERS: $TINYAUTH_USERS\n # Google OAuth Configuration\n GOOGLE_CLIENT_ID: $TINYAUTH_GOOGLE_CLIENT_ID\n GOOGLE_CLIENT_SECRET: $TINYAUTH_GOOGLE_CLIENT_SECRET\n # GitHub OAuth Configuration\n GITHUB_CLIENT_ID: $TINYAUTH_GITHUB_CLIENT_ID\n GITHUB_CLIENT_SECRET: $TINYAUTH_GITHUB_CLIENT_SECRET\n # Additional settings (TinyAuth compatible)\n SESSION_EXPIRY: ${TINYAUTH_SESSION_EXPIRY:-604800} # 2 weeks session expiry\n COOKIE_SECURE: ${TINYAUTH_COOKIE_SECURE:-true} # Send cookie only with HTTPS\n APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # Customize login page title\n NEXT_PUBLIC_APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # For client-side access\n LOGIN_MAX_RETRIES: ${TINYAUTH_LOGIN_MAX_RETRIES:-15} # Maximum login attempts before account lockout\n LOGIN_TIMEOUT: ${TINYAUTH_LOGIN_TIMEOUT:-300} # Lock account for 5 minutes after too many failed attempts\n OAUTH_AUTO_REDIRECT: ${TINYAUTH_OAUTH_AUTO_REDIRECT:-none} # Options: none, github, google, or credentials\n OAUTH_WHITELIST: ${TINYAUTH_OAUTH_WHITELIST:-boden.crouch@gmail.com} # e.g. user1,user2,/^admin.*/\n # User level configuration\n ADMIN_ACCOUNTS: ${TINYAUTH_ADMIN_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of admin emails\n OWNER_ACCOUNTS: ${TINYAUTH_OWNER_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of owner emails\n labels:\n traefik.enable: \"true\"\n # Main website router\n traefik.http.routers.bolabaden-nextjs.rule: 'Host(`$DOMAIN`) || Host(`$TS_HOSTNAME.$DOMAIN`) || Host(`$DUCKDNS_DOMAIN`) || Host(`$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.bolabaden-nextjs.service: bolabaden-nextjs\n # Auth router (replaces tinyauth)\n #traefik.http.routers.tinyauth.rule: 'Host(`auth.$DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DOMAIN`) || Host(`auth.$DUCKDNS_DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n #traefik.http.routers.tinyauth.service: bolabaden-nextjs\n # ForwardAuth middleware\n #traefik.http.middlewares.tinyauth.forwardauth.address: http://bolabaden-nextjs:${BOLABADEN_NEXTJS_PORT:-3000}/api/auth/traefik\n # Service configuration\n traefik.http.services.bolabaden-nextjs.loadbalancer.server.port: ${BOLABADEN_NEXTJS_PORT:-3000}\n # Homepage integration\n homepage.group: Web Services\n homepage.name: Bolabaden\n homepage.icon: dashboard.png\n homepage.href: https://$DOMAIN/\n homepage.description: Bolabaden main website with embedded services and authentication\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n\n whoami:\n # 🔹🔹 Whoami 🔹🔹\n image: traefik/whoami:latest\n container_name: whoami\n hostname: whoami\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: 'Host(`whoami.$DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DOMAIN`) || Host(`whoami.$DUCKDNS_DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n homepage.group: Web Services\n homepage.name: Whoami\n homepage.icon: whoami.png\n homepage.href: https://whoami.$DOMAIN\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n restart: always\n\n dokku:\n # 🔹🔹 Dokku 🔹🔹\n image: dokku/dokku:0.35.20\n container_name: dokku\n hostname: dokku\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - \"127.0.0.1:3022:22\" # SSH\n - \"127.0.0.1:8080:80\" # HTTP\n - \"127.0.0.1:8443:443\" # HTTPS\n volumes:\n - \"/var/lib/dokku:/mnt/dokku\" # Dokku data\n - \"/var/run/docker.sock:/var/run/docker.sock\" # Docker socket\n environment:\n DOKKU_HOSTNAME: dokku.$DOMAIN\n DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku\n DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dokku-http.service: dokku-http\n traefik.http.routers.dokku-https.service: dokku-https\n traefik.http.routers.dokku-ssh.service: dokku-ssh\n traefik.http.routers.dokku-http.rule: 'Host(`dokku-http.$DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-http.$DUCKDNS_DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-https.rule: 'Host(`dokku-https.$DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-https.$DUCKDNS_DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-ssh.rule: 'Host(`dokku-ssh.$DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-ssh.$DUCKDNS_DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dokku-http.loadbalancer.server.port: 80\n traefik.http.services.dokku-https.loadbalancer.server.port: 443\n traefik.http.services.dokku-ssh.loadbalancer.server.port: 22\n homepage.group: Infrastructure\n homepage.name: Dokku\n homepage.icon: dokku.png\n homepage.href: https://dokku.$DOMAIN/\n homepage.description: Dokku is a lightweight PaaS that runs on top of Docker.\n restart: always\n\n dozzle:\n # 🔹🔹 Dozzle 🔹🔹\n image: amir20/dozzle:latest\n container_name: dozzle\n hostname: dozzle\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:z\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: 'Host(`dozzle.$DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DOMAIN`) || Host(`dozzle.$DUCKDNS_DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dozzle.loadbalancer.server.port: 8080\n homepage.group: System Monitoring\n homepage.name: Dozzle\n homepage.icon: dozzle.png\n homepage.href: https://dozzle.$DOMAIN/\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n restart: always\n\n homepage:\n # 🔹🔹 Homepage 🔹🔹 # https://github.com/gethomepage/homepage\n image: ghcr.io/gethomepage/homepage\n container_name: homepage\n hostname: homepage\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # DO NOT create a bind mount to the entire /app/public/ directory.\n - /var/run/docker.sock:/var/run/docker.sock:z\n - ${CONFIG_PATH:-./volumes}/homepage:/app/config\n environment:\n <<: *common-env\n HOMEPAGE_ALLOWED_HOSTS: ${HOMEPAGE_ALLOWED_HOSTS:-*}\n HOMEPAGE_VAR_TITLE: ${HOMEPAGE_VAR_TITLE:-Bolabaden}\n HOMEPAGE_VAR_SEARCH_PROVIDER: ${HOMEPAGE_VAR_SEARCH_PROVIDER:-google}\n HOMEPAGE_VAR_HEADER_STYLE: ${HOMEPAGE_VAR_HEADER_STYLE:-}\n HOMEPAGE_VAR_WEATHER_CITY: ${HOMEPAGE_VAR_WEATHER_CITY:-Chicago}\n HOMEPAGE_VAR_WEATHER_LAT: ${HOMEPAGE_VAR_WEATHER_LAT:-41.8781}\n HOMEPAGE_VAR_WEATHER_LONG: ${HOMEPAGE_VAR_WEATHER_LONG:--87.6298}\n # HOMEPAGE_VAR_WEATHER_TIME: ${HOMEPAGE_VAR_WEATHER_TIME:-}\n HOMEPAGE_VAR_WEATHER_UNIT: ${HOMEPAGE_VAR_WEATHER_UNIT:-fahrenheit}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: 'Host(`homepage.$DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DOMAIN`) || Host(`homepage.$DUCKDNS_DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.homepage.loadbalancer.server.port: 3000\n homepage.group: Dashboards\n homepage.name: Homepage\n homepage.icon: homepage.png\n homepage.href: https://homepage.$DOMAIN/\n homepage.description: Homepage is a dashboard that displays all of your services.\n healthcheck: # docker exec homepage ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 0.25 # deliberately hobble the CPU in favor of GPU transcoding\n memory: 1G\n restart: always\n\n watchtower:\n # 🔹🔹 Watchtower 🔹🔹\n image: containrrr/watchtower:latest\n container_name: watchtower\n hostname: watchtower\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n# - ${CONFIG_PATH:-./volumes}/watchtower/data:/data\n environment:\n <<: *common-env\n WATCHTOWER_CLEANUP: ${WATCHTOWER_CLEANUP:-true}\n WATCHTOWER_SCHEDULE: ${WATCHTOWER_SCHEDULE:-0 0 6 * * *} # Run at 6am daily\n WATCHTOWER_NOTIFICATION_URL: ${WATCHTOWER_NOTIFICATION_URL:-}\n WATCHTOWER_NOTIFICATION_REPORT: ${WATCHTOWER_NOTIFICATION_REPORT:-true}\n WATCHTOWER_DEBUG: ${WATCHTOWER_DEBUG:-true}\n WATCHTOWER_LOG_LEVEL: ${WATCHTOWER_LOG_LEVEL:-debug}\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n restart: always\n\n flaresolverr:\n # 🔹🔹 Flaresolverr 🔹🔹 # https://github.com/flaresolverr/flaresolverr\n image: ghcr.io/flaresolverr/flaresolverr:latest\n #image: ghcr.io/thephaseless/byparr:latest\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${FLARESOLVERR_PORT:-8191}\n environment:\n <<: *common-env\n # FlareSolverr Environment Variables\n \n LOG_LEVEL: info # Verbosity of the logging. Use LOG_LEVEL=debug for more information.\n LOG_HTML: false # Only for debugging. If true all HTML that passes through the proxy will be logged to the console in debug level.\n CAPTCHA_SOLVER: none # Captcha solving method. It is used when a captcha is encountered. Note: none of the captcha solvers work with the current version of Flaresolverr.\n PORT: ${FLARESOLVERR_PORT:-8191} # Listening port.\n HOST: 0.0.0.0 # Listening interface.\n HEADLESS: ${FLARESOLVERR_HEADLESS:-true} # Only for debugging. To run the web browser in headless mode or visible.\n BROWSER_TIMEOUT: ${FLARESOLVERR_BROWSER_TIMEOUT:-120000} # If you are experiencing errors/timeouts because your system is slow, you can try to increase this value.\n TEST_URL: ${FLARESOLVERR_TEST_URL:-https://www.google.com} # FlareSolverr makes a request on start to make sure the web browser is working.\n PROMETHEUS_ENABLED: ${FLARESOLVERR_PROMETHEUS_ENABLED:-true} # Enable Prometheus exporter\n PROMETHEUS_PORT: ${PROMETHEUS_PORT:-9090} # Listening port for Prometheus exporter\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: 'Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DOMAIN`) || Host(`flaresolverr.$DUCKDNS_DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.flaresolverr.loadbalancer.server.port: ${FLARESOLVERR_PORT:-8191}\n homepage.group: Infrastructure\n homepage.name: Flaresolverr\n homepage.icon: flaresolverr.png\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:${FLARESOLVERR_PORT:-8191}/health > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n start_period: 60s\n cpus: 0.6\n mem_reservation: 64M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 64M\n limits:\n cpus: 0.6\n memory: 1G\n restart: always\n\n stremio:\n # 🔹🔹 Stremio 🔹🔹\n # Stream Movies/TV over debrid instantly.\n image: th3w1zard1/stremio-docker:latest\n container_name: stremio\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n ports:\n - 11470:11470/tcp\n - 12470:12470/tcp\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/root/.stremio-server:/root/.stremio-server\n environment:\n SERVER_URL: ${STREMIO_SERVER_URL:-https://stremio.$DOMAIN/}\n WEBUI_LOCATION: ${STREMIO_WEBUI_LOCATION:-https://stremio-web.$DOMAIN/shell/}\n NO_CORS: ${STREMIO_NO_CORS:-0}\n CASTING_DISABLED: ${STREMIO_CASTING_DISABLED:-0}\n labels:\n traefik.enable: \"true\"\n # Router for Stremio Web UI (port 8080)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.stremio-web.rule: \"Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-web.$DUCKDNS_DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)\"\n traefik.http.routers.stremio-web.priority: 10\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: 8080\n # Router for Stremio API and Streaming Server (port 11470)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-http-server.rule: 'Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-api.$DUCKDNS_DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-api-http-server.priority: 100\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: 11470\n # Stremio HTTPS Streaming Server (port 12470)\n traefik.http.routers.stremio-https-server.service: stremio-https-server\n traefik.http.routers.stremio-https-server.rule: 'Host(`stremio.$DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio.$DUCKDNS_DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-https-server.priority: 100\n traefik.http.services.stremio-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-https-server.loadbalancer.server.port: 12470\n homepage.group: Media Streaming Platforms\n homepage.name: Stremio\n homepage.icon: stremio.png\n homepage.href: https://stremio.$DOMAIN/\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n healthcheck:\n test: [\"CMD-SHELL\", \"(curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\"]\n interval: 60s\n timeout: 5s\n retries: 3\n start_period: 1m30s\n cpu_shares: 10 # potentially should be 1\n mem_reservation: 256M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 256M\n limits:\n cpus: 2\n memory: 2G\n restart: always\n aiostreams:\n # 🔹🔹 AIOStreams 🔹🔹\n image: ghcr.io/viren070/aiostreams:latest\n container_name: aiostreams\n hostname: ${AIOSTREAMS_HOSTNAME:-aiostreams}\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/aiostreams/data:/app/data\n environment:\n <<: *common-env\n # ==============================================================================\n # ESSENTIAL ADDON SETUP\n # ==============================================================================\n # These are the most important settings you'll need to configure.\n\n # --- Addon Identification ---\n # Descriptive name for your addon instance.\n ADDON_NAME: ${AIOSTREAMS_ADDON_NAME:-BadenAIO}\n # Unique identifier for your addon.\n ADDON_ID: aiostreams.$DOMAIN\n\n # --- Network Configuration ---\n # The port on which the addon will listen.\n # Default: 3000\n PORT: ${AIOSTREAMS_PORT:-3005}\n\n # The base URL of your addon. Highly recommended for proper functioning.\n # Used for generating installation URLs and identifying self-scraping.\n # Example: https://aiostreams.yourdomain.com\n BASE_URL: https://aiostreams.$DOMAIN\n\n # --- Security ---\n # CRITICAL: Secret key for encrypting addon configuration.\n # MUST be a 64-character hex string.\n # Generate one using:\n # Linux/macOS: openssl rand -hex 32\n # Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) })\n # Or: [System.Guid]::NewGuid().ToString(\"N\") + [System.Guid]::NewGuid().ToString(\"N\") (ensure it's 64 chars)\n SECRET_KEY: ${AIOSTREAMS_SECRET_KEY:-207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde}\n\n # API key to protect your addon installation and usage.\n # Leave empty to disable password protection.\n # Can be any string.\n ADDON_PASSWORD: ${AIOSTREAMS_ADDON_PASSWORD:-sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9}\n #\n # PostgreSQL example:\n # DATABASE_URI=postgres://username:password@host:port/database_name\n # (e.g., postgresql://postgres:password@localhost:5432/aiostreams)\n DATABASE_URI: ${AIOSTREAMS_DATABASE_URI:-sqlite://./data/db.sqlite}\n\n\n # ==============================================================================\n # DEBRID & OTHER SERVICE API KEYS\n # ==============================================================================\n\n # Provide a default TMDB access token to be used for the Title Matching filter if a user does not provide any.\n TMDB_ACCESS_TOKEN: $TMDB_ACCESS_TOKEN\n\n # Configure API keys for debrid services and others you plan to use.\n # 'DEFAULT_' values are pre-filled in the user's config page.\n # 'FORCED_' values override user settings and hide the option.\n\n # --- Real-Debrid ---\n DEFAULT_REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n #- FORCED_REALDEBRID_API_KEY=$REALDEBRID_API_KEY\n\n # --- AllDebrid ---\n DEFAULT_ALLDEBRID_API_KEY: $ALLDEBRID_API_KEY\n #- FORCED_ALLDEBRID_API_KEY=$ALLDEBRID_API_KEY\n\n # --- Premiumize ---\n DEFAULT_PREMIUMIZE_API_KEY: $PREMIUMIZE_API_KEY\n #- FORCED_PREMIUMIZE_API_KEY=$PREMIUMIZE_API_KEY\n\n # --- Debrid-Link ---\n DEFAULT_DEBRIDLINK_API_KEY: $DEBRIDLINK_API_KEY\n #- FORCED_DEBRIDLINK_API_KEY=$DEBRIDLINK_API_KEY\n\n # --- Torbox ---\n DEFAULT_TORBOX_API_KEY: $TORBOX_API_KEY\n #- FORCED_TORBOX_API_KEY=$TORBOX_API_KEY\n\n # --- OffCloud ---\n DEFAULT_OFFCLOUD_API_KEY: $OFFCLOUD_API_KEY\n #- FORCED_OFFCLOUD_API_KEY=$OFFCLOUD_API_KEY\n DEFAULT_OFFCLOUD_EMAIL: $OFFCLOUD_EMAIL\n #- FORCED_OFFCLOUD_EMAIL=$OFFCLOUD_EMAIL\n DEFAULT_OFFCLOUD_PASSWORD: $OFFCLOUD_PASSWORD\n #- FORCED_OFFCLOUD_PASSWORD=$OFFCLOUD_PASSWORD\n\n # --- Put.io ---\n DEFAULT_PUTIO_CLIENT_ID: $PUTIO_CLIENT_ID\n #- FORCED_PUTIO_CLIENT_ID=$PUTIO_CLIENT_ID\n DEFAULT_PUTIO_CLIENT_SECRET: $PUTIO_CLIENT_SECRET\n #- FORCED_PUTIO_CLIENT_SECRET=$PUTIO_CLIENT_SECRET\n\n # --- EasyNews ---\n DEFAULT_EASYNEWS_USERNAME: $EASYNEWS_USERNAME\n #- FORCED_EASYNEWS_USERNAME=$EASYNEWS_USERNAME\n DEFAULT_EASYNEWS_PASSWORD: $EASYNEWS_PASSWORD\n #- FORCED_EASYNEWS_PASSWORD=$EASYNEWS_PASSWORD\n\n # --- EasyDebrid ---\n DEFAULT_EASYDEBRID_API_KEY: $EASYDEBRID_API_KEY\n #- FORCED_EASYDEBRID_API_KEY=$EASYDEBRID_API_KEY\n\n # --- PikPak ---\n DEFAULT_PIKPAK_EMAIL: $PIKPAK_EMAIL\n #- FORCED_PIKPAK_EMAIL=$PIKPAK_EMAIL\n DEFAULT_PIKPAK_PASSWORD: $PIKPAK_PASSWORD\n #- FORCED_PIKPAK_PASSWORD=$PIKPAK_PASSWORD\n\n # --- Seedr ---\n DEFAULT_SEEDR_ENCODED_TOKEN: $SEEDR_ENCODED_TOKEN\n #- FORCED_SEEDR_ENCODED_TOKEN=$SEEDR_ENCODED_TOKEN\n\n\n # ==============================================================================\n # CUSTOMIZATION & ACCESS CONTROL\n # ==============================================================================\n\n # --- Custom HTML ---\n # Display custom HTML at the top of the addon's configuration page.\n # Example: CUSTOM_HTML=\"<div>Welcome to my AIOStreams!</div>\"\n CUSTOM_HTML: $AIOSTREAMS_CUSTOM_HTML\n\n # --- Trusted Users ---\n # Comma-separated list of trusted UUIDs.\n # Trusted users can access features like regex filters if REGEX_FILTER_ACCESS is 'trusted'.\n # Example: TRUSTED_UUIDS=ae32f456-1234-5678-9012-345678901234,another-uuid-here\n TRUSTED_UUIDS: $AIOSTREAMS_TRUSTED_UUIDS\n\n # --- Regex Filter Access ---\n # Controls who can use regex filters.\n # 'none': No one can use regex filters.\n # 'trusted': Only users listed in TRUSTED_UUIDS.\n # 'all': All users (only recommended if ADDON_PASSWORD is set).\n # Default: trusted\n REGEX_FILTER_ACCESS: ${AIOSTREAMS_REGEX_FILTER_ACCESS:-trusted}\n\n # ==============================================================================\n # CACHE CONFIGURATION\n # ==============================================================================\n\n # --- Default maximum cache size ----\n # The maximum number of items that can be held in a given cache instance, if not overriden by a specific cache instance\n DEFAULT_MAX_CACHE_SIZE: ${AIOSTREAMS_DEFAULT_MAX_CACHE_SIZE:-100000}\n\n # --- Proxy IP TTL (StremThru/MediaFlow Proxy)\n # The Time-To-Live (in seconds) of items in the Public IP cache.\n # Set to -1 to disable caching\n PROXY_IP_CACHE_TTL: ${AIOSTREAMS_PROXY_IP_CACHE_TTL:-900} # Default is 900\n\n # --- Addon Resource Caching ---\n # Control the Caching of resources fetched from other addons\n # Set to -1 to disable caching.\n MANIFEST_CACHE_TTL: ${AIOSTREAMS_MANIFEST_CACHE_TTL:-300} # Default is 300\n SUBTITLE_CACHE_TTL: ${AIOSTREAMS_SUBTITLE_CACHE_TTL:-300} # Default is 300\n STREAM_CACHE_TTL: ${AIOSTREAMS_STREAM_CACHE_TTL:-1} # Default is 1\n CATALOG_CACHE_TTL: ${AIOSTREAMS_CATALOG_CACHE_TTL:-300} # Default is 300\n META_CACHE_TTL: ${AIOSTREAMS_META_CACHE_TTL:-300} # Default is 300\n ADDON_CATALOG_CACHE_TTL: ${AIOSTREAMS_ADDON_CATALOG_CACHE_TTL:-300} # Default is 300\n\n # --- RPDB API Key Validation Caching ---\n # Control how long a valid API key check is cached for\n # Default: 7 days\n RPDB_API_KEY_VALIDITY_CACHE_TTL: ${AIOSTREAMS_RPDB_API_KEY_VALIDITY_CACHE_TTL:-604800}\n\n # --- Self-Scraping ---\n # Prevent this AIOStreams instance from being added as an addon to itself.\n # Default: true\n DISABLE_SELF_SCRAPING: ${AIOSTREAMS_DISABLE_SELF_SCRAPING:-true}\n\n # --- Log Level ---\n # Set the verbosity of logs. Options: \"error\", \"warn\", \"info\", \"http\", \"verbose\",\"debug\", \"silly\"\n # Default: info\n LOG_LEVEL: ${AIOSTREAMS_LOG_LEVEL:-info}\n\n # --- Log Format ---\n # Output logs in \"json\" or \"text\" format.\n # Default: text\n LOG_FORMAT: ${AIOSTREAMS_LOG_FORMAT:-text}\n\n # --- Log Sensitive Information ---\n # Whether to include potentially sensitive info (like API keys) in logs.\n # Useful for debugging, but disable for production if concerned.\n # Default: true\n LOG_SENSITIVE_INFO: ${AIOSTREAMS_LOG_SENSITIVE_INFO:-true}\n\n # --- Log Timezone ---\n # Adjust the timezone used for logging\n # e.g. Europe/Paris, America/New_York\n LOG_TIMEZONE: ${TZ:-America/Chicago}\n\n # --- Stream Proxy Enabled ---\n # DEFAULT_PROXY_ENABLED: ${AIOSTREAMS_DEFAULT_PROXY_ENABLED:-true} # Default state for enabling a stream proxy.\n FORCE_PROXY_ENABLED: ${AIOSTREAMS_FORCE_PROXY_ENABLED:-true} # Force stream proxy on/off for all users.\n\n # --- Stream Proxy ID ---\n # 'mediaflow' or 'stremthru'\n DEFAULT_PROXY_ID: ${AIOSTREAMS_DEFAULT_PROXY_ID:-stremthru}\n # FORCE_PROXY_ID: stremthru\n\n # --- Stream Proxy URL ---\n # URL of your MediaFlow or StremThru instance.\n DEFAULT_PROXY_URL: http://stremthru:8080\n # FORCE_PROXY_URL: ${STREMTHRU_INTERNAL_URL:-http://stremthru:8080}\n\n # --- Stream Proxy Credentials ---\n # Format: username:password\n DEFAULT_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n # FORCE_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n\n # --- Stream Proxy Public IP ---\n # Public IP for the proxy, if needed.\n # DEFAULT_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n # FORCE_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n\n # --- Proxied Services ---\n # Comma-separated list of services whose streams should be proxied (e.g., realdebrid,alldebrid).\n # DEFAULT_PROXY_PROXIED_SERVICES:\n # FORCE_PROXY_PROXIED_SERVICES:\n\n # --- Disable Proxied Addons Feature ---\n # If true, it disables the 'Proxied Addons' option.\n # FORCE_PROXY_DISABLE_PROXIED_ADDONS: ${AIOSTREAMS_FORCE_PROXY_DISABLE_PROXIED_ADDONS:-false}\n\n # --- Encrypt Streaming URLs ---\n # Encrypt MediaFlow/StremThru URLs for better compatibility with external players.\n ENCRYPT_MEDIAFLOW_URLS: ${AIOSTREAMS_ENCRYPT_MEDIAFLOW_URLS:-true}\n ENCRYPT_STREMTHRU_URLS: ${AIOSTREAMS_ENCRYPT_STREMTHRU_URLS:-true}\n\n\n # --- Forced Public proxy URL adjustments ----\n # If you'd like to force some adjustments to be made to the streaming urls generated by either proxy, you can do that here.\n # This is useful when you want to use a local url for requests but have AIOStreams force the urls to use a specific host, port, and protocol.\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN # Default is stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: 443\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n\n\n # ==============================================================================\n # ADVANCED CONFIGURATION & LIMITS\n # ==============================================================================\n\n # --- General Default Timeout ---\n # Default timeout in milliseconds for all requests if not overridden by a specific timeout.\n # Default: 15000 (15 seconds)\n DEFAULT_TIMEOUT: ${AIOSTREAMS_DEFAULT_TIMEOUT:-15000}\n\n # --- Configuration Limits ---\n # Maximum number of addons allowed per AIOStreams configuration.\n MAX_ADDONS: ${AIOSTREAMS_MAX_ADDONS:-100}\n # Maximum number of groups allowed per AIOStreams configuration\n MAX_GROUPS: ${AIOSTREAMS_MAX_GROUPS:-50}\n # Maximum number of keyword filters per AIOStreams configuration.\n MAX_KEYWORD_FILTERS: ${AIOSTREAMS_MAX_KEYWORD_FILTERS:-50}\n # Maximum number of condition filters per AIOStreams configuration\n MAX_CONDITION_FILTERS: ${AIOSTREAMS_MAX_CONDITION_FILTERS:-200}\n # Maximum timeout (ms) an addon can be set to via override.\n MAX_TIMEOUT: ${AIOSTREAMS_MAX_TIMEOUT:-50000}\n # Minimum timeout (ms) an addon can be set to via override.\n MIN_TIMEOUT: ${AIOSTREAMS_MIN_TIMEOUT:-1000}\n\n\n # ==============================================================================\n # RATE LIMIT CONFIGURATION\n # ==============================================================================\n # Configure rate limits to prevent abuse. Typically, defaults are fine.\n\n # --- Disable Rate Limits ---\n # Set to true to disable all rate limits (NOT RECOMMENDED).\n # Default: false\n DISABLE_RATE_LIMITS: ${AIOSTREAMS_DISABLE_RATE_LIMITS:-false}\n\n # Window and Max requests refer to the maximum number of requests a user can make within a specific timeframe\n\n # --- Static File Serving ---\n STATIC_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STATIC_RATE_LIMIT_WINDOW:-5}\n STATIC_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STATIC_RATE_LIMIT_MAX_REQUESTS:-75}\n\n # --- User API ---\n USER_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_USER_API_RATE_LIMIT_WINDOW:-5}\n USER_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_USER_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stream API ---\n STREAM_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_WINDOW:-5}\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Format API ---\n FORMAT_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_WINDOW:-5}\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Catalog API ---\n CATALOG_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_WINDOW:-5}\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Stream ---\n STREMIO_STREAM_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_WINDOW:-15}\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Catalog ---\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_WINDOW:-5}\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Stremio Manifest ---\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_WINDOW:-5}\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Subtitle ---\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_WINDOW:-5}\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Meta ---\n STREMIO_META_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_WINDOW:-5}\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_MAX_REQUESTS:-15}\n\n\n # ==============================================================================\n # INACTIVE USER PRUNING\n # ==============================================================================\n # Automatically prune (delete) inactive user configurations.\n\n # --- Prune Interval ---\n # How often to check for inactive users, in seconds.\n # Default: 86400 (1 day)\n PRUNE_INTERVAL: 8640000\n\n # --- Prune Max Inactivity Days ---\n # Maximum days of inactivity before a user's configuration is pruned.\n # Set to -1 to disable\n PRUNE_MAX_DAYS: -1\n\n # ==============================================================================\n # EXTERNAL ADDON SERVICE URLs & TIMEOUTS\n # ==============================================================================\n # URLs and default timeouts for various external Stremio addons that AIOStreams can integrate with.\n # Change these if you use self-hosted versions or if defaults become outdated.\n\n # ----------- COMET ------------\n COMET_URL: ${COMET_INTERNAL_URL:-http://comet:3000}\n MEDIAFUSION_URL: ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000}\n MEDIAFUSION_CONFIG_TIMEOUT: ${MEDIAFUSION_CONFIG_TIMEOUT:-5000}\n MEDIAFUSION_API_PASSWORD: $SUDO_PASSWORD\n DEFAULT_JACKETTIO_INDEXERS: '${JACKETTIO_INDEXERS:-[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]}'\n DEFAULT_JACKETTIO_STREMTHRU_URL: ${JACKETTIO_STREMTHRU_URL:-https://stremthru.13377001.xyz}\n STREMTHRU_STORE_URL: ${STREMTHRU_STORE_INTERNAL_URL:-http://stremthru:8080/stremio/store}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: 'Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DOMAIN`) || Host(`aiostreams.$DUCKDNS_DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.aiostreams.loadbalancer.server.port: ${AIOSTREAMS_PORT:-3005}\n homepage.group: Stremio Addons\n homepage.name: AIOStreams\n homepage.icon: aiostreams.png\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n cpu_shares: 10\n mem_reservation: 50M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 50M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n jackett:\n # 🔹🔹 Jackett 🔹🔹\n depends_on:\n flaresolverr:\n condition: service_healthy\n image: linuxserver/jackett\n container_name: jackett\n hostname: jackett\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/jackett/config:/config\n - /mnt/remote/blackhole:/blackhole\n environment:\n <<: *common-env\n AUTO_UPDATE: ${JACKETT_AUTO_UPDATE:-true}\n RUN_OPTS: \"${JACKETT_RUN_OPTS:-}\"\n JACKETT_API_KEY: $JACKETT_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.jackett.rule: 'Host(`jackett.$DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DOMAIN`) || Host(`jackett.$DUCKDNS_DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.jackett.loadbalancer.server.port: 9117\n homepage.group: Source Aggregator\n homepage.name: Jackett Indexer\n homepage.icon: jackett.png\n homepage.href: https://jackett.$DOMAIN/\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.weight: 1\n homepage.widget.type: jackett\n homepage.widget.url: ${JACKETT_INTERNAL_URL:-http://jackett:9117}\n homepage.widget.key: $JACKETT_API_KEY\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=$JACKETT_API_KEY || exit 1\"]\n interval: 30s\n timeout: 10s\n start_period: 60s\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n docker-socket-proxy:\n # 🔹🔹 Docker Socket Proxy 🔹🔹\n image: tecnativa/docker-socket-proxy\n container_name: dockerproxy\n hostname: dockerproxy\n extra_hosts: *common-hostname-aliases\n privileged: true\n networks:\n - publicnet\n ports:\n - 127.0.0.1:2375:2375\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n restart: always\n prowlarr:\n # 🔹🔹 Prowlarr 🔹🔹\n image: linuxserver/prowlarr\n container_name: prowlarr\n hostname: prowlarr\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n configs:\n - source: prowlarr_indexer_proxy.json\n target: /config/prowlarr_indexer_proxy.json\n mode: 0777\n - source: prowlarr_indexers.json\n target: /etc/config/prowlarr_indexers.json\n mode: 0777\n volumes:\n - ${CONFIG_PATH:-./volumes}/prowlarr/config:/config:rw\n - ${CONFIG_PATH:-./volumes}/prowlarr/config/etc/config:/etc/config\n environment:\n <<: *common-env\n PROWLARR_API_KEY: $PROWLARR_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.middlewares.prowlarr.forwardauth.authResponseHeaders: authorization\n tinyauth.basic.username: $PROWLARR_USERNAME\n tinyauth.basic.password.plain: $PROWLARR_PASSWORD\n traefik.http.routers.prowlarr.rule: 'Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DOMAIN`) || Host(`prowlarr.$DUCKDNS_DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.prowlarr.loadbalancer.server.port: 9696\n homepage.group: Indexers\n homepage.name: Prowlarr\n homepage.icon: prowlarr.png\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.weight: 1\n homepage.widget.type: prowlarr\n homepage.widget.url: ${PROWLARR_INTERNAL_URL:-http://prowlarr:9696}\n homepage.widget.key: $PROWLARR_API_KEY\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n limits:\n cpus: '2.0'\n memory: 6G\n reservations:\n cpus: '0.0'\n memory: 128M\n healthcheck: # docker exec prowlarr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"curl -fs -H \\\"Authorization: Bearer $$PROWLARR_API_KEY\\\" http://127.0.0.1:9696/api/v1/system/status || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 120s\n restart: always\n comet:\n image: g0ldyy/comet:latest\n container_name: comet\n hostname: comet\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/comet/data:/data\n environment:\n <<: *common-env\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: ${COMET_PORT:-2020}\n FASTAPI_WORKERS: ${CPU_COUNT:-4}\n USE_GUNICORN: True\n DASHBOARD_ADMIN_PASSWORD: $SUDO_PASSWORD\n DATABASE_TYPE: sqlite\n DATABASE_PATH: /data/comet.db\n METADATA_CACHE_TTL: 2592000\n TORRENT_CACHE_TTL: 1296000\n DEBRID_CACHE_TTL: 86400\n INDEXER_MANAGER_TYPE: prowlarr # jackett, prowlarr, none.\n INDEXER_MANAGER_URL: ${PROWLARR_HOST:-http://prowlarr:9696} # http://jackett:9117, http://prowlarr:9696\n INDEXER_MANAGER_API_KEY: $PROWLARR_API_KEY # $JACKETT_API_KEY, $PROWLARR_API_KEY\n INDEXER_MANAGER_TIMEOUT: 60\n INDEXER_MANAGER_INDEXERS: ${COMET_INDEXERS:-[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]}\n GET_TORRENT_TIMEOUT: 2\n DOWNLOAD_TORRENT_FILES: True\n SCRAPE_COMET: true\n COMET_URL: https://comet.elfhosted.com\n SCRAPE_ZILEAN: true\n ZILEAN_URL: https://zilean.elfhosted.com\n SCRAPE_TORRENTIO: true\n TORRENTIO_URL: https://torrentio.strem.fun\n SCRAPE_MEDIAFUSION: true\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n STREMTHRU_URL: https://stremthru.$DOMAIN\n PROXY_DEBRID_STREAM: True\n PROXY_DEBRID_STREAM_PASSWORD: $STREMTHRU_PROXY_AUTH\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: -1\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: $PREMIUMIZE_API_KEY\n REMOVE_ADULT_CONTENT: True\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: 'Host(`comet.$DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DOMAIN`) || Host(`comet.$DUCKDNS_DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.comet.loadbalancer.server.port: ${COMET_PORT:-2020}\n homepage.group: Stremio Addons\n homepage.name: Comet\n homepage.icon: comet.png\n homepage.href: https://comet.$DOMAIN/\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n healthcheck: # docker exec comet ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:$${FASTAPI_PORT:-2020}/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 5s\n retries: 3\n start_period: 15s\n restart: always\n mediafusion:\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n image: mhdzumair/mediafusion:latest\n container_name: mediafusion\n hostname: mediafusion\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n <<: *common-env\n # CORE APPLICATION SETTINGS\n ADDON_NAME: \"${MEDIAFUSION_ADDON_NAME:-MediaFusion}\" # The name of the MediaFusion addon\n VERSION: \"1.0.0\" # The version of the MediaFusion addon\n DESCRIPTION: \"MediaFusion | $DOMAIN\" # A brief description of the MediaFusion addon to show on Stremio Addon page\n BRANDING_DESCRIPTION: \"${MEDIAFUSION_BRANDING_DESCRIPTION:-}\" # Additional branding description text\n CONTACT_EMAIL: \"webmaster@$DOMAIN\" # The contact email for the MediaFusion addon\n HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where MediaFusion is hosted (required)\n POSTER_HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where poster images are served from (default: Same as host_url)\n SECRET_KEY: \"${MEDIAFUSION_SECRET_KEY:-c75ac92df70c4383c8d1bb37f65454f9}\" # A 32-character secret key for securely signing the session (required)\n API_PASSWORD: \"$SUDO_PASSWORD\" # The password for accessing the API endpoints (required)\n LOGGING_LEVEL: \"INFO\" # The logging level of the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)\n LOGO_URL: \"${MEDIAFUSION_LOGO_URL:-}\" # The URL of the MediaFusion logo\n IS_PUBLIC_INSTANCE: \"${MEDIAFUSION_IS_PUBLIC_INSTANCE:-False}\" # Set to True for community instances that don't require authentication except for /scraper endpoint\n MIN_SCRAPING_VIDEO_SIZE: \"${MEDIAFUSION_MIN_SCRAPING_VIDEO_SIZE:-26214400}\" # Minimum video size in bytes (25 MB) for scraping\n METADATA_PRIMARY_SOURCE: \"${MEDIAFUSION_METADATA_PRIMARY_SOURCE:-tmdb}\" # Primary source for metadata. Options: \"imdb\" or \"tmdb\"\n # STREAMING PROVIDER SETTINGS\n #DISABLED_PROVIDERS: \"\" # List of disabled streaming providers (p2p, realdebrid, seedr, debridlink, alldebrid, offcloud, pikpak, torbox, premiumize, qbittorrent, stremthru, easydebrid)\n # DATABASE AND CACHE SETTINGS\n MONGO_URI: \"${MEDIAFUSION_MONGO_URI:-mongodb://mongodb:27017/mediafusion}\" # MongoDB connection URI (required)\n DB_MAX_CONNECTIONS: \"${MEDIAFUSION_DB_MAX_CONNECTIONS:-50}\" # Maximum database connections\n REDIS_URL: \"${MEDIAFUSION_REDIS_URL:-redis://redis:6379}\" # Redis service URL for caching and tasks\n REDIS_MAX_CONNECTIONS: \"${MEDIAFUSION_REDIS_MAX_CONNECTIONS:-100}\" # Maximum Redis connections\n # EXTERNAL SERVICE SETTINGS\n# REQUESTS_PROXY_URL: \"${MEDIAFUSION_REQUESTS_PROXY_URL:-}\" # Optional proxy URL for requests\n PLAYWRIGHT_CDP_URL: \"${PLAYWRIGHT_CDP_URL:-ws://browserless:3000?blockAds=true&stealth=true}\" # Playwright CDP service URL\n FLARESOLVERR_URL: \"${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}\" # FlareSolverr service URL\n TMDB_API_KEY: \"$TMDB_API_KEY\" # TMDB API key for metadata fetching\n # PROWLARR SETTINGS\n IS_SCRAP_FROM_PROWLARR: \"True\" # Enable/disable Prowlarr scraping\n PROWLARR_API_KEY: \"$PROWLARR_API_KEY\" # Prowlarr API key\n PROWLARR_URL: \"${PROWLARR_HOST:-http://prowlarr:9696}\" # Prowlarr service URL\n PROWLARR_LIVE_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_LIVE_TITLE_SEARCH:-True}\" # Enable live title search in Prowlarr\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_BACKGROUND_TITLE_SEARCH:-True}\" # Enable background title search\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"${MEDIAFUSION_PROWLARR_SEARCH_QUERY_TIMEOUT:-30}\" # Search query timeout in seconds\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS:-10}\" # Max immediate processes\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n PROWLARR_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_FEED_SCRAPE_INTERVAL_HOUR:-3}\" # Feed scraping interval in hours\n # JACKETT SETTINGS\n IS_SCRAP_FROM_JACKETT: \"True\" # Enable/disable Jackett scraping\n JACKETT_URL: \"${JACKETT_HOST:-http://jackett:9117}\" # Jackett service URL\n JACKETT_API_KEY: \"$JACKETT_API_KEY\" # Jackett API key\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\" # Search interval in hours\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\" # Search query timeout in seconds\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\" # Max immediate processes\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\" # Max process time in seconds\n JACKETT_LIVE_TITLE_SEARCH: \"True\" # Enable live title search\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\" # Enable background title search\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\" # Feed scraping interval in hours\n # ZILEAN SETTINGS\n IS_SCRAP_FROM_ZILEAN: \"True\" # Enable/disable Zilean scraping\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\" # Search interval in hours\n ZILEAN_URL: \"${ZILEAN_URL:-https://zilean.elfhosted.com}\" # Zilean service URL (https://zilean.elfhosted.com has zero rate limits)\n # TORRENTIO SETTINGS\n IS_SCRAP_FROM_TORRENTIO: \"True\" # Enable/disable Torrentio scraping\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_TORRENTIO_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n TORRENTIO_URL: \"${TORRENTIO_URL:-https://torrentio.strem.fun}\" # Torrentio service URL\n # MEDIAFUSION SETTINGS\n IS_SCRAP_FROM_MEDIAFUSION: \"True\" # Enable/disable MediaFusion scraping\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_MEDIAFUSION_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n MEDIAFUSION_URL: \"${MEDIAFUSION_URL:-https://mediafusion.elfhosted.com}\" # MediaFusion service URL\n SYNC_DEBRID_CACHE_STREAMS: \"${MEDIAFUSION_SYNC_DEBRID_CACHE_STREAMS:-False}\" # Enable syncing debrid cache streams\n # BT4G SETTINGS\n IS_SCRAP_FROM_BT4G: \"True\" # Enable/disable BT4G scraping\n BT4G_URL: \"${BT4G_URL:-https://bt4gprx.com}\" # BT4G service URL\n BT4G_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_BT4G_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n BT4G_SEARCH_TIMEOUT: \"${MEDIAFUSION_BT4G_SEARCH_TIMEOUT:-10}\" # Search timeout in seconds\n BT4G_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS:-15}\" # Max immediate processes\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n # TELEGRAM SETTINGS\n TELEGRAM_BOT_TOKEN: \"$TELEGRAM_BOT_TOKEN\" # Telegram bot token for notifications about contribution streams\n TELEGRAM_CHAT_ID: \"$TELEGRAM_CHAT_ID\" # Telegram chat ID for notifications\n # CONTENT FILTERING SETTINGS\n ADULT_CONTENT_REGEX_KEYWORDS: \"\\\\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\\\b\" # Regex pattern for filtering adult content\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\" # Enable adult content filtering in torrent titles\n # FEATURE TOGGLES\n IS_SCRAP_FROM_YTS: \"True\" # Enable/disable YTS scraping\n ENABLE_RATE_LIMIT: \"True\" # Enable/disable rate limiting\n VALIDATE_M3U8_URLS_LIVENESS: \"True\" # Validate M3U8 URLs for liveness\n STORE_STREMTHRU_MAGNET_CACHE: \"False\" # Store StremThru magnet cache\n SCRAPE_WITH_AKA_TITLES: \"True\" # Include alternative titles in scraping\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\" # Enable fetching torrent metadata from P2P (Caution: may raise DMCA issues) # TODO: Enable this\n # TIME-RELATED SETTINGS\n META_CACHE_TTL: \"1800\" # Metadata cache TTL in seconds (Default: 1800 seconds = 30 minutes)\n WORKER_MAX_TASKS_PER_CHILD: \"20\" # Max tasks per worker child process\n # SCHEDULER SETTINGS\n DISABLE_ALL_SCHEDULER: \"False\" # Disable all schedulers\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\" # Background search interval in hours\n BACKGROUND_SEARCH_CRONTAB: \"*/5 * * * *\" # Background search schedule\n TAMILMV_SCHEDULER_CRONTAB: \"0 */3 * * *\" # TamilMV scheduler crontab expression\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: \"0 */6 * * *\" # Tamil Blasters scheduler crontab expression\n FORMULA_TGX_SCHEDULER_CRONTAB: \"*/30 * * * *\" # Formula TGX scheduler crontab expression\n NOWMETV_SCHEDULER_CRONTAB: \"0 0 * * *\" # NowMeTV scheduler crontab expression\n NOWSPORTS_SCHEDULER_CRONTAB: \"0 10 * * *\" # NowSports scheduler crontab expression\n TAMILULTRA_SCHEDULER_CRONTAB: \"0 8 * * *\" # TamilUltra scheduler crontab expression\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: \"0 */6 * * *\" # Validate TV streams in DB crontab expression\n SPORT_VIDEO_SCHEDULER_CRONTAB: \"*/20 * * * *\" # Sport video scheduler crontab expression\n DLHD_SCHEDULER_CRONTAB: \"25 * * * *\" # DLHD scheduler crontab expression\n MOTOGP_TGX_SCHEDULER_CRONTAB: \"0 5 * * *\" # MotoGP TGX scheduler crontab expression\n UPDATE_SEEDERS_CRONTAB: \"0 0 * * *\" # Update seeders crontab expression\n ARAB_TORRENTS_SCHEDULER_CRONTAB: \"0 0 * * *\" # Arab Torrents scheduler crontab expression\n WWE_TGX_SCHEDULER_CRONTAB: \"10 */3 * * *\" # WWE TGX scheduler crontab expression\n UFC_TGX_SCHEDULER_CRONTAB: \"30 */3 * * *\" # UFC TGX scheduler crontab expression\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: \"0 * * * *\" # Movies TV TGX scheduler crontab expression\n PROWLARR_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Prowlarr feed scraper crontab expression\n JACKETT_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Jackett feed scraper crontab expression\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: \"0 * * * *\" # Cleanup expired scraper task crontab expression\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: \"0 0 * * *\" # Cleanup expired cache task crontab expression\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediafusion.rule: 'Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DOMAIN`) || Host(`mediafusion.$DUCKDNS_DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediafusion.loadbalancer.server.port: 8000\n homepage.group: Stremio Addons\n homepage.name: MediaFusion\n homepage.icon: mediafusion.png\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n cpu_shares: 10\n mem_reservation: 512M\n deploy:\n resources:\n reservations:\n cpus: 0.01\n memory: 512M\n limits:\n cpus: 1\n memory: 1G\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: \"1m\"\n restart: always\n mediaflow-proxy:\n image: mhdzumair/mediaflow-proxy\n container_name: mediaflow-proxy\n hostname: mediaflow-proxy\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n expose:\n - ${MEDIAFLOW_PROXY_PORT:-8888}\n environment:\n <<: *common-env\n PORT: ${MEDIAFLOW_PROXY_PORT:-8888}\n API_PASSWORD: $MEDIAFLOW_PROXY_API_PASSWORD\n ENABLE_STREAMING_PROGRESS: \"false\"\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediaflow-proxy.middlewares: nginx-auth@file\n traefik.http.routers.mediaflow-proxy.rule: 'Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DOMAIN`) || Host(`mediaflow-proxy.$DUCKDNS_DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: ${MEDIAFLOW_PROXY_PORT:-8888}\n homepage.name: MediaFlow Proxy\n homepage.icon: mediaflow-proxy.png\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n healthcheck:\n test: [\"CMD-SHELL\", \"python3 -c \\\"import socket; s=socket.socket(); s.connect(('127.0.0.1', ${MEDIAFLOW_PROXY_PORT:-8888})); print('Healthcheck passed')\\\"\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: 10s\n restart: always\n\n stremthru:\n depends_on:\n redis:\n condition: service_healthy\n image: muniftanjim/stremthru:latest\n container_name: stremthru\n hostname: stremthru\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/stremthru/app/data:/app/data\n environment:\n <<: *common-env\n STREMTHRU_LOG_LEVEL: ${STREMTHRU_LOG_LEVEL:-INFO} # DEBUG, INFO, WARN, ERROR\n STREMTHRU_LOG_FORMAT: ${STREMTHRU_LOG_FORMAT:-text} # json, text\n STREMTHRU_PROXY_AUTH: ${STREMTHRU_PROXY_AUTH:-admin:admin}\n STREMTHRU_AUTH_ADMIN: ${STREMTHRU_AUTH_ADMIN:-admin}\n\n # A list of store credentials per user. In a comma separated list of username:store_name:store_token.\n # You can also use * as the username to apply to all users.\n # This lets you use different API keys for different users.\n # e.g. something like *:realdebrid:abc...xyz would mean for all users, this API key would be used for Real Debrid.\n # (Not needed if using StremThru as a external proxy within other apps/addons like AIOStreams)\n STREMTHRU_STORE_AUTH: $STREMTHRU_STORE_AUTH\n\n # A list of proxy configurations per store. This lets you control what is proxied based on what store its from.\n # The format is a comma separated list of <store>:<true/false>\n # You can use * to apply to all stores.\n # e.g. *:true,premiumize:false would mean all stores are proxied, except for premiumize.\n # (Does not affect proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_STORE_CONTENT_PROXY: ${STREMTHRU_STORE_CONTENT_PROXY:-*:true,premiumize:false}\n\n # This is the maximum number of connections to the proxy per user.\n # In the format of a comma separated list of <username>:<number of connections> pairs.\n # e.g. user1:10,user2:5 would mean user1 can have 10 connections, and user2 can have 5 connections.\n # If you want to set a limit for all users, use * as the username.\n # A connection limit of 0 means no limit.\n # (This DOES affect the proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: ${STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT:-0}\n # ================================\n # This lets you enable or disable features in StremThru.\n # The format is a comma separated list of features, optionally prefixed with a - to disable them.\n # List of features:\n # - anime\n # - dmm_hashlist - Whether to scrape DMM hashlists for torrents.\n # - imdb_title\n # - stremio_list\n # - stremio_p2p\n # - stremio_sidekick\n # - stremio_store\n # - stremio_torz\n # - stremio_wrap\n # e.g. -dmm_hashlist,-imdb_title would disable the DMM hashlists and IMDB title features.\n # ================================\n STREMTHRU_FEATURE: '${STREMTHRU_FEATURE:-dmm_hashlist,imdb_title,stremio_list,stremio_sidekick,stremio_store,stremio_torz,stremio_wrap}'\n STREMTHRU_DATABASE_URI: ${STREMTHRU_DATABASE_URI:-sqlite://./data/stremthru.db}\n STREMTHRU_REDIS_URI: ${REDIS_HOST:-redis://redis:6379}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: 'Host(`stremthru.$DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DOMAIN`) || Host(`stremthru.$DUCKDNS_DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.stremthru.loadbalancer.server.port: 8080\n homepage.group: Stremio Addons\n homepage.name: StremThru\n homepage.icon: stremthru.png\n homepage.href: https://stremthru.$DOMAIN/\n homepage.description: StremThru is tunnel/proxy for debrid services.\n restart: always\n\n gptr:\n build:\n #context: https://github.com/th3w1zard1/gpt-researcher.git#master # :/frontend/nextjs\n context: ${SRC_PATH:-./projects}/gpt-researcher\n dockerfile: Dockerfile.fullstack\n image: th3w1zard1/ai-researchwizard:latest\n container_name: gptr\n hostname: gptr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000 # Nginx-proxied access to GPTR.\n - 3001 # Internal NextJS GPTR site\n - 8000 # Static GPTR\n - 8080 # MCP Server Port\n volumes:\n - ${CONFIG_PATH:-./volumes}/gptr/logs:/usr/src/app/logs\n - ${CONFIG_PATH:-./volumes}/gptr/outputs:/usr/src/app/outputs\n - ${CONFIG_PATH:-./volumes}/gptr/reports:/usr/src/app/reports\n stdin_open: true\n environment:\n ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY\n BRAVE_API_KEY: $BRAVE_API_KEY\n DEEPSEEK_API_KEY: $DEEPSEEK_API_KEY\n EXA_API_KEY: $EXA_API_KEY\n FIRECRAWL_API_KEY: $FIRECRAWL_API_KEY\n FIRE_CRAWL_API_KEY: $FIRE_CRAWL_API_KEY\n GEMINI_API_KEY: $GEMINI_API_KEY\n GLAMA_API_KEY: $GLAMA_API_KEY\n GROQ_API_KEY: $GROQ_API_KEY\n HF_TOKEN: $HF_TOKEN\n HUGGINGFACE_ACCESS_TOKEN: $HUGGINGFACE_ACCESS_TOKEN\n HUGGINGFACE_API_TOKEN: $HUGGINGFACE_API_TOKEN\n LANGCHAIN_API_KEY: $LANGCHAIN_API_KEY\n MISTRAL_API_KEY: $MISTRAL_API_KEY\n MISTRALAI_API_KEY: $MISTRALAI_API_KEY\n OPENAI_API_KEY: $OPENAI_API_KEY\n OPENROUTER_API_KEY: $OPENROUTER_API_KEY\n PERPLEXITY_API_KEY: $PERPLEXITY_API_KEY\n PERPLEXITYAI_API_KEY: $PERPLEXITYAI_API_KEY\n REPLICATE_API_KEY: $REPLICATE_API_KEY\n REVID_API_KEY: $REVID_API_KEY\n SAMBANOVA_API_KEY: $SAMBANOVA_API_KEY\n SEARCH1API_KEY: $SEARCH1API_KEY\n SERPAPI_API_KEY: $SERPAPI_API_KEY\n TAVILY_API_KEY: $TAVILY_API_KEY\n TOGETHERAI_API_KEY: $TOGETHERAI_API_KEY\n UNIFY_API_KEY: $UNIFY_API_KEY\n UPSTAGE_API_KEY: $UPSTAGE_API_KEY\n UPSTAGEAI_API_KEY: $UPSTAGEAI_API_KEY\n YOU_API_KEY: $YOU_API_KEY\n CHOKIDAR_USEPOLLING: true\n LOGGING_LEVEL: DEBUG\n NEXT_PUBLIC_GA_MEASUREMENT_ID: $NEXT_PUBLIC_GA_MEASUREMENT_ID\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n LANGSMITH_TRACING: true\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_API_KEY: $LANGSMITH_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.gptr.service: gptr\n traefik.http.routers.gptr.rule: 'Host(`gptr-nextjs.$DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-nextjs.$DUCKDNS_DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr.loadbalancer.server.port: 3000\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr-legacy.rule: 'Host(`gptr.$DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr.$DUCKDNS_DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-legacy.loadbalancer.server.port: 8000\n traefik.http.routers.gptr-mcp.service: gptr-mcp\n traefik.http.routers.gptr-mcp.rule: 'Host(`gptr-mcp.$DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-mcp.$DUCKDNS_DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-mcp.loadbalancer.server.port: 8080\n homepage.group: AI\n homepage.name: AI Research Wizard\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.icon: gptr.png\n homepage.href: https://gptr.$DOMAIN/\n healthcheck: # docker exec gptr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"(wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1) || exit 1\"] # && (wget -qO- http://127.0.0.1:8080 > /dev/null 2>&1) || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 2m\n restart: always\n\nnetworks:\n publicnet: # https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge\n external: true # docker network create --driver=bridge --attachable publicnet --subnet=${PUBLICNET_SUBNET:-10.76.0.0/16} --gateway=${PUBLICNET_GATEWAY:-10.76.0.1} --ip-range=${PUBLICNET_IP_RANGE:-10.76.0.0/16} -o com.docker.network.bridge.name=br_publicnet\n attachable: true\n driver: bridge\n # uncomment below part of publicnet if you aren't creating it externally.\n name: publicnet\n driver_opts:\n com.docker.network.bridge.name: \"br_publicnet\"\n ipam:\n config:\n - subnet: ${PUBLICNET_SUBNET:-10.76.0.0/16}\n gateway: ${PUBLICNET_GATEWAY:-10.76.0.1}\n ip_range: ${PUBLICNET_IP_RANGE:-10.76.0.0/16}\n warp-nat-net:\n external: true\n attachable: true\n driver: bridge\n"}, "b0b25eec6eec7d4716dcc1576f77ef67b01a811b": {"t": 1785773141.7514987, "n": 294317, "h": "879f3081b7345535", "c": "# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json\n\nx-common-hostname-aliases: &common-hostname-aliases\n - host.docker.internal:host-gateway\n\nx-local-ips: &local-ips\n - \"10.0.0.0/8\" # RFC 1918 Private Networks (IPv4)\n - \"172.16.0.0/12\"\n - \"192.168.0.0/16\"\n - \"169.254.0.0/16\" # RFC 3927 Link-Local (IPv4)\n - \"127.0.0.0/8\" # RFC 5735 Loopback (IPv4)\n - \"fc00::/7\" # RFC 4193 Unique Local (IPv6)\n - \"fe80::/10\" # RFC 4291 Link-Local (IPv6)\n - \"::1/128\" # RFC 4291 Loopback (IPv6)\n - \"2002::/16\" # RFC 3056 6to4 (IPv6)\n - \"100.64.0.0/10\" # Tailscale CGNAT range\n\nx-cloudflare-ips: &cloudflare-ips\n - \"103.21.244.0/22\"\n - \"103.22.200.0/22\"\n - \"103.31.4.0/22\"\n - \"104.16.0.0/13\"\n - \"104.24.0.0/14\"\n - \"108.162.192.0/18\"\n - \"131.0.72.0/22\"\n - \"141.101.64.0/18\"\n - \"162.158.0.0/15\"\n - \"172.64.0.0/13\"\n - \"173.245.48.0/20\"\n - \"188.114.96.0/20\"\n - \"190.93.240.0/20\"\n - \"197.234.240.0/22\"\n - \"198.41.128.0/17\"\n - \"2400:cb00::/32\"\n - \"2606:4700::/32\"\n - \"2803:f800::/32\"\n - \"2405:b500::/32\"\n - \"2405:8100::/32\"\n - \"2a06:98c0::/29\"\n - \"2c0f:f248::/32\"\n\nx-trusted-ips: &trusted-ips\n - *local-ips\n - *cloudflare-ips\n\n\nconfigs:\n #######################################################################################\n # Prometheus Configurations\n #######################################################################################\n prometheus.yml:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n # my global config\n global:\n scrape_interval: 15s # By default, scrape targets every 15 seconds.\n evaluation_interval: 15s # By default, scrape targets every 15 seconds.\n # scrape_timeout is set to the global default (10s).\n # Attach these labels to any time series or alerts when communicating with\n # external systems (federation, remote storage, Alertmanager).\n external_labels:\n monitor: 'my-project'\n # Load and evaluate rules in this file every 'evaluation_interval' seconds.\n rule_files:\n - 'alert.rules'\n # - \"first.rules\"\n # - \"second.rules\"\n # alert\n # alerting:\n # alertmanagers:\n # - scheme: http\n # static_configs:\n # - targets:\n # - \"alertmanager:9093\"\n # A scrape configuration containing exactly one endpoint to scrape:\n # Here it's Prometheus itself.\n scrape_configs:\n # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.\n - job_name: 'prometheus'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:9090']\n - job_name: 'traefik'\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n dns_sd_configs:\n - names:\n - 'tasks.traefik'\n type: 'A'\n port: 8080\n alert.rules:\n content: |\n # yaml-language-server: $$schema=https://raw.githubusercontent.com/prometheus/prometheus/main/docs/prometheus-monitoring-dashboard.json\n\n groups:\n - name: bolabaden\n rules:\n\n # Alert for any instance that is unreachable for >2 minutes.\n - alert: service_down\n expr: up == 0\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} down\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} has been down for more than 2 minutes.\"\n\n - alert: high_load\n expr: node_load1 > 0.5\n for: 2m\n labels:\n severity: page\n annotations:\n summary: \"Instance {{ $$labels.instance }} under high load\"\n description: \"{{ $$labels.instance }} of job {{ $$labels.job }} is under high load.\"\n #######################################################################################\n # Gluetun Configurations\n #######################################################################################\n premiumize-auth.txt: # Premiumize authentication file (shared across all Premiumize VPN endpoints)\n content: |\n $PREMIUMIZE_CUSTOMER_ID\n $PREMIUMIZE_API_KEY\n gluetun-auth-config.toml:\n content: |\n [[roles]]\n name = \"public\"\n routes = [\n \"GET /v1/openvpn/status\",\n \"PUT /v1/openvpn/status\",\n \"GET /v1/openvpn/portforwarded\",\n \"GET /v1/openvpn/settings\",\n \"GET /v1/dns/status\",\n \"PUT /v1/dns/status\",\n \"GET /v1/updater/status\",\n \"PUT /v1/updater/status\",\n \"GET /v1/publicip/ip\"\n ]\n auth = \"none\"\n premiumize-ca.cert: # Premiumize CA certificate (shared across all Premiumize VPN endpoints)\n content: |\n -----BEGIN CERTIFICATE-----\n MIIFJTCCAw2gAwIBAgIRAPAmbQRNE+PBqvFyFG8GOSIwDQYJKoZIhvcNAQELBQAw\n LDEYMBYGA1UECgwPU2VjdXJlIFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMB4X\n DTIxMDEwNDE1MjEwM1oXDTQwMTIzMDE1MjEwM1owLDEYMBYGA1UECgwPU2VjdXJl\n IFNlcnZpY2VzMRAwDgYDVQQDDAdSb290IFgxMIICIjANBgkqhkiG9w0BAQEFAAOC\n Ag8AMIICCgKCAgEAvuhFcbO0Y5SXBr+h/XU1sPXo/OSjN4W32jzVZ3jmkqA2nH5D\n dI5XYHYB9JkW23K37zOlvOWj9J3HiV6WYk0uqQ3cpqDMnIpi1MJCtSRxiaD7LTNO\n XrvLpsREq9Vf+lN+zxFxhINv3W4jUyfx5zIjPyjY+vFgH5G56b12EeLKFLYUWwgF\n 9vTicXJvlV1h+TJVF8wZ5DugrgNZhSZ6QZzda0Zdu1dCwZOafd1GGDWPubgZ8enF\n b9gWPGZmS59ZvlLsLQmtLvCEegELzRR5G/OI1CIntcImcKO9ZDdWP+HmqJ4Ss7Ng\n 0g5xQVx9VgMxwpHw4h/tMV8q1vQQZJXJHdoDRQr5RzVnMjq90FFMd3nfX1B6cheH\n cBq31J84ifxcO2vIz/eK/6zNyynuj2+99Yz7MsYI+sfGznngglpYo9u3xNkRfRPP\n TA/tXAzrGRqlHmJmMStfutIfHxea4jJCGOeb5eUETQ1kXf5sMSdf0+Ya64h9Kcxw\n afMzU8qUAMk4ei+jTEAuUQ25Jq0orFc5D2Pv7RbU9CCzIML2KqqWTThKSSVQbW0x\n ufQDxcFZKSKL03484zVPBDMQ65enBUC+9Or9YKT0S0F1IdOX4EUGpqzQAocHFF3u\n G1zYz5cjYq2xHRBZAYs6SQH6f16bPrk66uA2B/vZJm5L9Kzni5q46IGsCUsCAwEA\n AaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\n FETGtuYkU3IlxCvmtkAzpP5Xuf+DMA0GCSqGSIb3DQEBCwUAA4ICAQBdTlQtxa6a\n PXaZpzsi5gLGrDUhnoTF5cVvt9vYa6c7IaAuYIUMGN1WiwHUL0g1udxi7iC3oBzM\n Mc6shYMijEMG9SvC0RJOky1BCPbKdlsRDQbYLgjN5X1fEDDu1cR/vInt/K6vTcLf\n 1ud6VFgDv8uYG1X9GVs6foAqjYTLt1A99cwHtyCZRxrBLyjgE8S2U07FDpakqlMo\n j4S1lgvw4EuEN54Yo55wLv9J0pZ1w9LEpZ4VdEVzLmwYMPG25Ow7HFZDK7j0TZkA\n ByvxUvNGWDk5MS71BtWzhrmmPh9kN3HobkfOllqUsE03QaLggg+pe+OYNdIlCBRz\n 9QJeMtGP7afdBZ5UUL8df0fWL0adUzk1N/1kvAmbvccNu7tej/4LLVv9j1aQtI76\n iEXh0WIWTAOz9IsQyP21PhxG01Y3ScIrbOsP+IX+RL/VK4yfTZ2jICj7js8vm6ut\n qw3FPyZgeZuBe0gk0cF4vPuFacS23PkEFXbVnt4h40xKwR5ezGshS5I36nXowTdh\n uJPLnZaLGjsiFpprztwwDZkDLu5uT6YhT/M6Kb0V3s3a2W1N90eNjo5WEe/poCgr\n 1+NVJNJQ71s3kodfghA/t1iivJEl58scVLxxJXyhCK+k5IPAB0syq2cR4AKnr/fe\n 9WFpWZc7lKeI4rwzGej+kMCQ6ujinVPyRA==\n -----END CERTIFICATE-----\n vpn-nl.premiumize.me:\n content: |\n verify-x509-name CN=vpn-nl.premiumize.me\n client\n resolv-retry infinite\n nobind\n reneg-sec 0\n setenv CLIENT_CERT 0\n ignore-unknown-option block-outside-dns\n ca /etc/openvpn/premiumize-ca.pem\n proto udp\n pull-filter ignore \"route-ipv6\"\n pull-filter ignore \"ifconfig-ipv6\"\n remote 185.107.94.249 1194\n persist-tun\n persist-key\n #######################################################################################\n # Stremio Configurations\n #######################################################################################\n mediafusion-nginx-config:\n content: |\n user nginx;\n worker_processes 1;\n\n events {\n worker_connections 1024;\n }\n\n http {\n include mime.types;\n default_type application/octet-stream;\n sendfile on;\n keepalive_timeout 65;\n\n server {\n listen 443 ssl;\n server_name mediafusion.local;\n\n ssl_certificate /etc/ssl/certs/mediafusion.local.pem;\n ssl_certificate_key /etc/ssl/private/mediafusion.local-key.pem;\n\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n\n location / {\n proxy_pass ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000};\n proxy_set_header Host $$host;\n proxy_set_header X-Real-IP $$remote_addr;\n proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $$scheme;\n }\n }\n }\n nginx-proxy-config.conf:\n content: |\n # Custom nginx configuration for nginx-proxy\n client_max_body_size 100m;\n proxy_connect_timeout 600s;\n proxy_send_timeout 600s;\n proxy_read_timeout 600s;\n proxy_buffering off;\n proxy_request_buffering off;\n # Enable gzip compression\n gzip on;\n gzip_vary on;\n gzip_min_length 1024;\n gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n # Security headers\n add_header X-Frame-Options DENY always;\n add_header X-Content-Type-Options nosniff always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\n prowlarr_indexers.json:\n content: |\n [\n {\n \"indexerUrls\": [\n \"https://bitsearch.to/\"\n ],\n \"legacyUrls\": [\n \"https://bitsearch.nocensor.cloud/\",\n \"https://bitsearch.mrunblock.bond/\"\n ],\n \"definitionName\": \"bitsearch\",\n \"description\": \"BitSearch is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitsearch\",\n \"name\": \"BitSearch\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitsearch\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitsearch\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://thepiratebay.org/\",\n \"https://thepiratebay.unblockninja.com/\",\n \"https://thepiratebay.ninjaproxy1.com/\",\n \"https://tpb.proxyninja.org/\",\n \"https://thepiratebay.torrentbay.st/\",\n \"https://tpb31.ukpass.co/\",\n \"https://tpb.skynetcloud.site/\",\n \"https://piratehaven.xyz/\",\n \"https://mirrorbay.top/\",\n \"https://thepiratebay0.org/\",\n \"https://thepiratebay10.org/\",\n \"https://pirateproxylive.org/\",\n \"https://thehiddenbay.com/\",\n \"https://thepiratebay.zone/\",\n \"https://tpb.party/\",\n \"https://piratebayproxy.live/\",\n \"https://piratebay.live/\",\n \"https://piratebay.party/\",\n \"https://thepiratebay.party/\",\n \"https://pirate-proxy.africa/\",\n \"https://thepiratebaye.org/\",\n \"https://5mins.eu/\",\n \"https://thepiratebay.cloud/\",\n \"https://tpb-proxy.xyz/\",\n \"https://piratebay.army/\",\n \"https://tpb-visit.me/\",\n \"https://tpb.re/\",\n \"https://pirate-proxy.ong/\"\n ],\n \"legacyUrls\": [\n \"https://pirate-proxy.page/\",\n \"https://5mins.shop/\",\n \"https://tpb.surf/\",\n \"https://tpb.monster/\",\n \"https://thepiratebay.host/\",\n \"https://piratetoday.xyz/\",\n \"https://tpb.wtf/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.onion.ly/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.to/\",\n \"https://piratebayo3klnzokct3wt5yyxb2vpebbuyjl7m623iaxmqhsd52coid.tor2web.link/\",\n \"https://tpb25.ukpass.co/\",\n \"https://tpb29.ukpass.co/\",\n \"https://piratenow.xyz/\",\n \"https://pirate-proxy.ink/\",\n \"https://proxifiedpiratebay.org/\",\n \"https://unlockedpiratebay.com/\",\n \"https://tpb.one/\",\n \"https://piratebayorg.net/\",\n \"https://tpbproxy.click/\",\n \"https://pirateproxy.live/\",\n \"https://ukpiratebay.org/\",\n \"https://piratebay.by/\",\n \"https://pirate-proxy.date/\",\n \"https://thepirateproxy.net/\",\n \"https://thepiratebay.abcproxy.org/\"\n ],\n \"definitionName\": \"thepiratebay\",\n \"description\": \"The Pirate Bay (TPB) is the galaxy’s most resilient Public BitTorrent site\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n },\n {\n \"id\": 6040,\n \"name\": \"XXX/x264\",\n \"subCategories\": []\n },\n {\n \"id\": 6045,\n \"name\": \"XXX/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 6070,\n \"name\": \"XXX/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7050,\n \"name\": \"Books/Other\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"pirate bay\",\n \"name\": \"The Pirate Bay\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"thepiratebay\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_api\",\n \"value\": \"This indexer uses the API at https://apibay.org/ to get its official TPB data. Choose any site link that you can access/prefer so that you can view the torrent details page when browsing the search results for this indexer.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#thepiratebay\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://therarbg.to/\",\n \"https://t-rb.org/\",\n \"https://the.rarbg.club/\",\n \"https://trb.archivebay.online/\",\n \"https://trb.t-pb.org/\",\n \"https://trb.themirror.wiki/\",\n \"https://torrentlite.org/\",\n \"https://rarbg.unblockninja.com/\",\n \"https://rarbg.ninjaproxy1.com/\",\n \"https://rarbg.proxyninja.org/\",\n \"https://rarbg.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://therarbg.com/\"\n ],\n \"definitionName\": \"therarbg\",\n \"description\": \"TheRARBG is a Public site inspired by RARBG.to for TV / MOVIES / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"therarbg\",\n \"name\": \"TheRARBG\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"therarbg\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#therarbg\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torlock.com/\",\n \"https://www.torlock2.com/\"\n ],\n \"legacyUrls\": [\n \"https://torlock.com/\",\n \"https://www.torlock.icu/\",\n \"https://torlock.mrunblock.guru/\",\n \"https://torlock.unblockit.click/\",\n \"https://torlock.unblockit.asia/\",\n \"https://torlock.mrunblock.life/\",\n \"https://torlock.unblockit.mov/\",\n \"https://torlock.unblockit.rsvp/\",\n \"https://torlock.unblockit.vegas/\",\n \"https://torlock.unblockit.esq/\",\n \"https://torlock.unblockit.zip/\",\n \"https://torlock.unblockit.foo/\",\n \"https://torlock.unblockit.ing/\",\n \"https://torlock.nocensor.cloud/\",\n \"https://torlock.mrunblock.bond/\",\n \"https://torlock.unblockit.date/\",\n \"https://torlock.unblockit.dad/\",\n \"https://torlock.unblockit.africa/\",\n \"https://torlock.unblockit.casa/\",\n \"https://torlock.unblockit.sbs/\",\n \"https://torlock.unblockit.ong/\"\n ],\n \"definitionName\": \"torlock\",\n \"description\": \"Torlock is a torrent search site that lists verified torrents only for TV series and movies\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torlock\",\n \"name\": \"Torlock\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torlock\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torlock\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownloads.pro/\",\n \"https://torrentdownloads.unblockit.ong/\",\n \"https://torrentdownloads.unblockninja.com/\",\n \"https://torrentdownloads.ninjaproxy1.com/\",\n \"https://torrentdownloads.proxyninja.org/\"\n ],\n \"legacyUrls\": [\n \"https://www.torrentdownloads.me/\",\n \"https://www.torrentdownloads.info/\",\n \"https://torrentdownloads.mrunblock.guru/\",\n \"https://torrentdownloads.unblockit.click/\",\n \"https://torrentdownloads.unblockit.asia/\",\n \"https://torrentdownloads.unblockit.mov/\",\n \"https://torrentdownloads.mrunblock.life/\",\n \"https://torrentdownloads.unblockit.rsvp/\",\n \"https://torrentdownloads.unblockit.vegas/\",\n \"https://torrentdownloads.unblockit.esq/\",\n \"https://torrentdownloads.unblockit.zip/\",\n \"https://torrentdownloads.unblockit.foo/\",\n \"https://torrentdownloads.unblockit.ing/\",\n \"https://torrentdownloads.mrunblock.bond/\",\n \"https://torrentdownloads.nocensor.cloud/\",\n \"https://torrentdownloads.unblockit.date/\",\n \"https://torrentdownloads.unblockit.dad/\",\n \"https://torrentdownloads.unblockit.africa/\",\n \"https://torrentdownloads.unblockit.casa/\",\n \"https://torrentdownloads.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownloads\",\n \"description\": \"Torrent Downloads (TD) is a Public torrent site for all kinds of content\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrent downloads\",\n \"name\": \"Torrent Downloads\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownloads\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownloads\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yourbittorrent.com/\",\n \"https://yourbittorrent2.com/\"\n ],\n \"legacyUrls\": [\n \"https://yourbittorrent.host/\",\n \"https://yourbittorrent.nocensor.space/\",\n \"https://yourbittorrent.nocensor.work/\",\n \"https://yourbittorrent.nocensor.biz/\",\n \"https://yourbittorrent.nocensor.sbs/\",\n \"https://yourbittorrent.nocensor.world/\",\n \"https://yourbittorrent.nocensor.lol/\",\n \"https://yourbittorrent.mrunblock.guru/\",\n \"https://yourbittorrent.mrunblock.life/\",\n \"https://yourbittorrent.nocensor.click/\",\n \"https://yourbittorrent.nocensor.cloud/\",\n \"https://yourbittorrent.mrunblock.bond/\"\n ],\n \"definitionName\": \"yourbittorrent\",\n \"description\": \"YourBittorrent is a Public torrent index\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yourbittorrent\",\n \"name\": \"YourBittorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yourbittorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yourbittorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://1337x.to/\",\n \"https://1337x.st/\",\n \"https://x1337x.ws/\",\n \"https://x1337x.eu/\",\n \"https://x1337x.se/\",\n \"https://1337x.so/\",\n \"https://1337x.abcproxy.org/\",\n \"https://1337x.unblockninja.com/\",\n \"https://1337x.ninjaproxy1.com/\",\n \"https://1337x.proxyninja.org/\",\n \"https://1337x.torrentbay.st/\"\n ],\n \"legacyUrls\": [\n \"https://1337x.is/\",\n \"https://1337x.gd/\",\n \"https://1337x.mrunblock.guru/\",\n \"https://1337x.mrunblock.life/\",\n \"https://1337x.unblockit.click/\",\n \"https://1337x.unblockit.asia/\",\n \"https://1337x.unblockit.mov/\",\n \"https://1337x.unblockit.rsvp/\",\n \"https://1337x.unblockit.vegas/\",\n \"https://1337x.unblockit.esq/\",\n \"https://1337x.unblockit.zip/\",\n \"https://1337x.unblockit.foo/\",\n \"https://1337x.unblockit.ing/\",\n \"https://1337x.mrunblock.bond/\",\n \"https://1337x.unblockit.date/\",\n \"https://1337x.unblockit.dad/\",\n \"https://1337x.unblockit.africa/\",\n \"https://1337x.unblockit.casa/\",\n \"https://unblockit.sbs/\",\n \"https://unblockit.ong/\"\n ],\n \"definitionName\": \"1337x\",\n \"description\": \"1337X is a Public torrent site that offers verified torrent downloads\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n },\n {\n \"id\": 3050,\n \"name\": \"Audio/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2030,\n \"name\": \"Movies/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 2010,\n \"name\": \"Movies/Foreign\",\n \"subCategories\": []\n },\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4030,\n \"name\": \"PC/Mac\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1080,\n \"name\": \"Console/PS3\",\n \"subCategories\": []\n },\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n },\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n },\n {\n \"id\": 1090,\n \"name\": \"Console/Other\",\n \"subCategories\": []\n },\n {\n \"id\": 1030,\n \"name\": \"Console/Wii\",\n \"subCategories\": []\n },\n {\n \"id\": 1010,\n \"name\": \"Console/NDS\",\n \"subCategories\": []\n },\n {\n \"id\": 1110,\n \"name\": \"Console/3DS\",\n \"subCategories\": []\n },\n {\n \"id\": 1180,\n \"name\": \"Console/PS4\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": [\n {\n \"id\": 6010,\n \"name\": \"XXX/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 6060,\n \"name\": \"XXX/ImageSet\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"1337x\",\n \"name\": \"1337x\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"1337x\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)\"\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#1337x\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://bitru.org/\"\n ],\n \"legacyUrls\": [\n \"http://bitru.org/\"\n ],\n \"definitionName\": \"bitru\",\n \"description\": \"BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"bitru\",\n \"name\": \"BitRu\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"bitru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"adverts\",\n \"value\": true\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#bitru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://badasstorrents.com/\"\n ],\n \"legacyUrls\": [\n \"https://badasstorrents.nocensor.work/\",\n \"https://badasstorrents.nocensor.biz/\",\n \"https://badasstorrents.nocensor.sbs/\",\n \"https://badasstorrents.nocensor.world/\",\n \"https://badasstorrents.nocensor.lol/\",\n \"https://badasstorrents.nocensor.art/\",\n \"https://badasstorrents.mrunblock.guru/\",\n \"https://badasstorrents.mrunblock.life/\",\n \"https://badasstorrents.nocensor.click/\",\n \"https://badasstorrents.mrunblock.bond/\",\n \"https://badasstorrents.nocensor.cloud/\"\n ],\n \"definitionName\": \"badasstorrents\",\n \"description\": \"Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\",\n \"album\",\n \"artist\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"badass torrents\",\n \"name\": \"Badass Torrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"badasstorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#badasstorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://archive.org/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"internetarchive\",\n \"description\": \"Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"internet archive\",\n \"name\": \"Internet Archive\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"internetarchive\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"titleOnly\",\n \"value\": false\n },\n {\n \"name\": \"noMagnet\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#internetarchive\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.gktorrent.pm/\"\n ],\n \"legacyUrls\": [\n \"https://www.rantop.org/\",\n \"https://www.torrent.ws/\",\n \"https://gktorrent.mrunblock.guru/\",\n \"https://gktorrent.mrunblock.life/\",\n \"https://gktorrent.nocensor.click/\",\n \"https://www.gktorrent.ac/\",\n \"https://www.gktorrent.ph/\",\n \"https://www.gktorrent.vc/\",\n \"https://www.gktorrent.mx/\",\n \"https://www.gktorrent.fi/\",\n \"https://www.gktorrent.wf/\",\n \"https://gktorrent.nocensor.cloud/\",\n \"https://gktorrent.mrunblock.bond/\",\n \"https://www.gktorrent.wtf/\",\n \"https://www.gktorrent.vg/\",\n \"https://www.gktorrent.lol/\",\n \"https://www.gktorrent.sh/\",\n \"https://www.gktorrent.eu/\",\n \"https://www.gktorrent.xyz/\"\n ],\n \"definitionName\": \"gktorrent\",\n \"description\": \"GkTorrent is a French Public site for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1050,\n \"name\": \"Console/XBox 360\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"gktorrent\",\n \"name\": \"GkTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"gktorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#gktorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://itorrent.ws/\"\n ],\n \"legacyUrls\": [\n \"https://itorrent.unblockit.pro/\",\n \"https://itorrent.unblockit.one/\",\n \"https://itorrent.unblockit.me/\"\n ],\n \"definitionName\": \"itorrent\",\n \"description\": \"iTorrent is a Public HUNGARIAN site\",\n \"language\": \"hu-HU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"itorrent\",\n \"name\": \"iTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"itorrent\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#itorrent\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.limetorrents.lol/\",\n \"https://limetorrents.unblockit.black/\",\n \"https://limetorrents.unblockninja.com/\",\n \"https://limetorrents.ninjaproxy1.com/\",\n \"https://limetorrents.proxyninja.org/\",\n \"https://limetorrents.proxyninja.net/\",\n \"https://limetorrents.torrentbay.st/\",\n \"https://limetorrents.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://limetorrents.unblockit.asia/\",\n \"https://limetorrents.unblockit.mov/\",\n \"https://limetorrents.unblockit.rsvp/\",\n \"https://limetorrents.unblockit.vegas/\",\n \"https://limetorrents.unblockit.esq/\",\n \"https://limetorrents.unblockit.zip/\",\n \"https://limetorrents.unblockit.foo/\",\n \"https://limetorrents.unblockit.ing/\",\n \"https://limetorrents.mrunblock.bond/\",\n \"https://limetorrents.nocensor.cloud/\",\n \"https://limetorrents.unblockit.date/\",\n \"https://limetorrents.unblockit.dad/\",\n \"https://limetorrents.unblockit.africa/\",\n \"https://limetorrents.unblockit.casa/\",\n \"https://limetorrents.unblockit.sbs/\",\n \"https://limetorrents.unblockit.ong/\",\n \"https://limetorrents.abcproxy.org/\"\n ],\n \"definitionName\": \"limetorrents\",\n \"description\": \"LimeTorrents is a Public general torrent index with mostly verified torrents\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"limetorrents\",\n \"name\": \"LimeTorrents\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"limetorrents\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"downloadlink\",\n \"value\": 1\n },\n {\n \"name\": \"downloadlink2\",\n \"value\": 1\n },\n {\n \"name\": \"info_download\",\n \"value\": \"As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"info_category_8000\",\n \"value\": \"LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#limetorrents\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.oxtorrent.co/\",\n \"https://oxtorrent.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://oxtorrent.unblockit.casa/\",\n \"https://oxtorrent.unblockit.sbs/\"\n ],\n \"definitionName\": \"oxtorrent-co\",\n \"description\": \"OxTorrent is a FRENCH Public Torrent Tracker for TV / MOVIES / GENERAL\",\n \"language\": \"fr-FR\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"oxtorrent\",\n \"name\": \"OxTorrent\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"oxtorrent-co\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"multilang\",\n \"value\": false\n },\n {\n \"name\": \"multilanguage\",\n \"value\": 1\n },\n {\n \"name\": \"vostfr\",\n \"value\": false\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#oxtorrent-co\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://rutor.info/\",\n \"https://rutor.is/\"\n ],\n \"legacyUrls\": [\n \"https://rutor.uk-unblock.xyz/\",\n \"https://rutor.ind-unblock.xyz/\",\n \"https://rutor.unblocked.bar/\",\n \"https://rutor.proxyportal.pw/\",\n \"https://rutor.uk-unblock.pro/\",\n \"https://rutor.root.yt/\",\n \"https://rutor.unblocked.rest/\",\n \"https://rutor.unblocked.monster/\",\n \"https://rutor.nocensor.space/\",\n \"https://rutor.nocensor.work/\",\n \"http://6tor.org/\",\n \"https://rutor.nocensor.world/\",\n \"https://rutor.nocensor.lol/\",\n \"https://rutor.nocensor.art/\",\n \"https://rutor.mrunblock.guru/\",\n \"https://rutor.mrunblock.life/\",\n \"https://rutor.nocensor.click/\",\n \"https://rutor.mrunblock.bond/\",\n \"https://rutor.nocensor.cloud/\",\n \"http://new-rutor.org/\",\n \"http://rutor.info/\",\n \"http://rutor.is/\"\n ],\n \"definitionName\": \"rutor\",\n \"description\": \"RuTor is a RUSSIAN Public site for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\",\n \"imdbId\"\n ],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutor\",\n \"name\": \"RuTor\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutor\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"info\",\n \"value\": \"RuTor does not display categories in its search results page. This definition is probably only suitable for Prowlarr Dashboard Manual searches.\"\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutor\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"http://rutracker.ru/\"\n ],\n \"legacyUrls\": [],\n \"definitionName\": \"rutracker-ru\",\n \"description\": \"RuTracker.RU is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL\",\n \"language\": \"ru-RU\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2070,\n \"name\": \"Movies/DVD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5040,\n \"name\": \"TV/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 5010,\n \"name\": \"TV/WEB-DL\",\n \"subCategories\": []\n },\n {\n \"id\": 5045,\n \"name\": \"TV/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 5030,\n \"name\": \"TV/SD\",\n \"subCategories\": []\n },\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5060,\n \"name\": \"TV/Sport\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n },\n {\n \"id\": 4040,\n \"name\": \"PC/Mobile-Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4060,\n \"name\": \"PC/Mobile-iOS\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": [\n {\n \"id\": 1020,\n \"name\": \"Console/PSP\",\n \"subCategories\": []\n },\n {\n \"id\": 1040,\n \"name\": \"Console/XBox\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"rutracker ru\",\n \"name\": \"RuTracker.RU\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"rutracker-ru\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"stripcyrillic\",\n \"value\": false\n },\n {\n \"name\": \"addrussiantotitle\",\n \"value\": false\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#rutracker-ru\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.torrentdownload.info/\",\n \"https://torrentdownload.unblockit.ong/\"\n ],\n \"legacyUrls\": [\n \"https://torrentdownload.mrunblock.guru/\",\n \"https://torrentdownload.unblockit.click/\",\n \"https://torrentdownload.unblockit.asia/\",\n \"https://torrentdownload.unblockit.mov/\",\n \"https://torrentdownload.mrunblock.life/\",\n \"https://torrentdownload.unblockit.rsvp/\",\n \"https://torrentdownload.unblockit.vegas/\",\n \"https://torrentdownload.unblockit.esq/\",\n \"https://torrentdownload.unblockit.zip/\",\n \"https://torrentdownload.unblockit.foo/\",\n \"https://torrentdownload.unblockit.ing/\",\n \"https://torrentdownload.mrunblock.bond/\",\n \"https://torrentdownload.nocensor.cloud/\",\n \"https://torrentdownload.unblockit.date/\",\n \"https://torrentdownload.unblockit.dad/\",\n \"https://torrentdownload.unblockit.africa/\",\n \"https://torrentdownload.unblockit.casa/\",\n \"https://torrentdownload.unblockit.sbs/\"\n ],\n \"definitionName\": \"torrentdownload\",\n \"description\": \"TorrentDownload is a Public torrent meta-search engine\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 6000,\n \"name\": \"XXX\",\n \"subCategories\": []\n },\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n },\n {\n \"id\": 5080,\n \"name\": \"TV/Documentary\",\n \"subCategories\": []\n },\n {\n \"id\": 5050,\n \"name\": \"TV/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4010,\n \"name\": \"PC/0day\",\n \"subCategories\": []\n },\n {\n \"id\": 4070,\n \"name\": \"PC/Mobile-Android\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": [\n {\n \"id\": 3030,\n \"name\": \"Audio/Audiobook\",\n \"subCategories\": []\n },\n {\n \"id\": 3040,\n \"name\": \"Audio/Lossless\",\n \"subCategories\": []\n },\n {\n \"id\": 3010,\n \"name\": \"Audio/MP3\",\n \"subCategories\": []\n },\n {\n \"id\": 3020,\n \"name\": \"Audio/Video\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": [\n {\n \"id\": 7030,\n \"name\": \"Books/Comics\",\n \"subCategories\": []\n },\n {\n \"id\": 7020,\n \"name\": \"Books/EBook\",\n \"subCategories\": []\n },\n {\n \"id\": 7010,\n \"name\": \"Books/Mags\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 1000,\n \"name\": \"Console\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": [\n {\n \"id\": 8010,\n \"name\": \"Other/Misc\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"torrentdownload\",\n \"name\": \"TorrentDownload\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"torrentdownload\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"sort\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#torrentdownload\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://www.529052.xyz/\",\n \"https://www.529053.xyz/\"\n ],\n \"legacyUrls\": [\n \"https://529050.xyz/\",\n \"https://529048.xyz/\",\n \"https://529049.xyz/\"\n ],\n \"definitionName\": \"52bt\",\n \"description\": \"52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL\",\n \"language\": \"zh-CN\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": []\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"52bt\",\n \"name\": \"52BT\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"52bt\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 2\n },\n {\n \"name\": \"info_flaresolverr\",\n \"value\": \"This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href=\\\"https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers\\\" target=\\\"_blank\\\" rel=\\\"noreferrer\\\">FlareSolverr</a> to access it.\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#52bt\",\n \"tags\": [\n 1\n ]\n },\n {\n \"indexerUrls\": [\n \"https://eztvx.to/\",\n \"https://eztv.wf/\",\n \"https://eztv.tf/\",\n \"https://eztv.yt/\",\n \"https://eztv1.xyz/\",\n \"https://eztv.unblockit.black/\"\n ],\n \"legacyUrls\": [\n \"https://eztv.ag/\",\n \"https://eztv.it/\",\n \"https://eztv.ch/\",\n \"https://eztv.io/\",\n \"https://eztv.unblockit.asia/\",\n \"https://eztv.unblockit.mov/\",\n \"https://eztv.mrunblock.life/\",\n \"https://eztv.unblockit.rsvp/\",\n \"https://eztv.unblockit.vegas/\",\n \"https://eztv.unblockit.esq/\",\n \"https://eztv.unblockit.zip/\",\n \"https://eztv.re/\",\n \"https://eztv.li/\",\n \"https://eztv.unblockit.foo/\",\n \"https://eztv.unblockit.ing/\",\n \"https://eztv.mrunblock.bond/\",\n \"https://eztv.nocensor.cloud/\",\n \"https://eztv.unblockit.date/\",\n \"https://eztv.unblockit.dad/\",\n \"https://eztv.unblockit.africa/\",\n \"https://eztv.unblockit.casa/\",\n \"https://eztv.unblockit.sbs/\",\n \"https://eztv.unblockninja.com/\",\n \"https://eztv.ninjaproxy1.com/\",\n \"https://eztv.proxyninja.org/\",\n \"https://eztv.abcproxy.org/\",\n \"https://eztv.unblockit.ong/\"\n ],\n \"definitionName\": \"eztv\",\n \"description\": \"EZTV is a Public torrent site for TV shows\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": []\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"eztv\",\n \"name\": \"EZTV\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"eztv\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#eztv\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://yts.mx/\",\n \"https://yts.unblockit.meme/\",\n \"https://yts.unblockninja.com/\",\n \"https://yts.ninjaproxy1.com/\",\n \"https://yts.proxyninja.org/\",\n \"https://yts.proxyninja.net/\",\n \"https://yts.torrentbay.st/\",\n \"https://yts.torrentsbay.org/\"\n ],\n \"legacyUrls\": [\n \"https://yts.unblockit.mov/\",\n \"https://yts.unblockit.rsvp/\",\n \"https://yts.unblockit.vegas/\",\n \"https://yts.unblockit.esq/\",\n \"https://yts.unblockit.zip/\",\n \"https://yts.unblockit.foo/\",\n \"https://yts.unblockit.ing/\",\n \"https://yts.mrunblock.bond/\",\n \"https://yts.nocensor.cloud/\",\n \"https://yts.unblockit.date/\",\n \"https://yts.unblockit.dad/\",\n \"https://yts.unblockit.africa/\",\n \"https://yts.unblockit.casa/\",\n \"https://yts.unblockit.sbs/\",\n \"https://yts.unblockit.ong/\",\n \"https://yts.abcproxy.org/\",\n \"https://yts.unblockit.black/\",\n \"https://yts.lt/\",\n \"https://yts.am/\",\n \"https://yts.ag/\"\n ],\n \"definitionName\": \"yts\",\n \"description\": \"YTS is a Public torrent site specialising in HD movies of small size\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2040,\n \"name\": \"Movies/HD\",\n \"subCategories\": []\n },\n {\n \"id\": 2045,\n \"name\": \"Movies/UHD\",\n \"subCategories\": []\n },\n {\n \"id\": 2060,\n \"name\": \"Movies/3D\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": false,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [],\n \"movieSearchParams\": [\n \"q\",\n \"imdbId\"\n ],\n \"musicSearchParams\": [],\n \"bookSearchParams\": []\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"yts\",\n \"name\": \"YTS\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"yts\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#yts\",\n \"tags\": []\n },\n {\n \"indexerUrls\": [\n \"https://nyaa.si/\",\n \"https://nyaa.iss.ink/\",\n \"https://nyaa.land/\",\n \"https://nyaa.unblockninja.com/\"\n ],\n \"legacyUrls\": [\n \"https://nyaa.black-mirror.xyz/\",\n \"https://nyaa.unblocked.casa/\",\n \"https://nyaa.proxyportal.fun/\",\n \"https://nyaa.uk-unblock.xyz/\",\n \"https://nyaa.ind-unblock.xyz/\",\n \"https://nyaa.unblocked.bar/\",\n \"https://nyaa.proxyportal.pw/\",\n \"https://nyaa.uk-unblock.pro/\",\n \"https://nyaa.root.yt/\",\n \"https://nyaa.lol/\",\n \"https://nyaa.mrunblock.bond/\",\n \"https://nyaa.nocensor.cloud/\"\n ],\n \"definitionName\": \"nyaasi\",\n \"description\": \"Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music\",\n \"language\": \"en-US\",\n \"enable\": true,\n \"redirect\": false,\n \"supportsRss\": true,\n \"supportsSearch\": true,\n \"supportsRedirect\": false,\n \"supportsPagination\": false,\n \"appProfileId\": 1,\n \"protocol\": \"torrent\",\n \"privacy\": \"public\",\n \"capabilities\": {\n \"limitsMax\": 100,\n \"limitsDefault\": 100,\n \"categories\": [\n {\n \"id\": 5000,\n \"name\": \"TV\",\n \"subCategories\": [\n {\n \"id\": 5070,\n \"name\": \"TV/Anime\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subCategories\": [\n {\n \"id\": 2020,\n \"name\": \"Movies/Other\",\n \"subCategories\": []\n }\n ]\n },\n {\n \"id\": 3000,\n \"name\": \"Audio\",\n \"subCategories\": []\n },\n {\n \"id\": 7000,\n \"name\": \"Books\",\n \"subCategories\": []\n },\n {\n \"id\": 8000,\n \"name\": \"Other\",\n \"subCategories\": []\n },\n {\n \"id\": 4000,\n \"name\": \"PC\",\n \"subCategories\": [\n {\n \"id\": 4020,\n \"name\": \"PC/ISO\",\n \"subCategories\": []\n },\n {\n \"id\": 4050,\n \"name\": \"PC/Games\",\n \"subCategories\": []\n }\n ]\n }\n ],\n \"supportsRawSearch\": true,\n \"searchParams\": [\n \"q\",\n \"q\"\n ],\n \"tvSearchParams\": [\n \"q\",\n \"season\",\n \"ep\"\n ],\n \"movieSearchParams\": [\n \"q\"\n ],\n \"musicSearchParams\": [\n \"q\"\n ],\n \"bookSearchParams\": [\n \"q\"\n ]\n },\n \"priority\": 25,\n \"downloadClientId\": 0,\n \"added\": \"0001-01-01T00:00:00Z\",\n \"sortName\": \"nyaa si\",\n \"name\": \"Nyaa.si\",\n \"fields\": [\n {\n \"name\": \"definitionFile\",\n \"value\": \"nyaasi\"\n },\n {\n \"name\": \"baseUrl\"\n },\n {\n \"name\": \"baseSettings.queryLimit\"\n },\n {\n \"name\": \"baseSettings.grabLimit\"\n },\n {\n \"name\": \"baseSettings.limitsUnit\",\n \"value\": 0\n },\n {\n \"name\": \"torrentBaseSettings.appMinimumSeeders\"\n },\n {\n \"name\": \"torrentBaseSettings.seedRatio\"\n },\n {\n \"name\": \"torrentBaseSettings.seedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.packSeedTime\"\n },\n {\n \"name\": \"torrentBaseSettings.preferMagnetUrl\",\n \"value\": false\n },\n {\n \"name\": \"prefer_magnet_links\",\n \"value\": true\n },\n {\n \"name\": \"sonarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"strip_s01\",\n \"value\": false\n },\n {\n \"name\": \"radarr_compatibility\",\n \"value\": true\n },\n {\n \"name\": \"filter-id\",\n \"value\": 1\n },\n {\n \"name\": \"cat-id\",\n \"value\": 0\n },\n {\n \"name\": \"sort\",\n \"value\": 0\n },\n {\n \"name\": \"type\",\n \"value\": 1\n }\n ],\n \"implementationName\": \"Cardigann\",\n \"implementation\": \"Cardigann\",\n \"configContract\": \"CardigannSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported-indexers#nyaasi\",\n \"tags\": []\n }\n ]\n prowlarr_indexer_proxy.json:\n content: |\n {\n \"onHealthIssue\": false,\n \"supportsOnHealthIssue\": false,\n \"includeHealthWarnings\": false,\n \"name\": \"FlareSolverr\",\n \"fields\": [\n {\n \"name\": \"host\",\n \"value\": \"${FLARESOLVERR_INTERNAL_URL:-http://flaresolverr:8191}\"\n },\n {\n \"name\": \"requestTimeout\",\n \"value\": 60\n }\n ],\n \"implementationName\": \"FlareSolverr\",\n \"implementation\": \"FlareSolverr\",\n \"configContract\": \"FlareSolverrSettings\",\n \"infoLink\": \"https://wiki.servarr.com/prowlarr/supported#flaresolverr\",\n \"tags\": [\n 1\n ]\n }\n scraper_config.json:\n content: |\n {\n \"start_urls\": {\n \"nowsports\": \"https://neesports.me/\",\n \"nowmetv\": \"https://neelive.com/\",\n \"tgx\": [\n \"torrentgalaxy.mx\",\n \"torrentgalaxy.to\",\n \"tgx.rs\"\n ]\n },\n \"tamil_blasters\": {\n \"homepage\": \"https://www.1tamilblasters.net\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"52-english-movies-hdcam-dvdscr-predvd\",\n \"hdrip\": \"53-english-movies-hdrips-bdrips-dvdrips\",\n \"series\": \"92-english-web-series-tv-shows\"\n }\n }\n },\n \"tamilmv\": {\n \"homepage\": \"https://www.1tamilmv.com\",\n \"catalogs\": {\n \"english\": {\n \"tcrip\": \"46-predvd-dvdscr-cam-tc\",\n \"hdrip\": [\n \"49-web-hd-itunes-hd-bluray\",\n \"50-hd-rips-dvd-rips-br-rips\"\n ],\n \"series\": \"55-web-series-tv-shows\"\n }\n },\n \"supported_search_forums\": {\n \"46-predvd-dvdscr-cam-tc\": {\n \"language\": \"english\",\n \"media_type\": \"tcrip\"\n },\n \"49-web-hd-itunes-hd-bluray\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"50-hd-rips-dvd-rips-br-rips\": {\n \"language\": \"english\",\n \"media_type\": \"hdrip\"\n },\n \"55-web-series-tv-shows\": {\n \"language\": \"english\",\n \"media_type\": \"series\"\n }\n }\n },\n \"dlhd\": {\n \"channels_url\": \"https://daddylive.dad/24-7-channels.php\",\n \"channel_url\": \"https://daddylive.dad/stream/stream-{channel_number}.php\",\n \"schedule_url\": \"https://daddylive.dad/schedule/schedule-generated.php\",\n \"server_lookup_url\": \"https://allupplay.xyz/server_lookup.php?channel_id={server_type}{channel_id}\",\n \"m3u8_base_url\": \"https://{server_key}new.newkso.ru/{server_key}/{server_type}{channel_id}/mono.m3u8\",\n \"key_url\": \"https://key.keylocking.ru\",\n \"referer\": \"https://allupplay.xyz/\",\n \"category_mapping\": {\n \"Tv Shows\": \"Other Sports\",\n \"Soccer\": \"Football\",\n \"Cricket\": \"Cricket\",\n \"Tennis\": \"Tennis\",\n \"Tennis ATP - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis WTA DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Tennis ATP - FRENCH OPEN\": \"Tennis\",\n \"Tennis MIXED DOUBLES - AUSTRALIAN OPEN\": \"Tennis\",\n \"Motorsport\": \"Motor Sport\",\n \"Boxing\": \"Boxing\",\n \"MMA\": \"MMA\",\n \"Golf\": \"Golf\",\n \"Snooker\": \"Other Sports\",\n \"Am. Football\": \"American Football\",\n \"Athletics\": \"Athletics\",\n \"Aussie rules\": \"Aussie Rules\",\n \"Baseball\": \"Baseball\",\n \"Basketball\": \"Basketball\",\n \"Bowling\": \"Bowling\",\n \"Cycling\": \"Cycling\",\n \"Darts\": \"Dart\",\n \"Floorball\": \"Floorball\",\n \"Futsal\": \"Futsal\",\n \"Gymnastics\": \"Gymnastics\",\n \"Handball\": \"Handball\",\n \"Horse Racing\": \"Horse Racing\",\n \"Ice Hockey\": \"Hockey\",\n \"Lacrosse\": \"Lacrosse\",\n \"Netball\": \"Netball\",\n \"Rugby League\": \"Rugby/AFL\",\n \"Rugby Union\": \"Rugby/AFL\",\n \"Squash\": \"Squash\",\n \"Volleyball\": \"Volleyball\",\n \"GAA\": \"GAA\",\n \"Clubber\": \"Other Sports\"\n }\n },\n \"sport_video\": {\n \"categories\": {\n \"american_football\": \"https://www.sport-video.org.ua/americanfootball.html\",\n \"basketball\": \"https://www.sport-video.org.ua/basketball.html\",\n \"baseball\": \"https://www.sport-video.org.ua/baseball.html\",\n \"football\": \"https://www.sport-video.org.ua/football.html\",\n \"hockey\": \"https://www.sport-video.org.ua/hockey.html\",\n \"rugby\": \"https://www.sport-video.org.ua/rugby.html\",\n \"other_sports\": \"https://www.sport-video.org.ua/other.html\"\n }\n }\n }\n\n litellm_config.yaml:\n content: |\n general_settings:\n proxy_batch_write_at: 60\n\n router_settings:\n redis_host: redis\n redis_port: 6379\n redis_password:\n enable_pre_call_check: true\n allowed_fails: 3\n allowed_fails_policy:\n BadRequestErrorAllowedFails: 1000\n AuthenticationErrorAllowedFails: 10\n TimeoutErrorAllowedFails: 12\n RateLimitErrorAllowedFails: 10000\n ContentPolicyViolationErrorAllowedFails: 15\n InternalServerErrorAllowedFails: 20\n cooldown_time: 30\n disable_cooldowns: false\n enable_pre_call_checks: true\n enable_tag_filtering: true\n retry_policy:\n AuthenticationErrorRetries: 3\n TimeoutErrorRetries: 3\n RateLimitErrorRetries: 3\n ContentPolicyViolationErrorRetries: 4\n InternalServerErrorRetries: 4\n routing_strategy: simple-shuffle\n\n litellm_settings:\n cache: true\n cache_params:\n type: redis\n host: redis\n port: 6379\n password:\n namespace: \"litellm_cache\"\n ttl: 600\n content_policy_fallbacks: []\n context_window_fallbacks: []\n default_fallbacks: []\n set_verbose: false\n force_ipv4: true\n json_logs: true\n log_raw_request_response: true\n turn_off_message_logging: false\n redact_user_api_key_info: true\n drop_params: true\n # max_budget: 100\n # budget_duration: 30d\n num_retries: 3\n request_timeout: 600\n telemetry: false\n model_list:\n - model_name: moonshotai/kimi-k2:free\n litellm_params:\n model: openai/moonshotai/kimi-k2:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for agentic capabilities, including advanced tool use, reasoning, and code synthesis. Kimi K2 excels across a broad range of benchmarks, particularly in coding (LiveCodeBench, SWE-bench), reasoning (ZebraLogic, GPQA), and tool-use (Tau2, AceBench) tasks. It supports long-context inference up to 128K tokens and is designed with a novel training stack that includes the MuonClip optimizer for stable large-scale MoE training.\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin-mistral-24b-venice-edition:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving user control over alignment, system prompts, and behavior. Intended for advanced and unrestricted use cases, Venice Uncensored emphasizes steerability and transparent behavior, removing default safety and alignment layers typically found in mainstream assistant models.\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e2b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e2b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based on the MatFormer architecture, it supports nested submodels and modular composition via the Mix-and-Match framework. Gemma 3n models are optimized for low-resource deployment, offering 32K context length and strong multilingual and reasoning performance across common benchmarks. This variant is trained on a diverse corpus including code, math, web, and multimodal data.\n litellm_provider: openrouter\n - model_name: tencent/hunyuan-a13b-instruct:free\n litellm_params:\n model: openai/tencent/hunyuan-a13b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark performance across mathematics, science, coding, and multi-turn reasoning tasks, while maintaining high inference efficiency via Grouped Query Attention (GQA) and quantization support (FP8, GPTQ, etc.).\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t2-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t2-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: DeepSeek-TNG-R1T2-Chimera is the second-generation Chimera model from TNG Tech. It is a 671 B-parameter mixture-of-experts text-generation model assembled from DeepSeek-AI’s R1-0528, R1, and V3-0324 checkpoints with an Assembly-of-Experts merge. The tri-parent design yields strong reasoning performance while running roughly 20 % faster than the original R1 and more than 2× faster than R1-0528 under vLLM, giving a favorable cost-to-intelligence trade-off. The checkpoint supports contexts up to 60 k tokens in standard use (tested to ~130 k) and maintains consistent <think> token behaviour, making it suitable for long-context analysis, dialogue and other open-ended generation tasks.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.2-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.2-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on WildBench and Arena Hard, reduces infinite generations, and delivers gains in tool use and structured output tasks. It supports image and text inputs with structured outputs, function/tool calling, and strong performance across coding (HumanEval+, MBPP), STEM (MMLU, MATH, GPQA), and vision benchmarks (ChartQA, DocVQA).'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-dev-72b:free\n litellm_params:\n model: openai/moonshotai/kimi-dev-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Kimi-Dev-72B is an open-source large language model fine-tuned for software engineering and issue resolution tasks. Based on Qwen2.5-72B, it is optimized using large-scale reinforcement learning that applies code patches in real repositories and validates them via full test suite execution—rewarding only correct, robust completions. The model achieves 60.4% on SWE-bench Verified, setting a new benchmark among open-source models for software bug fixing and code reasoning.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528-qwen3-8b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528-qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepSeek-R1-0528 is a lightly upgraded release of DeepSeek R1 that taps more compute and smarter post-training tricks, pushing its reasoning and inference to the brink of flagship models like O3 and Gemini 2.5 Pro. It now tops math, programming, and logic leaderboards, showcasing a step-change in depth-of-thought. The distilled variant, DeepSeek-R1-0528-Qwen3-8B, transfers this chain-of-thought into an 8 B-parameter form, beating standard Qwen3 8B by +10 pp and tying the 235 B “thinking” giant on AIME 2024.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-0528:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-0528:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model.'\n litellm_provider: openrouter\n - model_name: sarvamai/sarvam-m:free\n litellm_params:\n model: openai/sarvamai/sarvam-m:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Sarvam-M is a 24 B-parameter, instruction-tuned derivative of Mistral-Small-3.1-24B-Base-2503, post-trained on English plus eleven major Indic languages (bn, hi, kn, gu, mr, ml, or, pa, ta, te). The model introduces a dual-mode interface: “non-think” for low-latency chat and a optional “think” phase that exposes chain-of-thought tokens for more demanding reasoning, math, and coding tasks. Benchmark reports show solid gains versus similarly sized open models on Indic-language QA, GSM-8K math, and SWE-Bench coding, making Sarvam-M a practical general-purpose choice for multilingual conversational agents as well as analytical workloads that mix English, native Indic scripts, or romanized text.'\n litellm_provider: openrouter\n - model_name: mistralai/devstral-small-2505:free\n litellm_params:\n model: openai/mistralai/devstral-small-2505:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Devstral-Small-2505 is a 24B parameter agentic LLM fine-tuned from Mistral-Small-3.1, jointly developed by Mistral AI and All Hands AI for advanced software engineering tasks. It is optimized for codebase exploration, multi-file editing, and integration into coding agents, achieving state-of-the-art results on SWE-Bench Verified (46.8%). Devstral supports a 128k context window and uses a custom Tekken tokenizer. It is text-only, with the vision encoder removed, and is suitable for local deployment on high-end consumer hardware (e.g., RTX 4090, 32GB RAM Macs). Devstral is best used in agentic workflows via the OpenHands scaffold and is compatible with inference frameworks like vLLM, Transformers, and Ollama. It is released under the Apache 2.0 license.'\n litellm_provider: openrouter\n - model_name: google/gemma-3n-e4b-it:free\n litellm_params:\n model: openai/google/gemma-3n-e4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 2048\n metadata:\n notes: 'Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks such as text generation, speech recognition, translation, and image analysis. Leveraging innovations like Per-Layer Embedding (PLE) caching and the MatFormer architecture, Gemma 3n dynamically manages memory usage and computational load by selectively activating model parameters, significantly reducing runtime resource requirements. This model supports a wide linguistic range (trained in over 140 languages) and features a flexible 32K token context window. Gemma 3n can selectively load parameters, optimizing memory and computational efficiency based on the task or device capabilities, making it well-suited for privacy-focused, offline-capable applications and on-device AI solutions. [Read more in the blog post](https://developers.googleblog.com/en/introducing-gemma-3n/)'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-4b:free\n litellm_params:\n model: openai/qwen/qwen3-4b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-4B is a 4 billion parameter dense language model from the Qwen3 series, designed to support both general-purpose and reasoning-intensive tasks. It introduces a dual-mode architecture—thinking and non-thinking—allowing dynamic switching between high-precision logical reasoning and efficient dialogue generation. This makes it well-suited for multi-turn chat, instruction following, and complex agent workflows.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-30b-a3b:free\n litellm_params:\n model: openai/qwen/qwen3-30b-a3b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique ability to switch seamlessly between a thinking mode for complex reasoning and a non-thinking mode for efficient dialogue ensures versatile, high-quality performance. Significantly outperforming prior models like QwQ and Qwen2.5, Qwen3 delivers superior mathematics, coding, commonsense reasoning, creative writing, and interactive dialogue capabilities. The Qwen3-30B-A3B variant includes 30.5 billion parameters (3.3 billion activated), 48 layers, 128 experts (8 activated per task), and supports up to 131K token contexts with YaRN, setting a new standard among open-source models.'\n litellm_provider: openrouter\n - model_name: qwen/qwen3-8b:free\n litellm_params:\n model: openai/qwen/qwen3-8b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n max_output_tokens: 40960\n metadata:\n notes: Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math, coding, and logical inference, and \"non-thinking\" mode for general conversation. The model is fine-tuned for instruction-following, agent integration, creative writing, and multilingual use across 100+ languages and dialects. It natively supports a 32K token context window and can extend to 131K tokens with YaRN scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-14b:free\n litellm_params:\n model: openai/qwen/qwen3-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, programming, and logical inference, and a \"non-thinking\" mode for general-purpose conversation. The model is fine-tuned for instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: qwen/qwen3-32b:free\n litellm_params:\n model: openai/qwen/qwen3-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 40960\n metadata:\n notes: 'Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for tasks like math, coding, and logical inference, and a \"non-thinking\" mode for faster, general-purpose conversation. The model demonstrates strong performance in instruction-following, agent tool use, creative writing, and multilingual tasks across 100+ languages and dialects. It natively handles 32K token contexts and can extend to 131K tokens using YaRN-based scaling. '\n litellm_provider: openrouter\n - model_name: qwen/qwen3-235b-a22b:free\n litellm_params:\n model: openai/qwen/qwen3-235b-a22b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and code tasks, and a \"non-thinking\" mode for general conversational efficiency. The model demonstrates strong reasoning ability, multilingual support (100+ languages and dialects), advanced instruction-following, and agent tool-calling capabilities. It natively handles a 32K token context window and extends up to 131K tokens using YaRN-based scaling.\n litellm_provider: openrouter\n - model_name: tngtech/deepseek-r1t-chimera:free\n litellm_params:\n model: openai/tngtech/deepseek-r1t-chimera:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-R1T-Chimera is created by merging DeepSeek-R1 and DeepSeek-V3 (0324), combining the reasoning capabilities of R1 with the token efficiency improvements of V3. It is based on a DeepSeek-MoE Transformer architecture and is optimized for general text generation tasks. The model merges pretrained weights from both source models to balance performance across reasoning, efficiency, and instruction-following tasks. It is released under the MIT license and intended for research and commercial use.'\n litellm_provider: openrouter\n - model_name: microsoft/mai-ds-r1:free\n litellm_params:\n model: openai/microsoft/mai-ds-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'MAI-DS-R1 is a post-trained variant of DeepSeek-R1 developed by the Microsoft AI team to improve the model’s responsiveness on previously blocked topics while enhancing its safety profile. Built on top of DeepSeek-R1’s reasoning foundation, it integrates 110k examples from the Tulu-3 SFT dataset and 350k internally curated multilingual safety-alignment samples. The model retains strong reasoning, coding, and problem-solving capabilities, while unblocking a wide range of prompts previously restricted in R1. MAI-DS-R1 demonstrates improved performance on harm mitigation benchmarks and maintains competitive results across general reasoning tasks. It surpasses R1-1776 in satisfaction metrics for blocked queries and reduces leakage in harmful content categories. The model is based on a transformer MoE architecture and is suitable for general-purpose use cases, excluding high-stakes domains such as legal, medical, or autonomous systems.'\n litellm_provider: openrouter\n - model_name: thudm/glm-z1-32b:free\n litellm_params:\n model: openai/thudm/glm-z1-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'GLM-Z1-32B-0414 is an enhanced reasoning variant of GLM-4-32B, built for deep mathematical, logical, and code-oriented problem solving. It applies extended reinforcement learning—both task-specific and general pairwise preference-based—to improve performance on complex multi-step tasks. Compared to the base GLM-4-32B model, Z1 significantly boosts capabilities in structured reasoning and formal domains. The model supports enforced “thinking” steps via prompt engineering and offers improved coherence for long-form outputs. It’s optimized for use in agentic workflows, and includes support for long context (via YaRN), JSON tool calling, and fine-grained sampling configuration for stable inference. Ideal for use cases requiring deliberate, multi-step reasoning or formal derivations.'\n litellm_provider: openrouter\n - model_name: thudm/glm-4-32b:free\n litellm_params:\n model: openai/thudm/glm-4-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: GLM-4-32B-0414 is a 32B bilingual (Chinese-English) open-weight language model optimized for code generation, function calling, and agent-style tasks. Pretrained on 15T of high-quality and reasoning-heavy data, it was further refined using human preference alignment, rejection sampling, and reinforcement learning. The model excels in complex reasoning, artifact generation, and structured output tasks, achieving performance comparable to GPT-4o and DeepSeek-V3-0324 across several benchmarks.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: shisa-ai/shisa-v2-llama3.3-70b:free\n litellm_params:\n model: openai/shisa-ai/shisa-v2-llama3.3-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Shisa V2 Llama 3.3 70B is a bilingual Japanese-English chat model fine-tuned by Shisa.AI on Meta’s Llama-3.3-70B-Instruct base. It prioritizes Japanese language performance while retaining strong English capabilities. The model was optimized entirely through post-training, using a refined mix of supervised fine-tuning (SFT) and DPO datasets including regenerated ShareGPT-style data, translation tasks, roleplaying conversations, and instruction-following prompts. Unlike earlier Shisa releases, this version avoids tokenizer modifications or extended pretraining. Shisa V2 70B achieves leading Japanese task performance across a wide range of custom and public benchmarks, including JA MT Bench, ELYZA 100, and Rakuda. It supports a 128K token context length and integrates smoothly with inference frameworks like vLLM and SGLang. While it inherits safety characteristics from its base model, no additional alignment was applied. The model is intended for high-performance bilingual chat, instruction following, and translation tasks across JA/EN.'\n litellm_provider: openrouter\n - model_name: arliai/qwq-32b-arliai-rpr-v1:free\n litellm_params:\n model: openai/arliai/qwq-32b-arliai-rpr-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'QwQ-32B-ArliAI-RpR-v1 is a 32B parameter model fine-tuned from Qwen/QwQ-32B using a curated creative writing and roleplay dataset originally developed for the RPMax series. It is designed to maintain coherence and reasoning across long multi-turn conversations by introducing explicit reasoning steps per dialogue turn, generated and refined using the base model itself. The model was trained using RS-QLORA+ on 8K sequence lengths and supports up to 128K context windows (with practical performance around 32K). It is optimized for creative roleplay and dialogue generation, with an emphasis on minimizing cross-context repetition while preserving stylistic diversity.'\n litellm_provider: openrouter\n - model_name: agentica-org/deepcoder-14b-preview:free\n litellm_params:\n model: openai/agentica-org/deepcoder-14b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n metadata:\n notes: DeepCoder-14B-Preview is a 14B parameter code generation model fine-tuned from DeepSeek-R1-Distill-Qwen-14B using reinforcement learning with GRPO+ and iterative context lengthening. It is optimized for long-context program synthesis and achieves strong performance across coding benchmarks, including 60.6% on LiveCodeBench v5, competitive with models like o3-Mini\n litellm_provider: openrouter\n - model_name: moonshotai/kimi-vl-a3b-thinking:free\n litellm_params:\n model: openai/moonshotai/kimi-vl-a3b-thinking:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n mode: chat\n supports_vision: true\n metadata:\n notes: Kimi-VL is a lightweight Mixture-of-Experts vision-language model that activates only 2.8B parameters per step while delivering strong performance on multimodal reasoning and long-context tasks. The Kimi-VL-A3B-Thinking variant, fine-tuned with chain-of-thought and reinforcement learning, excels in math and visual reasoning benchmarks like MathVision, MMMU, and MathVista, rivaling much larger models such as Qwen2.5-VL-7B and Gemma-3-12B. It supports 128K context and high-resolution input via its MoonViT encoder.\n litellm_provider: openrouter\n - model_name: nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n litellm_params:\n model: openai/nvidia/llama-3.1-nemotron-ultra-253b-v1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama-3.1-Nemotron-Ultra-253B-v1 is a large language model (LLM) optimized for advanced reasoning, human-interactive chat, retrieval-augmented generation (RAG), and tool-calling tasks. Derived from Meta’s Llama-3.1-405B-Instruct, it has been significantly customized using Neural Architecture Search (NAS), resulting in enhanced efficiency, reduced memory usage, and improved inference latency. The model supports a context length of up to 128K tokens and can operate efficiently on an 8x NVIDIA H100 node. Note: you must include `detailed thinking on` in the system prompt to enable reasoning. Please see [Usage Recommendations](https://huggingface.co/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1#quick-start-and-usage-recommendations) for more.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-v3-base:free\n litellm_params:\n model: openai/deepseek/deepseek-v3-base:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'Note that this is a base model mostly meant for testing, you need to provide detailed prompts for the model to return useful responses. DeepSeek-V3 Base is a 671B parameter open Mixture-of-Experts (MoE) language model with 37B active parameters per forward pass and a context length of 128K tokens. Trained on 14.8T tokens using FP8 mixed precision, it achieves high training efficiency and stability, with strong performance across language, reasoning, math, and coding tasks. DeepSeek-V3 Base is the pre-trained model behind [DeepSeek V3](/deepseek/deepseek-chat-v3)'\n litellm_provider: openrouter\n - model_name: google/gemini-2.5-pro-exp-03-25\n litellm_params:\n model: openai/google/gemini-2.5-pro-exp-03-25\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 65535\n mode: chat\n supports_vision: true\n metadata:\n notes: 'This model has been deprecated by Google in favor of the (paid Preview model)[google/gemini-2.5-pro-preview] Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy and nuanced context handling. Gemini 2.5 Pro achieves top-tier performance on multiple benchmarks, including first-place positioning on the LMArena leaderboard, reflecting superior human-preference alignment and complex problem-solving abilities.'\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL-32B is a multimodal vision-language model fine-tuned through reinforcement learning for enhanced mathematical reasoning, structured outputs, and visual problem-solving capabilities. It excels at visual analysis tasks, including object recognition, textual interpretation within images, and precise event localization in extended videos. Qwen2.5-VL-32B demonstrates state-of-the-art performance across multimodal benchmarks such as MMMU, MathVista, and VideoMME, while maintaining strong reasoning and clarity in text-based tasks like MMLU, mathematical problem-solving, and code generation.\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat-v3-0324:free\n litellm_params:\n model: openai/deepseek/deepseek-chat-v3-0324:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well on a variety of tasks.'\n litellm_provider: openrouter\n - model_name: featherless/qwerky-72b:free\n litellm_params:\n model: openai/featherless/qwerky-72b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 4096\n metadata:\n notes: Qwerky-72B is a linear-attention RWKV variant of the Qwen 2.5 72B model, optimized to significantly reduce computational cost at scale. Leveraging linear attention, it achieves substantial inference speedups (>1000x) while retaining competitive accuracy on common benchmarks like ARC, HellaSwag, Lambada, and MMLU. It inherits knowledge and language support from Qwen 2.5, supporting approximately 30 languages, making it suitable for efficient inference in large-context applications.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-3.1-24b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-small-3.1-24b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 128000\n mode: chat\n supports_vision: true\n metadata:\n notes: Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and vision tasks, including image analysis, programming, mathematical reasoning, and multilingual support across dozens of languages. Equipped with an extensive 128k token context window and optimized for efficient local inference, it supports use cases such as conversational agents, function calling, long-document comprehension, and privacy-sensitive deployments. The updated version is [Mistral Small 3.2](mistralai/mistral-small-3.2-24b-instruct)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-4b-it:free\n litellm_params:\n model: openai/google/gemma-3-4b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling.\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-12b-it:free\n litellm_params:\n model: openai/google/gemma-3-12b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 12B is the second largest in the family of Gemma 3 models after [Gemma 3 27B](google/gemma-3-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: rekaai/reka-flash-3:free\n litellm_params:\n model: openai/rekaai/reka-flash-3:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a 32K context length and optimized through reinforcement learning (RLOO), it provides competitive performance comparable to proprietary models within a smaller parameter footprint. Ideal for low-latency, local, or on-device deployments, Reka Flash 3 is compact, supports efficient quantization (down to 11GB at 4-bit precision), and employs explicit reasoning tags (\"<reasoning>\") to indicate its internal thought process. Reka Flash 3 is primarily an English model with limited multilingual understanding capabilities. The model weights are released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-3-27b-it:free\n litellm_params:\n model: openai/google/gemma-3-27b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 96000\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities, including structured outputs and function calling. Gemma 3 27B is Google's latest open source model, successor to [Gemma 2](google/gemma-2-27b-it)\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwq-32b:free\n litellm_params:\n model: openai/qwen/qwq-32b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: QwQ is the reasoning model of the Qwen series. Compared with conventional instruction-tuned models, QwQ, which is capable of thinking and reasoning, can achieve significantly enhanced performance in downstream tasks, especially hard problems. QwQ-32B is the medium-sized reasoning model, which is capable of achieving competitive performance against state-of-the-art reasoning models, e.g., DeepSeek-R1, o1-mini.\n litellm_provider: openrouter\n - model_name: nousresearch/deephermes-3-llama-3-8b-preview:free\n litellm_params:\n model: openai/nousresearch/deephermes-3-llama-3-8b-preview:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'DeepHermes 3 Preview is the latest version of our flagship Hermes series of LLMs by Nous Research, and one of the first models in the world to unify Reasoning (long chains of thought that improve answer accuracy) and normal LLM response modes into one model. We have also improved LLM annotation, judgement, and function calling. DeepHermes 3 Preview is one of the first LLM models to unify both \"intuitive\", traditional mode responses and long chain of thought reasoning responses into a single model, toggled by a system prompt.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-r1-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 R1 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. The R1 version has been trained for 3 epochs to reason using 800k reasoning traces from the Dolphin-R1 dataset. Dolphin aims to be a general purpose reasoning instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: cognitivecomputations/dolphin3.0-mistral-24b:free\n litellm_params:\n model: openai/cognitivecomputations/dolphin3.0-mistral-24b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Dolphin 3.0 is the next generation of the Dolphin series of instruct-tuned models. Designed to be the ultimate general purpose local model, enabling coding, math, agentic, function calling, and general use cases. Dolphin aims to be a general purpose instruct model, similar to the models behind ChatGPT, Claude, Gemini. Part of the [Dolphin 3.0 Collection](https://huggingface.co/collections/cognitivecomputations/dolphin-30-677ab47f73d7ff66743979a3) Curated and trained by [Eric Hartford](https://huggingface.co/ehartford), [Ben Gitter](https://huggingface.co/bigstorm), [BlouseJury](https://huggingface.co/BlouseJury) and [Cognitive Computations](https://huggingface.co/cognitivecomputations)'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: qwen/qwen2.5-vl-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen2.5-vl-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n mode: chat\n supports_vision: true\n metadata:\n notes: Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.\n litellm_provider: openrouter\n - model_name: mistralai/mistral-small-24b-instruct-2501:free\n litellm_params:\n model: openai/mistralai/mistral-small-24b-instruct-2501:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware. [Read the blog post about the model here.](https://mistral.ai/news/mistral-small-3/)'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-qwen-14b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-qwen-14b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 64000\n metadata:\n notes: 'DeepSeek R1 Distill Qwen 14B is a distilled large language model based on [Qwen 2.5 14B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI''s o1-mini across various benchmarks, achieving new state-of-the-art results for dense models. Other benchmark results include: - AIME 2024 pass@1: 69.7 - MATH-500 pass@1: 93.9 - CodeForces Rating: 1481 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1-distill-llama-70b:free\n litellm_params:\n model: openai/deepseek/deepseek-r1-distill-llama-70b:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 4096\n metadata:\n notes: 'DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across multiple benchmarks, including: - AIME 2024 pass@1: 70.0 - MATH-500 pass@1: 94.5 - CodeForces Rating: 1633 The model leverages fine-tuning from DeepSeek R1''s outputs, enabling competitive performance comparable to larger frontier models.'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-r1:free\n litellm_params:\n model: openai/deepseek/deepseek-r1:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It''s 671B parameters in size, with 37B active in an inference pass. Fully open-source model & [technical report](https://api-docs.deepseek.com/news/news250120). MIT licensed: Distill & commercialize freely!'\n litellm_provider: openrouter\n - model_name: deepseek/deepseek-chat:free\n litellm_params:\n model: openai/deepseek/deepseek-chat:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 163840\n metadata:\n notes: 'DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations reveal that the model outperforms other open-source models and rivals leading closed-source models. For model details, please visit [the DeepSeek-V3 repo](https://github.com/deepseek-ai/DeepSeek-V3) for more information, or see the [launch announcement](https://api-docs.deepseek.com/news/news1226).'\n litellm_provider: openrouter\n - model_name: google/gemini-2.0-flash-exp:free\n litellm_params:\n model: openai/google/gemini-2.0-flash-exp:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 1048576\n max_output_tokens: 8192\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It introduces notable enhancements in multimodal understanding, coding capabilities, complex instruction following, and function calling. These advancements come together to deliver more seamless and robust agentic experiences.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.3-70b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.3-70b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model is optimized for multilingual dialogue use cases and outperforms many of the available open source and closed chat models on common industry benchmarks. Supported languages: English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai. [Model Card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_3/MODEL_CARD.md)'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-coder-32b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-coder-32b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning** and **code fixing**. - A more comprehensive foundation for real-world applications such as **Code Agents**. Not only enhancing coding capabilities but also maintaining its strengths in mathematics and general competencies. To read more about its evaluation results, check out [Qwen 2.5 Coder''s blog](https://qwenlm.github.io/blog/qwen2.5-coder-family/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-3b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-3b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n metadata:\n notes: 'Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages. Trained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.2-11b-vision-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.2-11b-vision-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 2048\n mode: chat\n supports_vision: true\n metadata:\n notes: 'Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and visual question answering, bridging the gap between language generation and visual reasoning. Pre-trained on a massive dataset of image-text pairs, it performs well in complex, high-accuracy image analysis. Its ability to integrate visual understanding with language processing makes it an ideal solution for industries requiring comprehensive visual-linguistic AI applications, such as content creation, AI-driven customer service, and research. Click here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: qwen/qwen-2.5-72b-instruct:free\n litellm_params:\n model: openai/qwen/qwen-2.5-72b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n metadata:\n notes: 'Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and mathematics, thanks to our specialized expert models in these domains. - Significant improvements in instruction following, generating long texts (over 8K tokens), understanding structured data (e.g, tables), and generating structured outputs especially JSON. More resilient to the diversity of system prompts, enhancing role-play implementation and condition-setting for chatbots. - Long-context Support up to 128K tokens and can generate up to 8K tokens. - Multilingual support for over 29 languages, including Chinese, English, French, Spanish, Portuguese, German, Italian, Russian, Japanese, Korean, Vietnamese, Thai, Arabic, and more. Usage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).'\n litellm_provider: openrouter\n - model_name: meta-llama/llama-3.1-405b-instruct:free\n litellm_params:\n model: openai/meta-llama/llama-3.1-405b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 65536\n metadata:\n notes: 'The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs. Meta''s latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations. To read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta''s Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-nemo:free\n litellm_params:\n model: openai/mistralai/mistral-nemo:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 131072\n max_output_tokens: 128000\n metadata:\n notes: 'A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi. It supports function calling and is released under the Apache 2.0 license.'\n supports_function_calling: true\n litellm_provider: openrouter\n - model_name: google/gemma-2-9b-it:free\n litellm_params:\n model: openai/google/gemma-2-9b-it:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 8192\n max_output_tokens: 8192\n metadata:\n notes: 'Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size. Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining , safety, and cost-effectiveness. See the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google''s [Gemma Terms of Use](https://ai.google.dev/gemma/terms).'\n litellm_provider: openrouter\n - model_name: mistralai/mistral-7b-instruct:free\n litellm_params:\n model: openai/mistralai/mistral-7b-instruct:free\n api_base: https://openrouter.ai/api/v1\n api_key: $OPENROUTER_API_KEY\n input_cost_per_token: 0.0\n output_cost_per_token: 0.0\n input_cost_per_image: 0.0\n input_cost_per_query: 0.0\n max_input_tokens: 32768\n max_output_tokens: 16384\n metadata:\n notes: 'A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length. *Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*'\n litellm_provider: openrouter\n\n #######################################################################################\n # Mattermost Backup Configuration\n #######################################################################################\n mattermost-backup-daily.sh:\n content: |\n #!/bin/sh\n now=$$(date +\"%s_%Y-%m-%d\")\n /usr/bin/mysqldump --opt -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE > \"/backup/$now_$MYSQL_DATABASE.sql\"\n\n # Container management script\n manage-containers.sh:\n content: |\n #!/bin/bash\n # Container management script for media stack\n\n CONTAINERS=\"plex riven-frontend riven blackhole\"\n\n case \"$$1\" in\n start)\n echo \"Starting media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps -a --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Starting $$container...\"\n docker start $$container\n fi\n done\n ;;\n stop)\n echo \"Stopping media stack containers...\"\n for container in $$CONTAINERS; do\n if docker ps --format \"table {{.Names}}\" | grep -q \"^$$container$$\"; then\n echo \"Stopping $$container...\"\n docker stop $$container\n fi\n done\n ;;\n restart)\n echo \"Restarting media stack containers...\"\n $$0 stop\n sleep 5\n $$0 start\n ;;\n *)\n echo \"Usage: $$0 {start|stop|restart}\"\n exit 1\n ;;\n esac\n\n # Symlink cleanup script\n symlink-cleanup.sh:\n content: |\n #!/bin/bash\n # Cleanup broken symlinks\n\n echo \"Cleaning up broken symlinks...\"\n\n # Find and remove broken symlinks in media directories\n find /mnt/media -type l -exec test ! -e {} \\; -print -delete\n find /mnt/symlinks -type l -exec test ! -e {} \\; -print -delete\n\n echo \"Symlink cleanup complete\"\n\n # Backup configuration script\n backup-configs.sh:\n content: |\n #!/bin/bash\n # Backup configuration files\n\n BACKUP_DIR=\"${BACKUP_PATH:-/mnt/local/backups}/$(date +%Y%m%d_%H%M%S)\"\n CONFIG_PATH=\"${CONFIG_PATH:-./volumes}\"\n\n echo \"Creating backup directory: $BACKUP_DIR\"\n mkdir -p \"$BACKUP_DIR\"\n\n echo \"Backing up configuration files...\"\n if [ -d \"$CONFIG_PATH\" ]; then\n cp -rv \"$CONFIG_PATH\" \"$BACKUP_DIR/\"\n echo \"Backup completed: $BACKUP_DIR\"\n else\n echo \"Config directory not found: $CONFIG_PATH\"\n exit 1\n fi\n\n # Keep only last 7 days of backups\n find ${BACKUP_PATH:-/mnt/local/backups} -type d -mtime +7 -exec rm -rf {} + 2>/dev/null || true\n\n echo \"Backup process complete\"\n\n plex_update.sh:\n content: |\n #!/bin/bash\n # PLEX PARTIAL SCAN script or PLEX UPDATE script\n # When zurg detects changes, it can trigger this script IF your config.yml contains\n # on_library_update: sh plex_update.sh \"$$@\"\n # Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh\n token=${PLEX_TOKEN:-replace-me}\n\n # DON'T CHANGE ANYTHING AFTER THIS LINE\n plex_url=\"${PLEX_INTERNAL_URL:-http://plex:32400}\" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400\n zurg_mount=\"${ZURG_MOUNT_PATH:-/mnt/remote/realdebrid}\" # Replace with your zurg mount path, ensure this is what Plex sees\n\n # Get the list of section IDs\n section_ids=$$(curl -sLX GET \"$$plex_url/library/sections\" -H \"X-Plex-Token: $$token\" | xmllint --xpath \"//Directory/@key\" - | sed 's/key=\"//g' | tr '\"' '\\n')\n for arg in \"$$@\"\n do\n modified_arg=\"$$zurg_mount/$$arg\"\n encoded_arg=$$(echo -n \"$$modified_arg\" | python3 -c \"import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))\")\n if [ -z \"$$encoded_arg\" ]; then\n echo \"Error: Encoded argument is empty. Check the input or encoding process.\"\n continue\n fi\n for section_id in $$section_ids\n do\n final_url=\"$$plex_url/library/sections/$$section_id/refresh?path=$$encoded_arg&X-Plex-Token=$$token\"\n echo \"Encoded argument: $$encoded_arg\"\n echo \"Section ID: $$section_id\"\n echo \"Final URL: $$final_url\"\n curl -s \"$$final_url\"\n done\n done\n echo \"All updated sections refreshed\"\n # credits to godver3\n\n headscale-config:\n content: |\n ---\n # headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:\n #\n # - `/etc/headscale`\n # - `~/.headscale`\n # - current working directory\n\n # The url clients will connect to.\n # Typically this will be a domain like:\n #\n # https://myheadscale.example.com:443\n #\n #server_url: https://headscale-server.$DOMAIN:443\n server_url: ${HEADSCALE_INTERNAL_URL:-http://headscale-server:8080}\n\n # Address to listen to / bind to on the server\n #\n listen_addr: 0.0.0.0:8080\n\n # Address to listen to /metrics and /debug, you may want\n # to keep this endpoint private to your internal network\n metrics_listen_addr: 127.0.0.1:9090\n\n # Address to listen for gRPC.\n # gRPC is used for controlling a headscale server\n # remotely with the CLI\n # Note: Remote access _only_ works if you have\n # valid certificates.\n\n grpc_listen_addr: 0.0.0.0:50443\n\n # Allow the gRPC admin interface to run in INSECURE\n # mode. This is not recommended as the traffic will\n # be unencrypted. Only enable if you know what you\n # are doing.\n grpc_allow_insecure: false\n\n # Private key used encrypt the traffic between headscale\n # and Tailscale clients.\n # The private key file which will be\n # autogenerated if it's missing\n private_key_path: /var/lib/headscale/private.key\n\n # The Noise section includes specific configuration for the\n # TS2021 Noise protocol\n noise:\n # The Noise private key is used to encrypt the traffic between headscale and\n # Tailscale clients when using the new Noise-based protocol. A missing key\n # will be automatically generated.\n private_key_path: /var/lib/headscale/noise_private.key\n\n # List of IP prefixes to allocate tailaddresses from.\n # Each prefix consists of either an IPv4 or IPv6 address,\n # and the associated prefix length, delimited by a slash.\n # It must be within IP ranges supported by the Tailscale\n # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48.\n # See below:\n # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71\n # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33\n # Any other range is NOT supported, and it will cause unexpected issues.\n prefixes:\n v4: 100.64.0.0/10\n v6: fd7a:115c:a1e0::/48\n\n # Strategy used for allocation of IPs to nodes, available options:\n # - sequential (default): assigns the next free IP from the previous given IP.\n # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand).\n allocation: random\n\n # DERP is a relay system that Tailscale uses when a direct\n # connection cannot be established.\n # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp\n #\n # headscale needs a list of DERP servers that can be presented\n # to the clients.\n derp:\n server:\n # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config\n # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place\n enabled: false\n\n # Region ID to use for the embedded DERP server.\n # The local DERP prevails if the region ID collides with other region ID coming from\n # the regular DERP config.\n region_id: 999\n\n # Region code and name are displayed in the Tailscale UI to identify a DERP region\n region_code: \"headscale\"\n region_name: \"Headscale Embedded DERP\"\n\n # Listens over UDP at the configured address for STUN connections - to help with NAT traversal.\n # When the embedded DERP server is enabled stun_listen_addr MUST be defined.\n #\n # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/\n stun_listen_addr: \"0.0.0.0:3478\"\n\n # Private key used to encrypt the traffic between headscale DERP and\n # Tailscale clients. A missing key will be automatically generated.\n private_key_path: /var/lib/headscale/derp_server_private.key\n\n # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically,\n # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths\n # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths\n automatically_add_embedded_derp_region: true\n\n # For better connection stability (especially when using an Exit-Node and DNS is not working),\n # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using:\n ipv4: 100.64.0.2\n ipv6: fd7a:115c:a1e0::2\n\n # List of externally available DERP maps encoded in JSON\n urls:\n - https://controlplane.tailscale.com/derpmap/default\n\n # Locally available DERP map files encoded in YAML\n #\n # This option is mostly interesting for people hosting\n # their own DERP servers:\n # https://tailscale.com/kb/1118/custom-derp-servers/\n #\n # paths:\n # - /etc/headscale/derp-example.yaml\n paths: []\n\n # If enabled, a worker will be set up to periodically\n # refresh the given sources and update the derpmap\n # will be set up.\n auto_update_enabled: true\n\n # How often should we check for DERP updates?\n update_frequency: 24h\n\n # Disables the automatic check for headscale updates on startup\n disable_check_updates: false\n\n # Time before an inactive ephemeral node is deleted?\n ephemeral_node_inactivity_timeout: 30m\n\n database:\n # Database type. Available options: sqlite, postgres\n # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons.\n # All new development, testing and optimisations are done with SQLite in mind.\n type: sqlite\n\n # Enable debug mode. This setting requires the log.level to be set to \"debug\" or \"trace\".\n debug: ${HEADSCALE_DEBUG:-false}\n\n # GORM configuration settings.\n gorm:\n # Enable prepared statements.\n prepare_stmt: ${HEADSCALE_PREPARE_STMT:-true}\n\n # Enable parameterized queries.\n parameterized_queries: ${HEADSCALE_PARAMETERIZED_QUERIES:-true}\n\n # Skip logging \"record not found\" errors.\n skip_err_record_not_found: ${HEADSCALE_SKIP_ERR_RECORD_NOT_FOUND:-true}\n\n # Threshold for slow queries in milliseconds.\n slow_threshold: ${HEADSCALE_SLOW_THRESHOLD:-1000}\n\n # SQLite config\n sqlite:\n path: /var/lib/headscale/db.sqlite\n\n # Enable WAL mode for SQLite. This is recommended for production environments.\n # https://www.sqlite.org/wal.html\n write_ahead_log: ${HEADSCALE_WRITE_AHEAD_LOG:-true}\n\n # Maximum number of WAL file frames before the WAL file is automatically checkpointed.\n # https://www.sqlite.org/c3ref/wal_autocheckpoint.html\n # Set to 0 to disable automatic checkpointing.\n wal_autocheckpoint: ${HEADSCALE_WAL_AUTOCHECKPOINT:-1000}\n\n log:\n # Output formatting for logs: text or json\n format: ${HEADSCALE_LOG_FORMAT:-text}\n level: ${HEADSCALE_LOG_LEVEL:-info}\n\n ## Policy\n # headscale supports Tailscale's ACL policies.\n # Please have a look to their KB to better\n # understand the concepts: https://tailscale.com/kb/1018/acls/\n policy:\n # The mode can be \"file\" or \"database\" that defines\n # where the ACL policies are stored and read from.\n mode: ${HEADSCALE_POLICY_MODE:-file}\n # If the mode is set to \"file\", the path to a\n # HuJSON file containing ACL policies.\n path: ${HEADSCALE_POLICY_PATH:-\"\"}\n\n ## DNS\n #\n # headscale supports Tailscale's DNS configuration and MagicDNS.\n # Please have a look to their KB to better understand the concepts:\n #\n # - https://tailscale.com/kb/1054/dns/\n # - https://tailscale.com/kb/1081/magicdns/\n # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/\n #\n # Please note that for the DNS configuration to have any effect,\n # clients must have the `--accept-dns=true` option enabled. This is the\n # default for the Tailscale client. This option is enabled by default\n # in the Tailscale client.\n #\n # Setting _any_ of the configuration and `--accept-dns=true` on the\n # clients will integrate with the DNS manager on the client or\n # overwrite /etc/resolv.conf.\n # https://tailscale.com/kb/1235/resolv-conf\n #\n # If you want stop Headscale from managing the DNS configuration\n # all the fields under `dns` should be set to empty values.\n dns:\n # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/).\n magic_dns: ${HEADSCALE_MAGIC_DNS:-true}\n\n # Defines the base domain to create the hostnames for MagicDNS.\n # This domain _must_ be different from the server_url domain.\n # `base_domain` must be a FQDN, without the trailing dot.\n # The FQDN of the hosts will be\n # `hostname.base_domain` (e.g., _myhost.example.com_).\n base_domain: myscale.$DOMAIN\n\n # Whether to use the local DNS settings of a node (default) or override the\n # local DNS settings and force the use of Headscale's DNS configuration.\n override_local_dns: ${HEADSCALE_OVERRIDE_LOCAL_DNS:-false}\n\n # List of DNS servers to expose to clients.\n nameservers:\n global:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n\n # NextDNS (see https://tailscale.com/kb/1218/nextdns/).\n # \"abc123\" is example NextDNS ID, replace with yours.\n # - https://dns.nextdns.io/abc123\n\n # Split DNS (see https://tailscale.com/kb/1054/dns/),\n # a map of domains and which DNS server to use for each.\n split:\n {\n # \"headscale.$DOMAIN\": [\n # \"1.1.1.1\",\n # \"1.0.0.1\",\n # \"2606:4700:4700::1111\",\n # \"2606:4700:4700::1001\"\n # ]\n }\n # foo.bar.com:\n # - 1.1.1.1\n # darp.headscale.net:\n # - 1.1.1.1\n # - 8.8.8.8\n\n # Set custom DNS search domains. With MagicDNS enabled,\n # your tailnet base_domain is always the first search domain.\n search_domains: []\n\n # Extra DNS records\n # so far only A and AAAA records are supported (on the tailscale side)\n # See: docs/ref/dns.md\n extra_records: []\n # - name: \"grafana.myvpn.example.com\"\n # type: \"A\"\n # value: \"100.64.0.3\"\n #\n # # you can also put it in one line\n # - { name: \"prometheus.myvpn.example.com\", type: \"A\", value: \"100.64.0.3\" }\n #\n # Alternatively, extra DNS records can be loaded from a JSON file.\n # Headscale processes this file on each change.\n # extra_records_path: /var/lib/headscale/extra-records.json\n\n # Unix socket used for the CLI to connect without authentication\n # Note: for production you will want to set this to something like:\n unix_socket: /var/run/headscale/headscale.sock\n unix_socket_permission: \"0770\"\n\n # Logtail configuration\n # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel\n # to instruct tailscale nodes to log their activity to a remote server.\n logtail:\n # Enable logtail for this headscales clients.\n # As there is currently no support for overriding the log server in headscale, this is\n # disabled by default. Enabling this will make your clients send logs to Tailscale Inc.\n enabled: ${HEADSCALE_LOGTAIL_ENABLED:-false}\n\n # Enabling this option makes devices prefer a random port for WireGuard traffic over the\n # default static port 41641. This option is intended as a workaround for some buggy\n # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information.\n randomize_client_port: ${HEADSCALE_RANDOMIZE_CLIENT_PORT:-false}\n\n\nx-common-env: &common-env\n TZ: ${TZ:-America/Chicago}\n PUID: ${PUID:-1001}\n PGID: ${PGID:-988}\n UMASK: ${UMASK:-002}\n\nservices:\n headscale-server:\n image: docker.io/headscale/headscale:latest\n container_name: headscale-server\n hostname: headscale-server\n networks:\n - publicnet\n extra_hosts: *common-hostname-aliases\n expose:\n - 3478 # STUN\n - 8080 # HTTP\n - 9090 # Metrics\n - 50443 # gRPC\n configs:\n - source: headscale-config\n target: /etc/headscale/config.yaml\n mode: 0644\n volumes:\n - ${CERTS_PATH:-./certs}/private/bolabaden.org.key:/var/lib/headscale/private.key\n - ${CONFIG_PATH:-./volumes}/headscale/config:/etc/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/lib:/var/lib/headscale\n - ${CONFIG_PATH:-./volumes}/headscale/run:/var/run/headscale\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.headscale-server.service: headscale-server\n traefik.http.routers.headscale-server.rule: Host(`headscale-server.$DOMAIN`) || Host(`headscale-server.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/`) # || HostRegexp(`^(www\\.)?headscale-server\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale-server\\.$TS_HOSTNAME\\.$DOMAIN$`)) && PathPrefix(`/`)\n traefik.http.services.headscale-server.loadbalancer.server.port: 8080\n # Homepage integration\n homepage.group: Networking\n homepage.name: Headscale\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale is a server that manages your Tailscale network.\n command: serve\n restart: always\n headscale:\n depends_on:\n - headscale-server\n image: ghcr.io/gurucomputing/headscale-ui:latest\n container_name: headscale\n hostname: headscale\n extra_hosts: *common-hostname-aliases\n pull_policy: always\n networks:\n - publicnet\n dns:\n - 1.1.1.1\n - 1.0.0.1\n - 2606:4700:4700::1111\n - 2606:4700:4700::1001\n - 9.9.9.9\n - 2620:fe::fe\n - 8.8.8.8\n - 2001:4860:4860::8888\n - 2001:4860:4860::8844\n labels:\n traefik.enable: \"true\"\n #traefik.http.routers.headscale.middlewares: nginx-auth@file\n traefik.http.routers.headscale.rule: Host(`headscale.$DOMAIN`) || Host(`headscale.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?headscale\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?headscale\\.$TS_HOSTNAME\\.$DOMAIN$`)) # && PathPrefix(`/web`)\n traefik.http.services.headscale.loadbalancer.server.port: 80\n homepage.group: Networking\n homepage.name: Headscale UI\n homepage.icon: headscale.png\n homepage.href: https://headscale.$DOMAIN/\n homepage.description: Headscale UI is a web interface for Headscale, an open source implementation of Tailscale's Admin control panel.\n restart: always\n\n hedgedoc:\n depends_on:\n - hedgedoc-db\n image: quay.io/hedgedoc/hedgedoc:latest\n container_name: hedgedoc\n hostname: hedgedoc\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000\n environment:\n CMD_DB_URL: postgres://hedgedoc:password@hedgedoc-db:5432/hedgedoc\n CMD_DOMAIN: hedgedoc.$DOMAIN\n CMD_URL_ADDPORT: false\n CMD_PROTOCOL_USESSL: true\n CMD_SESSION_SECRET: \"discolor-subtitle-seducing-result-ceramics\" # define secret\n CMD_ALLOW_EMAIL_REGISTER: \"true\" # allow registration\n CMD_EMAIL: \"true\" # allow login; only guest notes\n # ------- OAUTH SSO -------\n # see https://docs.goauthentik.io/integrations/services/hedgedoc/\n #- CMD_ALLOW_ANONYMOUS_EDITS=False\n #- CMD_OAUTH2_USER_PROFILE_URL=https://authentik.$DOMAIN/application/o/userinfo/\n #- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username\n #- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name\n #- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email\n #- CMD_OAUTH2_TOKEN_URL=https://authentik.$DOMAIN/application/o/token/\n #- CMD_OAUTH2_AUTHORIZATION_URL=https://authentik.$DOMAIN/application/o/authorize/\n #- CMD_OAUTH2_CLIENT_ID=<ID>\n #- CMD_OAUTH2_CLIENT_SECRET=<SECRET>\n #- CMD_OAUTH2_PROVIDERNAME=Authentik\n #- CMD_OAUTH2_SCOPE=openid email profile\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/uploads:/hedgedoc/public/uploads\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.hedgedoc.service: hedgedoc\n traefik.http.routers.hedgedoc.middlewares: nginx-auth@file\n traefik.http.routers.hedgedoc.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc.loadbalancer.server.port: 3000\n # prevent unauthorized access to the /metrics endpoint\n traefik.http.routers.hedgedoc-metrics.service: hedgedoc-metrics\n traefik.http.routers.hedgedoc-metrics.rule: Host(`hedgedoc.$DOMAIN`) || Host(`hedgedoc.$TS_HOSTNAME.$DOMAIN`) && PathPrefix(`/metrics`) # || HostRegexp(`^(www\\.)?hedgedoc\\.$DOMAIN$`) || HostRegexp(`^(www\\.)?hedgedoc\\.$TS_HOSTNAME\\.$DOMAIN$`)\n traefik.http.services.hedgedoc-metrics.loadbalancer.server.port: 3000\n traefik.http.routers.hedgedoc-metrics.middlewares: nginx-auth@file\n restart: always\n hedgedoc-db:\n image: postgres:16.3-alpine\n container_name: hedgedoc-db\n networks:\n - publicnet\n expose:\n - 5432\n volumes:\n - ${CONFIG_PATH:-./volumes}/hedgedoc/database:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: hedgedoc\n POSTGRES_PASSWORD: password\n POSTGRES_DB: hedgedoc\n restart: always\n mongodb:\n # 🔹🔹 MongoDB 🔹🔹\n image: mongo:latest\n container_name: mongodb\n hostname: ${MONGODB_HOSTNAME:-mongodb}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 27017\n volumes:\n - ${CONFIG_PATH:-./volumes}/mongodb/data:/data/db\n environment:\n <<: *common-env\n healthcheck:\n test: [\"CMD-SHELL\", \"mongosh 127.0.0.1:27017/test --quiet --eval 'db.runCommand(\\\"ping\\\").ok' > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 10s\n retries: 5\n start_period: 40s\n restart: always\n redis:\n # 🔹🔹 Redis 🔹🔹\n # NOTE: If you want to use Valkey (open source) instead of Redis (source available),\n # uncomment the Valkey statement and comment out the Redis statement.\n # Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.\n image: redis:alpine\n # image: valkey/valkey:alpine\n container_name: redis\n hostname: redis\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/redis:/data\n environment:\n <<: *common-env\n REDIS_HOST: ${REDIS_HOST:-redis}\n REDIS_PORT: ${REDIS_PORT:-6379}\n REDIS_DATABASE: ${REDIS_DATABASE:-0}\n REDIS_USERNAME: ${REDIS_USERNAME:-default}\n REDIS_PASSWORD: ${REDIS_PASSWORD:-redis}\n command: redis-server --appendonly yes --save 60 1 --bind 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"redis-cli ping > /dev/null 2>&1 || exit 1\"]\n interval: 10s\n timeout: 5s\n retries: 5\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 200M\n limits:\n cpus: 0.5\n memory: 4G\n restart: always\n open-webui:\n # 🔹🔹 Open WebUI 🔹🔹\n depends_on:\n mcpo:\n condition: service_healthy\n litellm:\n condition: service_healthy\n image: ghcr.io/open-webui/open-webui:main\n container_name: open-webui\n hostname: open-webui\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${OPEN_WEBUI_PORT:-8080}\n volumes:\n - ${CONFIG_PATH:-./volumes}/open-webui:/app/backend/data\n environment:\n # ===== GENERAL CONFIGURATION =====\n # Controls whether admin users can export data\n ENABLE_ADMIN_EXPORT: True\n\n # Enables admin users to access all chats\n ENABLE_ADMIN_CHAT_ACCESS: True\n\n # Bypasses model access control. (default: False)\n BYPASS_MODEL_ACCESS_CONTROL: True\n\n # Environment setting (dev/prod) - Docker default is prod\n ENV: prod\n\n # If set to False, all PersistentConfig variables are treated as regular variables\n ENABLE_PERSISTENT_CONFIG: True\n\n # Sets the port to run Open WebUI from\n PORT: ${OPEN_WEBUI_PORT:-8080}\n\n # When enabled, saves each chunk of streamed chat data to database in real time\n ENABLE_REALTIME_CHAT_SAVE: True\n\n # Used for identifying the Git SHA of the build for releases\n WEBUI_BUILD_HASH: dev-build\n\n # ===== AIOHTTP CLIENT CONFIGURATION =====\n # Specifies the timeout duration in seconds for the AIOHTTP client\n AIOHTTP_CLIENT_TIMEOUT: 300\n\n # Sets the timeout in seconds for fetching the model list\n AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST: 10\n\n # Sets the timeout in seconds for fetching the OpenAI model list\n AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST: 10\n\n # ===== DIRECTORY CONFIGURATION =====\n # Specifies the base directory for data storage\n DATA_DIR: ./data\n\n # Specifies the location of the built frontend files\n FRONTEND_BUILD_DIR: ../build\n\n # Specifies the directory for static files\n STATIC_DIR: ./static\n\n # ===== OLLAMA CONFIGURATION =====\n # Configures the Ollama backend URL\n OLLAMA_BASE_URL: /ollama\n\n # Builds the Docker image with a bundled Ollama instance\n USE_OLLAMA_DOCKER: false\n\n # If set, assumes Helm chart deployment\n K8S_FLAG: False\n\n # ===== SECURITY CONFIGURATION =====\n # Forwards user information as X-headers to OpenAI API and Ollama API\n ENABLE_FORWARD_USER_INFO_HEADERS: False\n\n # Sets the SameSite attribute for session cookies (lax/strict/none)\n WEBUI_SESSION_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for session cookies\n WEBUI_SESSION_COOKIE_SECURE: False\n\n # Sets the SameSite attribute for auth cookies\n WEBUI_AUTH_COOKIE_SAME_SITE: lax\n\n # Sets the Secure attribute for auth cookies\n WEBUI_AUTH_COOKIE_SECURE: False\n\n # Enables or disables authentication\n WEBUI_AUTH: ${WEBUI_AUTH:-True}\n\n # Overrides the randomly generated string used for JSON Web Token\n WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY:?}\n\n # When enabled, makes automatic update checks and notifies about version updates\n ENABLE_VERSION_UPDATE_CHECK: True\n\n # Disables Open WebUI's network connections for update checks and automatic model downloads\n OFFLINE_MODE: False\n\n # Resets the config.json file on startup\n RESET_CONFIG_ON_START: False\n\n # Enables safe mode, which disables potentially unsafe features\n SAFE_MODE: False\n\n # Sets the allowed origins for Cross-Origin Resource Sharing (CORS)\n CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_CORS_ALLOWED_ORIGIN:-*}\n\n # Determines whether to allow custom models defined on the Hub\n RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE: True\n\n # Determines whether to allow custom models for reranking\n RAG_RERANKING_MODEL_TRUST_REMOTE_CODE: True\n\n # Toggles automatic update of the Sentence-Transformer model\n RAG_EMBEDDING_MODEL_AUTO_UPDATE: True\n\n # Toggles automatic update of the reranking model\n RAG_RERANKING_MODEL_AUTO_UPDATE: True\n\n # ===== VECTOR DATABASE CONFIGURATION =====\n # Specifies which vector database system to use\n VECTOR_DB: chroma\n\n # ===== RAG CONFIGURATION =====\n # Sets the directory for TikToken cache\n TIKTOKEN_CACHE_DIR: /app/backend/data/cache/tiktoken\n\n # Sets the batch size for OpenAI embeddings\n RAG_EMBEDDING_OPENAI_BATCH_SIZE: 1\n\n # ===== DOCKER-SPECIFIC CONFIGURATION =====\n # Indicates running in Docker environment\n DOCKER: true\n\n # Home directory for the container\n HOME: /root\n\n # Hugging Face home directory for embedding models\n HF_HOME: /app/backend/data/cache/embedding/models\n\n # Sentence Transformers home directory\n SENTENCE_TRANSFORMERS_HOME: /app/backend/data/cache/embedding/models\n\n # CUDA Docker version to use\n USE_CUDA_DOCKER_VER: cu128\n\n # Embedding model to use in Docker\n USE_EMBEDDING_MODEL_DOCKER: sentence-transformers/all-MiniLM-L6-v2\n\n # ===== TELEMETRY DISABLING =====\n # Disables anonymized telemetry\n ANONYMIZED_TELEMETRY: false\n\n # Disables tracking\n DO_NOT_TRACK: true\n\n # Disables Scarf analytics\n SCARF_NO_ANALYTICS: true\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.open-webui.rule: Host(`open-webui.$DOMAIN`) || Host(`open-webui.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.open-webui.loadbalancer.server.port: \"${OPEN_WEBUI_PORT:-8080}\"\n homepage.group: AI\n homepage.name: Open WebUI\n homepage.icon: open-webui.png\n homepage.href: https://open-webui.$DOMAIN/\n homepage.description: Open WebUI is a feature-rich self-hosted webui for chatting with GenAI.\n command: [\"bash\", \"start.sh\"]\n working_dir: /app/backend\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8080\"]\n interval: 5s\n timeout: 30s\n retries: 10\n restart: always\n mcpo:\n image: ghcr.io/open-webui/mcpo:main\n container_name: mcpo\n hostname: mcpo\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/mcpo/mcp_servers.json:/app/config/mcp_servers.json # TODO: use configs: syntax for configmap here.\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/logs:/app/logs\n# - ${CONFIG_PATH:-./volumes}/mcp/mcpo/data:/app/data\n environment:\n MCPO_API_KEY: $MCPO_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mcpo.rule: Host(`mcpo.$DOMAIN`) || Host(`mcpo.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.mcpo.loadbalancer.server.port: 8000\n homepage.group: MCPO\n homepage.name: MCPO\n homepage.icon: mcpo.png\n homepage.href: https://mcpo.$DOMAIN/\n homepage.description: MCPO is a tool for managing and interacting with AI models.\n command: --api-key \"$MCPO_API_KEY\" --host 0.0.0.0 --port 8000 --cors-allow-origins \"*\" --config /app/config/mcp_servers.json\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/openapi.json\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n litellm:\n image: 'ghcr.io/berriai/litellm-database:main-stable'\n# image: ghcr.io/berriai/litellm:main-stable\n container_name: litellm\n hostname: litellm\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n depends_on:\n litellm-postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n volumes:\n - ${CONFIG_PATH:-./volumes}/litellm:/app/config\n configs:\n - source: litellm_config.yaml\n target: /app/config/litellm_config.yaml\n mode: 0440\n environment:\n - 'LITELLM_LOG=${LITELLM_LOG:-INFO}'\n - 'LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}'\n - 'UI_USERNAME=${LITELLM_UI_USERNAME:-admin}'\n - 'UI_PASSWORD=$LITELLM_MASTER_KEY'\n - 'DATABASE_URL=postgresql://${LITELLM_POSTGRES_USER:-litellm}:${LITELLM_POSTGRES_PASSWORD:-litellm}@${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}:5432/${LITELLM_POSTGRES_DB:-litellm}'\n - 'REDIS_HOST=${REDIS_HOSTNAME:-redis}'\n - 'REDIS_PORT=${REDIS_PORT:-6379}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'VOYAGE_API_KEY=$VOYAGE_API_KEY'\n - 'AI21_API_KEY=$AI21_API_KEY'\n - 'ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY'\n - 'APIFY_API_TOKEN=$APIFY_API_TOKEN'\n - 'APIPIE_API_KEY=$APIPIE_API_KEY'\n - 'ARLIAI_API_KEY=$ARLIAI_API_KEY'\n - 'AWANLLM_API_KEY=$AWANLLM_API_KEY'\n - 'BASETEN_API_KEY=$BASETEN_API_KEY'\n - 'BITO_ACCESS_KEY=$BITO_ACCESS_KEY'\n - 'BRAVE_API_KEY=$BRAVE_API_KEY'\n - 'CEREBRIUMAI_API_KEY=$CEREBRIUMAI_API_KEY'\n - 'DEEPINFRA_API_KEY=$DEEPINFRA_API_KEY'\n - 'DEEPGRAM_API_KEY=$DEEPGRAM_API_KEY'\n - 'DEEPSEEK_API_KEY=$DEEPSEEK_API_KEY'\n - 'DOCKER_TOKEN=$DOCKER_TOKEN'\n - 'DOCKERHUB_TOKEN=$DOCKERHUB_TOKEN'\n - 'EVERART_API_KEY=$EVERART_API_KEY'\n - 'EXA_API_KEY=$EXA_API_KEY'\n - 'FOREFRONTAI_API_KEY=$FOREFRONTAI_API_KEY'\n - 'GEMINI_API_KEY=$GEMINI_API_KEY'\n - 'GLAMA_API_KEY=$GLAMA_API_KEY'\n - 'GROK_API_KEY=$GROK_API_KEY'\n - 'GROQ_API_KEY=$GROQ_API_KEY'\n - 'HF_TOKEN=$HF_TOKEN'\n - 'HUGGINGFACE_ACCESS_TOKEN=$HUGGINGFACE_ACCESS_TOKEN'\n - 'HUGGINGFACE_API_TOKEN=$HUGGINGFACE_API_TOKEN'\n - 'JINA_API_KEY=$JINA_API_KEY'\n - 'KAGI_API_KEY=$KAGI_API_KEY'\n - 'KLUSTER_API_KEY=$KLUSTER_API_KEY'\n - 'LANGCHAIN_API_KEY=$LANGCHAIN_API_KEY'\n - 'LANGSMITH_API_KEY=$LANGSMITH_API_KEY'\n - 'LITELLM_MASTER_KEY=$LITELLM_MASTER_KEY'\n - 'MISTRAL_API_KEY=$MISTRAL_API_KEY'\n - 'MISTRALAI_API_KEY=$MISTRALAI_API_KEY'\n - 'OPENAI_API_KEY=$OPENAI_API_KEY'\n - 'OPENROUTER_API_KEY=$OPENROUTER_API_KEY'\n - 'PERPLEXITY_API_KEY=$PERPLEXITY_API_KEY'\n - 'PERPLEXITYAI_API_KEY=$PERPLEXITYAI_API_KEY'\n - 'REPLICATE_API_KEY=$REPLICATE_API_KEY'\n - 'SAMBANOVA_API_KEY=$SAMBANOVA_API_KEY'\n - 'SEARCH1API_KEY=$SEARCH1API_KEY'\n - 'SERPAPI_API_KEY=$SERPAPI_API_KEY'\n - 'SMITHERY_API_KEY=$SMITHERY_API_KEY'\n - 'TANDOOR_SECRET_KEY=$TANDOOR_SECRET_KEY'\n - 'TODOIST_API_KEY=$TODOIST_API_KEY'\n - 'TOGETHERAI_API_KEY=$TOGETHERAI_API_KEY'\n - 'UNIFY_API_KEY=$UNIFY_API_KEY'\n - 'UPSTAGE_API_KEY=$UPSTAGE_API_KEY'\n - 'UPSTAGEAI_API_KEY=$UPSTAGEAI_API_KEY'\n - 'VEYRAX_API_KEY=$VEYRAX_API_KEY'\n - 'YANDEX_API_KEY=$YANDEX_API_KEY'\n - 'YOU_API_KEY=$YOU_API_KEY'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.litellm.rule: Host(`litellm.$DOMAIN`) || Host(`litellm.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.litellm.loadbalancer.server.port: 4000\n homepage.group: AI\n homepage.name: Litellm\n homepage.icon: litellm.png\n homepage.href: https://litellm.$DOMAIN/\n homepage.description: Litellm is a tool for managing and interacting with AI models.\n command: --config /app/config/litellm_config.yaml --port 4000 --host 0.0.0.0\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://localhost:4000/health/liveliness\"]\n interval: 30s\n timeout: 15s\n retries: 5\n start_period: 30s\n restart: always\n litellm-postgres:\n# image: 'postgres:16-alpine'\n image: postgres:16.3-alpine3.20\n container_name: litellm-postgres\n hostname: ${LITELLM_POSTGRES_HOSTNAME:-litellm-postgres}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n - 'POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}'\n - 'POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD:-litellm}'\n - 'POSTGRES_USER=${LITELLM_POSTGRES_USER:-litellm}'\n volumes:\n - '${CONFIG_PATH:-./volumes}/litellm/pgdata:/var/lib/postgresql/data'\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -h localhost -U $$POSTGRES_USER -d $$POSTGRES_DB\"]\n interval: 5s\n timeout: 5s\n retries: 3\n restart: always\n searxng:\n # 🔹🔹 SearxNG 🔹🔹 # https://hub.docker.com/r/searxng/searxng\n # SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n image: docker.io/searxng/searxng:latest\n container_name: searxng\n hostname: ${SEARXNG_HOSTNAME:-searxng}\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # touch ${CONFIG_PATH:-./volumes}/searxng/limiter.toml\n - ${CONFIG_PATH:-./volumes}/searxng:/etc/searxng\n environment:\n <<: *common-env\n SEARXNG_BASE_URL: ${SEARXNG_URL:-http://searxng:8080}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.searxng.middlewares: nginx-auth@file\n traefik.http.routers.searxng.rule: Host(`searxng.$DOMAIN`) || Host(`searxng.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.searxng.loadbalancer.server.port: 8080\n homepage.group: Search\n homepage.name: SearxNG\n homepage.icon: searxng.png\n homepage.href: https://searxng.$DOMAIN/\n homepage.description: SearxNG is a privacy-respecting, hackable, open-source metasearch engine.\n healthcheck:\n test: [\"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/ || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n restart: always\n code-server:\n # 🔹🔹 Code Server 🔹🔹\n image: docker.io/linuxserver/code-server:latest\n container_name: code-server\n hostname: code-server\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/code-server/dev/config:/config\n - ${CONFIG_PATH:-./volumes}/code-server/dev/workspace:/workspace\n - ${ROOT_PATH:-.}:/workspace\n user: ${PUID:-1001}:${PGID:-988}\n environment:\n <<: *common-env\n CODESERVER_PASSWORD: $SUDO_PASSWORD\n PASSWORD: $SUDO_PASSWORD\n CODESERVER_SUDO_PASSWORD: $SUDO_PASSWORD\n SUDO_PASSWORD: $SUDO_PASSWORD\n CODESERVER_DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n DEFAULT_WORKSPACE: ${CODESERVER_DEFAULT_WORKSPACE:-/workspace}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.code-server.rule: Host(`code-server.$DOMAIN`) || Host(`code-server.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.code-server.loadbalancer.server.port: 8443\n homepage.group: Infrastructure\n homepage.name: Code Dev\n homepage.icon: code-server.png\n homepage.href: https://code-server.$DOMAIN/\n homepage.description: Code Dev is a tool that allows you to develop code in a container.\n cpu_shares: 10\n mem_reservation: 200M\n deploy:\n resources:\n reservations:\n cpus: 0.15\n memory: 200M\n limits:\n cpus: 2\n memory: 4G\n restart: always\n\n init_prometheus:\n image: prom/prometheus:latest\n container_name: init_prometheus\n hostname: init_prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n user: root\n entrypoint: /bin/sh -c \"chown -R 65534:65534 /prometheus\"\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n restart: \"no\"\n\n prometheus:\n depends_on:\n - init_prometheus\n image: prom/prometheus:latest\n container_name: prometheus\n hostname: prometheus\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - ${CONFIG_PATH:-./volumes}/prometheus/data:/prometheus\n configs:\n - source: prometheus.yml\n target: /etc/prometheus/prometheus.yml\n mode: 0777\n - source: alert.rules\n target: /etc/prometheus/alert.rules\n mode: 0777\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n - '--web.console.templates=/usr/share/prometheus/consoles'\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.prometheus.rule: Host(`prometheus.$DOMAIN`) || Host(`prometheus.$TS_HOSTNAME.$DOMAIN`)\n traefik.http.services.prometheus.loadbalancer.server.port: 9090\n restart: always\n\n bolabaden-nextjs:\n # 🔹🔹 bolabaden nextJS main website with integrated auth 🔹🔹\n build:\n context: ${SRC_PATH:-./src}/bolabaden-site\n dockerfile: Dockerfile\n image: th3w1zard1/bolabaden-nextjs:latest\n container_name: bolabaden-nextjs\n hostname: bolabaden-nextjs\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - ${BOLABADEN_NEXTJS_PORT:-3000}:${BOLABADEN_NEXTJS_PORT:-3000}\n volumes:\n - ${CONFIG_PATH:-./volumes}/tinyauth:/data\n environment:\n <<: *common-env\n NODE_ENV: production\n PORT: ${BOLABADEN_NEXTJS_PORT:-3000}\n HOSTNAME: ${BOLABADEN_NEXTJS_HOSTNAME:-0.0.0.0}\n # NextAuth.js Configuration (compatible with TinyAuth)\n SECRET: $TINYAUTH_SECRET?\n NEXTAUTH_URL: https://$DOMAIN\n NEXTAUTH_SECRET: $TINYAUTH_SECRET?\n APP_URL: https://auth.$DOMAIN\n USERS: $TINYAUTH_USERS\n # Google OAuth Configuration\n GOOGLE_CLIENT_ID: $TINYAUTH_GOOGLE_CLIENT_ID\n GOOGLE_CLIENT_SECRET: $TINYAUTH_GOOGLE_CLIENT_SECRET\n # GitHub OAuth Configuration\n GITHUB_CLIENT_ID: $TINYAUTH_GITHUB_CLIENT_ID\n GITHUB_CLIENT_SECRET: $TINYAUTH_GITHUB_CLIENT_SECRET\n # Additional settings (TinyAuth compatible)\n SESSION_EXPIRY: ${TINYAUTH_SESSION_EXPIRY:-604800} # 2 weeks session expiry\n COOKIE_SECURE: ${TINYAUTH_COOKIE_SECURE:-true} # Send cookie only with HTTPS\n APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # Customize login page title\n NEXT_PUBLIC_APP_TITLE: ${TINYAUTH_APP_TITLE:-Bolabaden} # For client-side access\n LOGIN_MAX_RETRIES: ${TINYAUTH_LOGIN_MAX_RETRIES:-15} # Maximum login attempts before account lockout\n LOGIN_TIMEOUT: ${TINYAUTH_LOGIN_TIMEOUT:-300} # Lock account for 5 minutes after too many failed attempts\n OAUTH_AUTO_REDIRECT: ${TINYAUTH_OAUTH_AUTO_REDIRECT:-none} # Options: none, github, google, or credentials\n OAUTH_WHITELIST: ${TINYAUTH_OAUTH_WHITELIST:-boden.crouch@gmail.com} # e.g. user1,user2,/^admin.*/\n # User level configuration\n ADMIN_ACCOUNTS: ${TINYAUTH_ADMIN_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of admin emails\n OWNER_ACCOUNTS: ${TINYAUTH_OWNER_ACCOUNTS:-boden.crouch@gmail.com} # Comma-separated list of owner emails\n labels:\n traefik.enable: \"true\"\n # Main website router\n traefik.http.routers.bolabaden-nextjs.rule: 'Host(`$DOMAIN`) || Host(`$TS_HOSTNAME.$DOMAIN`) || Host(`$DUCKDNS_DOMAIN`) || Host(`$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.bolabaden-nextjs.service: bolabaden-nextjs\n # Auth router (replaces tinyauth)\n #traefik.http.routers.tinyauth.rule: 'Host(`auth.$DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DOMAIN`) || Host(`auth.$DUCKDNS_DOMAIN`) || Host(`auth.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n #traefik.http.routers.tinyauth.service: bolabaden-nextjs\n # ForwardAuth middleware\n #traefik.http.middlewares.tinyauth.forwardauth.address: http://bolabaden-nextjs:${BOLABADEN_NEXTJS_PORT:-3000}/api/auth/traefik\n # Service configuration\n traefik.http.services.bolabaden-nextjs.loadbalancer.server.port: ${BOLABADEN_NEXTJS_PORT:-3000}\n # Homepage integration\n homepage.group: Web Services\n homepage.name: Bolabaden\n homepage.icon: dashboard.png\n homepage.href: https://$DOMAIN/\n homepage.description: Bolabaden main website with embedded services and authentication\n healthcheck:\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 40s\n restart: always\n\n whoami:\n # 🔹🔹 Whoami 🔹🔹\n image: traefik/whoami:latest\n container_name: whoami\n hostname: whoami\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.whoami.rule: 'Host(`whoami.$DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DOMAIN`) || Host(`whoami.$DUCKDNS_DOMAIN`) || Host(`whoami.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n homepage.group: Web Services\n homepage.name: Whoami\n homepage.icon: whoami.png\n homepage.href: https://whoami.$DOMAIN\n homepage.description: Whoami service with multiple auth examples - nginx auth (API key OR IP OR TinyAuth), direct access, and TinyAuth only.\n restart: always\n\n dokku:\n # 🔹🔹 Dokku 🔹🔹\n image: dokku/dokku:0.35.20\n container_name: dokku\n hostname: dokku\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n ports:\n - \"127.0.0.1:3022:22\" # SSH\n - \"127.0.0.1:8080:80\" # HTTP\n - \"127.0.0.1:8443:443\" # HTTPS\n volumes:\n - \"/var/lib/dokku:/mnt/dokku\" # Dokku data\n - \"/var/run/docker.sock:/var/run/docker.sock\" # Docker socket\n environment:\n DOKKU_HOSTNAME: dokku.$DOMAIN\n DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku\n DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dokku-http.service: dokku-http\n traefik.http.routers.dokku-https.service: dokku-https\n traefik.http.routers.dokku-ssh.service: dokku-ssh\n traefik.http.routers.dokku-http.rule: 'Host(`dokku-http.$DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-http.$DUCKDNS_DOMAIN`) || Host(`dokku-http.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-https.rule: 'Host(`dokku-https.$DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-https.$DUCKDNS_DOMAIN`) || Host(`dokku-https.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.dokku-ssh.rule: 'Host(`dokku-ssh.$DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DOMAIN`) || Host(`dokku-ssh.$DUCKDNS_DOMAIN`) || Host(`dokku-ssh.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dokku-http.loadbalancer.server.port: 80\n traefik.http.services.dokku-https.loadbalancer.server.port: 443\n traefik.http.services.dokku-ssh.loadbalancer.server.port: 22\n homepage.group: Infrastructure\n homepage.name: Dokku\n homepage.icon: dokku.png\n homepage.href: https://dokku.$DOMAIN/\n homepage.description: Dokku is a lightweight PaaS that runs on top of Docker.\n restart: always\n\n dozzle:\n # 🔹🔹 Dozzle 🔹🔹\n image: amir20/dozzle:latest\n container_name: dozzle\n hostname: dozzle\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:z\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.dozzle.middlewares: nginx-auth@file\n traefik.http.routers.dozzle.rule: 'Host(`dozzle.$DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DOMAIN`) || Host(`dozzle.$DUCKDNS_DOMAIN`) || Host(`dozzle.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.dozzle.loadbalancer.server.port: 8080\n homepage.group: System Monitoring\n homepage.name: Dozzle\n homepage.icon: dozzle.png\n homepage.href: https://dozzle.$DOMAIN/\n homepage.description: Real-time log viewer for Docker containers, providing an easy way to monitor application logs and troubleshoot issues.\n restart: always\n\n homepage:\n # 🔹🔹 Homepage 🔹🔹 # https://github.com/gethomepage/homepage\n image: ghcr.io/gethomepage/homepage\n container_name: homepage\n hostname: homepage\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n # DO NOT create a bind mount to the entire /app/public/ directory.\n - /var/run/docker.sock:/var/run/docker.sock:z\n - ${CONFIG_PATH:-./volumes}/homepage:/app/config\n environment:\n <<: *common-env\n HOMEPAGE_ALLOWED_HOSTS: ${HOMEPAGE_ALLOWED_HOSTS:-*}\n HOMEPAGE_VAR_TITLE: ${HOMEPAGE_VAR_TITLE:-Bolabaden}\n HOMEPAGE_VAR_SEARCH_PROVIDER: ${HOMEPAGE_VAR_SEARCH_PROVIDER:-google}\n HOMEPAGE_VAR_HEADER_STYLE: ${HOMEPAGE_VAR_HEADER_STYLE:-}\n HOMEPAGE_VAR_WEATHER_CITY: ${HOMEPAGE_VAR_WEATHER_CITY:-Chicago}\n HOMEPAGE_VAR_WEATHER_LAT: ${HOMEPAGE_VAR_WEATHER_LAT:-41.8781}\n HOMEPAGE_VAR_WEATHER_LONG: ${HOMEPAGE_VAR_WEATHER_LONG:--87.6298}\n # HOMEPAGE_VAR_WEATHER_TIME: ${HOMEPAGE_VAR_WEATHER_TIME:-}\n HOMEPAGE_VAR_WEATHER_UNIT: ${HOMEPAGE_VAR_WEATHER_UNIT:-fahrenheit}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.homepage.middlewares: nginx-auth@file\n traefik.http.routers.homepage.rule: 'Host(`homepage.$DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DOMAIN`) || Host(`homepage.$DUCKDNS_DOMAIN`) || Host(`homepage.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.homepage.loadbalancer.server.port: 3000\n homepage.group: Dashboards\n homepage.name: Homepage\n homepage.icon: homepage.png\n homepage.href: https://homepage.$DOMAIN/\n homepage.description: Homepage is a dashboard that displays all of your services.\n healthcheck: # docker exec homepage ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 0.25 # deliberately hobble the CPU in favor of GPU transcoding\n memory: 1G\n restart: always\n\n watchtower:\n # 🔹🔹 Watchtower 🔹🔹\n image: containrrr/watchtower:latest\n container_name: watchtower\n hostname: watchtower\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n# - ${CONFIG_PATH:-./volumes}/watchtower/data:/data\n environment:\n <<: *common-env\n WATCHTOWER_CLEANUP: ${WATCHTOWER_CLEANUP:-true}\n WATCHTOWER_SCHEDULE: ${WATCHTOWER_SCHEDULE:-0 0 6 * * *} # Run at 6am daily\n WATCHTOWER_NOTIFICATION_URL: ${WATCHTOWER_NOTIFICATION_URL:-}\n WATCHTOWER_NOTIFICATION_REPORT: ${WATCHTOWER_NOTIFICATION_REPORT:-true}\n WATCHTOWER_DEBUG: ${WATCHTOWER_DEBUG:-true}\n WATCHTOWER_LOG_LEVEL: ${WATCHTOWER_LOG_LEVEL:-debug}\n WATCHTOWER_NOTIFICATION_TEMPLATE: |\n {{- if .Report -}}\n {{- with .Report -}}\n {{- if ( or .Updated .Failed ) -}}\n {{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed\n {{- range .Updated}}\n - {{.Name}} ({{.ImageName}}): {{.CurrentImageID.ShortID}} updated to {{.LatestImageID.ShortID}}\n {{- end -}}\n {{- range .Skipped}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- range .Failed}}\n - {{.Name}} ({{.ImageName}}): {{.State}}: {{.Error}}\n {{- end -}}\n {{- end -}}\n {{- end -}}\n {{- else -}}\n {{range .Entries -}}{{.Message}}{{\"\\n\"}}{{- end -}}\n {{- end -}}\n restart: always\n\n flaresolverr:\n # 🔹🔹 Flaresolverr 🔹🔹 # https://github.com/flaresolverr/flaresolverr\n image: ghcr.io/flaresolverr/flaresolverr:latest\n #image: ghcr.io/thephaseless/byparr:latest\n container_name: flaresolverr\n hostname: flaresolverr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - ${FLARESOLVERR_PORT:-8191}\n environment:\n <<: *common-env\n # FlareSolverr Environment Variables\n \n LOG_LEVEL: info # Verbosity of the logging. Use LOG_LEVEL=debug for more information.\n LOG_HTML: false # Only for debugging. If true all HTML that passes through the proxy will be logged to the console in debug level.\n CAPTCHA_SOLVER: none # Captcha solving method. It is used when a captcha is encountered. Note: none of the captcha solvers work with the current version of Flaresolverr.\n PORT: ${FLARESOLVERR_PORT:-8191} # Listening port.\n HOST: 0.0.0.0 # Listening interface.\n HEADLESS: ${FLARESOLVERR_HEADLESS:-true} # Only for debugging. To run the web browser in headless mode or visible.\n BROWSER_TIMEOUT: ${FLARESOLVERR_BROWSER_TIMEOUT:-120000} # If you are experiencing errors/timeouts because your system is slow, you can try to increase this value.\n TEST_URL: ${FLARESOLVERR_TEST_URL:-https://www.google.com} # FlareSolverr makes a request on start to make sure the web browser is working.\n PROMETHEUS_ENABLED: ${FLARESOLVERR_PROMETHEUS_ENABLED:-true} # Enable Prometheus exporter\n PROMETHEUS_PORT: ${PROMETHEUS_PORT:-9090} # Listening port for Prometheus exporter\n labels:\n deunhealth.restart.on.unhealthy: \"true\"\n traefik.enable: \"true\"\n traefik.http.routers.flaresolverr.middlewares: nginx-auth@file\n traefik.http.routers.flaresolverr.rule: 'Host(`flaresolverr.$DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DOMAIN`) || Host(`flaresolverr.$DUCKDNS_DOMAIN`) || Host(`flaresolverr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.flaresolverr.loadbalancer.server.port: ${FLARESOLVERR_PORT:-8191}\n homepage.group: Infrastructure\n homepage.name: Flaresolverr\n homepage.icon: flaresolverr.png\n homepage.href: https://flaresolverr.$DOMAIN/\n homepage.description: Flaresolverr is a proxy server that can bypass captchas and access cloudflare-captcha-protected websites.\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:${FLARESOLVERR_PORT:-8191}/health > /dev/null 2>&1 || exit 1\"]\n interval: 30s\n timeout: 15s\n retries: 3\n start_period: 60s\n cpus: 0.6\n mem_reservation: 64M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 64M\n limits:\n cpus: 0.6\n memory: 1G\n restart: always\n\n stremio:\n # 🔹🔹 Stremio 🔹🔹\n # Stream Movies/TV over debrid instantly.\n image: th3w1zard1/stremio-docker:latest\n container_name: stremio\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n ports:\n - 11470:11470/tcp\n - 12470:12470/tcp\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/root/.stremio-server:/root/.stremio-server\n environment:\n SERVER_URL: ${STREMIO_SERVER_URL:-https://stremio.$DOMAIN/}\n WEBUI_LOCATION: ${STREMIO_WEBUI_LOCATION:-https://stremio-web.$DOMAIN/shell/}\n NO_CORS: ${STREMIO_NO_CORS:-0}\n CASTING_DISABLED: ${STREMIO_CASTING_DISABLED:-0}\n labels:\n traefik.enable: \"true\"\n # Router for Stremio Web UI (port 8080)\n traefik.http.routers.stremio-web.service: stremio-web\n traefik.http.routers.stremio-web.rule: \"Host(`stremio-web.$DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-web.$DUCKDNS_DOMAIN`) || Host(`stremio-web.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)\"\n traefik.http.routers.stremio-web.priority: 10\n traefik.http.services.stremio-web.loadbalancer.server.scheme: https\n traefik.http.services.stremio-web.loadbalancer.server.port: 8080\n # Router for Stremio API and Streaming Server (port 11470)\n traefik.http.routers.stremio-api-http-server.service: stremio-api-http-server\n traefik.http.routers.stremio-api-http-server.rule: 'Host(`stremio-api.$DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio-api.$DUCKDNS_DOMAIN`) || Host(`stremio-api.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-api-http-server.priority: 100\n traefik.http.services.stremio-api-http-server.loadbalancer.server.port: 11470\n # Stremio HTTPS Streaming Server (port 12470)\n traefik.http.routers.stremio-https-server.service: stremio-https-server\n traefik.http.routers.stremio-https-server.rule: 'Host(`stremio.$DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DOMAIN`) || Host(`stremio.$DUCKDNS_DOMAIN`) || Host(`stremio.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.routers.stremio-https-server.priority: 100\n traefik.http.services.stremio-https-server.loadbalancer.server.scheme: https\n traefik.http.services.stremio-https-server.loadbalancer.server.port: 12470\n homepage.group: Media Streaming Platforms\n homepage.name: Stremio\n homepage.icon: stremio.png\n homepage.href: https://stremio.$DOMAIN/\n homepage.description: A one-stop hub for video content aggregation, allowing you to stream movies, series, and more from various sources.\n homepage.widget.type: stremio\n homepage.widget.url: http://stremio:11470\n healthcheck:\n test: [\"CMD-SHELL\", \"(curl -fs http://127.0.0.1:11470 > /dev/null 2>&1 || curl -fs https://127.0.0.1:12470 > /dev/null 2>&1) || exit 1\"]\n interval: 60s\n timeout: 5s\n retries: 3\n start_period: 1m30s\n cpu_shares: 10 # potentially should be 1\n mem_reservation: 256M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 256M\n limits:\n cpus: 2\n memory: 2G\n restart: always\n aiostreams:\n # 🔹🔹 AIOStreams 🔹🔹\n image: ghcr.io/viren070/aiostreams:latest\n container_name: aiostreams\n hostname: ${AIOSTREAMS_HOSTNAME:-aiostreams}\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/aiostreams/data:/app/data\n environment:\n <<: *common-env\n # ==============================================================================\n # ESSENTIAL ADDON SETUP\n # ==============================================================================\n # These are the most important settings you'll need to configure.\n\n # --- Addon Identification ---\n # Descriptive name for your addon instance.\n ADDON_NAME: ${AIOSTREAMS_ADDON_NAME:-BadenAIO}\n # Unique identifier for your addon.\n ADDON_ID: aiostreams.$DOMAIN\n\n # --- Network Configuration ---\n # The port on which the addon will listen.\n # Default: 3000\n PORT: ${AIOSTREAMS_PORT:-3005}\n\n # The base URL of your addon. Highly recommended for proper functioning.\n # Used for generating installation URLs and identifying self-scraping.\n # Example: https://aiostreams.yourdomain.com\n BASE_URL: https://aiostreams.$DOMAIN\n\n # --- Security ---\n # CRITICAL: Secret key for encrypting addon configuration.\n # MUST be a 64-character hex string.\n # Generate one using:\n # Linux/macOS: openssl rand -hex 32\n # Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) })\n # Or: [System.Guid]::NewGuid().ToString(\"N\") + [System.Guid]::NewGuid().ToString(\"N\") (ensure it's 64 chars)\n SECRET_KEY: ${AIOSTREAMS_SECRET_KEY:-207d3e5d2dd7edca578b121814f32ed4d73568b5059fd710637a40d310928cde}\n\n # API key to protect your addon installation and usage.\n # Leave empty to disable password protection.\n # Can be any string.\n ADDON_PASSWORD: ${AIOSTREAMS_ADDON_PASSWORD:-sk_4dc059c0399c43fd94c09baaf0b94da119fc526775914bf2b3a3fb6e073e26d9}\n #\n # PostgreSQL example:\n # DATABASE_URI=postgres://username:password@host:port/database_name\n # (e.g., postgresql://postgres:password@localhost:5432/aiostreams)\n DATABASE_URI: ${AIOSTREAMS_DATABASE_URI:-sqlite://./data/db.sqlite}\n\n\n # ==============================================================================\n # DEBRID & OTHER SERVICE API KEYS\n # ==============================================================================\n\n # Provide a default TMDB access token to be used for the Title Matching filter if a user does not provide any.\n TMDB_ACCESS_TOKEN: $TMDB_ACCESS_TOKEN\n\n # Configure API keys for debrid services and others you plan to use.\n # 'DEFAULT_' values are pre-filled in the user's config page.\n # 'FORCED_' values override user settings and hide the option.\n\n # --- Real-Debrid ---\n DEFAULT_REALDEBRID_API_KEY: $REALDEBRID_API_KEY\n #- FORCED_REALDEBRID_API_KEY=$REALDEBRID_API_KEY\n\n # --- AllDebrid ---\n DEFAULT_ALLDEBRID_API_KEY: $ALLDEBRID_API_KEY\n #- FORCED_ALLDEBRID_API_KEY=$ALLDEBRID_API_KEY\n\n # --- Premiumize ---\n DEFAULT_PREMIUMIZE_API_KEY: $PREMIUMIZE_API_KEY\n #- FORCED_PREMIUMIZE_API_KEY=$PREMIUMIZE_API_KEY\n\n # --- Debrid-Link ---\n DEFAULT_DEBRIDLINK_API_KEY: $DEBRIDLINK_API_KEY\n #- FORCED_DEBRIDLINK_API_KEY=$DEBRIDLINK_API_KEY\n\n # --- Torbox ---\n DEFAULT_TORBOX_API_KEY: $TORBOX_API_KEY\n #- FORCED_TORBOX_API_KEY=$TORBOX_API_KEY\n\n # --- OffCloud ---\n DEFAULT_OFFCLOUD_API_KEY: $OFFCLOUD_API_KEY\n #- FORCED_OFFCLOUD_API_KEY=$OFFCLOUD_API_KEY\n DEFAULT_OFFCLOUD_EMAIL: $OFFCLOUD_EMAIL\n #- FORCED_OFFCLOUD_EMAIL=$OFFCLOUD_EMAIL\n DEFAULT_OFFCLOUD_PASSWORD: $OFFCLOUD_PASSWORD\n #- FORCED_OFFCLOUD_PASSWORD=$OFFCLOUD_PASSWORD\n\n # --- Put.io ---\n DEFAULT_PUTIO_CLIENT_ID: $PUTIO_CLIENT_ID\n #- FORCED_PUTIO_CLIENT_ID=$PUTIO_CLIENT_ID\n DEFAULT_PUTIO_CLIENT_SECRET: $PUTIO_CLIENT_SECRET\n #- FORCED_PUTIO_CLIENT_SECRET=$PUTIO_CLIENT_SECRET\n\n # --- EasyNews ---\n DEFAULT_EASYNEWS_USERNAME: $EASYNEWS_USERNAME\n #- FORCED_EASYNEWS_USERNAME=$EASYNEWS_USERNAME\n DEFAULT_EASYNEWS_PASSWORD: $EASYNEWS_PASSWORD\n #- FORCED_EASYNEWS_PASSWORD=$EASYNEWS_PASSWORD\n\n # --- EasyDebrid ---\n DEFAULT_EASYDEBRID_API_KEY: $EASYDEBRID_API_KEY\n #- FORCED_EASYDEBRID_API_KEY=$EASYDEBRID_API_KEY\n\n # --- PikPak ---\n DEFAULT_PIKPAK_EMAIL: $PIKPAK_EMAIL\n #- FORCED_PIKPAK_EMAIL=$PIKPAK_EMAIL\n DEFAULT_PIKPAK_PASSWORD: $PIKPAK_PASSWORD\n #- FORCED_PIKPAK_PASSWORD=$PIKPAK_PASSWORD\n\n # --- Seedr ---\n DEFAULT_SEEDR_ENCODED_TOKEN: $SEEDR_ENCODED_TOKEN\n #- FORCED_SEEDR_ENCODED_TOKEN=$SEEDR_ENCODED_TOKEN\n\n\n # ==============================================================================\n # CUSTOMIZATION & ACCESS CONTROL\n # ==============================================================================\n\n # --- Custom HTML ---\n # Display custom HTML at the top of the addon's configuration page.\n # Example: CUSTOM_HTML=\"<div>Welcome to my AIOStreams!</div>\"\n CUSTOM_HTML: $AIOSTREAMS_CUSTOM_HTML\n\n # --- Trusted Users ---\n # Comma-separated list of trusted UUIDs.\n # Trusted users can access features like regex filters if REGEX_FILTER_ACCESS is 'trusted'.\n # Example: TRUSTED_UUIDS=ae32f456-1234-5678-9012-345678901234,another-uuid-here\n TRUSTED_UUIDS: $AIOSTREAMS_TRUSTED_UUIDS\n\n # --- Regex Filter Access ---\n # Controls who can use regex filters.\n # 'none': No one can use regex filters.\n # 'trusted': Only users listed in TRUSTED_UUIDS.\n # 'all': All users (only recommended if ADDON_PASSWORD is set).\n # Default: trusted\n REGEX_FILTER_ACCESS: ${AIOSTREAMS_REGEX_FILTER_ACCESS:-trusted}\n\n # ==============================================================================\n # CACHE CONFIGURATION\n # ==============================================================================\n\n # --- Default maximum cache size ----\n # The maximum number of items that can be held in a given cache instance, if not overriden by a specific cache instance\n DEFAULT_MAX_CACHE_SIZE: ${AIOSTREAMS_DEFAULT_MAX_CACHE_SIZE:-100000}\n\n # --- Proxy IP TTL (StremThru/MediaFlow Proxy)\n # The Time-To-Live (in seconds) of items in the Public IP cache.\n # Set to -1 to disable caching\n PROXY_IP_CACHE_TTL: ${AIOSTREAMS_PROXY_IP_CACHE_TTL:-900} # Default is 900\n\n # --- Addon Resource Caching ---\n # Control the Caching of resources fetched from other addons\n # Set to -1 to disable caching.\n MANIFEST_CACHE_TTL: ${AIOSTREAMS_MANIFEST_CACHE_TTL:-300} # Default is 300\n SUBTITLE_CACHE_TTL: ${AIOSTREAMS_SUBTITLE_CACHE_TTL:-300} # Default is 300\n STREAM_CACHE_TTL: ${AIOSTREAMS_STREAM_CACHE_TTL:-1} # Default is 1\n CATALOG_CACHE_TTL: ${AIOSTREAMS_CATALOG_CACHE_TTL:-300} # Default is 300\n META_CACHE_TTL: ${AIOSTREAMS_META_CACHE_TTL:-300} # Default is 300\n ADDON_CATALOG_CACHE_TTL: ${AIOSTREAMS_ADDON_CATALOG_CACHE_TTL:-300} # Default is 300\n\n # --- RPDB API Key Validation Caching ---\n # Control how long a valid API key check is cached for\n # Default: 7 days\n RPDB_API_KEY_VALIDITY_CACHE_TTL: ${AIOSTREAMS_RPDB_API_KEY_VALIDITY_CACHE_TTL:-604800}\n\n # --- Self-Scraping ---\n # Prevent this AIOStreams instance from being added as an addon to itself.\n # Default: true\n DISABLE_SELF_SCRAPING: ${AIOSTREAMS_DISABLE_SELF_SCRAPING:-true}\n\n # --- Log Level ---\n # Set the verbosity of logs. Options: \"error\", \"warn\", \"info\", \"http\", \"verbose\",\"debug\", \"silly\"\n # Default: info\n LOG_LEVEL: ${AIOSTREAMS_LOG_LEVEL:-info}\n\n # --- Log Format ---\n # Output logs in \"json\" or \"text\" format.\n # Default: text\n LOG_FORMAT: ${AIOSTREAMS_LOG_FORMAT:-text}\n\n # --- Log Sensitive Information ---\n # Whether to include potentially sensitive info (like API keys) in logs.\n # Useful for debugging, but disable for production if concerned.\n # Default: true\n LOG_SENSITIVE_INFO: ${AIOSTREAMS_LOG_SENSITIVE_INFO:-true}\n\n # --- Log Timezone ---\n # Adjust the timezone used for logging\n # e.g. Europe/Paris, America/New_York\n LOG_TIMEZONE: ${TZ:-America/Chicago}\n\n # --- Stream Proxy Enabled ---\n # DEFAULT_PROXY_ENABLED: ${AIOSTREAMS_DEFAULT_PROXY_ENABLED:-true} # Default state for enabling a stream proxy.\n FORCE_PROXY_ENABLED: ${AIOSTREAMS_FORCE_PROXY_ENABLED:-true} # Force stream proxy on/off for all users.\n\n # --- Stream Proxy ID ---\n # 'mediaflow' or 'stremthru'\n DEFAULT_PROXY_ID: ${AIOSTREAMS_DEFAULT_PROXY_ID:-stremthru}\n # FORCE_PROXY_ID: stremthru\n\n # --- Stream Proxy URL ---\n # URL of your MediaFlow or StremThru instance.\n DEFAULT_PROXY_URL: http://stremthru:8080\n # FORCE_PROXY_URL: ${STREMTHRU_INTERNAL_URL:-http://stremthru:8080}\n\n # --- Stream Proxy Credentials ---\n # Format: username:password\n DEFAULT_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n # FORCE_PROXY_CREDENTIALS: ${STREMTHRU_CREDENTIALS:-bolabaden:duckdns}\n\n # --- Stream Proxy Public IP ---\n # Public IP for the proxy, if needed.\n # DEFAULT_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n # FORCE_PROXY_PUBLIC_IP: {AIOSTREAMS_DEFAULT_PROXY_PUBLIC_IP:-170.9.225.137}\n\n # --- Proxied Services ---\n # Comma-separated list of services whose streams should be proxied (e.g., realdebrid,alldebrid).\n # DEFAULT_PROXY_PROXIED_SERVICES:\n # FORCE_PROXY_PROXIED_SERVICES:\n\n # --- Disable Proxied Addons Feature ---\n # If true, it disables the 'Proxied Addons' option.\n # FORCE_PROXY_DISABLE_PROXIED_ADDONS: ${AIOSTREAMS_FORCE_PROXY_DISABLE_PROXIED_ADDONS:-false}\n\n # --- Encrypt Streaming URLs ---\n # Encrypt MediaFlow/StremThru URLs for better compatibility with external players.\n ENCRYPT_MEDIAFLOW_URLS: ${AIOSTREAMS_ENCRYPT_MEDIAFLOW_URLS:-true}\n ENCRYPT_STREMTHRU_URLS: ${AIOSTREAMS_ENCRYPT_STREMTHRU_URLS:-true}\n\n\n # --- Forced Public proxy URL adjustments ----\n # If you'd like to force some adjustments to be made to the streaming urls generated by either proxy, you can do that here.\n # This is useful when you want to use a local url for requests but have AIOStreams force the urls to use a specific host, port, and protocol.\n FORCE_PUBLIC_PROXY_HOST: stremthru.$DOMAIN # Default is stremthru.$DOMAIN\n FORCE_PUBLIC_PROXY_PORT: 443\n FORCE_PUBLIC_PROXY_PROTOCOL: https\n\n\n # ==============================================================================\n # ADVANCED CONFIGURATION & LIMITS\n # ==============================================================================\n\n # --- General Default Timeout ---\n # Default timeout in milliseconds for all requests if not overridden by a specific timeout.\n # Default: 15000 (15 seconds)\n DEFAULT_TIMEOUT: ${AIOSTREAMS_DEFAULT_TIMEOUT:-15000}\n\n # --- Configuration Limits ---\n # Maximum number of addons allowed per AIOStreams configuration.\n MAX_ADDONS: ${AIOSTREAMS_MAX_ADDONS:-100}\n # Maximum number of groups allowed per AIOStreams configuration\n MAX_GROUPS: ${AIOSTREAMS_MAX_GROUPS:-50}\n # Maximum number of keyword filters per AIOStreams configuration.\n MAX_KEYWORD_FILTERS: ${AIOSTREAMS_MAX_KEYWORD_FILTERS:-50}\n # Maximum number of condition filters per AIOStreams configuration\n MAX_CONDITION_FILTERS: ${AIOSTREAMS_MAX_CONDITION_FILTERS:-200}\n # Maximum timeout (ms) an addon can be set to via override.\n MAX_TIMEOUT: ${AIOSTREAMS_MAX_TIMEOUT:-50000}\n # Minimum timeout (ms) an addon can be set to via override.\n MIN_TIMEOUT: ${AIOSTREAMS_MIN_TIMEOUT:-1000}\n\n\n # ==============================================================================\n # RATE LIMIT CONFIGURATION\n # ==============================================================================\n # Configure rate limits to prevent abuse. Typically, defaults are fine.\n\n # --- Disable Rate Limits ---\n # Set to true to disable all rate limits (NOT RECOMMENDED).\n # Default: false\n DISABLE_RATE_LIMITS: ${AIOSTREAMS_DISABLE_RATE_LIMITS:-false}\n\n # Window and Max requests refer to the maximum number of requests a user can make within a specific timeframe\n\n # --- Static File Serving ---\n STATIC_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STATIC_RATE_LIMIT_WINDOW:-5}\n STATIC_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STATIC_RATE_LIMIT_MAX_REQUESTS:-75}\n\n # --- User API ---\n USER_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_USER_API_RATE_LIMIT_WINDOW:-5}\n USER_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_USER_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stream API ---\n STREAM_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_WINDOW:-5}\n STREAM_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREAM_API_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Format API ---\n FORMAT_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_WINDOW:-5}\n FORMAT_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_FORMAT_API_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Catalog API ---\n CATALOG_API_RATE_LIMIT_WINDOW: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_WINDOW:-5}\n CATALOG_API_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_CATALOG_API_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Stream ---\n STREMIO_STREAM_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_WINDOW:-15}\n STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_STREAM_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Catalog ---\n STREMIO_CATALOG_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_WINDOW:-5}\n STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_CATALOG_RATE_LIMIT_MAX_REQUESTS:-30}\n\n # --- Stremio Manifest ---\n STREMIO_MANIFEST_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_WINDOW:-5}\n STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_MANIFEST_RATE_LIMIT_MAX_REQUESTS:-5}\n\n # --- Stremio Subtitle ---\n STREMIO_SUBTITLE_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_WINDOW:-5}\n STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_SUBTITLE_RATE_LIMIT_MAX_REQUESTS:-10}\n\n # --- Stremio Meta ---\n STREMIO_META_RATE_LIMIT_WINDOW: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_WINDOW:-5}\n STREMIO_META_RATE_LIMIT_MAX_REQUESTS: ${AIOSTREAMS_STREMIO_META_RATE_LIMIT_MAX_REQUESTS:-15}\n\n\n # ==============================================================================\n # INACTIVE USER PRUNING\n # ==============================================================================\n # Automatically prune (delete) inactive user configurations.\n\n # --- Prune Interval ---\n # How often to check for inactive users, in seconds.\n # Default: 86400 (1 day)\n PRUNE_INTERVAL: 8640000\n\n # --- Prune Max Inactivity Days ---\n # Maximum days of inactivity before a user's configuration is pruned.\n # Set to -1 to disable\n PRUNE_MAX_DAYS: -1\n\n # ==============================================================================\n # EXTERNAL ADDON SERVICE URLs & TIMEOUTS\n # ==============================================================================\n # URLs and default timeouts for various external Stremio addons that AIOStreams can integrate with.\n # Change these if you use self-hosted versions or if defaults become outdated.\n\n # ----------- COMET ------------\n COMET_URL: ${COMET_INTERNAL_URL:-http://comet:3000}\n MEDIAFUSION_URL: ${MEDIAFUSION_INTERNAL_URL:-http://mediafusion:8000}\n MEDIAFUSION_CONFIG_TIMEOUT: ${MEDIAFUSION_CONFIG_TIMEOUT:-5000}\n MEDIAFUSION_API_PASSWORD: $SUDO_PASSWORD\n DEFAULT_JACKETTIO_INDEXERS: '${JACKETTIO_INDEXERS:-[\"bitsearch\", \"eztv\", \"thepiratebay\", \"therarbg\", \"yts\"]}'\n DEFAULT_JACKETTIO_STREMTHRU_URL: ${JACKETTIO_STREMTHRU_URL:-https://stremthru.13377001.xyz}\n STREMTHRU_STORE_URL: ${STREMTHRU_STORE_INTERNAL_URL:-http://stremthru:8080/stremio/store}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.aiostreams.rule: 'Host(`aiostreams.$DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DOMAIN`) || Host(`aiostreams.$DUCKDNS_DOMAIN`) || Host(`aiostreams.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.aiostreams.loadbalancer.server.port: ${AIOSTREAMS_PORT:-3005}\n homepage.group: Stremio Addons\n homepage.name: AIOStreams\n homepage.icon: aiostreams.png\n homepage.href: https://aiostreams.$DOMAIN/\n homepage.description: AIOStreams is a stremio addon that combines multiple stremio addons into one, providing additional functionality that can be used for all these addons that may not natively otherwise support them.\n cpu_shares: 10\n mem_reservation: 50M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 50M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n jackett:\n # 🔹🔹 Jackett 🔹🔹\n depends_on:\n flaresolverr:\n condition: service_healthy\n image: linuxserver/jackett\n container_name: jackett\n hostname: jackett\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/jackett/config:/config\n - /mnt/remote/blackhole:/blackhole\n environment:\n <<: *common-env\n AUTO_UPDATE: ${JACKETT_AUTO_UPDATE:-true}\n RUN_OPTS: \"${JACKETT_RUN_OPTS:-}\"\n JACKETT_API_KEY: $JACKETT_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.jackett.rule: 'Host(`jackett.$DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DOMAIN`) || Host(`jackett.$DUCKDNS_DOMAIN`) || Host(`jackett.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.jackett.loadbalancer.server.port: 9117\n homepage.group: Source Aggregator\n homepage.name: Jackett Indexer\n homepage.icon: jackett.png\n homepage.href: https://jackett.$DOMAIN/\n homepage.description: Connects your download applications with various source providers and indexers, making it easier to find and download content through your download clients.\n homepage.weight: 1\n homepage.widget.type: jackett\n homepage.widget.url: ${JACKETT_INTERNAL_URL:-http://jackett:9117}\n homepage.widget.key: $JACKETT_API_KEY\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -fs http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab?t=indexers&apikey=$JACKETT_API_KEY || exit 1\"]\n interval: 30s\n timeout: 10s\n start_period: 60s\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n reservations:\n cpus: 0\n memory: 128M\n limits:\n cpus: 1\n memory: 1024M\n restart: always\n docker-socket-proxy:\n # 🔹🔹 Docker Socket Proxy 🔹🔹\n image: tecnativa/docker-socket-proxy\n container_name: dockerproxy\n hostname: dockerproxy\n extra_hosts: *common-hostname-aliases\n privileged: true\n networks:\n - publicnet\n ports:\n - 127.0.0.1:2375:2375\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n restart: always\n prowlarr:\n # 🔹🔹 Prowlarr 🔹🔹\n image: linuxserver/prowlarr\n container_name: prowlarr\n hostname: prowlarr\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n configs:\n - source: prowlarr_indexer_proxy.json\n target: /config/prowlarr_indexer_proxy.json\n mode: 0777\n - source: prowlarr_indexers.json\n target: /etc/config/prowlarr_indexers.json\n mode: 0777\n volumes:\n - ${CONFIG_PATH:-./volumes}/prowlarr/config:/config:rw\n - ${CONFIG_PATH:-./volumes}/prowlarr/config/etc/config:/etc/config\n environment:\n <<: *common-env\n PROWLARR_API_KEY: $PROWLARR_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.middlewares.prowlarr.forwardauth.authResponseHeaders: authorization\n tinyauth.basic.username: $PROWLARR_USERNAME\n tinyauth.basic.password.plain: $PROWLARR_PASSWORD\n traefik.http.routers.prowlarr.rule: 'Host(`prowlarr.$DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DOMAIN`) || Host(`prowlarr.$DUCKDNS_DOMAIN`) || Host(`prowlarr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.prowlarr.loadbalancer.server.port: 9696\n homepage.group: Indexers\n homepage.name: Prowlarr\n homepage.icon: prowlarr.png\n homepage.href: https://prowlarr.$DOMAIN/\n homepage.description: An indexer manager/proxy for your Usenet and Torrent downloaders, integrating with PVR apps like Sonarr and Radarr.\n homepage.weight: 1\n homepage.widget.type: prowlarr\n homepage.widget.url: ${PROWLARR_INTERNAL_URL:-http://prowlarr:9696}\n homepage.widget.key: $PROWLARR_API_KEY\n cpu_shares: 10\n mem_reservation: 128M\n deploy:\n resources:\n limits:\n cpus: '2.0'\n memory: 6G\n reservations:\n cpus: '0.0'\n memory: 128M\n healthcheck: # docker exec prowlarr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"curl -fs -H \\\"Authorization: Bearer $$PROWLARR_API_KEY\\\" http://127.0.0.1:9696/api/v1/system/status || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 120s\n restart: always\n comet:\n image: g0ldyy/comet:latest\n container_name: comet\n hostname: comet\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/comet/data:/data\n environment:\n <<: *common-env\n ADDON_ID: comet.$DOMAIN\n ADDON_NAME: Comet | $DOMAIN\n FASTAPI_HOST: 0.0.0.0\n FASTAPI_PORT: ${COMET_PORT:-2020}\n FASTAPI_WORKERS: ${CPU_COUNT:-4}\n USE_GUNICORN: True\n DASHBOARD_ADMIN_PASSWORD: $SUDO_PASSWORD\n DATABASE_TYPE: sqlite\n DATABASE_PATH: /data/comet.db\n METADATA_CACHE_TTL: 2592000\n TORRENT_CACHE_TTL: 1296000\n DEBRID_CACHE_TTL: 86400\n INDEXER_MANAGER_TYPE: prowlarr # jackett, prowlarr, none.\n INDEXER_MANAGER_URL: ${PROWLARR_HOST:-http://prowlarr:9696} # http://jackett:9117, http://prowlarr:9696\n INDEXER_MANAGER_API_KEY: $PROWLARR_API_KEY # $JACKETT_API_KEY, $PROWLARR_API_KEY\n INDEXER_MANAGER_TIMEOUT: 60\n INDEXER_MANAGER_INDEXERS: ${COMET_INDEXERS:-[\"animetosho\", \"anirena\", \"bitsearch\", \"eztv\", \"nyaasi\", \"thepiratebay\", \"therarbg\", \"yts\"]}\n GET_TORRENT_TIMEOUT: 2\n DOWNLOAD_TORRENT_FILES: True\n SCRAPE_COMET: true\n COMET_URL: https://comet.elfhosted.com\n SCRAPE_ZILEAN: true\n ZILEAN_URL: https://zilean.elfhosted.com\n SCRAPE_TORRENTIO: true\n TORRENTIO_URL: https://torrentio.strem.fun\n SCRAPE_MEDIAFUSION: true\n MEDIAFUSION_URL: https://mediafusion.elfhosted.com\n STREMTHRU_URL: https://stremthru.$DOMAIN\n PROXY_DEBRID_STREAM: True\n PROXY_DEBRID_STREAM_PASSWORD: $STREMTHRU_PROXY_AUTH\n PROXY_DEBRID_STREAM_MAX_CONNECTIONS: -1\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_SERVICE: premiumize\n PROXY_DEBRID_STREAM_DEBRID_DEFAULT_APIKEY: $PREMIUMIZE_API_KEY\n REMOVE_ADULT_CONTENT: True\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.comet.rule: 'Host(`comet.$DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DOMAIN`) || Host(`comet.$DUCKDNS_DOMAIN`) || Host(`comet.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.comet.loadbalancer.server.port: ${COMET_PORT:-2020}\n homepage.group: Stremio Addons\n homepage.name: Comet\n homepage.icon: comet.png\n homepage.href: https://comet.$DOMAIN/\n homepage.description: Comet is a Stremio Addon for finding media sources from various sources.\n healthcheck: # docker exec comet ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"wget -qO- http://127.0.0.1:$${FASTAPI_PORT:-2020}/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 5s\n retries: 3\n start_period: 15s\n restart: always\n mediafusion:\n depends_on:\n mongodb:\n condition: service_healthy\n redis:\n condition: service_healthy\n image: mhdzumair/mediafusion:latest\n container_name: mediafusion\n hostname: mediafusion\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n environment:\n <<: *common-env\n # CORE APPLICATION SETTINGS\n ADDON_NAME: \"${MEDIAFUSION_ADDON_NAME:-MediaFusion}\" # The name of the MediaFusion addon\n VERSION: \"1.0.0\" # The version of the MediaFusion addon\n DESCRIPTION: \"MediaFusion | $DOMAIN\" # A brief description of the MediaFusion addon to show on Stremio Addon page\n BRANDING_DESCRIPTION: \"${MEDIAFUSION_BRANDING_DESCRIPTION:-}\" # Additional branding description text\n CONTACT_EMAIL: \"webmaster@$DOMAIN\" # The contact email for the MediaFusion addon\n HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where MediaFusion is hosted (required)\n POSTER_HOST_URL: \"https://mediafusion.$DOMAIN\" # The URL where poster images are served from (default: Same as host_url)\n SECRET_KEY: \"${MEDIAFUSION_SECRET_KEY:-c75ac92df70c4383c8d1bb37f65454f9}\" # A 32-character secret key for securely signing the session (required)\n API_PASSWORD: \"$SUDO_PASSWORD\" # The password for accessing the API endpoints (required)\n LOGGING_LEVEL: \"INFO\" # The logging level of the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)\n LOGO_URL: \"${MEDIAFUSION_LOGO_URL:-}\" # The URL of the MediaFusion logo\n IS_PUBLIC_INSTANCE: \"${MEDIAFUSION_IS_PUBLIC_INSTANCE:-False}\" # Set to True for community instances that don't require authentication except for /scraper endpoint\n MIN_SCRAPING_VIDEO_SIZE: \"${MEDIAFUSION_MIN_SCRAPING_VIDEO_SIZE:-26214400}\" # Minimum video size in bytes (25 MB) for scraping\n METADATA_PRIMARY_SOURCE: \"${MEDIAFUSION_METADATA_PRIMARY_SOURCE:-tmdb}\" # Primary source for metadata. Options: \"imdb\" or \"tmdb\"\n # STREAMING PROVIDER SETTINGS\n #DISABLED_PROVIDERS: \"\" # List of disabled streaming providers (p2p, realdebrid, seedr, debridlink, alldebrid, offcloud, pikpak, torbox, premiumize, qbittorrent, stremthru, easydebrid)\n # DATABASE AND CACHE SETTINGS\n MONGO_URI: \"${MEDIAFUSION_MONGO_URI:-mongodb://mongodb:27017/mediafusion}\" # MongoDB connection URI (required)\n DB_MAX_CONNECTIONS: \"${MEDIAFUSION_DB_MAX_CONNECTIONS:-50}\" # Maximum database connections\n REDIS_URL: \"${MEDIAFUSION_REDIS_URL:-redis://redis:6379}\" # Redis service URL for caching and tasks\n REDIS_MAX_CONNECTIONS: \"${MEDIAFUSION_REDIS_MAX_CONNECTIONS:-100}\" # Maximum Redis connections\n # EXTERNAL SERVICE SETTINGS\n# REQUESTS_PROXY_URL: \"${MEDIAFUSION_REQUESTS_PROXY_URL:-}\" # Optional proxy URL for requests\n PLAYWRIGHT_CDP_URL: \"${PLAYWRIGHT_CDP_URL:-ws://browserless:3000?blockAds=true&stealth=true}\" # Playwright CDP service URL\n FLARESOLVERR_URL: \"${FLARESOLVERR_URL:-http://flaresolverr:8191/v1}\" # FlareSolverr service URL\n TMDB_API_KEY: \"$TMDB_API_KEY\" # TMDB API key for metadata fetching\n # PROWLARR SETTINGS\n IS_SCRAP_FROM_PROWLARR: \"True\" # Enable/disable Prowlarr scraping\n PROWLARR_API_KEY: \"$PROWLARR_API_KEY\" # Prowlarr API key\n PROWLARR_URL: \"${PROWLARR_HOST:-http://prowlarr:9696}\" # Prowlarr service URL\n PROWLARR_LIVE_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_LIVE_TITLE_SEARCH:-True}\" # Enable live title search in Prowlarr\n PROWLARR_BACKGROUND_TITLE_SEARCH: \"${MEDIAFUSION_PROWLARR_BACKGROUND_TITLE_SEARCH:-True}\" # Enable background title search\n PROWLARR_SEARCH_QUERY_TIMEOUT: \"${MEDIAFUSION_PROWLARR_SEARCH_QUERY_TIMEOUT:-30}\" # Search query timeout in seconds\n PROWLARR_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS:-10}\" # Max immediate processes\n PROWLARR_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_PROWLARR_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n PROWLARR_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n PROWLARR_FEED_SCRAPE_INTERVAL_HOUR: \"${MEDIAFUSION_PROWLARR_FEED_SCRAPE_INTERVAL_HOUR:-3}\" # Feed scraping interval in hours\n # JACKETT SETTINGS\n IS_SCRAP_FROM_JACKETT: \"True\" # Enable/disable Jackett scraping\n JACKETT_URL: \"${JACKETT_HOST:-http://jackett:9117}\" # Jackett service URL\n JACKETT_API_KEY: \"$JACKETT_API_KEY\" # Jackett API key\n JACKETT_SEARCH_INTERVAL_HOUR: \"72\" # Search interval in hours\n JACKETT_SEARCH_QUERY_TIMEOUT: \"30\" # Search query timeout in seconds\n JACKETT_IMMEDIATE_MAX_PROCESS: \"10\" # Max immediate processes\n JACKETT_IMMEDIATE_MAX_PROCESS_TIME: \"15\" # Max process time in seconds\n JACKETT_LIVE_TITLE_SEARCH: \"True\" # Enable live title search\n JACKETT_BACKGROUND_TITLE_SEARCH: \"True\" # Enable background title search\n JACKETT_FEED_SCRAPE_INTERVAL_HOUR: \"3\" # Feed scraping interval in hours\n # ZILEAN SETTINGS\n IS_SCRAP_FROM_ZILEAN: \"True\" # Enable/disable Zilean scraping\n ZILEAN_SEARCH_INTERVAL_HOUR: \"24\" # Search interval in hours\n ZILEAN_URL: \"${ZILEAN_URL:-https://zilean.elfhosted.com}\" # Zilean service URL (https://zilean.elfhosted.com has zero rate limits)\n # TORRENTIO SETTINGS\n IS_SCRAP_FROM_TORRENTIO: \"True\" # Enable/disable Torrentio scraping\n TORRENTIO_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_TORRENTIO_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n TORRENTIO_URL: \"${TORRENTIO_URL:-https://torrentio.strem.fun}\" # Torrentio service URL\n # MEDIAFUSION SETTINGS\n IS_SCRAP_FROM_MEDIAFUSION: \"True\" # Enable/disable MediaFusion scraping\n MEDIAFUSION_SEARCH_INTERVAL_DAYS: \"${MEDIAFUSION_MEDIAFUSION_SEARCH_INTERVAL_DAYS:-3}\" # Search interval in days\n MEDIAFUSION_URL: \"${MEDIAFUSION_URL:-https://mediafusion.elfhosted.com}\" # MediaFusion service URL\n SYNC_DEBRID_CACHE_STREAMS: \"${MEDIAFUSION_SYNC_DEBRID_CACHE_STREAMS:-False}\" # Enable syncing debrid cache streams\n # BT4G SETTINGS\n IS_SCRAP_FROM_BT4G: \"True\" # Enable/disable BT4G scraping\n BT4G_URL: \"${BT4G_URL:-https://bt4gprx.com}\" # BT4G service URL\n BT4G_SEARCH_INTERVAL_HOUR: \"${MEDIAFUSION_BT4G_SEARCH_INTERVAL_HOUR:-72}\" # Search interval in hours\n BT4G_SEARCH_TIMEOUT: \"${MEDIAFUSION_BT4G_SEARCH_TIMEOUT:-10}\" # Search timeout in seconds\n BT4G_IMMEDIATE_MAX_PROCESS: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS:-15}\" # Max immediate processes\n BT4G_IMMEDIATE_MAX_PROCESS_TIME: \"${MEDIAFUSION_BT4G_IMMEDIATE_MAX_PROCESS_TIME:-15}\" # Max process time in seconds\n # TELEGRAM SETTINGS\n TELEGRAM_BOT_TOKEN: \"$TELEGRAM_BOT_TOKEN\" # Telegram bot token for notifications about contribution streams\n TELEGRAM_CHAT_ID: \"$TELEGRAM_CHAT_ID\" # Telegram chat ID for notifications\n # CONTENT FILTERING SETTINGS\n ADULT_CONTENT_REGEX_KEYWORDS: \"\\\\b(porn|xxx|sex|nude|naked|erotic|fetish|bdsm|milf|anal|oral|gangbang|threesome|masturbat|orgasm|cumshot|blowjob|handjob|footjob|creampie|facial|bukkake|hentai|yaoi|yuri|ecchi|doujin|camgirl|webcam|stripper|escort|prostitut|brothel|redlight|peepshow|voyeur|exhibitionist|swinger|orgy|hardcore|softcore|playboy|penthouse|hustler|brazzers|bangbros|realitykings|naughtyamerica|digitalplayground|wickedpictures|evilangel|kink|publicagent|fakehub|teamskeet|mofos|twistys|metart|sexart|x-art|joymii|nubiles|18eighteen|lolita|incest|taboo|kinky|slutty|horny|sexy|sensual|seductive|raw|perverted|depraved)\\\\b\" # Regex pattern for filtering adult content\n ADULT_CONTENT_FILTER_IN_TORRENT_TITLE: \"True\" # Enable adult content filtering in torrent titles\n # FEATURE TOGGLES\n IS_SCRAP_FROM_YTS: \"True\" # Enable/disable YTS scraping\n ENABLE_RATE_LIMIT: \"True\" # Enable/disable rate limiting\n VALIDATE_M3U8_URLS_LIVENESS: \"True\" # Validate M3U8 URLs for liveness\n STORE_STREMTHRU_MAGNET_CACHE: \"False\" # Store StremThru magnet cache\n SCRAPE_WITH_AKA_TITLES: \"True\" # Include alternative titles in scraping\n ENABLE_FETCHING_TORRENT_METADATA_FROM_P2P: \"False\" # Enable fetching torrent metadata from P2P (Caution: may raise DMCA issues) # TODO: Enable this\n # TIME-RELATED SETTINGS\n META_CACHE_TTL: \"1800\" # Metadata cache TTL in seconds (Default: 1800 seconds = 30 minutes)\n WORKER_MAX_TASKS_PER_CHILD: \"20\" # Max tasks per worker child process\n # SCHEDULER SETTINGS\n DISABLE_ALL_SCHEDULER: \"False\" # Disable all schedulers\n BACKGROUND_SEARCH_INTERVAL_HOURS: \"72\" # Background search interval in hours\n BACKGROUND_SEARCH_CRONTAB: \"*/5 * * * *\" # Background search schedule\n TAMILMV_SCHEDULER_CRONTAB: \"0 */3 * * *\" # TamilMV scheduler crontab expression\n TAMIL_BLASTERS_SCHEDULER_CRONTAB: \"0 */6 * * *\" # Tamil Blasters scheduler crontab expression\n FORMULA_TGX_SCHEDULER_CRONTAB: \"*/30 * * * *\" # Formula TGX scheduler crontab expression\n NOWMETV_SCHEDULER_CRONTAB: \"0 0 * * *\" # NowMeTV scheduler crontab expression\n NOWSPORTS_SCHEDULER_CRONTAB: \"0 10 * * *\" # NowSports scheduler crontab expression\n TAMILULTRA_SCHEDULER_CRONTAB: \"0 8 * * *\" # TamilUltra scheduler crontab expression\n VALIDATE_TV_STREAMS_IN_DB_CRONTAB: \"0 */6 * * *\" # Validate TV streams in DB crontab expression\n SPORT_VIDEO_SCHEDULER_CRONTAB: \"*/20 * * * *\" # Sport video scheduler crontab expression\n DLHD_SCHEDULER_CRONTAB: \"25 * * * *\" # DLHD scheduler crontab expression\n MOTOGP_TGX_SCHEDULER_CRONTAB: \"0 5 * * *\" # MotoGP TGX scheduler crontab expression\n UPDATE_SEEDERS_CRONTAB: \"0 0 * * *\" # Update seeders crontab expression\n ARAB_TORRENTS_SCHEDULER_CRONTAB: \"0 0 * * *\" # Arab Torrents scheduler crontab expression\n WWE_TGX_SCHEDULER_CRONTAB: \"10 */3 * * *\" # WWE TGX scheduler crontab expression\n UFC_TGX_SCHEDULER_CRONTAB: \"30 */3 * * *\" # UFC TGX scheduler crontab expression\n MOVIES_TV_TGX_SCHEDULER_CRONTAB: \"0 * * * *\" # Movies TV TGX scheduler crontab expression\n PROWLARR_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Prowlarr feed scraper crontab expression\n JACKETT_FEED_SCRAPER_CRONTAB: \"0 */3 * * *\" # Jackett feed scraper crontab expression\n CLEANUP_EXPIRED_SCRAPER_TASK_CRONTAB: \"0 * * * *\" # Cleanup expired scraper task crontab expression\n CLEANUP_EXPIRED_CACHE_TASK_CRONTAB: \"0 0 * * *\" # Cleanup expired cache task crontab expression\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediafusion.rule: 'Host(`mediafusion.$DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DOMAIN`) || Host(`mediafusion.$DUCKDNS_DOMAIN`) || Host(`mediafusion.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediafusion.loadbalancer.server.port: 8000\n homepage.group: Stremio Addons\n homepage.name: MediaFusion\n homepage.icon: mediafusion.png\n homepage.href: https://mediafusion.$DOMAIN/\n homepage.description: MediaFusion is a AIO media stream aggregator addon for Stremio/Kodi.\n cpu_shares: 10\n mem_reservation: 512M\n deploy:\n resources:\n reservations:\n cpus: 0.01\n memory: 512M\n limits:\n cpus: 1\n memory: 1G\n healthcheck:\n test: [\"CMD-SHELL\", \"curl -f http://127.0.0.1:8000/health > /dev/null 2>&1 || exit 1\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: \"1m\"\n restart: always\n mediaflow-proxy:\n image: mhdzumair/mediaflow-proxy\n container_name: mediaflow-proxy\n hostname: mediaflow-proxy\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n expose:\n - ${MEDIAFLOW_PROXY_PORT:-8888}\n environment:\n <<: *common-env\n PORT: ${MEDIAFLOW_PROXY_PORT:-8888}\n API_PASSWORD: $MEDIAFLOW_PROXY_API_PASSWORD\n ENABLE_STREAMING_PROGRESS: \"false\"\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.mediaflow-proxy.middlewares: nginx-auth@file\n traefik.http.routers.mediaflow-proxy.rule: 'Host(`mediaflow-proxy.$DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DOMAIN`) || Host(`mediaflow-proxy.$DUCKDNS_DOMAIN`) || Host(`mediaflow-proxy.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.mediaflow-proxy.loadbalancer.server.port: ${MEDIAFLOW_PROXY_PORT:-8888}\n homepage.name: MediaFlow Proxy\n homepage.icon: mediaflow-proxy.png\n homepage.description: MediaFlow Proxy is a M3U/HSTS proxy for Stremio/Kodi.\n homepage.group: Stremio Addons\n homepage.href: https://mediaflow-proxy.$DOMAIN/\n healthcheck:\n test: [\"CMD-SHELL\", \"python3 -c \\\"import socket; s=socket.socket(); s.connect(('127.0.0.1', ${MEDIAFLOW_PROXY_PORT:-8888})); print('Healthcheck passed')\\\"\"]\n interval: 1m\n timeout: 10s\n retries: 5\n start_period: 10s\n restart: always\n\n stremthru:\n depends_on:\n redis:\n condition: service_healthy\n image: muniftanjim/stremthru:latest\n container_name: stremthru\n hostname: stremthru\n extra_hosts: *common-hostname-aliases\n networks:\n publicnet: {}\n warp-nat-net:\n gw_priority: 1\n volumes:\n - ${CONFIG_PATH:-./volumes}/stremio/addons/stremthru/app/data:/app/data\n environment:\n <<: *common-env\n STREMTHRU_LOG_LEVEL: ${STREMTHRU_LOG_LEVEL:-INFO} # DEBUG, INFO, WARN, ERROR\n STREMTHRU_LOG_FORMAT: ${STREMTHRU_LOG_FORMAT:-text} # json, text\n STREMTHRU_PROXY_AUTH: ${STREMTHRU_PROXY_AUTH:-admin:admin}\n STREMTHRU_AUTH_ADMIN: ${STREMTHRU_AUTH_ADMIN:-admin}\n\n # A list of store credentials per user. In a comma separated list of username:store_name:store_token.\n # You can also use * as the username to apply to all users.\n # This lets you use different API keys for different users.\n # e.g. something like *:realdebrid:abc...xyz would mean for all users, this API key would be used for Real Debrid.\n # (Not needed if using StremThru as a external proxy within other apps/addons like AIOStreams)\n STREMTHRU_STORE_AUTH: $STREMTHRU_STORE_AUTH\n\n # A list of proxy configurations per store. This lets you control what is proxied based on what store its from.\n # The format is a comma separated list of <store>:<true/false>\n # You can use * to apply to all stores.\n # e.g. *:true,premiumize:false would mean all stores are proxied, except for premiumize.\n # (Does not affect proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_STORE_CONTENT_PROXY: ${STREMTHRU_STORE_CONTENT_PROXY:-*:true,premiumize:false}\n\n # This is the maximum number of connections to the proxy per user.\n # In the format of a comma separated list of <username>:<number of connections> pairs.\n # e.g. user1:10,user2:5 would mean user1 can have 10 connections, and user2 can have 5 connections.\n # If you want to set a limit for all users, use * as the username.\n # A connection limit of 0 means no limit.\n # (This DOES affect the proxying of stream links generated by other apps/addons like AIOStreams)\n STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT: ${STREMTHRU_CONTENT_PROXY_CONNECTION_LIMIT:-0}\n # ================================\n # This lets you enable or disable features in StremThru.\n # The format is a comma separated list of features, optionally prefixed with a - to disable them.\n # List of features:\n # - anime\n # - dmm_hashlist - Whether to scrape DMM hashlists for torrents.\n # - imdb_title\n # - stremio_list\n # - stremio_p2p\n # - stremio_sidekick\n # - stremio_store\n # - stremio_torz\n # - stremio_wrap\n # e.g. -dmm_hashlist,-imdb_title would disable the DMM hashlists and IMDB title features.\n # ================================\n STREMTHRU_FEATURE: '${STREMTHRU_FEATURE:-dmm_hashlist,imdb_title,stremio_list,stremio_sidekick,stremio_store,stremio_torz,stremio_wrap}'\n STREMTHRU_DATABASE_URI: ${STREMTHRU_DATABASE_URI:-sqlite://./data/stremthru.db}\n STREMTHRU_REDIS_URI: ${REDIS_HOST:-redis://redis:6379}\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.stremthru.rule: 'Host(`stremthru.$DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DOMAIN`) || Host(`stremthru.$DUCKDNS_DOMAIN`) || Host(`stremthru.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.stremthru.loadbalancer.server.port: 8080\n homepage.group: Stremio Addons\n homepage.name: StremThru\n homepage.icon: stremthru.png\n homepage.href: https://stremthru.$DOMAIN/\n homepage.description: StremThru is tunnel/proxy for debrid services.\n restart: always\n\n gptr:\n build:\n #context: https://github.com/th3w1zard1/gpt-researcher.git#master # :/frontend/nextjs\n context: ${SRC_PATH:-./src}/gpt-researcher\n dockerfile: Dockerfile.fullstack\n image: th3w1zard1/ai-researchwizard:latest\n container_name: gptr\n hostname: gptr\n extra_hosts: *common-hostname-aliases\n networks:\n - publicnet\n expose:\n - 3000 # Nginx-proxied access to GPTR.\n - 3001 # Internal NextJS GPTR site\n - 8000 # Static GPTR\n - 8080 # MCP Server Port\n volumes:\n - ${CONFIG_PATH:-./volumes}/gptr/logs:/usr/src/app/logs\n - ${CONFIG_PATH:-./volumes}/gptr/outputs:/usr/src/app/outputs\n - ${CONFIG_PATH:-./volumes}/gptr/reports:/usr/src/app/reports\n stdin_open: true\n environment:\n ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY\n BRAVE_API_KEY: $BRAVE_API_KEY\n DEEPSEEK_API_KEY: $DEEPSEEK_API_KEY\n EXA_API_KEY: $EXA_API_KEY\n FIRECRAWL_API_KEY: $FIRECRAWL_API_KEY\n FIRE_CRAWL_API_KEY: $FIRE_CRAWL_API_KEY\n GEMINI_API_KEY: $GEMINI_API_KEY\n GLAMA_API_KEY: $GLAMA_API_KEY\n GROQ_API_KEY: $GROQ_API_KEY\n HF_TOKEN: $HF_TOKEN\n HUGGINGFACE_ACCESS_TOKEN: $HUGGINGFACE_ACCESS_TOKEN\n HUGGINGFACE_API_TOKEN: $HUGGINGFACE_API_TOKEN\n LANGCHAIN_API_KEY: $LANGCHAIN_API_KEY\n MISTRAL_API_KEY: $MISTRAL_API_KEY\n MISTRALAI_API_KEY: $MISTRALAI_API_KEY\n OPENAI_API_KEY: $OPENAI_API_KEY\n OPENROUTER_API_KEY: $OPENROUTER_API_KEY\n PERPLEXITY_API_KEY: $PERPLEXITY_API_KEY\n PERPLEXITYAI_API_KEY: $PERPLEXITYAI_API_KEY\n REPLICATE_API_KEY: $REPLICATE_API_KEY\n REVID_API_KEY: $REVID_API_KEY\n SAMBANOVA_API_KEY: $SAMBANOVA_API_KEY\n SEARCH1API_KEY: $SEARCH1API_KEY\n SERPAPI_API_KEY: $SERPAPI_API_KEY\n TAVILY_API_KEY: $TAVILY_API_KEY\n TOGETHERAI_API_KEY: $TOGETHERAI_API_KEY\n UNIFY_API_KEY: $UNIFY_API_KEY\n UPSTAGE_API_KEY: $UPSTAGE_API_KEY\n UPSTAGEAI_API_KEY: $UPSTAGEAI_API_KEY\n YOU_API_KEY: $YOU_API_KEY\n CHOKIDAR_USEPOLLING: true\n LOGGING_LEVEL: DEBUG\n NEXT_PUBLIC_GA_MEASUREMENT_ID: $NEXT_PUBLIC_GA_MEASUREMENT_ID\n NEXT_PUBLIC_GPTR_API_URL: https://gptr.$DOMAIN\n LANGSMITH_TRACING: true\n LANGSMITH_ENDPOINT: https://api.smith.langchain.com\n LANGSMITH_API_KEY: $LANGSMITH_API_KEY\n labels:\n traefik.enable: \"true\"\n traefik.http.routers.gptr.service: gptr\n traefik.http.routers.gptr.rule: 'Host(`gptr-nextjs.$DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-nextjs.$DUCKDNS_DOMAIN`) || Host(`gptr-nextjs.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr.loadbalancer.server.port: 3000\n traefik.http.routers.gptr-legacy.service: gptr-legacy\n traefik.http.routers.gptr-legacy.rule: 'Host(`gptr.$DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr.$DUCKDNS_DOMAIN`) || Host(`gptr.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-legacy.loadbalancer.server.port: 8000\n traefik.http.routers.gptr-mcp.service: gptr-mcp\n traefik.http.routers.gptr-mcp.rule: 'Host(`gptr-mcp.$DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DOMAIN`) || Host(`gptr-mcp.$DUCKDNS_DOMAIN`) || Host(`gptr-mcp.$TS_HOSTNAME.$DUCKDNS_DOMAIN`)'\n traefik.http.services.gptr-mcp.loadbalancer.server.port: 8080\n homepage.group: AI\n homepage.name: AI Research Wizard\n homepage.description: AI Research Wizard is a web scraper and researcher that uses AI to help you find information quickly.\n homepage.icon: gptr.png\n homepage.href: https://gptr.$DOMAIN/\n healthcheck: # docker exec gptr ls -la /bin /usr/bin | grep -E 'curl|wget|nc|telnet|http|python|ncat|nmap'\n test: [\"CMD-SHELL\", \"(wget -qO- http://127.0.0.1:3000 > /dev/null 2>&1 || exit 1) && (wget -qO- http://127.0.0.1:8000 > /dev/null 2>&1 || exit 1) || exit 1\"] # && (wget -qO- http://127.0.0.1:8080 > /dev/null 2>&1) || exit 1\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 2m\n restart: always\n\nnetworks:\n publicnet: # https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge\n external: true # docker network create --driver=bridge --attachable publicnet --subnet=${PUBLICNET_SUBNET:-10.76.0.0/16} --gateway=${PUBLICNET_GATEWAY:-10.76.0.1} --ip-range=${PUBLICNET_IP_RANGE:-10.76.0.0/16} -o com.docker.network.bridge.name=br_publicnet\n attachable: true\n driver: bridge\n # uncomment below part of publicnet if you aren't creating it externally.\n name: publicnet\n driver_opts:\n com.docker.network.bridge.name: \"br_publicnet\"\n ipam:\n config:\n - subnet: ${PUBLICNET_SUBNET:-10.76.0.0/16}\n gateway: ${PUBLICNET_GATEWAY:-10.76.0.1}\n ip_range: ${PUBLICNET_IP_RANGE:-10.76.0.0/16}\n warp-nat-net:\n external: true\n attachable: true\n driver: bridge\n"}}}}