This commit is contained in:
root 2024-09-18 04:45:35 -03:00
parent ca75b9a179
commit 468f9d688b
14 changed files with 426 additions and 923 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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
}
}
}

View file

@ -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
}
}
}

View file

@ -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
}
}
}

View file

@ -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
}
}
}

View file

@ -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:

View file

@ -1,2 +1,7 @@
maxmemory 1024mb
maxmemory-policy volatile-ttl
# Disable AOF
appendonly no
# Disable RDB
save ""