invidious: better configuration with example and explanation

watchtower: use trusted-fast label for trusted images (generally my own images)
This commit is contained in:
root 2025-04-07 16:52:14 -04:00
parent afba0731b1
commit 0b420bbbbf
10 changed files with 588 additions and 93 deletions

View file

@ -0,0 +1,4 @@
# ANUBIS
# Generate it with `openssl rand -hex 32`
# https://github.com/TecharoHQ/anubis/blob/main/docs/docs/admin/installation.mdx
ED25519_PRIVATE_KEY_HEX=""

View file

@ -0,0 +1,4 @@
#INVIDIOUS_BANNER=""
# Fill those 2 environment variables
INVIDIOUS_INVIDIOUS_COMPANION_KEY=""
INVIDIOUS_HMAC_KEY=""

View file

@ -0,0 +1,10 @@
# PG_BOUNCER
# Use `/var/run/postgresql/` if you are passing a local
# postgresql database running on the host machine
# Otherwise, you will need to figure it out how to
# configure this if you want to run a separate
# postgresql database only for invidious.
DB_HOST=/var/run/postgresql/
DB_USER=""
DB_PASSWORD=""
DB_NAME=""

View file

@ -0,0 +1,398 @@
{
"bots": [
{
"name": "amazonbot",
"user_agent_regex": "Amazonbot",
"action": "DENY"
},
{
"name": "googlebot",
"user_agent_regex": "\\+http\\://www\\.google\\.com/bot\\.html",
"action": "ALLOW",
"remote_addresses": [
"2001:4860:4801:10::/64",
"2001:4860:4801:11::/64",
"2001:4860:4801:12::/64",
"2001:4860:4801:13::/64",
"2001:4860:4801:14::/64",
"2001:4860:4801:15::/64",
"2001:4860:4801:16::/64",
"2001:4860:4801:17::/64",
"2001:4860:4801:18::/64",
"2001:4860:4801:19::/64",
"2001:4860:4801:1a::/64",
"2001:4860:4801:1b::/64",
"2001:4860:4801:1c::/64",
"2001:4860:4801:1d::/64",
"2001:4860:4801:1e::/64",
"2001:4860:4801:1f::/64",
"2001:4860:4801:20::/64",
"2001:4860:4801:21::/64",
"2001:4860:4801:22::/64",
"2001:4860:4801:23::/64",
"2001:4860:4801:24::/64",
"2001:4860:4801:25::/64",
"2001:4860:4801:26::/64",
"2001:4860:4801:27::/64",
"2001:4860:4801:28::/64",
"2001:4860:4801:29::/64",
"2001:4860:4801:2::/64",
"2001:4860:4801:2a::/64",
"2001:4860:4801:2b::/64",
"2001:4860:4801:2c::/64",
"2001:4860:4801:2d::/64",
"2001:4860:4801:2e::/64",
"2001:4860:4801:2f::/64",
"2001:4860:4801:31::/64",
"2001:4860:4801:32::/64",
"2001:4860:4801:33::/64",
"2001:4860:4801:34::/64",
"2001:4860:4801:35::/64",
"2001:4860:4801:36::/64",
"2001:4860:4801:37::/64",
"2001:4860:4801:38::/64",
"2001:4860:4801:39::/64",
"2001:4860:4801:3a::/64",
"2001:4860:4801:3b::/64",
"2001:4860:4801:3c::/64",
"2001:4860:4801:3d::/64",
"2001:4860:4801:3e::/64",
"2001:4860:4801:40::/64",
"2001:4860:4801:41::/64",
"2001:4860:4801:42::/64",
"2001:4860:4801:43::/64",
"2001:4860:4801:44::/64",
"2001:4860:4801:45::/64",
"2001:4860:4801:46::/64",
"2001:4860:4801:47::/64",
"2001:4860:4801:48::/64",
"2001:4860:4801:49::/64",
"2001:4860:4801:4a::/64",
"2001:4860:4801:4b::/64",
"2001:4860:4801:4c::/64",
"2001:4860:4801:50::/64",
"2001:4860:4801:51::/64",
"2001:4860:4801:52::/64",
"2001:4860:4801:53::/64",
"2001:4860:4801:54::/64",
"2001:4860:4801:55::/64",
"2001:4860:4801:56::/64",
"2001:4860:4801:60::/64",
"2001:4860:4801:61::/64",
"2001:4860:4801:62::/64",
"2001:4860:4801:63::/64",
"2001:4860:4801:64::/64",
"2001:4860:4801:65::/64",
"2001:4860:4801:66::/64",
"2001:4860:4801:67::/64",
"2001:4860:4801:68::/64",
"2001:4860:4801:69::/64",
"2001:4860:4801:6a::/64",
"2001:4860:4801:6b::/64",
"2001:4860:4801:6c::/64",
"2001:4860:4801:6d::/64",
"2001:4860:4801:6e::/64",
"2001:4860:4801:6f::/64",
"2001:4860:4801:70::/64",
"2001:4860:4801:71::/64",
"2001:4860:4801:72::/64",
"2001:4860:4801:73::/64",
"2001:4860:4801:74::/64",
"2001:4860:4801:75::/64",
"2001:4860:4801:76::/64",
"2001:4860:4801:77::/64",
"2001:4860:4801:78::/64",
"2001:4860:4801:79::/64",
"2001:4860:4801:80::/64",
"2001:4860:4801:81::/64",
"2001:4860:4801:82::/64",
"2001:4860:4801:83::/64",
"2001:4860:4801:84::/64",
"2001:4860:4801:85::/64",
"2001:4860:4801:86::/64",
"2001:4860:4801:87::/64",
"2001:4860:4801:88::/64",
"2001:4860:4801:90::/64",
"2001:4860:4801:91::/64",
"2001:4860:4801:92::/64",
"2001:4860:4801:93::/64",
"2001:4860:4801:94::/64",
"2001:4860:4801:95::/64",
"2001:4860:4801:96::/64",
"2001:4860:4801:a0::/64",
"2001:4860:4801:a1::/64",
"2001:4860:4801:a2::/64",
"2001:4860:4801:a3::/64",
"2001:4860:4801:a4::/64",
"2001:4860:4801:a5::/64",
"2001:4860:4801:c::/64",
"2001:4860:4801:f::/64",
"192.178.5.0/27",
"192.178.6.0/27",
"192.178.6.128/27",
"192.178.6.160/27",
"192.178.6.192/27",
"192.178.6.32/27",
"192.178.6.64/27",
"192.178.6.96/27",
"34.100.182.96/28",
"34.101.50.144/28",
"34.118.254.0/28",
"34.118.66.0/28",
"34.126.178.96/28",
"34.146.150.144/28",
"34.147.110.144/28",
"34.151.74.144/28",
"34.152.50.64/28",
"34.154.114.144/28",
"34.155.98.32/28",
"34.165.18.176/28",
"34.175.160.64/28",
"34.176.130.16/28",
"34.22.85.0/27",
"34.64.82.64/28",
"34.65.242.112/28",
"34.80.50.80/28",
"34.88.194.0/28",
"34.89.10.80/28",
"34.89.198.80/28",
"34.96.162.48/28",
"35.247.243.240/28",
"66.249.64.0/27",
"66.249.64.128/27",
"66.249.64.160/27",
"66.249.64.224/27",
"66.249.64.32/27",
"66.249.64.64/27",
"66.249.64.96/27",
"66.249.65.0/27",
"66.249.65.128/27",
"66.249.65.160/27",
"66.249.65.192/27",
"66.249.65.224/27",
"66.249.65.32/27",
"66.249.65.64/27",
"66.249.65.96/27",
"66.249.66.0/27",
"66.249.66.128/27",
"66.249.66.160/27",
"66.249.66.192/27",
"66.249.66.224/27",
"66.249.66.32/27",
"66.249.66.64/27",
"66.249.66.96/27",
"66.249.68.0/27",
"66.249.68.128/27",
"66.249.68.32/27",
"66.249.68.64/27",
"66.249.68.96/27",
"66.249.69.0/27",
"66.249.69.128/27",
"66.249.69.160/27",
"66.249.69.192/27",
"66.249.69.224/27",
"66.249.69.32/27",
"66.249.69.64/27",
"66.249.69.96/27",
"66.249.70.0/27",
"66.249.70.128/27",
"66.249.70.160/27",
"66.249.70.192/27",
"66.249.70.224/27",
"66.249.70.32/27",
"66.249.70.64/27",
"66.249.70.96/27",
"66.249.71.0/27",
"66.249.71.128/27",
"66.249.71.160/27",
"66.249.71.192/27",
"66.249.71.224/27",
"66.249.71.32/27",
"66.249.71.64/27",
"66.249.71.96/27",
"66.249.72.0/27",
"66.249.72.128/27",
"66.249.72.160/27",
"66.249.72.192/27",
"66.249.72.224/27",
"66.249.72.32/27",
"66.249.72.64/27",
"66.249.72.96/27",
"66.249.73.0/27",
"66.249.73.128/27",
"66.249.73.160/27",
"66.249.73.192/27",
"66.249.73.224/27",
"66.249.73.32/27",
"66.249.73.64/27",
"66.249.73.96/27",
"66.249.74.0/27",
"66.249.74.128/27",
"66.249.74.160/27",
"66.249.74.192/27",
"66.249.74.32/27",
"66.249.74.64/27",
"66.249.74.96/27",
"66.249.75.0/27",
"66.249.75.128/27",
"66.249.75.160/27",
"66.249.75.192/27",
"66.249.75.224/27",
"66.249.75.32/27",
"66.249.75.64/27",
"66.249.75.96/27",
"66.249.76.0/27",
"66.249.76.128/27",
"66.249.76.160/27",
"66.249.76.192/27",
"66.249.76.224/27",
"66.249.76.32/27",
"66.249.76.64/27",
"66.249.76.96/27",
"66.249.77.0/27",
"66.249.77.128/27",
"66.249.77.160/27",
"66.249.77.192/27",
"66.249.77.224/27",
"66.249.77.32/27",
"66.249.77.64/27",
"66.249.77.96/27",
"66.249.78.0/27",
"66.249.78.32/27",
"66.249.79.0/27",
"66.249.79.128/27",
"66.249.79.160/27",
"66.249.79.192/27",
"66.249.79.224/27",
"66.249.79.32/27",
"66.249.79.64/27",
"66.249.79.96/27"
]
},
{
"name": "bingbot",
"user_agent_regex": "\\+http\\://www\\.bing\\.com/bingbot\\.htm",
"action": "ALLOW",
"remote_addresses": [
"157.55.39.0/24",
"207.46.13.0/24",
"40.77.167.0/24",
"13.66.139.0/24",
"13.66.144.0/24",
"52.167.144.0/24",
"13.67.10.16/28",
"13.69.66.240/28",
"13.71.172.224/28",
"139.217.52.0/28",
"191.233.204.224/28",
"20.36.108.32/28",
"20.43.120.16/28",
"40.79.131.208/28",
"40.79.186.176/28",
"52.231.148.0/28",
"20.79.107.240/28",
"51.105.67.0/28",
"20.125.163.80/28",
"40.77.188.0/22",
"65.55.210.0/24",
"199.30.24.0/23",
"40.77.202.0/24",
"40.77.139.0/25",
"20.74.197.0/28",
"20.15.133.160/27",
"40.77.177.0/24",
"40.77.178.0/23"
]
},
{
"name": "qwantbot",
"user_agent_regex": "\\+https\\://help\\.qwant\\.com/bot/",
"action": "ALLOW",
"remote_addresses": [
"91.242.162.0/24"
]
},
{
"name": "kagibot",
"user_agent_regex": "\\+https\\://kagi\\.com/bot",
"action": "ALLOW",
"remote_addresses": [
"216.18.205.234/32",
"35.212.27.76/32",
"104.254.65.50/32",
"209.151.156.194/32"
]
},
{
"name": "marginalia",
"user_agent_regex": "search\\.marginalia\\.nu",
"action": "ALLOW",
"remote_addresses": [
"193.183.0.162/31",
"193.183.0.164/30",
"193.183.0.168/30",
"193.183.0.172/31",
"193.183.0.174/32"
]
},
{
"name": "mojeekbot",
"user_agent_regex": "http\\://www\\.mojeek\\.com/bot\\.html",
"action": "ALLOW",
"remote_addresses": [
"5.102.173.71/32"
]
},
{
"name": "us-artificial-intelligence-scraper",
"user_agent_regex": "\\+https\\://github\\.com/US-Artificial-Intelligence/scraper",
"action": "DENY"
},
{
"name": "well-known",
"path_regex": "^/.well-known/.*$",
"action": "ALLOW"
},
{
"name": "favicon",
"path_regex": "^/favicon.ico$",
"action": "ALLOW"
},
{
"name": "robots-txt",
"path_regex": "^/robots.txt$",
"action": "ALLOW"
},
{
"name": "lightpanda",
"user_agent_regex": "^Lightpanda/.*$",
"action": "DENY"
},
{
"name": "headless-chrome",
"user_agent_regex": "HeadlessChrome",
"action": "DENY"
},
{
"name": "headless-chromium",
"user_agent_regex": "HeadlessChromium",
"action": "DENY"
},
{
"name": "generic-bot-catchall",
"user_agent_regex": "(?i:bot|crawler)",
"action": "CHALLENGE",
"challenge": {
"difficulty": 16,
"report_as": 4,
"algorithm": "slow"
}
},
{
"name": "generic-browser",
"user_agent_regex": "Mozilla",
"action": "CHALLENGE"
}
],
"dnsbl": false
}

View file

@ -0,0 +1,90 @@
# Fill the required fields!
database_url: postgres://<db_user>:<db_password>@pgbouncer:5432/<db_name>
# Main domain from where
domain: "fill me"
# Sane defaults, leave them like this
channel_threads: 0
log_level: Info
colorize_logs: true
redis_url: tcp://valkey:6379
https_only: true
use_pubsub_feeds: false
popular_enabled: true
captcha_enabled: true
login_enabled: true
registration_enabled: true
statistics_enabled: true
external_port: 443
cache_annotations: true
hsts: true
enable_user_notifications: true
force_resolve: ipv4
pool_size: 100
use_innertube_for_captions: true
# DO NOT CHANGE THIS UNLESS YOU DID A FORK OF MY FORK
modified_source_code_url: https://git.nadeko.net/Fijxu/invidious
# It's recommended to disable downloads from Invidious to prevent abuse
disable_proxy:
- downloads
instance_maintainer_email: admin@example.com
footer_instance_donate_link: ""
footer_instance_section_custom_fields:
- ["Example1", "https://example.com"]
- ["Example2", "https://example.com"]
# inv.nadeko.net only options
pubsub_domain: https://inv.nadeko.net
# This option only works when Invidious is in use with
# inv_sig_helper.
max_dash_resolution: 1080
jobs:
refresh_channels:
enable: false
subscribe_to_feeds:
enable: false
default_user_preferences:
region: CL
dark_mode: dark
autoplay: true
quality: dash
save_player_pos: true
extend_desc: true
# Leave local like this due to a bug with VideoJS
#local: false
invidious_companion:
# private_url has to be the same as public_url if
# invidious companion is running on an external server
- private_url: "http://companion:8282"
public_url: "https://inv-companion.example.com"
i2p_public_url: "http://invcluifpcrybsji4imau42raygqc67ex3g65ff2md236gx37cgq.b32.i2p"
# Optional
note: "(CL)"
domain: ["inv1.nadeko.net", "inv1.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "nadekoohummkxncchcsylr3eku36ze4waq4kdrhcqupckc3pe5qq.b32.i2p"]
# Cookie used so the user can switch between different
# companions on if there is more than one invidious_companion
server_id_cookie_name: "COMPANION_IDD"
# Leave this like this
# Backend 0 is postgresql
# Backend 1 is redis
# Backend 2 is built-in LRU (Not recommeneded, just for development purposes)
video_cache:
enabled: true
backend: 1
# This forces videoplayback proxy for all videos preveting
# the ip and tokens used on companion being leaked on the frontend
force_local: true
# Interval on which the invidious companions are being checked.
# Used to display a status dot next to the selected backend
check_backends_interval: 30

View file

@ -9,19 +9,12 @@ include:
x-common-invidious-env: &common-invidious-env x-common-invidious-env: &common-invidious-env
INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml" INVIDIOUS_CONFIG_FILE: "/etc/invidious/config.yml"
INVIDIOUS_REDIS_URL: "tcp://valkey:6379" INVIDIOUS_REDIS_URL: "tcp://valkey:6379"
# TODO: Support I2P
INVIDIOUS_ALTERNATIVE_DOMAINS: '["inv.nadeko.net", "inv.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion"]'
INVIDIOUS_BACKEND_DOMAINS: '["inv1.nadeko.net", "inv2.nadeko.net", "inv3.nadeko.net", "inv4.nadeko.net", "inv5.nadeko.net", "inv1.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "inv2.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "inv3.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "inv4.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion", "inv5.nadekonw7plitnjuawu6ytjsl7jlglk2t6pyq6eftptmiv3dvqndwvyd.onion"]'
# https://docs.docker.com/reference/compose-file/extension/
x-common-dep: &common-dep
depends_on: ["pgbouncer"]
x-common: &common-invidious x-common: &common-invidious
#hostname: invidious #hostname: invidious
env_file: env_file:
# Env file containing INVIDIOUS_* variables # Env file containing INVIDIOUS_* variables
- .env - .env-invidious
image: "git.nadeko.net/fijxu/invidious:latest" image: "git.nadeko.net/fijxu/invidious:latest"
restart: always restart: always
mem_limit: 780MB mem_limit: 780MB
@ -29,13 +22,14 @@ x-common: &common-invidious
deploy: deploy:
replicas: 4 replicas: 4
volumes: volumes:
# Volume is not needed anymore since I use pgbouncer now # Thist postgresql mount is not needed anymore since I use pgbouncer now
# which is at the end of this docker compose file
# - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw # - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw
- ./config.yml:/etc/invidious/config.yml:ro - ./config.yml:/etc/invidious/config.yml:ro
# Watchtower checks in intervals of 60 seconds for fast container updates. # Watchtower checks in intervals of 60 seconds for fast container updates.
# It needs to have a scope or Watchtower will spam docker servers asking # It needs to have a scope or Watchtower will spam docker servers asking
# for a new image update therefore rate limiting me # for a new image update therefore rate limiting me
labels: [ "com.centurylinklabs.watchtower.scope=invidious" ] labels: [ "com.centurylinklabs.watchtower.scope=trusted-fast" ]
x-common-haproxy: &common-haproxy x-common-haproxy: &common-haproxy
hostname: haproxy hostname: haproxy
@ -55,11 +49,18 @@ x-common-anubis: &common-anubis
image: git.nadeko.net/fijxu/anubis:latest image: git.nadeko.net/fijxu/anubis:latest
restart: always restart: always
env_file: env_file:
- .env - .env-anubis
volumes: volumes:
- "./botPolicy.json:/data/cfg/botPolicy.json:ro" - "./botPolicy.json:/data/cfg/botPolicy.json:ro"
labels: labels: [ "com.centurylinklabs.watchtower.scope=trusted-fast" ]
- "com.centurylinklabs.watchtower.enable=true"
x-common-valkey: &common-valkey
image: valkey/valkey:7.2-alpine
hostname: valkey
restart: unless-stopped
volumes:
- ./valkey.conf:/usr/local/etc/valkey/valkey.conf
command: "valkey-server /usr/local/etc/valkey/valkey.conf"
services: services:
@ -68,17 +69,28 @@ services:
<<: *common-invidious <<: *common-invidious
environment: environment:
<<: *common-invidious-env <<: *common-invidious-env
networks: ["invidious"] networks:
depends_on: ["valkey"] - invidious
depends_on:
- valkey
- pgbouncer
- haproxy
- anubis-inv
# YTPROXY to proxy images, just for Fijxu's debugging purposes!
# ytproxy:
# image: git.nadeko.net/fijxu/http3-ytproxy:latest
# ports:
# - "127.0.0.1:12403:8080/tcp"
# ANUBIS SECTION # # ANUBIS SECTION #
anubis-inv: anubis-inv:
<<: *common-anubis <<: *common-anubis
environment: environment:
<<: *common-anubis-env <<: *common-anubis-env
TARGET: "http://invidious:3000" TARGET: "http://invidious:3000"
networks: ["invidious"] networks:
- invidious
ports: ports:
- 127.0.0.1:9051:9090 - 127.0.0.1:9051:9090
@ -86,16 +98,24 @@ services:
haproxy: haproxy:
<<: *common-haproxy <<: *common-haproxy
ports: ports:
# Port to expose invidious
- "127.0.0.1:11101:8001" - "127.0.0.1:11101:8001"
# Port to expose the prometheus metrics
- "127.0.0.1:11111:8404" - "127.0.0.1:11111:8404"
networks: ["invidious"] networks:
- invidious
valkey:
<<: *common-valkey
networks:
- invidious
# Pgbouncer to keep connections to the database open # Pgbouncer to keep connections to the database open
pgbouncer: pgbouncer:
image: edoburu/pgbouncer image: edoburu/pgbouncer
restart: unless-stopped restart: unless-stopped
env_file: env_file:
- .env - .env-pgbouncer
environment: environment:
- POOL_MODE=transaction - POOL_MODE=transaction
# Everything is being done locally # Everything is being done locally
@ -104,8 +124,25 @@ services:
mem_limit: "128m" mem_limit: "128m"
volumes: volumes:
- /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw - /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432:rw
networks: ["invidious"] networks:
- invidious
networks: networks:
invidious: invidious:
name: invidious name: invidious
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠤⠤⢤⣄⡤⠤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
# ⠀⠀⠀⠀⠀⠀⠀⢀⣠⠤⠀⡴⠋⠀⠀⠀⠀⠀⠉⠒⢌⠉⠛⣽⡲⣄⡀⠀⠀⠀⠀⠀⠀
# ⠀⠀⠀⠀⠀⣠⠾⠉⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⢀⣀⠀⣥⡤⠜⠊⣈⢻⣆⠀⠀⠀⠀⠀
# ⠀⠀⠀⣠⠾⠁⠔⠨⠂⠀⢀⠘⡜⡦⣀⡴⡆⠛⠒⠙⡴⡀⠘⡆⠀⠀⠛⡙⢷⡀⠀⠀⠀
# ⠀⠀⡴⠃⠀⠀⠀⠀⢀⣠⡼⠟⡏⡏⠙⣇⢸⡄⠀⠀⢹⠏⠁⢹⡳⣤⠀⠘⡌⣷⠀⠀⠀
# ⠀⣸⠃⠀⡠⠖⢲⠀⠀⣸⠃⢰⡇⡇⠀⢸⣌⣇⢀⠀⣸⣷⣀⡼⢣⡇⠀⠀⢹⣹⠀⠀⠀
# ⠀⡏⠀⡜⠁⠀⠁⠀⡰⢃⣴⣷⢟⣿⡟⡲⠟⠻⠊⠙⠃⣼⣿⣻⣾⡇⠀⠀⢸⡿⠀⠀⠀
# ⠀⡇⠰⡇⠀⢀⡠⠞⡗⢩⡟⢸⡏⠀⢹⡇⠀⠀⠀⠀⠀⢸⣿⠉⢱⣿⠠⢤⣟⠁⠀⠀⠀
# ⠀⣧⠀⠉⠉⠉⠀⢸⠦⡸⡅⢸⣏⠒⣱⠇⠀⠀⠀⠀⠀⠀⢿⣅⡽⠙⢦⠀⢈⣳⡄⠀⠀
# ⠀⡟⠀⠀⠀⠀⠀⠘⠀⣘⡌⣀⡉⠉⠁⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠁⠀⡸⠛⠜⡷⣠⠀
# ⢸⠃⠀⠀⠀⠀⣀⡫⣿⣮⡀⠀⠀⠀⠀⠀⢠⠤⠶⡦⡤⠀⠀⠀⠀⠀⢠⠇⡀⠸⣧⣤⡆
# ⡟⠀⠀⠀⠀⠀⠀⡄⢠⠉⢇⠀⡄⠀⠀⠀⠘⢦⣀⡸⠃⠀⠀⠀⢀⡠⠋⠈⠛⢷⡖⠋⠀
# ⡇⢀⠀⠀⠀⠀⠀⢇⠀⢕⣺⣿⣅⡀⠀⠀⠀⠀⠀⠀⢀⣠⠤⠒⠉⠀⢠⣄⡶⠋⠀⠀⠀
# ⠻⢾⣼⣦⣀⠀⡄⠈⠓⢦⣼⣿⣍⠉⠻⣄⠀⢈⠏⠉⣿⣦⡀⠀⢀⣠⠾⠀⠀⠀⠀⠀⠀
# ⠀⠀⠈⠀⠉⠙⠓⠛⣦⡼⠘⣿⣿⣷⣤⣀⣹⠞⢤⣼⣿⣿⠈⢶⡋⠁⠀⠀⠀⠀⠀⠀⠀

View file

@ -10,7 +10,7 @@
# Why I removed `option http-keep-alive`: This is on by default # Why I removed `option http-keep-alive`: This is on by default
global global
# This because haproxy is dumb and likes to use the maxconnection from the kernel and that is super mega huge making haproxy oom # This because haproxy is dumb and likes to use the maxconnection (somaxconn) from the kernel and that is super mega huge making haproxy oom
maxconn 8192 maxconn 8192
resolvers docker resolvers docker
@ -44,15 +44,13 @@ frontend prometheus
frontend invidious frontend invidious
bind *:8001 bind *:8001
# Use anubis only for /watch path
use_backend anubis-inv if { path /watch } || { path_beg /.within.website } use_backend anubis-inv if { path /watch } || { path_beg /.within.website }
default_backend invidious default_backend invidious
backend anubis-inv backend anubis-inv
server srv1 anubis-inv:4000 check resolvers docker init-addr libc,none server srv1 anubis-inv:4000 check resolvers docker init-addr libc,none
# server srv2 invidious:3000 check backup resolvers docker init-addr libc,none
# server srv2 invidious:3000 check backup resolvers docker init-addr libc,none
# server srv2 invidious:3000 check backup resolvers docker init-addr libc,none
# server srv2 invidious:3000 check backup resolvers docker init-addr libc,none
backend invidious backend invidious
server-template srv 4 invidious:3000 check resolvers docker init-addr libc,none server-template srv 4 invidious:3000 check resolvers docker init-addr libc,none

View file

@ -0,0 +1,7 @@
maxmemory 2048mb
maxmemory-policy volatile-lfu
# Disable AOF
appendonly no
# Disable RDB
save ""

View file

@ -4,7 +4,7 @@
services: services:
synapse: synapse:
container_name: synapse container_name: synapse
image: docker.io/matrixdotorg/synapse:latest image: docker.io/matrixdotorg/synapse:1.127.1
restart: unless-stopped restart: unless-stopped
environment: environment:
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
@ -18,63 +18,6 @@ services:
- 127.0.0.1:10022:8008/tcp - 127.0.0.1:10022:8008/tcp
- 127.0.0.1:9183:9183/tcp - 127.0.0.1:9183:9183/tcp
# synapse-generic-worker:
# container_name: synapse-generic-worker
# image: docker.io/matrixdotorg/synapse:latest
# restart: unless-stopped
# command: "run -m synapse.app.generic_worker --config-path=/data/homeserver.yaml --config-path=/data/generic_worker.yaml"
# depends_on: ["synapse"]
# environment:
# - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
# - SYNAPSE_SERVER_NAME=nadeko.net
# - SYNAPSE_REPORT_STATS=no
# volumes:
# - ./synapse_data:/data:rw
# - ./synapse_data/homeserver.yaml:/data/homeserver.yaml:ro
# - ./generic_worker.yaml:/data/generic_worker.yaml:ro
# - /var/run/postgresql/:/run/postgresql:rw
# ports:
# - 127.0.0.1:10022:8008/tcp
# #- 127.0.0.1:9183:9183/tcp
# synapse-media-worker:
# container_name: synapse-media-worker
# image: docker.io/matrixdotorg/synapse:latest
# restart: unless-stopped
# command: "run -m synapse.app.media_repository --config-path=/data/homeserver.yaml --config-path=/data/media_worker.yaml"
# depends_on: ["synapse"]
# environment:
# - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
# - SYNAPSE_SERVER_NAME=nadeko.net
# - SYNAPSE_REPORT_STATS=no
# volumes:
# - ./synapse_data:/data:rw
# - ./synapse_data/homeserver.yaml:/data/homeserver.yaml:ro
# - ./media_worker.yaml:/data/media_worker.yaml:ro
# - /var/run/postgresql/:/run/postgresql:rw
# - ./valkey_socket:/tmp
# ports:
# - 127.0.0.1:10023:8009/tcp
# #- 127.0.0.1:9183:9183/tcp
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- ./redis_data:/data
# matrix-auth-service:
# image: ghcr.io/element-hq/matrix-authentication-service:latest
# container_name: matrix-authentication-service
# restart: unless-stopped
# volumes:
# - /var/run/postgresql/:/run/postgresql:rw
# - ./matrix-auth-service/config.yaml:/config.yaml:rw
# ports:
# - 127.0.0.1:10026:8080
# depends_on:
# - synapse
mautrix-telegram: mautrix-telegram:
image: dock.mau.dev/mautrix/telegram:latest image: dock.mau.dev/mautrix/telegram:latest
container_name: mautrix-telegram container_name: mautrix-telegram
@ -83,7 +26,8 @@ services:
- ./mautrix-telegram_data:/data:z - ./mautrix-telegram_data:/data:z
- /var/run/postgresql/:/run/postgresql:rw - /var/run/postgresql/:/run/postgresql:rw
depends_on: depends_on:
- synapse synapse:
condition: service_healthy
mautrix-whatsapp: mautrix-whatsapp:
image: dock.mau.dev/mautrix/whatsapp:latest image: dock.mau.dev/mautrix/whatsapp:latest
@ -93,7 +37,8 @@ services:
- ./mautrix-whatsapp_data:/data:z - ./mautrix-whatsapp_data:/data:z
- /var/run/postgresql/:/run/postgresql:rw - /var/run/postgresql/:/run/postgresql:rw
depends_on: depends_on:
- synapse synapse:
condition: service_healthy
element: element:
image: vectorim/element-web:latest image: vectorim/element-web:latest
@ -103,9 +48,10 @@ services:
ports: ports:
- 127.0.0.1:10024:80/tcp - 127.0.0.1:10024:80/tcp
# synapse-admin: synapse-admin:
# image: awesometechnologies/synapse-admin image: ghcr.io/etkecc/synapse-admin:latest
# ports: ports:
# - 127.0.0.1:10025:80 - 127.0.0.1:10025:80
# restart: unless-stopped restart: unless-stopped

View file

@ -1,10 +1,11 @@
services: services:
watchtower-invidious: # Watchtower used for my own OCI images at https://git.nadeko.net/Fijxu/-/packages
watchtower-trusted-fast:
image: containrrr/watchtower image: containrrr/watchtower
container_name: watchtower-invidious container_name: watchtower-trusted-fast
restart: unless-stopped restart: unless-stopped
volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ] volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ]
command: --interval 30 --scope invidious command: --interval 30 --scope trusted-fast
watchtower-trusted: watchtower-trusted:
image: containrrr/watchtower image: containrrr/watchtower