diff --git a/invidious/inv_sig_helper_cluster/docker-compose.yml b/invidious/inv_sig_helper_cluster/docker-compose.yml new file mode 100644 index 0000000..0e6f23c --- /dev/null +++ b/invidious/inv_sig_helper_cluster/docker-compose.yml @@ -0,0 +1,35 @@ +services: + inv_sig_helper_cluster: + image: quay.io/invidious/inv-sig-helper + restart: unless-stopped + mem_limit: "512m" + init: true + command: ["--tcp", "0.0.0.0:12999"] + environment: + - RUST_LOG=info + deploy: + replicas: 8 + networks: + - invidious + - gluetun_network + - gluetun_network_2 + + inv_sig_helper_haproxy: + image: haproxy:lts-alpine + restart: always + ports: + - "127.0.0.1:10095:8405" + volumes: + - ./haproxy:/usr/local/etc/haproxy + networks: + - invidious + - gluetun_network + - gluetun_network_2 + +networks: + invidious: + external: true + gluetun_network: + external: true + gluetun_network_2: + external: true diff --git a/invidious/inv_sig_helper_cluster/haproxy/haproxy.cfg b/invidious/inv_sig_helper_cluster/haproxy/haproxy.cfg new file mode 100644 index 0000000..c6c3936 --- /dev/null +++ b/invidious/inv_sig_helper_cluster/haproxy/haproxy.cfg @@ -0,0 +1,25 @@ +global + # This because haproxy is dumb and likes to use the maxconnection from the kernel and that is super mega huge making haproxy oom + maxconn 16384 + +resolvers docker + # To be able to use multiple replicas of invidious + # using domains + nameserver dns1 127.0.0.11:53 + +# Prometheus for graphs +frontend prometheus + bind *:8404 + mode http + http-request use-service prometheus-exporter if { path /metrics } + no log + +frontend sighelper + mode tcp + bind *:13000 + default_backend sighelper + +backend sighelper + mode tcp + balance leastconn + server-template inv_sig_helper 16 inv_sig_helper_cluster:12999 check resolvers docker init-addr libc,none diff --git a/invidious/invidious-vpn-2/docker-compose.yml b/invidious/invidious-vpn-2/docker-compose.yml new file mode 100644 index 0000000..57ced25 --- /dev/null +++ b/invidious/invidious-vpn-2/docker-compose.yml @@ -0,0 +1,143 @@ +# Docker compose file for ${DOMAIN} + +services: + # INVIDIOUS CLEARNET + invidious: + image: "git.nadeko.net/fijxu/invidious:${TAG}" + env_file: + - .env + network_mode: "service:gluetun" + restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" + volumes: + - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro + environment: + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3000" + depends_on: + - inv_sig_helper + - haproxy + healthcheck: + test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 + interval: 30s + timeout: 5s + retries: 2 + + # INVIDIOUS CLEARNET + invidious-2: + image: "git.nadeko.net/fijxu/invidious:${TAG}" + env_file: + - .env + network_mode: "service:gluetun" + restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" + volumes: + - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro + environment: + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3001" + depends_on: + - inv_sig_helper + - haproxy + healthcheck: + test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 + interval: 30s + timeout: 5s + retries: 2 + + # INVIDIOUS CLEARNET + invidious-3: + image: "git.nadeko.net/fijxu/invidious:${TAG}" + env_file: + - .env + network_mode: "service:gluetun" + restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" + volumes: + - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro + environment: + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3002" + depends_on: + - inv_sig_helper + - haproxy + healthcheck: + test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 + interval: 30s + timeout: 5s + retries: 2 + + # SIGNATURE HELPER + inv_sig_helper: + image: git.nadeko.net/fijxu/inv_sig_helper:latest + restart: unless-stopped + mem_limit: "512m" + init: true + command: ["--tcp", "0.0.0.0:12999"] + environment: + - RUST_LOG=info + networks: + gluetun_network_2: + + http3-proxy: + image: git.nadeko.net/fijxu/http3-proxy:latest + restart: unless-stopped + network_mode: "service:gluetun" + environment: + DISABLE_WEBP: 1 + + # Without depends because haproxy is smart + haproxy: + image: haproxy:lts-alpine + restart: unless-stopped + ports: + # Invidious + - "127.0.0.1:10080:8001" + # TOR + - "127.0.0.1:10082:8002" + # I2P + - "127.0.0.1:10083:8003" + # HTTP3-PROXY + - "127.0.0.1:10081:8004" + # METRICS + - "127.0.0.1:10084:8404" + volumes: + - ./haproxy:/usr/local/etc/haproxy + networks: + gluetun_network_2: + depends_on: + - gluetun + + gluetun: + image: qmcgaw/gluetun + restart: unless-stopped + env_file: + - .env + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + volumes: + - ./gluetun:/gluetun + environment: + - VPN_SERVICE_PROVIDER=mullvad + - VPN_TYPE=wireguard + - WIREGUARD_PRIVATE_KEY="${WIREGUARD_KEY}" + - WIREGUARD_ADDRESSES="${WIREGUARD_ADDRESSES}" + - SERVER_HOSTNAMES="${SERVER_HOSTNAMES}" + - DNS_KEEP_NAMESERVER=on + networks: + gluetun_network_2: + +networks: + default: + name: invidious-vpn-2 + gluetun_network_2: + external: true + diff --git a/invidious/invidious-vpn-2/haproxy/haproxy.cfg b/invidious/invidious-vpn-2/haproxy/haproxy.cfg new file mode 100644 index 0000000..af66c07 --- /dev/null +++ b/invidious/invidious-vpn-2/haproxy/haproxy.cfg @@ -0,0 +1,114 @@ +global + # This because haproxy is dumb and likes to use the maxconnection from the kernel and that is super mega huge making haproxy oom + maxconn 16384 + # 777 perms for all sockets + unix-bind mode 777 + stats socket ipv4@0.0.0.0:8405 level admin + +resolvers docker + # To be able to use multiple replicas of invidious + # using domains + nameserver dns1 127.0.0.11:53 + +defaults + mode http + # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ + # Use another server if one takes too long to reply + retries 2 + option redispatch + timeout client 30s + timeout connect 5s + timeout server 30s + timeout queue 10s + http-reuse always + +# Prometheus for graphs +frontend prometheus + bind *:8404 + mode http + http-request use-service prometheus-exporter if { path /metrics } + no log + +frontend stats + mode http + bind *:8405 + stats enable + stats uri /stats + stats refresh 1s + stats admin if TRUE + +cache invidious-thumbnail-cache + # 96MB + total-max-size 96 + # 32kB + max-object-size 32768 + # 30min + max-age 1800 + process-vary on + +cache invidious-ggpht-cache + # 96MB + total-max-size 96 + # 32kB + max-object-size 32768 + # 1h + max-age 3600 + process-vary on + +cache invidious-sb-cache + # 128MB + total-max-size 128 + # 128kB + max-object-size 131072 + # 1h + max-age 86400 + process-vary on + +frontend invidious + http-request set-var(txn.ipath) path + bind *:8001 + default_backend invidious + +frontend http3-proxy + http-request set-var(txn.hpath) path + bind *:8004 + default_backend http3-proxy + +backend invidious + balance roundrobin + + # Caches video storyboards + http-request cache-use invidious-sb-cache if { path_beg /sb/ } + http-response cache-store invidious-sb-cache + + # https://discourse.haproxy.org/t/http-response-set-header-with-condition-not-working/3108 + acl sb var(txn.ipath) -m beg /sb/ + + http-response set-header X-Cache-Status HIT if !{ srv_id -m found } sb + http-response set-header X-Cache-Status MISS if { srv_id -m found } sb + + server invidious-1-vpn gluetun:3000 check init-addr libc,none + server invidious-2-vpn gluetun:3001 check init-addr libc,none + server invidious-3-vpn gluetun:3002 check init-addr libc,none + server invidious-4-vpn gluetun:3003 check init-addr libc,none + server invidious-5-vpn gluetun:3004 check init-addr libc,none + server invidious-6-vpn gluetun:3005 check init-addr libc,none + +backend http3-proxy + # Caches video thumbnails, profile pictures and others + http-request cache-use invidious-thumbnail-cache if { path_beg /vi/ } + http-response cache-store invidious-thumbnail-cache + http-request cache-use invidious-ggpht-cache if { path_beg /ggpht/ } + http-response cache-store invidious-ggpht-cache + + # https://discourse.haproxy.org/t/http-response-set-header-with-condition-not-working/3108 + acl youtube_thumbnails var(txn.hpath) -m beg /vi/ + acl youtube_ggpht var(txn.hpath) -m beg /ggpht/ + + http-response set-header X-Cache-Status HIT if !{ srv_id -m found } youtube_thumbnails + http-response set-header X-Cache-Status MISS if { srv_id -m found } youtube_thumbnails + http-response set-header X-Cache-Status HIT if !{ srv_id -m found } youtube_ggpht + http-response set-header X-Cache-Status MISS if { srv_id -m found } youtube_ggpht + + server http3-proxy-1-vpn gluetun:8080 check init-addr libc,none + diff --git a/invidious/invidious-vpn/docker-compose.yml b/invidious/invidious-vpn/docker-compose.yml index cbee5ce..c0d4e79 100644 --- a/invidious/invidious-vpn/docker-compose.yml +++ b/invidious/invidious-vpn/docker-compose.yml @@ -1,103 +1,24 @@ # Docker compose file for ${DOMAIN} services: - # valkey: - # image: valkey/valkey:7.2-alpine - # container_name: invidious-valkey-vpn - # restart: unless-stopped - # volumes: - # - invidious-valkey-vpn:/data" - # - ./valkey.conf:/usr/local/etc/valkey/valkey.conf - # command: "valkey-server /usr/local/etc/valkey/valkey.conf" - # networks: - # gluetun_network: - # ipv4_address: 172.80.0.20 - # INVIDIOUS CLEARNET invidious: + image: "git.nadeko.net/fijxu/invidious:${TAG}" env_file: - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" network_mode: "service:gluetun" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3000 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} - backends: ["1", "2"] + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3000" depends_on: - # - valkey-vpn - inv_sig_helper - - gluetun + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s @@ -106,88 +27,22 @@ services: # INVIDIOUS CLEARNET invidious-2: + image: "git.nadeko.net/fijxu/invidious:${TAG}" env_file: - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" network_mode: "service:gluetun" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3001 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3001" depends_on: - # - valkey-vpn - inv_sig_helper - - gluetun + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s @@ -196,358 +51,22 @@ services: # INVIDIOUS CLEARNET invidious-3: + image: "git.nadeko.net/fijxu/invidious:${TAG}" env_file: - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" network_mode: "service:gluetun" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3002 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_PORT: "3002" depends_on: - # - valkey-vpn - inv_sig_helper - - gluetun - healthcheck: - test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 - interval: 30s - timeout: 5s - retries: 2 - - # INVIDIOUS CLEARNET - invidious-4: - env_file: - - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" - network_mode: "service:gluetun" - restart: unless-stopped - volumes: - - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3003 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} - depends_on: - # - valkey-vpn - - inv_sig_helper - - gluetun - healthcheck: - test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 - interval: 30s - timeout: 5s - retries: 2 - - # INVIDIOUS CLEARNET - invidious-5: - env_file: - - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" - network_mode: "service:gluetun" - restart: unless-stopped - volumes: - - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3004 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} - depends_on: - # - valkey-vpn - - inv_sig_helper - - gluetun - healthcheck: - test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 - interval: 30s - timeout: 5s - retries: 2 - - # INVIDIOUS CLEARNET - invidious-6: - env_file: - - .env - image: "git.nadeko.net/fijxu/invidious:${TAG}" - network_mode: "service:gluetun" - restart: unless-stopped - volumes: - - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - backends: ["1", "2"] - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3005 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey-vpn:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: ${HTTPS_ONLY} - hmac_key: "${HMAC_KEY}" - domain: "${DOMAIN}" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: "${QUALITY}" - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: "${POOL_SIZE}" - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "172.80.0.30:12999" - max_dash_resolution: ${MAX_RES} - depends_on: - # - valkey-vpn - - inv_sig_helper - - gluetun + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s @@ -556,15 +75,14 @@ services: # SIGNATURE HELPER inv_sig_helper: - image: quay.io/invidious/inv-sig-helper + image: git.nadeko.net/fijxu/inv_sig_helper:latest restart: unless-stopped + network_mode: "service:gluetun" + mem_limit: "512m" init: true command: ["--tcp", "0.0.0.0:12999"] environment: - RUST_LOG=info - networks: - gluetun_network: - ipv4_address: 172.80.0.30 http3-proxy: image: git.nadeko.net/fijxu/http3-proxy:latest @@ -576,23 +94,28 @@ services: # Without depends because haproxy is smart haproxy: image: haproxy:lts-alpine - container_name: invidious-haproxy-vpn restart: unless-stopped ports: # Invidious - - "127.0.0.1:10055:8001" + - "127.0.0.1:10070:8001" + # TOR + - "127.0.0.1:10072:8002" + # I2P + - "127.0.0.1:10073:8003" # HTTP3-PROXY - - "127.0.0.1:10056:8004" - # STATS - - "127.0.0.1:8414:8404" + - "127.0.0.1:10071:8004" + # METRICS + - "127.0.0.1:10074:8404" volumes: - ./haproxy:/usr/local/etc/haproxy - - /run/invidious-haproxy:/tmp:rw networks: gluetun_network: + depends_on: + - gluetun gluetun: image: qmcgaw/gluetun + restart: unless-stopped env_file: - .env cap_add: @@ -610,14 +133,6 @@ services: - DNS_KEEP_NAMESERVER=on networks: gluetun_network: - depends_on: - - haproxy - - # gluetun-updater: - # image: qmcgaw/gluetun - # volumes: - # - ./gluetun:/gluetun - # command: update -enduser -providers mullvad networks: default: @@ -625,5 +140,3 @@ networks: gluetun_network: external: true -volumes: - invidious-valkey-vpn: diff --git a/invidious/invidious-vpn/haproxy/haproxy.cfg b/invidious/invidious-vpn/haproxy/haproxy.cfg index 7407e78..c4ab5cb 100644 --- a/invidious/invidious-vpn/haproxy/haproxy.cfg +++ b/invidious/invidious-vpn/haproxy/haproxy.cfg @@ -12,9 +12,15 @@ resolvers docker defaults mode http - timeout client 10s - timeout connect 20s + # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ + # Use another server if one takes too long to reply + retries 2 + option redispatch + timeout client 30s + timeout connect 5s timeout server 30s + timeout queue 10s + http-reuse always # Prometheus for graphs frontend prometheus @@ -69,7 +75,7 @@ frontend http3-proxy default_backend http3-proxy backend invidious - balance leastconn + balance roundrobin # Caches video storyboards http-request cache-use invidious-sb-cache if { path_beg /sb/ } @@ -88,11 +94,7 @@ backend invidious server invidious-5-vpn gluetun:3004 check init-addr libc,none server invidious-6-vpn gluetun:3005 check init-addr libc,none - # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ - option redispatch 2 - backend http3-proxy - timeout queue 30s # Caches video thumbnails, profile pictures and others http-request cache-use invidious-thumbnail-cache if { path_beg /vi/ } http-response cache-store invidious-thumbnail-cache @@ -109,8 +111,3 @@ backend http3-proxy http-response set-header X-Cache-Status MISS if { srv_id -m found } youtube_ggpht server http3-proxy-1-vpn gluetun:8080 check init-addr libc,none - - # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ - # Use another server if one takes too long to reply - # option redispatch 2 - # Only 1 server, not neccessary diff --git a/invidious/invidious/docker-compose.yml b/invidious/invidious/docker-compose.yml index 6ecdda1..feb8139 100644 --- a/invidious/invidious/docker-compose.yml +++ b/invidious/invidious/docker-compose.yml @@ -1,104 +1,24 @@ # Docker compose file for inv.nadeko.net services: - # Not needed since PubSubHubBub is the one that pushes updates to invidious - # invidious-refresher: - # image: "git.nadeko.net/fijxu/invidious:${TAG}" - # container_name: invidious-refresher - # restart: unless-stopped - # volumes: - # - ./config/config-refresher.yml:/etc/invidious/config.yml:ro - # - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - # environment: - # INVIDIOUS_CONFIG_FILE: /etc/invidious/config.yml - # depends_on: - # - valkey - # # - invidious-pgbouncer - # INVIDIOUS CLEARNET invidious: env_file: - .env image: "git.nadeko.net/fijxu/invidious:${TAG}" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" deploy: replicas: 6 volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - log_level: Warn - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: 172.80.0.22 - # port: 5432 - port: 3000 - database_url: postgres://kemal:kemal@/invidious - redis_url: tcp://valkey:6379 - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: true - hmac_key: "${HMAC_KEY}" - domain: "inv.nadeko.net" - alternative_domains: ["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "zzlsbhhfvwg3oh36tcvx4r7n6jrw7zibvyvfxqlodcwn3mfrvzuq.b32.i2p", "inv.zzls.i2p"] - backends: ["1", "2"] - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${BANNER}" - player_style: invidious - quality: hd720 - quality_dash: 720p - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: true - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: true - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: 512 - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "inv_sig_helper:12999" - max_dash_resolution: 1080 + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" depends_on: - # - valkey - inv_sig_helper + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s @@ -111,82 +31,19 @@ services: - .env image: "git.nadeko.net/fijxu/invidious:${TAG}" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" deploy: replicas: 2 volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - log_level: Debug - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: invidious-pgbouncer - # port: 5432 - redis_url: tcp://valkey:6379 - database_url: postgres://kemal:kemal@/invidious - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: false - hmac_key: "${HMAC_KEY}" - domain: "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion" - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${TOR_BANNER}" - player_style: invidious - quality: dash - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: false - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: false - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: 100 - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - refresh_feeds: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "inv_sig_helper:12999" + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_DOMAIN: "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion" depends_on: - # - valkey - inv_sig_helper + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s @@ -199,130 +56,30 @@ services: - .env image: "git.nadeko.net/fijxu/invidious:${TAG}" restart: unless-stopped + mem_limit: "${INV_MEM_LIMIT}" + mem_reservation: "${INV_MEM_RESERVATION}" deploy: replicas: 2 volumes: - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw + - ./config.yml:/etc/invidious/config.yml:ro environment: - INVIDIOUS_CONFIG: | - feed_threads: 0 - log_level: "Off" - # db: - # dbname: "${PGSQL_DBNAME}" - # user: "${PGSQL_USER}" - # password: "${PGSQL_PASS}" - # host: invidious-pgbouncer - # port: 5432 - redis_url: tcp://valkey:6379 - database_url: postgres://kemal:kemal@/invidious - donation_url: "https://nadeko.net/donate" - donation_url: "https://nadeko.net/donate" - contact_url: "https://nadeko.net/contact" - home_domain: "nadeko.net" - materialious_domain: "materialious.nadeko.net" - full_refresh: false - https_only: false - hmac_key: "${HMAC_KEY}" - domain: "inv.zzls.i2p" - use_pubsub_feeds: true - popular_enabled: true - captcha_enabled: true - login_enabled: true - registration_enabled: false - statistics_enabled: true - external_port: 443 - default_user_preferences: - annotations: true - disable_proxy: ["downloads"] - annotations_subscribed: true - autoplay: true - captions: ["English", "Spanish", "English (auto-generated)"] - comments: ["youtube", ""] - dark_mode: auto - latest_only: false - listen: false - locale: en-US - watch_history: true - max_results: 60 - notifications_only: false - banner: "${I2P_BANNER}" - player_style: invidious - quality: dash - quality_dash: auto - default_home: Popular - feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - automatic_instance_redirect: false - region: CL - sort: published - extend_desc: true - save_player_pos: true - cache_annotations: true - hsts: false - enable_user_notifications: false - modified_source_code_url: "${MODIFIED_SOURCE_CODE}" - force_resolve: ipv4 - pool_size: 100 - use_innertube_for_captions: true - jobs: - refresh_channels: - enable: false - refresh_feeds: - enable: false - subscribe_to_feeds: - enable: false - po_token: "${PO_TOKEN}" - visitor_data: "${VISITOR_DATA}" - signature_server: "inv_sig_helper:12999" + INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" + INVIDIOUS_DOMAIN: "inv.zzls.i2p" depends_on: - # - valkey - inv_sig_helper + - haproxy healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 interval: 30s timeout: 5s retries: 2 - #https://github.com/Sommerwiesel/invidious-nerdvpn/blob/nerdvpn/docker-compose.yml#L438 - # INVIDIOUS PBBOUNCER - # Thanks nerdvpn - # invidious-pgbouncer: - # env_file: - # - .env - # image: edoburu/pgbouncer - # container_name: invidious-pgbouncer - # environment: - # - DB_HOST=/var/run/postgresql - # - DB_PORT=5433 - # - DB_USER=$PGSQL_USER - # - DB_PASSWORD=$PGSQL_PASS - # - DB_NAME=$PGSQL_DBNAME - # - ADMIN_USERS=pgbouncer - # - POOL_MODE=transaction - # # - DEFAULT_POOL_SIZE=80 - # # - MIN_POOL_SIZE=20 - # # - RESERVE_POOL_SIZE=80 - # # - RESERVE_POOL_TIMEOUT=5 - # # - MAX_DB_CONNECTIONS=160 - # # - MAX_USER_CONNECTIONS=160 - # - MAX_CLIENT_CONN=1000 - # - AUTH_TYPE=scram-sha-256 - # - IGNORE_STARTUP_PARAMETERS=extra_float_digits - # volumes: - # - ./pgbounceruserlist.txt:/etc/pgbouncer/userlist.txt:rw - # - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - # healthcheck: - # test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB -h /var/run/postgresql"] - # interval: 5m - # timeout: 15s - # retries: 2 - # networks: - # gluetun_network: - # ipv4_address: 172.80.0.22 - # SIGNATURE HELPER inv_sig_helper: - image: quay.io/invidious/inv-sig-helper + image: git.nadeko.net/fijxu/inv_sig_helper:latest restart: unless-stopped + mem_limit: "512m" init: true command: ["--tcp", "0.0.0.0:12999"] environment: @@ -335,34 +92,27 @@ services: restart: unless-stopped environment: DISABLE_WEBP: 1 - deploy: - replicas: 2 # Without depends because haproxy is smart haproxy: image: haproxy:lts-alpine - container_name: invidious-haproxy - restart: unless-stopped + restart: always ports: # Invidious - - "127.0.0.1:10011:8001" + - "127.0.0.1:10060:8001" # TOR - - "127.0.0.1:10098:8002" + - "127.0.0.1:10062:8002" # I2P - - "127.0.0.1:10099:8003" + - "127.0.0.1:10063:8003" # HTTP3-PROXY - - "127.0.0.1:10012:8004" + - "127.0.0.1:10061:8004" # METRICS - - "8404:8404" + - "127.0.0.1:10064:8404" # STATS - - "127.0.0.1:8405:8405" + - "127.0.0.1:10065:8405" volumes: - ./haproxy:/usr/local/etc/haproxy - - /run/invidious-haproxy:/tmp:rw networks: default: name: invidious - -volumes: - invidious-valkey: diff --git a/invidious/invidious/haproxy/haproxy.cfg b/invidious/invidious/haproxy/haproxy.cfg index 82203b1..4f82532 100644 --- a/invidious/invidious/haproxy/haproxy.cfg +++ b/invidious/invidious/haproxy/haproxy.cfg @@ -12,10 +12,15 @@ resolvers docker defaults mode http - timeout client 10s - timeout connect 20s + # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ + # Use another server if one takes too long to reply + retries 2 + option redispatch + timeout client 30s + timeout connect 5s timeout server 30s - timeout queue 30s + timeout queue 10s + http-reuse always # Prometheus for graphs frontend prometheus @@ -78,7 +83,7 @@ frontend http3-proxy default_backend http3-proxy backend invidious - balance leastconn + balance roundrobin # Caches video storyboards http-request cache-use invidious-sb-cache if { path_beg /sb/ } @@ -92,10 +97,6 @@ backend invidious server-template invidious 8 invidious:3000 check resolvers docker init-addr libc,none - # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ - # Use another server if one takes too long to reply - option redispatch 2 - backend invidious-tor server-template invidious-tor 2 invidious-tor:3000 check resolvers docker init-addr libc,none @@ -103,7 +104,6 @@ backend invidious-i2p server-template invidious-i2p 2 invidious-i2p:3000 check resolvers docker init-addr libc,none backend http3-proxy - timeout queue 30s # Caches video thumbnails, profile pictures and others http-request cache-use invidious-thumbnail-cache if { path_beg /vi/ } http-response cache-store invidious-thumbnail-cache @@ -121,8 +121,3 @@ backend http3-proxy server http3-proxy-1 http3-proxy:8080 check resolvers docker init-addr libc,none server http3-proxy-2 http3-proxy:8080 check resolvers docker init-addr libc,none - - # https://www.haproxy.com/documentation/haproxy-configuration-tutorials/service-reliability/retries/ - # Use another server if one takes too long to reply - option redispatch 2 - diff --git a/invidious/invidious/nginx-i2p.conf b/invidious/invidious/nginx-i2p.conf deleted file mode 100644 index a63f13e..0000000 --- a/invidious/invidious/nginx-i2p.conf +++ /dev/null @@ -1,23 +0,0 @@ -user www-data; -events { - worker_connections 1024; -} -http { - upstream inv-i2p { - server invidious-i2p:3008; - } - server { - listen 3000; - listen [::]:3000; - access_log off; - location / { - resolver 127.0.0.11; - proxy_buffering off; - proxy_request_buffering off; - proxy_cache off; - proxy_pass http://inv-i2p; - proxy_http_version 1.1; # to keep alive - proxy_set_header Connection ""; # to keep alive - } - } -} diff --git a/invidious/invidious/nginx-tor.conf b/invidious/invidious/nginx-tor.conf deleted file mode 100644 index 50646ed..0000000 --- a/invidious/invidious/nginx-tor.conf +++ /dev/null @@ -1,23 +0,0 @@ -user www-data; -events { - worker_connections 1024; -} -http { - upstream inv-tor { - server invidious-tor:3009; - } - server { - listen 3000; - listen [::]:3000; - access_log off; - location / { - resolver 127.0.0.11; - proxy_buffering off; - proxy_request_buffering off; - proxy_cache off; - proxy_pass http://inv-tor; - proxy_http_version 1.1; # to keep alive - proxy_set_header Connection ""; # to keep alive - } - } -} diff --git a/invidious/invidious/nginx-unix.conf b/invidious/invidious/nginx-unix.conf deleted file mode 100644 index 015c7dc..0000000 --- a/invidious/invidious/nginx-unix.conf +++ /dev/null @@ -1,23 +0,0 @@ -user www-data; -events { - worker_connections 1024; -} -http { - upstream inv { - server invidious:3000; - server invidious-buh:3000; - } - server { - listen unix:/tmp/socket.sock; - access_log off; - location / { - resolver 127.0.0.11; - proxy_buffering off; - proxy_request_buffering off; - proxy_cache off; - proxy_pass http://inv; - proxy_http_version 1.1; # to keep alive - proxy_set_header Connection ""; # to keep alive - } - } -} diff --git a/invidious/invidious/nginx.conf b/invidious/invidious/nginx.conf deleted file mode 100644 index 22acea8..0000000 --- a/invidious/invidious/nginx.conf +++ /dev/null @@ -1,24 +0,0 @@ -user www-data; -events { - worker_connections 1024; -} -http { - upstream inv { - server invidious:3000; - server invidious-buh:3000; - } - server { - listen 3000; - listen [::]:3000; - access_log off; - location / { - resolver 127.0.0.11; - proxy_buffering off; - proxy_request_buffering off; - proxy_cache off; - proxy_pass http://inv; - proxy_http_version 1.1; # to keep alive - proxy_set_header Connection ""; # to keep alive - } - } -} diff --git a/invidious/valkey-invidious/docker-compose.yml b/invidious/valkey-invidious/docker-compose.yml index 2ec5178..6c6f1dd 100644 --- a/invidious/valkey-invidious/docker-compose.yml +++ b/invidious/valkey-invidious/docker-compose.yml @@ -9,7 +9,7 @@ services: image: valkey/valkey:7.2-alpine restart: unless-stopped volumes: - - invidious-valkey:/data + # - invidious-valkey:/data - ./valkey.conf:/usr/local/etc/valkey/valkey.conf command: "valkey-server /usr/local/etc/valkey/valkey.conf" networks: @@ -19,13 +19,22 @@ services: image: valkey/valkey:7.2-alpine restart: unless-stopped volumes: - - invidious-valkey-vpn:/data + # - invidious-valkey-vpn:/data - ./valkey.conf:/usr/local/etc/valkey/valkey.conf command: "valkey-server /usr/local/etc/valkey/valkey.conf" networks: - - invidious-vpn - gluetun_network + valkey-vpn-2: + image: valkey/valkey:7.2-alpine + restart: unless-stopped + volumes: + # - invidious-valkey-vpn-2:/data + - ./valkey.conf:/usr/local/etc/valkey/valkey.conf + command: "valkey-server /usr/local/etc/valkey/valkey.conf" + networks: + - gluetun_network_2 + # INVIDIOUS VALKEY METRICS invidious-redis-exporter: image: oliver006/redis_exporter @@ -44,18 +53,28 @@ services: - "127.0.0.1:9122:9121" command: "--redis.addr=redis://valkey-vpn:6379" networks: - - invidious-vpn - gluetun_network + # INVIDIOUS VALKEY METRICS + invidious-redis-exporter-vpn-2: + image: oliver006/redis_exporter + restart: unless-stopped + ports: + - "127.0.0.1:9123:9121" + command: "--redis.addr=redis://valkey-vpn-2:6379" + networks: + - gluetun_network_2 + networks: - invidious-vpn: - external: true invidious: external: true gluetun_network: external: true + gluetun_network_2: + external: true volumes: invidious-valkey: invidious-valkey-vpn: + invidious-valkey-vpn-2: diff --git a/invidious/valkey-invidious/valkey.conf b/invidious/valkey-invidious/valkey.conf index 5ae2643..cc621c8 100644 --- a/invidious/valkey-invidious/valkey.conf +++ b/invidious/valkey-invidious/valkey.conf @@ -1,2 +1,7 @@ maxmemory 1024mb maxmemory-policy volatile-ttl + +# Disable AOF +appendonly no +# Disable RDB +save ""