From 09f2347f8229c5f11c11b460a7097bcbd133a4a8 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 Mar 2025 20:19:27 -0300 Subject: [PATCH] update invidious --- invidious/invidious-all/docker-compose.yml | 111 ++++++++++++++++----- invidious/invidious-all/haproxy.cfg | 31 +++++- 2 files changed, 112 insertions(+), 30 deletions(-) diff --git a/invidious/invidious-all/docker-compose.yml b/invidious/invidious-all/docker-compose.yml index aa03496..471a888 100644 --- a/invidious/invidious-all/docker-compose.yml +++ b/invidious/invidious-all/docker-compose.yml @@ -6,7 +6,7 @@ include: #- ../invidious-companion/docker-compose.yml # https://docs.docker.com/reference/compose-file/extension/ -x-common-env: &common-env +x-common-invidious-env: &common-invidious-env INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" INVIDIOUS_REDIS_URL: "tcp://valkey:6379" # TODO: Support I2P @@ -17,17 +17,17 @@ x-common-env: &common-env x-common-dep: &common-dep depends_on: ["pgbouncer"] -x-common: &common +x-common: &common-invidious #hostname: invidious env_file: # Env file containing INVIDIOUS_* variables - .env image: "git.nadeko.net/fijxu/invidious:latest" - restart: unless-stopped - mem_limit: 512MB - cpus: 0.35 + restart: always + mem_limit: 780MB + cpus: 0.50 deploy: - replicas: 2 + replicas: 1 volumes: # Volume is not needed anymore since I use pgbouncer now # - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw @@ -44,59 +44,116 @@ x-common-haproxy: &common-haproxy volumes: - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg +x-common-anubis-env: &common-anubis-env + DIFFICULTY: "2" + SERVE_ROBOTS_TXT: "true" + BIND: "0.0.0.0:4000" + METRICS_BIND: "0.0.0.0:9090" + POLICY_FNAME: "/data/cfg/botPolicy.json" + +x-common-anubis: &common-anubis + image: git.nadeko.net/fijxu/anubis:latest + restart: always + volumes: + - "./botPolicy.json:/data/cfg/botPolicy.json:ro" + labels: + - "com.centurylinklabs.watchtower.enable=true" + services: # INVIDIOUS SECTION # invidious: - <<: *common + <<: *common-invidious environment: - <<: *common-env + <<: *common-invidious-env INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-cl2-c.nadeko.net:8443", "public_url": "https://inv-cl2-c.nadeko.net:8443"}]' - INVIDIOUS_EXTERNAL_VIDEOPLAYBACK_PROXY: '["https://inv-cl2.nadeko.net:8443"]' networks: ["invidious"] - #depends_on: ["valkey", "haproxy"] depends_on: ["valkey"] invidious2: - <<: *common + <<: *common-invidious environment: - <<: *common-env + <<: *common-invidious-env INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-ca1-c.nadeko.net", "public_url": "https://inv-ca1-c.nadeko.net"}]' - INVIDIOUS_EXTERNAL_VIDEOPLAYBACK_PROXY: '["https://inv-ca1.nadeko.net"]' networks: ["invidious2"] - #depends_on: ["valkey2", "haproxy"] depends_on: ["valkey2"] invidious3: - <<: *common + <<: *common-invidious environment: - <<: *common-env + <<: *common-invidious-env INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-us2-c.nadeko.net", "public_url": "https://inv-us2-c.nadeko.net"}]' - INVIDIOUS_EXTERNAL_VIDEOPLAYBACK_PROXY: '["https://inv-us2.nadeko.net"]' networks: ["invidious3"] - #depends_on: ["valkey3", "haproxy"] depends_on: ["valkey3"] invidious4: - <<: *common + <<: *common-invidious environment: - <<: *common-env - INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-eu1-c.nadeko.net", "public_url": "https://inv-eu1-c.nadeko.net"}]' - INVIDIOUS_EXTERNAL_VIDEOPLAYBACK_PROXY: '["https://inv-eu1.nadeko.net"]' + <<: *common-invidious-env + INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-eu3-c.nadeko.net", "public_url": "https://inv-eu3-c.nadeko.net"}]' networks: ["invidious4"] - #depends_on: ["valkey4", "haproxy"] depends_on: ["valkey4"] invidious5: - <<: *common + <<: *common-invidious environment: - <<: *common-env + <<: *common-invidious-env INVIDIOUS_INVIDIOUS_COMPANION: '[{"private_url": "https://inv-eu2-c.nadeko.net", "public_url": "https://inv-eu2-c.nadeko.net"}]' - INVIDIOUS_EXTERNAL_VIDEOPLAYBACK_PROXY: '["https://inv-eu2.nadeko.net"]' networks: ["invidious5"] - #depends_on: ["valkey5", "haproxy"] depends_on: ["valkey5"] + # ANUBIS SECTION # + + anubis-inv: + <<: *common-anubis + environment: + <<: *common-anubis-env + TARGET: "http://invidious:3000" + COOKIE: "anubis.inv1" + networks: ["invidious"] + ports: + - 127.0.0.1:9051:9090 + + anubis-inv2: + <<: *common-anubis + environment: + <<: *common-anubis-env + TARGET: "http://invidious2:3000" + COOKIE: "anubis.inv2" + networks: ["invidious2"] + ports: + - 127.0.0.1:9052:9090 + + anubis-inv3: + <<: *common-anubis + environment: + <<: *common-anubis-env + TARGET: "http://invidious3:3000" + COOKIE: "anubis.inv3" + networks: ["invidious3"] + ports: + - 127.0.0.1:9053:9090 + + anubis-inv4: + <<: *common-anubis + environment: + <<: *common-anubis-env + TARGET: "http://invidious4:3000" + COOKIE: "anubis.inv4" + networks: ["invidious4"] + ports: + - 127.0.0.1:9054:9090 + + anubis-inv5: + <<: *common-anubis + environment: + <<: *common-anubis-env + TARGET: "http://invidious5:3000" + COOKIE: "anubis.inv5" + networks: ["invidious5"] + ports: + - 127.0.0.1:9055:9090 + # HAPROXY SECTION # haproxy: <<: *common-haproxy diff --git a/invidious/invidious-all/haproxy.cfg b/invidious/invidious-all/haproxy.cfg index a1d5beb..5f0f9f7 100644 --- a/invidious/invidious-all/haproxy.cfg +++ b/invidious/invidious-all/haproxy.cfg @@ -24,13 +24,13 @@ defaults # Use another server if one takes too long to reply retries 4 option redispatch - timeout client 30s + timeout client 10s + timeout connect 5s # The default timeout of http request on invidious is 10 seconds. # If this is less than 10 seconds, the reverse proxy may return # "503 service unavailable", not letting invidious respond to # the client. - timeout connect 11s - timeout server 10s + timeout server 30s timeout queue 20s # https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#4.2-http-reuse http-reuse safe @@ -44,24 +44,49 @@ frontend prometheus frontend invidious bind *:8001 + use_backend anubis-inv if { path /watch } || { path_beg /.within.website } default_backend invidious frontend invidious2 bind *:8002 + use_backend anubis-inv2 if { path /watch } || { path_beg /.within.website } default_backend invidious2 frontend invidious3 bind *:8003 + use_backend anubis-inv3 if { path /watch } || { path_beg /.within.website } default_backend invidious3 frontend invidious4 bind *:8004 + use_backend anubis-inv4 if { path /watch } || { path_beg /.within.website } default_backend invidious4 frontend invidious5 bind *:8005 + use_backend anubis-inv5 if { path /watch } || { path_beg /.within.website } default_backend invidious5 +backend anubis-inv + server srv1 anubis-inv:4000 check resolvers docker init-addr libc,none + server srv2 invidious:3000 check backup resolvers docker init-addr libc,none + +backend anubis-inv2 + server srv1 anubis-inv2:4000 check resolvers docker init-addr libc,none + server srv2 invidious2:3000 check backup resolvers docker init-addr libc,none + +backend anubis-inv3 + server srv1 anubis-inv3:4000 check resolvers docker init-addr libc,none + server srv2 invidious3:3000 check backup resolvers docker init-addr libc,none + +backend anubis-inv4 + server srv1 anubis-inv4:4000 check resolvers docker init-addr libc,none + server srv2 invidious4:3000 check backup resolvers docker init-addr libc,none + +backend anubis-inv5 + server srv1 anubis-inv5:4000 check resolvers docker init-addr libc,none + server srv2 invidious5:3000 check backup resolvers docker init-addr libc,none + backend invidious server-template srv 2 invidious:3000 check resolvers docker init-addr libc,none