docker-compose-configs/invidious/invidious/docker-compose.yml
2024-09-14 20:29:49 -03:00

366 lines
11 KiB
YAML

# 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
deploy:
replicas: 6
volumes:
- /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw
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"]
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"
depends_on:
# - valkey
- inv_sig_helper
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 TOR
invidious-tor:
env_file:
- .env
image: "git.nadeko.net/fijxu/invidious:${TAG}"
restart: unless-stopped
deploy:
replicas: 2
volumes:
- /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw
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"
depends_on:
# - valkey
- inv_sig_helper
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 I2P
invidious-i2p:
env_file:
- .env
image: "git.nadeko.net/fijxu/invidious:${TAG}"
restart: unless-stopped
deploy:
replicas: 2
volumes:
- /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw
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"
depends_on:
# - valkey
- inv_sig_helper
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
restart: unless-stopped
init: true
command: ["--tcp", "0.0.0.0:12999"]
environment:
- RUST_LOG=info
deploy:
replicas: 2
http3-proxy:
image: git.nadeko.net/fijxu/http3-proxy:latest
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
ports:
# Invidious
- "127.0.0.1:10011:8001"
# TOR
- "127.0.0.1:10098:8002"
# I2P
- "127.0.0.1:10099:8003"
# HTTP3-PROXY
- "127.0.0.1:10012:8004"
# METRICS
- "8404:8404"
# STATS
- "127.0.0.1:8405:8405"
volumes:
- ./haproxy:/usr/local/etc/haproxy
- /run/invidious-haproxy:/tmp:rw
networks:
default:
name: invidious
volumes:
invidious-valkey: