116 lines
3.2 KiB
YAML
116 lines
3.2 KiB
YAML
version: "3"
|
|
|
|
configs:
|
|
materialious_nginx:
|
|
content: |
|
|
events { worker_connections 1024; }
|
|
http {
|
|
default_type application/octet-stream;
|
|
include /etc/nginx/mime.types;
|
|
server {
|
|
listen 80;
|
|
|
|
# The video player passes dashUrl as a relative path that resolves
|
|
# to this origin — proxy Invidious API/media paths to local service.
|
|
# (in.vish.gg resolves to the external IP which is unreachable via
|
|
# hairpin NAT from inside Docker; invidious:3000 is on same network)
|
|
location ~ ^/(api|companion|vi|ggpht|videoplayback|sb|s_p|ytc|storyboards) {
|
|
proxy_pass http://invidious:3000;
|
|
proxy_set_header Host $$host;
|
|
proxy_set_header X-Real-IP $$remote_addr;
|
|
proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;
|
|
}
|
|
|
|
location / {
|
|
root /usr/share/nginx/html;
|
|
try_files $$uri /index.html;
|
|
}
|
|
}
|
|
}
|
|
|
|
services:
|
|
|
|
invidious:
|
|
image: quay.io/invidious/invidious:latest
|
|
platform: linux/amd64
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
INVIDIOUS_CONFIG: |
|
|
db:
|
|
dbname: invidious
|
|
user: kemal
|
|
password: "REDACTED_PASSWORD"
|
|
host: invidious-db
|
|
port: 5432
|
|
check_tables: true
|
|
invidious_companion:
|
|
- private_url: "http://companion:8282/companion"
|
|
invidious_companion_key: "pha6nuser7ecei1E"
|
|
hmac_key: "Kai5eexiewohchei"
|
|
healthcheck:
|
|
test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 2
|
|
logging:
|
|
options:
|
|
max-size: "1G"
|
|
max-file: "4"
|
|
depends_on:
|
|
- invidious-db
|
|
- companion
|
|
|
|
companion:
|
|
image: quay.io/invidious/invidious-companion:latest
|
|
platform: linux/amd64
|
|
environment:
|
|
- SERVER_SECRET_KEY=pha6nuser7ecei1E
|
|
restart: unless-stopped
|
|
cap_drop:
|
|
- ALL
|
|
read_only: true
|
|
volumes:
|
|
- companioncache:/var/tmp/youtubei.js:rw
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
logging:
|
|
options:
|
|
max-size: "1G"
|
|
max-file: "4"
|
|
|
|
invidious-db:
|
|
image: postgres:14
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: invidious
|
|
POSTGRES_USER: kemal
|
|
POSTGRES_PASSWORD: "REDACTED_PASSWORD" # pragma: allowlist secret
|
|
volumes:
|
|
- postgresdata:/var/lib/postgresql/data
|
|
- ./config/sql:/config/sql
|
|
- ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
|
|
|
|
materialious:
|
|
image: wardpearce/materialious:latest
|
|
container_name: materialious
|
|
restart: unless-stopped
|
|
environment:
|
|
VITE_DEFAULT_INVIDIOUS_INSTANCE: "https://in.vish.gg"
|
|
configs:
|
|
- source: materialious_nginx
|
|
target: /etc/nginx/nginx.conf
|
|
ports:
|
|
- "3001:80"
|
|
logging:
|
|
options:
|
|
max-size: "1G"
|
|
max-file: "4"
|
|
|
|
volumes:
|
|
postgresdata:
|
|
companioncache:
|