diff --git a/auto/compose.aiostreams.yaml b/auto/compose.aiostreams.yaml index 9b3bb97..0ee32cd 100644 --- a/auto/compose.aiostreams.yaml +++ b/auto/compose.aiostreams.yaml @@ -1,28 +1,28 @@ services: aiostreams: - image: viren070/aiostreams:latest + image: ghcr.io/viren070/aiostreams:dev container_name: aiostreams restart: unless-stopped expose: - 3000 environment: - - ADDON_PROXY=${ENABLE_PROXY:-false} == "true" && echo ${PROXY_URL} || echo '' + - ADDON_PROXY=${PROXY_URL:-} # only route requests to any strem.fun subdomain through the proxy - ADDON_PROXY_CONFIG=*:false,*.strem.fun:true # only route requests to any strem.fun subdomain through the proxy - - EASYNEWS_PLUS_URL=${ENABLE_EASYNEWS_PLUS:-false} == "true" && echo "http://easynews-plus:1337/" || echo "" - - MEDIAFUSION_URL=${ENABLE_MEDIAFUSION:-false} == "true" && echo "http://mediafusion:8000/" || echo "" - - MEDIAFUSION_API_PASSWORD=${ENABLE_MEDIAFUSION:-false} == "true" && echo ${MEDIAFUSION_API_PASSWORD} || echo "" + - EASYNEWS_PLUS_URL=${AIOSTREAMS_EASYNEWS_PLUS_URL:-} + - MEDIAFUSION_URL=${AIOSTREAMS_MEDIAFUSION_URL:-} + - MEDIAFUSION_API_PASSWORD=${MEDIAFUSION_API_PASSWORD:-} - MEDIAFUSION_CONFIG_TIMEOUT=3000 - - COMET_URL=${ENABLE_COMET:-false} == "true" && echo "http://comet:2020/" || echo "" - - FORCE_COMET_HOSTNAME=${ENABLE_COMET:-false} == "true" && echo ${COMET_HOSTNAME} || echo "" - - COMET_INDEXERS=${COMET_INDEXERS:+${COMET_INDEXERS}} - - JACKETTIO_URL=${ENABLE_JACKETTIO:-false} == "true" && echo "http://jackettio:4000/" || echo "" - - STREMIO_JACKETT_URL=${ENABLE_JACKETTIO:-false} == "true" && echo "http://stremio-jackett:3000/" || echo "" - - JACKETT_URL=${ENABLE_JACKETT:-false} == "true" && echo "http://jackett:9117/" || echo "" - - JACKETT_API_KEY=${ENABLE_JACKETT:-false} == "true" && echo ${JACKETT_API_KEY} || echo "" - - JACKETT_INDEXERS=${ENABLE_JACKETT:-false} == "true" && echo ${JACKETT_INDEXERS} || echo "" - - SECRET_KEY=${AIOSTREAMS_SECRET_KEY} # openssl rand -hex 16 + - COMET_URL=${AIOSTREAMS_COMET_URL:-} + - FORCE_COMET_HOSTNAME=${COMET_HOSTNAME:-} + - COMET_INDEXERS=${COMET_INDEXERS:-} + - JACKETTIO_URL=${AIOSTREAMS_JACKETTIO_URL:-} + - STREMIO_JACKETT_URL=${AIOSTREAMS_STREMIO_JACKETT_URL:-} + - JACKETT_URL=${AIOSTREAMS_JACKETT_URL:-} + - JACKETT_API_KEY=${AIOSTREAMS_JACKETT_API_KEY:-} + - JACKETT_INDEXERS=${AIOSTREAMS_JACKETT_INDEXERS:-} + - SECRET_KEY=${AIOSTREAMS_SECRET_KEY} - DEFAULT_TIMEOUT=5000 - - TMDB_API_KEY=${TMDB_API_KEY} + - TMDB_API_KEY=${TMDB_API_KEY:-} labels: - "traefik.enable=true" - "traefik.http.routers.aio.rule=Host(`${AIOSTREAMS_HOSTNAME}`)" diff --git a/auto/compose.comet.yaml b/auto/compose.comet.yaml new file mode 100644 index 0000000..48b6e15 --- /dev/null +++ b/auto/compose.comet.yaml @@ -0,0 +1,54 @@ +services: + comet: + container_name: comet + image: g0ldyy/comet:latest + restart: unless-stopped + expose: + - 2020 + environment: + - FASTAPI_PORT=2020 + - FASTAPI_HOST=0.0.0.0 + - FASTAPI_WORKERS=1 + - ADDON_NAME=Comet + - ADDON_ID=stremio.comet.fast + - DASHBOARD_ADMIN_PASSWORD=${COMET_ADMIN_PASSWORD} + - DATABASE_TYPE=postgresql + - DATABASE_URL=${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/comet + - CACHE_TTL=86400 # 1 day + - DEBRID_PROXY_URL=http://warp:1080 + - INDEXER_MANAGER_TYPE=prowlarr # or jackett + - INDEXER_MANAGER_URL=http://prowlarr:9696 # or http://jackett:9117 + - INDEXER_MANAGER_API_KEY=${PROWLARR_API_KEY:-} # or ${JACKETT_API_KEY:-} + - INDEXER_MANAGER_TIMEOUT=60 + - INDEXER_MANAGER_INDEXERS=${COMET_INDEXERS:-[]} # comma separated list of indexer ids + - GET_TORRENT_TIMEOUT=5 + - ZILEAN_URL=http://zilean:8181 + - ZILEAN_TAKE_FIRST=500 + - SCRAPE_TORRENTIO=False + - SCRAPE_MEDIAFUSION=False + - MEDIAFUSION_URL=https://mediafusion.elfhosted.com + - PROXY_DEBRID_STREAM=False + - TITLE_MATCH_CHECK=True + - REMOVE_ADULT_CONTENT=True + labels: + - "traefik.enable=true" + - "traefik.http.routers.comet.rule=Host(`${COMET_HOSTNAME}`)" + - "traefik.http.routers.comet.entrypoints=websecure" + - "traefik.http.routers.comet.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Comet" + - "flame.url=https://${COMET_HOSTNAME}" + depends_on: + postgres: + condition: service_healthy + healthcheck: + test: wget -qO- http://127.0.0.1:2020/health + interval: 1m + timeout: 10s + retries: 5 + start_period: 10s + networks: + - addon_network +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.dozzle.yaml b/auto/compose.dozzle.yaml new file mode 100644 index 0000000..cb2fa71 --- /dev/null +++ b/auto/compose.dozzle.yaml @@ -0,0 +1,34 @@ +services: + dozzle: + image: amir20/dozzle:latest + container_name: dozzle + restart: unless-stopped + expose: + - 8080 + environment: + DOZZLE_ENABLE_ACTIONS: "true" + DOZZLE_NO_ANALYTICS: "true" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + labels: + - "traefik.enable=true" + - "traefik.http.routers.dozzle.rule=Host(`${DOZZLE_HOSTNAME}`)" + - "traefik.http.routers.dozzle.entrypoints=websecure" + - "traefik.http.routers.dozzle.tls.certresolver=myresolver" + - "traefik.http.routers.dozzle.middlewares=dozzle-auth" + - "traefik.http.middlewares.dozzle-auth.basicauth.users=${DOZZLE_USERNAME}:${DOZZLE_HASHED_PASSWORD}" + - "flame.type=app" + - "flame.name=Dozzle" + - "flame.url=https://${DOZZLE_HOSTNAME}" + healthcheck: + test: ["CMD", "/dozzle", "healthcheck"] + interval: 3s + timeout: 30s + retries: 5 + start_period: 30s + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.easynews-plus.yaml b/auto/compose.easynews-plus.yaml new file mode 100644 index 0000000..3070507 --- /dev/null +++ b/auto/compose.easynews-plus.yaml @@ -0,0 +1,21 @@ +services: + easynews-plus: + image: ghcr.io/sleeyax/stremio-easynews-addon:latest + container_name: easynews-plus + restart: unless-stopped + expose: + - 1337 + labels: + - "traefik.enable=true" + - "traefik.http.routers.easynews.rule=Host(`${EASYNEWS_PLUS_HOSTNAME}`)" + - "traefik.http.routers.easynews.entrypoints=websecure" + - "traefik.http.routers.easynews.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Easynews+" + - "flame.url=https://${EASYNEWS_PLUS_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.flame.yaml b/auto/compose.flame.yaml new file mode 100644 index 0000000..c49bf9d --- /dev/null +++ b/auto/compose.flame.yaml @@ -0,0 +1,23 @@ +services: + flame: + image: pawelmalak/flame:multiarch + container_name: flame + restart: unless-stopped + expose: + - 5005 + environment: + - PASSWORD=${FLAME_PASSWORD} + labels: + - "traefik.enable=true" + - "traefik.http.routers.flame.rule=Host(`${FLAME_HOSTNAME}`)" + - "traefik.http.routers.flame.entrypoints=websecure" + - "traefik.http.routers.flame.tls.certresolver=myresolver" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./data/flame:/app/data + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.flaresolverr.yaml b/auto/compose.flaresolverr.yaml new file mode 100644 index 0000000..e1a3b8e --- /dev/null +++ b/auto/compose.flaresolverr.yaml @@ -0,0 +1,16 @@ +services: + flaresolverr: + image: ghcr.io/flaresolverr/flaresolverr:latest + container_name: flaresolverr + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8191/health"] + interval: 30s + timeout: 10s + retries: 3 + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.gluetun.yaml b/auto/compose.gluetun.yaml new file mode 100644 index 0000000..e1634ea --- /dev/null +++ b/auto/compose.gluetun.yaml @@ -0,0 +1,37 @@ +services: + gluetun: + image: qmcgaw/gluetun + container_name: gluetun + restart: unless-stopped + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + ports: + - 127.0.0.1:8888:8888/tcp # HTTP proxy + environment: + - VPN_SERVICE_PROVIDER=protonvpn + - VPN_TYPE=wireguard + - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} + - SERVER_COUNTRIES=Netherlands + - FREE_ONLY=true + # Server list updater + # See https://github.com/qdm12/gluetun-wiki/blob/main/setup/servers.md#update-the-vpn-servers-list + - UPDATER_PERIOD=24h + - HTTPPROXY=on + - HTTPPROXY_LISTENING_ADDRESS=:8888 + - HTTPPROXY_STEALTH=on + volumes: + - gluetun-data:/gluetun + healthcheck: + test: ["CMD", "/gluetun-entrypoint", "healthcheck"] + interval: 60s + timeout: 5s + retries: 3 + start_period: 1m + networks: + - addon_network + +networks: + addon_network: + external: true diff --git a/auto/compose.jackett.yaml b/auto/compose.jackett.yaml new file mode 100644 index 0000000..18b52f1 --- /dev/null +++ b/auto/compose.jackett.yaml @@ -0,0 +1,27 @@ +services: + jackett: + image: linuxserver/jackett:latest + container_name: jackett + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TZ:-UTC} # Add timezone support + expose: + - 9117 + volumes: + - ./data/jackett:/config + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.jackett.rule=Host(`${JACKETT_HOSTNAME}`)" + - "traefik.http.routers.jackett.entrypoints=websecure" + - "traefik.http.routers.jackett.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Jackett" + - "flame.url=https://${JACKETT_HOSTNAME}" + healthcheck: + test: curl -f http://localhost:9117/health + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s \ No newline at end of file diff --git a/auto/compose.jackettio.yaml b/auto/compose.jackettio.yaml new file mode 100644 index 0000000..e76656f --- /dev/null +++ b/auto/compose.jackettio.yaml @@ -0,0 +1,27 @@ +services: + jackettio: + image: arvida42/jackettio:latest + container_name: jackettio + restart: unless-stopped + expose: + - 4000 + environment: + - JACKETT_URL=http://jackett:9117 + - JACKETT_API_KEY=${JACKETT_API_KEY:-} + - TMDB_ACCESS_TOKEN=${TMDB_ACCESS_TOKEN} + volumes: + - ./data/jackettio:/data + labels: + - "traefik.enable=true" + - "traefik.http.routers.jackettio.rule=Host(`${JACKETTIO_HOSTNAME}`)" + - "traefik.http.routers.jackettio.entrypoints=websecure" + - "traefik.http.routers.jackettio.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Jackettio" + - "flame.url=https://${JACKETTIO_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.mediaflow.yaml b/auto/compose.mediaflow.yaml new file mode 100644 index 0000000..c04d025 --- /dev/null +++ b/auto/compose.mediaflow.yaml @@ -0,0 +1,25 @@ +services: + mediaflow-proxy: + image: mhdzumair/mediaflow-proxy + container_name: mediaflow-proxy + restart: unless-stopped + expose: + - 8888 + environment: + API_PASSWORD: ${MEDIAFLOW_API_PASSWORD} + PROXY_URL: ${HTTP_PROXY:-} + TRANSPORT_ROUTES: '{ "https://torrentio.strem.fun": { "proxy": true } }' + labels: + - "traefik.enable=true" + - "traefik.http.routers.mediaflow.rule=Host(`${MEDIAFLOW_HOSTNAME}`)" + - "traefik.http.routers.mediaflow.entrypoints=websecure" + - "traefik.http.routers.mediaflow.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=MediaFlow Proxy" + - "flame.url=https://${MEDIAFLOW_HOSTNAME}" + healthcheck: + test: python3 -c "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8888/health').read().decode())" + interval: 1m + timeout: 10s + retries: 5 + start_period: 10s \ No newline at end of file diff --git a/auto/compose.mediafusion.yaml b/auto/compose.mediafusion.yaml new file mode 100644 index 0000000..934a4c2 --- /dev/null +++ b/auto/compose.mediafusion.yaml @@ -0,0 +1,68 @@ +services: + mediafusion: + image: mhdzumair/mediafusion:latest + container_name: mediafusion + restart: unless-stopped + expose: + - 8000 + environment: + - HOST_URL=https://${MEDIAFUSION_HOSTNAME} + - POSTER_HOST_URL=https://${MEDIAFUSION_HOSTNAME} + - MONGO_URI=mongodb://mongodb:27017/mediafusion + - REDIS_URL=redis://redis:6379 + - IS_SCRAP_FROM_TORRENTIO=true + - IS_SCRAP_FROM_MEDIAFUSION=true + - IS_SCRAP_FROM_ZILEAN=true + - IS_SCRAP_FROM_PROWLARR=true + - IS_SCRAP_FROM_JACKETT=true + - IS_SCRAP_FROM_YTS=false + - PROWLARR_API_KEY=${PROWLARR_API_KEY:-} + - PROWLARR_URL=http://prowlarr:9696 + - PROWLARR_IMMEDIATE_MAX_PROCESS=30 + - PROWLARR_IMMEDIATE_MAX_PROCESS_TIME=30 + - PROWLARR_SEARCH_INTERVAL_HOUR=24 + - PROWLARR_LIVE_TITLE_SEARCH=true + - JACKETT_URL=http://jackett:9117 + - JACKETT_API_KEY=${JACKETT_API_KEY:-} + - JACKETT_IMMEDIATE_MAX_PROCESS=30 + - JACKETT_IMMEDIATE_MAX_PROCESS_TIME=30 + - JACKETT_SEARCH_INTERVAL_HOUR=24 + - JACKETT_LIVE_TITLE_SEARCH=true + - ENABLE_RATE_LIMIT=false + - TORRENTIO_URL=https://torrentio.strem.fun + - MEDIAFUSION_URL=https://mediafusion.elfhosted.com + - ZILEAN_URL=http://zilean:8181 + - STORE_STREMTHRU_MAGNET_CACHE=false + - REQUESTS_PROXY_URL=${HTTP_PROXY_URL:-} + - FLARESOLVERR_URL=http://flaresolverr:8191 + - TMDB_API_KEY=${TMDB_API_KEY} # https://www.themoviedb.org/settings/api + - SECRET_KEY=${MEDIAFUSION_SECRET_KEY} # openssl rand -hex 32 + - API_PASSWORD=${MEDIAFUSION_API_PASSWORD} # random password for API +# - LOGGING_LEVEL="DEBUG" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 1m + timeout: 10s + retries: 5 + start_period: 10s + depends_on: + mongodb: + condition: service_healthy + redis: + condition: service_healthy + warp: + condition: service_healthy + labels: + - "traefik.enable=true" + - "traefik.http.routers.mediafusion.rule=Host(`${MEDIAFUSION_HOSTNAME}`)" + - "traefik.http.routers.mediafusion.entrypoints=websecure" + - "traefik.http.routers.mediafusion.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=MediaFusion" + - "flame.url=https://${MEDIAFUSION_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.mongodb.yaml b/auto/compose.mongodb.yaml new file mode 100644 index 0000000..d5cacbd --- /dev/null +++ b/auto/compose.mongodb.yaml @@ -0,0 +1,22 @@ +services: + mongodb: + image: mongo:latest + container_name: mongodb + restart: unless-stopped + volumes: + - mongodb-data:/data/db + healthcheck: + test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet + interval: 10s + timeout: 10s + retries: 5 + start_period: 40s + networks: + - addon_network + +networks: + addon_network: + external: true + +volumes: + mongodb-data: \ No newline at end of file diff --git a/auto/compose.nzbhydra2.yaml b/auto/compose.nzbhydra2.yaml new file mode 100644 index 0000000..82f6050 --- /dev/null +++ b/auto/compose.nzbhydra2.yaml @@ -0,0 +1,28 @@ +services: + nzbhydra2: + container_name: nzbhydra2 + image: ghcr.io/hotio/nzbhydra2:latest + expose: + - 5076 + environment: + - PUID=1000 + - PGID=1000 + - UMASK=002 + - TZ=${TZ:-UTC} + volumes: + - ./data/nzbhydra/config:/config + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.nzbhydra2.rule=Host(`${NZBHYDRA2_HOSTNAME}`)" + - "traefik.http.routers.nzbhydra2.entrypoints=websecure" + - "traefik.http.routers.nzbhydra2.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=NZBHydra2" + - "flame.url=https://${NZBHYDRA2_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.plausible.yaml b/auto/compose.plausible.yaml new file mode 100644 index 0000000..946f7e6 --- /dev/null +++ b/auto/compose.plausible.yaml @@ -0,0 +1,64 @@ +services: + plausible_db: + image: postgres:16-alpine + restart: unless-stopped + container_name: plausible-db + volumes: + - plausible-db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + start_period: 1m + + plausible_events_db: + image: clickhouse/clickhouse-server:24.3.3.102-alpine + restart: unless-stopped + container_name: plausible-events-db + volumes: + - plausible-event-db:/var/lib/clickhouse + - plausible-event-logs:/var/log/clickhouse-server + - ./data/plausible/clickhouse/logs.xml:/etc/clickhouse-server/config.d/logs.xml:ro + - ./data/plausible/clickhouse/ipv4-only.xml:/etc/clickhouse-server/config.d/ipv4-only.xml:ro + - ./data/plausible/clickhouse/low-resources.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro + ulimits: + nofile: + soft: 262144 + hard: 262144 + healthcheck: + test: ["CMD-SHELL", "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1"] + start_period: 1m + + plausible: + image: ghcr.io/plausible/community-edition:latest + container_name: plausible + restart: unless-stopped + command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" + depends_on: + plausible_db: + condition: service_healthy + plausible_events_db: + condition: service_healthy + volumes: + - plausible-data:/var/lib/plausible + ulimits: + nofile: + soft: 65535 + hard: 65535 + expose: + - 8000 + environment: + TMPDIR: /var/lib/plausible/tmp + BASE_URL: https://${PLAUSIBLE_HOSTNAME} + SECRET_KEY_BASE: ${PLAUSIBLE_SECRET_KEY_BASE} + HTTP_PORT: 8000 + labels: + - "traefik.enable=true" + - "traefik.http.routers.plausible.rule=Host(`${PLAUSIBLE_HOSTNAME}`)" + - "traefik.http.routers.plausible.entrypoints=websecure" + - "traefik.http.routers.plausible.tls.certresolver=myresolver" + - "traefik.http.services.plausible.loadbalancer.server.port=8000" + - "flame.type=app" + - "flame.name=Plausible" + - "flame.url=https://${PLAUSIBLE_HOSTNAME}" \ No newline at end of file diff --git a/auto/compose.postgres.yaml b/auto/compose.postgres.yaml new file mode 100644 index 0000000..442e335 --- /dev/null +++ b/auto/compose.postgres.yaml @@ -0,0 +1,27 @@ +services: + postgres: + image: postgres:17.2-alpine + container_name: postgres + restart: unless-stopped + shm_size: 2G + environment: + PGDATA: /var/lib/postgresql/data/pgdata + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: postgres + volumes: + - postgres-data:/var/lib/postgresql/data/pgdata + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U postgres" ] + interval: 10s + timeout: 5s + retries: 5 + networks: + - addon_network + +networks: + addon_network: + external: true + +volumes: + postgres-data: \ No newline at end of file diff --git a/auto/compose.prowlarr.yaml b/auto/compose.prowlarr.yaml new file mode 100644 index 0000000..057f98a --- /dev/null +++ b/auto/compose.prowlarr.yaml @@ -0,0 +1,22 @@ +services: + prowlarr: + image: ghcr.io/hotio/prowlarr:latest + container_name: prowlarr + environment: + - PUID=1000 + - PGID=1000 + - UMASK=002 + - TZ=${TZ:-UTC} # Add timezone support + expose: + - 9696 + volumes: + - ./data/prowlarr:/config + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.prowlarr.rule=Host(`${PROWLARR_HOSTNAME}`)" + - "traefik.http.routers.prowlarr.entrypoints=websecure" + - "traefik.http.routers.prowlarr.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Prowlarr" + - "flame.url=https://${PROWLARR_HOSTNAME}" \ No newline at end of file diff --git a/auto/compose.redis.yaml b/auto/compose.redis.yaml new file mode 100644 index 0000000..8cfb920 --- /dev/null +++ b/auto/compose.redis.yaml @@ -0,0 +1,22 @@ +services: + redis: + image: redis:latest + container_name: redis + restart: unless-stopped + volumes: + - redis-data:/data + command: redis-server --appendonly yes --save 60 1 + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + networks: + - addon_network + +networks: + addon_network: + external: true + +volumes: + redis-data: \ No newline at end of file diff --git a/auto/compose.seanime.yaml b/auto/compose.seanime.yaml new file mode 100644 index 0000000..a8ecb11 --- /dev/null +++ b/auto/compose.seanime.yaml @@ -0,0 +1,34 @@ +services: + seanime: + image: umagistr/seanime + container_name: seanime + command: + volumes: + - /mnt/user/anime:/anime + - /mnt/user/downloads:/downloads + - ./data/seanime:/root/.config/Seanime + expose: + - 43211 + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.seanime.rule=Host(`${SEANIME_HOSTNAME}`)" + - "traefik.http.routers.seanime.entrypoints=websecure" + - "traefik.http.routers.seanime.tls.certresolver=myresolver" + - "traefik.http.routers.seanime.middlewares=seanime-auth" + - "traefik.http.middlewares.seanime-auth.basicauth.users=${SEANIME_USERNAME}:${SEANIME_HASHED_PASSWORD}" + - "flame.type=app" + - "flame.name=Seanime" + - "flame.url=https://${SEANIME_HOSTNAME}" + healthcheck: + test: wget -qO- http://localhost:43211/api/v1/status + interval: 5m + timeout: 10s + retries: 5 + start_period: 10s + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.stremio-jackett.yaml b/auto/compose.stremio-jackett.yaml new file mode 100644 index 0000000..9bce6e4 --- /dev/null +++ b/auto/compose.stremio-jackett.yaml @@ -0,0 +1,25 @@ +services: + stremio-jackett: + image: belmeg/stremio-addon-jackett + container_name: stremio-jackett + restart: unless-stopped + expose: + - 3000 + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TZ:-UTC} # Add timezone support + labels: + - "traefik.enable=true" + - "traefik.http.routers.stremiojackett.rule=Host(`${STREMIO_JACKETT_HOSTNAME}`)" + - "traefik.http.routers.stremiojackett.entrypoints=websecure" + - "traefik.http.routers.stremiojackett.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Stremio-Jackett" + - "flame.url=https://${STREMIO_JACKETT_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.stremio-server.yaml b/auto/compose.stremio-server.yaml new file mode 100644 index 0000000..f13e478 --- /dev/null +++ b/auto/compose.stremio-server.yaml @@ -0,0 +1,21 @@ +services: + stremio-server: + image: stremio/server:latest + container_name: stremio-server + expose: + - 11470 + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.stremio-server.rule=Host(`${STREMIO_SERVER_HOSTNAME}`)" + - "traefik.http.routers.stremio-server.entrypoints=websecure" + - "traefik.http.routers.stremio-server.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Stremio Server" + - "flame.url=https://${STREMIO_SERVER_HOSTNAME}" + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.stremthru.yaml b/auto/compose.stremthru.yaml new file mode 100644 index 0000000..6ae5668 --- /dev/null +++ b/auto/compose.stremthru.yaml @@ -0,0 +1,38 @@ +services: + stremthru: + image: muniftanjim/stremthru:latest-heavy + container_name: stremthru + restart: unless-stopped + expose: + - 8080 + environment: + - STREMTHRU_HTTP_PROXY=http://warp:1080 + - STREMTHRU_TUNNEL=*:false,torrentio.strem.fun:true # Only tunnel hostnames that block VPS access (e.g. Torrentio) + - STREMTHRU_PROXY_AUTH=user1:pass1,user2:pass2 + - STREMTHRU_STORE_AUTH=*:realdebrid:abc...xyz # Add apikey + - STREMTHRU_STORE_TUNNEL=realdebrid:api # Only send RD API via tunnel, not all access (e.g playback) + - STREMTHRU_STORE_CONTENT_PROXY=*:true,easydebrid:false,premiumize:false + - STREMTHRU_PEER_URI=https://stremthru.mooo.com + - STREMTHRU_DATABASE_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/stremthru?sslmode=disable + - STREMTHRU_REDIS_URI=redis://redis:6379 + depends_on: + stremthru-db: + condition: service_healthy + stremthru-cache: + condition: service_healthy + labels: + - "traefik.enable=true" + - "traefik.http.routers.stremthru.rule=Host(`${STREMTHRU_HOSTNAME}`)" + - "traefik.http.routers.stremthru.entrypoints=websecure" + - "traefik.http.routers.stremthru.tls.certresolver=myresolver" + - "traefik.http.services.stremthru.loadbalancer.server.port=8080" + - "flame.type=app" + - "flame.name=StremThru" + - "flame.url=https://${STREMTHRU_HOSTNAME}" + networks: + - addon_network + + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.tmdb-addon.yaml b/auto/compose.tmdb-addon.yaml new file mode 100644 index 0000000..8319098 --- /dev/null +++ b/auto/compose.tmdb-addon.yaml @@ -0,0 +1,34 @@ +services: + tmdb-addon: + image: mrcanelas/tmdb-addon:latest + container_name: tmdb-addon + restart: unless-stopped + expose: + - 3232 + environment: + - PORT=3232 + - TMDB_API=${TMDB_API_KEY} # https://www.themoviedb.org/settings/api + - FANART_API=${FANART_API_KEY} # https://fanart.tv/get-an-api-key/ + - HOST_NAME=tmdb-${TMDB_ADDON_HOSTNAME} + - MONGODB_URI=mongodb://mongodb:27017/tmdb + - META_TTL=604800 # 1 week + - CATALOG_TTL=86400 # 1 day + - NO_CACHE=false # Enable cache, set to true to disable + labels: + - "traefik.enable=true" + - "traefik.http.routers.tmdb.rule=Host(`${TMDB_ADDON_HOSTNAME}`)" + - "traefik.http.routers.tmdb.entrypoints=websecure" + - "traefik.http.routers.tmdb.tls.certresolver=myresolver" + - "traefik.http.services.tmdb.loadbalancer.server.port=3232" + - "flame.type=app" + - "flame.name=TMDB Addon" + - "flame.url=https://${TMDB_ADDON_HOSTNAME}" + depends_on: + mongodb: + condition: service_healthy + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.uptime-kuma.yaml b/auto/compose.uptime-kuma.yaml new file mode 100644 index 0000000..1554b5c --- /dev/null +++ b/auto/compose.uptime-kuma.yaml @@ -0,0 +1,24 @@ +services: + uptime-kuma: + image: louislam/uptime-kuma:latest + container_name: kuma + restart: unless-stopped + expose: + - 3001 + labels: + - "traefik.enable=true" + - "traefik.http.routers.uptime-kuma.rule=Host(`${UPTIME_KUMA_HOSTNAME}`)" + - "traefik.http.routers.uptime-kuma.entrypoints=websecure" + - "traefik.http.routers.uptime-kuma.tls.certresolver=myresolver" + - "flame.type=app" + - "flame.name=Uptime Kuma" + - "flame.url=https://${UPTIME_KUMA_HOSTNAME}" + volumes: + - ./data/kuma:/app/data + - /var/run/docker.sock:/var/run/docker.sock + networks: + - addon_network + +networks: + addon_network: + external: true diff --git a/auto/compose.watchtower.yaml b/auto/compose.watchtower.yaml index b07f749..8647d72 100644 --- a/auto/compose.watchtower.yaml +++ b/auto/compose.watchtower.yaml @@ -29,4 +29,10 @@ services: {{range .Entries -}}{{.Message}}{{"\n"}}{{- end -}} {{- end -}} volumes: - - /var/run/docker.sock:/var/run/docker.sock \ No newline at end of file + - /var/run/docker.sock:/var/run/docker.sock + networks: + - addon_network + +networks: + addon_network: + external: true \ No newline at end of file diff --git a/auto/compose.zilean.yaml b/auto/compose.zilean.yaml new file mode 100644 index 0000000..45b288f --- /dev/null +++ b/auto/compose.zilean.yaml @@ -0,0 +1,33 @@ +services: + zilean: + image: ipromknight/zilean:latest + restart: unless-stopped + container_name: zilean + tty: true + environment: + Zilean__Database__ConnectionString: Host=postgres;Database=zilean;Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD};Include Error Detail=true;Timeout=30;CommandTimeout=3600 + Zilean__Imdb__UseAllCores: true + Zilean__Imdb__UseLucene: true + healthcheck: + test: curl --connect-timeout 10 --silent --show-error --fail http://localhost:8181/healthchecks/ping + timeout: 60s + interval: 30s + retries: 10 + depends_on: + postgres: + condition: service_healthy + volumes: + - zilean-tmp:/tmp + networks: + - addon_network + + + + +networks: + addon_network: + external: true + + + + \ No newline at end of file